]> git.saurik.com Git - apple/xnu.git/blobdiff - config/newvers.pl
xnu-4903.231.4.tar.gz
[apple/xnu.git] / config / newvers.pl
index 7b41feac448b2b21a404d0de1bbfe4a20ee2e307..8d670049ea94e3718240fe9ce748ab75d941606c 100755 (executable)
@@ -14,6 +14,7 @@
 #   ###KERNEL_VERSION_REVISION###           3
 #   ###KERNEL_VERSION_STAGE###              VERSION_STAGE_BETA (see libkern/version.h)
 #   ###KERNEL_VERSION_PRERELEASE_LEVEL###   4
+#   ###KERNEL_BUILD_CONFIG###               development
 #   ###KERNEL_BUILDER###                    root
 #   ###KERNEL_BUILD_OBJROOT###              xnu/xnu-690.obj~2/RELEASE_PPC
 #   ###KERNEL_BUILD_DATE###                 Sun Oct 24 05:33:28 PDT 2004
@@ -56,6 +57,8 @@ my $BUILD_OBJPATH=$ENV{'TARGET'} || $ENV{'OBJROOT'};
 $BUILD_OBJPATH =~ s,/+$,,;
 my $BUILD_DATE = `date`;
 $BUILD_DATE =~ s/[\n\t]//g;
+my $BUILD_CONFIG = "unknown";
+$BUILD_CONFIG = $ENV{'CURRENT_KERNEL_CONFIG_LC'} if defined($ENV{'CURRENT_KERNEL_CONFIG_LC'});
 my $BUILDER=`whoami`;
 $BUILDER =~ s/[\n\t]//g;
 my $RC_STRING = $ENV{'RC_ProjectNameAndSourceVersion'} . "~" . $ENV{'RC_ProjectBuildVersion'} if defined($ENV{'RC_XBS'});
@@ -96,16 +99,35 @@ my $RC_STRING = $ENV{'RC_ProjectNameAndSourceVersion'} . "~" . $ENV{'RC_ProjectB
 # need to synthesize the directory name to be more interesting.
 #
 
+sub describe {
+  my ($basename) = @_;
+
+  # get a git tag if we can
+  my $tag = `git describe --dirty 2>/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 = basename($BUILD_SRCROOT) . "/" . $1;
+    $BUILD_OBJROOT = describe(basename($BUILD_SRCROOT)) . "/" . $1;
 } elsif ($BUILD_OBJPATH =~ m,^$BUILD_OBJROOT/(.*)$,) {
-    if (defined($RC_STRING)) {
+  if (defined($RC_STRING)) {
        $BUILD_OBJROOT = $RC_STRING . "/" . $1;
-    } else {
-       $BUILD_OBJROOT = basename($BUILD_OBJROOT) . "/" . $1;
-    }
+  } else {
+       $BUILD_OBJROOT = describe(basename($BUILD_OBJROOT)) . "/" . $1;
+  }
 } else {
-    # Use original OBJROOT
+  # Use original OBJROOT
 }
 
 my $rawvers = &ReadFile($versfile);
@@ -147,6 +169,7 @@ foreach $file (@ARGV) {
   $count += $data =~ s/###KERNEL_VERSION_REVISION###/$VERSION_REVISION/g;
   $count += $data =~ s/###KERNEL_VERSION_STAGE###/$VERSION_STAGE/g;
   $count += $data =~ s/###KERNEL_VERSION_PRERELEASE_LEVEL###/$VERSION_PRERELEASE_LEVEL/g;
+  $count += $data =~ s/###KERNEL_BUILD_CONFIG###/$BUILD_CONFIG/g;
   $count += $data =~ s/###KERNEL_BUILDER###/$BUILDER/g;
   $count += $data =~ s/###KERNEL_BUILD_OBJROOT###/$BUILD_OBJROOT/g;
   $count += $data =~ s/###KERNEL_BUILD_DATE###/$BUILD_DATE/g;
@@ -164,6 +187,7 @@ if (0==scalar @ARGV) {
   print "newvers.pl: ###KERNEL_VERSION_REVISION### = $VERSION_REVISION\n";
   print "newvers.pl: ###KERNEL_VERSION_STAGE### = $VERSION_STAGE\n";
   print "newvers.pl: ###KERNEL_VERSION_PRERELEASE_LEVEL### = $VERSION_PRERELEASE_LEVEL\n";
+  print "newvers.pl: ###KERNEL_BUILD_CONFIG### = $BUILD_CONFIG\n";
   print "newvers.pl: ###KERNEL_BUILDER### = $BUILDER\n";
   print "newvers.pl: ###KERNEL_BUILD_OBJROOT### = $BUILD_OBJROOT\n";
   print "newvers.pl: ###KERNEL_BUILD_DATE### = $BUILD_DATE\n";