X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/91447636331957f3d9b5ca5b508f07c526b0074d..d190cdc3f5544636abb56dc1874be391d3e1b148:/config/newvers.pl diff --git a/config/newvers.pl b/config/newvers.pl index 661737ee4..f093b3378 100755 --- a/config/newvers.pl +++ b/config/newvers.pl @@ -18,6 +18,10 @@ # ###KERNEL_BUILD_OBJROOT### xnu/xnu-690.obj~2/RELEASE_PPC # ###KERNEL_BUILD_DATE### Sun Oct 24 05:33:28 PDT 2004 +use File::Basename; + +use strict; + sub ReadFile { my ($fileName) = @_; my $data; @@ -39,14 +43,89 @@ sub WriteFile { close(OUT); } +die("SRCROOT not defined") unless defined($ENV{'SRCROOT'}); +die("OBJROOT not defined") unless defined($ENV{'OBJROOT'}); + my $versfile = "MasterVersion"; $versfile = "$ENV{'SRCROOT'}/config/$versfile" if ($ENV{'SRCROOT'}); -my $BUILD_OBJROOT=$ENV{'OBJROOT'} . "/" . $ENV{'KERNEL_CONFIG'} . '_' . $ENV{'ARCH_CONFIG'}; +my $BUILD_SRCROOT=$ENV{'SRCROOT'}; +$BUILD_SRCROOT =~ s,/+$,,; +my $BUILD_OBJROOT=$ENV{'OBJROOT'}; +$BUILD_OBJROOT =~ s,/+$,,; +my $BUILD_OBJPATH=$ENV{'TARGET'} || $ENV{'OBJROOT'}; +$BUILD_OBJPATH =~ s,/+$,,; my $BUILD_DATE = `date`; $BUILD_DATE =~ s/[\n\t]//g; my $BUILDER=`whoami`; $BUILDER =~ s/[\n\t]//g; -$BUILD_OBJROOT =~ s|.*(xnu.*)|$1|; +my $RC_STRING = $ENV{'RC_ProjectNameAndSourceVersion'} . "~" . $ENV{'RC_ProjectBuildVersion'} if defined($ENV{'RC_XBS'}); + +# Handle four scenarios: +# SRCROOT=/tmp/xnu +# OBJROOT=/tmp/xnu/BUILD/obj +# OBJPATH=/tmp/xnu/BUILD/obj/RELEASE_X86_64 +# +# SRCROOT=/SourceCache/xnu/xnu-2706 +# OBJROOT=/BinaryCache/xnu/xnu-2706~3/Objects +# OBJPATH=/BinaryCache/xnu/xnu-2706~3/Objects/DEVELOPMENT_X86_64 +# RC_XBS=YES (XBS-16.3+) +# RC_ProjectNameAndSourceVersion=xnu-2706 +# RC_ProjectBuildVersion=3 +# +# SRCROOT=/SourceCache/xnu/xnu-2706 +# OBJROOT=/private/var/tmp/xnu/xnu-2706~2 +# OBJPATH=/private/var/tmp/xnu/xnu-2706~2/DEVELOPMENT_ARM_S5L8940X +# RC_XBS=YES (/dev/null`; + chomp $tag; + if ($? != 0 or $tag !~ /^xnu-([^\s\n]+)$/) { + return $basename; + } + + # If basename is just 'xnu' then replace it with the tag. Otherwise add + # the tag in brackets. + if ($basename eq 'xnu') { + return $tag + } else { + return "${basename}[$tag]" + } +} + +if ($BUILD_OBJPATH =~ m,^$BUILD_SRCROOT/(.*)$,) { + $BUILD_OBJROOT = describe(basename($BUILD_SRCROOT)) . "/" . $1; +} elsif ($BUILD_OBJPATH =~ m,^$BUILD_OBJROOT/(.*)$,) { + if (defined($RC_STRING)) { + $BUILD_OBJROOT = $RC_STRING . "/" . $1; + } else { + $BUILD_OBJROOT = describe(basename($BUILD_OBJROOT)) . "/" . $1; + } +} else { + # Use original OBJROOT +} my $rawvers = &ReadFile($versfile); #$rawvers =~ s/\s//g;