Use val_to_str_const().
[obnox/wireshark/wip.git] / make-version.pl
index c17626fc491b4887d6b3ba6365495e3241dcf786..33f44fd9bf1db3af5da6ff8a4be5389eef9e5f97 100755 (executable)
 #               the SVN revision number.
 #   pkg_enable - Enable or disable package versioning.
 #   pkg_format - Like "format", but used for the package version.
+#   is_release - Specifies that we're building from a release tarball;
+#               svnversion.h is not updated.  This should be added only
+#               to the *released* version.conf, not the one used to build
+#               the release (IOW it should be added by automake's dist-hook).
 #
 # If run with the "-p" or "--package-version" argument, the
 # AC_INIT macro in configure.in and the VERSION macro in
 # config.nmake will have the pkg_format template appended to the 
 # version number.  svnversion.h will _not_ be generated if either
-# argument is present.
+# argument is present (it will also not be generated if 'is_release' is set
+# in version.conf).
 #
 # Default configuration:
 #
@@ -70,6 +75,7 @@ my %version_pref = (
        "enable"     => 1,
        "svn_client" => 1,
        "format"     => "SVN %Y%m%d%H%M%S",
+       "is_release" => 0,
 
        # Normal development builds
        "pkg_enable" => 1,
@@ -80,7 +86,9 @@ my %version_pref = (
        #"pkg_format" => "",
        );
 my $srcdir = ".";
+my $svn_info_cmd = "";
 
+$ENV{LANG} = "C";  # Ensure we run with correct locale
 
 # Run "svn info".  Parse out the most recent modification time and the
 # revision number.
@@ -103,22 +111,22 @@ sub read_svn_info {
                eval {
                        use warnings "all";
                        no warnings "all";
-                       $line = qx{svn info $srcdir};
-                       if (!defined($line)) {
-                               exit 1;
-                       }
-                       if ($line =~ /Last Changed Date: (\d{4})-(\d\d)-(\d\d) (\d\d):(\d\d):(\d\d)/) {
-                               $last_change = timegm($6, $5, $4, $3, $2 - 1, $1);
-                       }
-                       if ($line =~ /Last Changed Rev: (\d+)/) {
-                               $revision = $1;
-                       }
-                       if ($line =~ /URL: (\S+)/) {
-                               $repo_url = $1;
-                       }
-                       if ($line =~ /Repository Root: (\S+)/) {
-                               $repo_root = $1;
+                       $line = qx{$svn_info_cmd};
+                       if (defined($line)) {
+                               if ($line =~ /Last Changed Date: (\d{4})-(\d\d)-(\d\d) (\d\d):(\d\d):(\d\d)/) {
+                                       $last_change = timegm($6, $5, $4, $3, $2 - 1, $1);
+                               }
+                               if ($line =~ /Last Changed Rev: (\d+)/) {
+                                       $revision = $1;
+                               }
+                               if ($line =~ /URL: (\S+)/) {
+                                       $repo_url = $1;
+                               }
+                               if ($line =~ /Repository Root: (\S+)/) {
+                                       $repo_root = $1;
+                               }
                        }
+                       1;
                };
 
                if ($last_change && $revision && $repo_url && $repo_root) {
@@ -246,18 +254,19 @@ sub print_svn_version
        my $svn_version;
        my $needs_update = 1;
 
-       if ($pkg_version) { return; }
+       if ($pkg_version || $version_pref{"is_release"} == 1) { return; }
 
        if ($last_change && $revision) {
                $svn_version = "#define SVNVERSION \"SVN Rev " . 
                        $revision . "\"\n" .
                        "#define SVNPATH \"" . $repo_path . "\"\n";
        } else {
-               $svn_version = "/* #define SVNVERSION \"\" */\n" .
-                       "/* #define SVNPATH \"\" */\n";
+               $svn_version = "#define SVNVERSION \"SVN Rev Unknown\"\n" .
+                       "#define SVNPATH \"unknown\"\n";
        }
        if (open(OLDVER, "<$version_file")) {
-               if (<OLDVER> eq $svn_version) {
+               my $old_svn_version = <OLDVER> . <OLDVER>;
+               if ($old_svn_version eq $svn_version) {
                        $needs_update = 0;
                }
                close OLDVER;
@@ -285,7 +294,6 @@ sub get_config {
                $srcdir = $ARGV[0]
        }
 
-
        if (! open(FILE, "<$vconf_file")) {
                print STDERR "Version configuration file $vconf_file not "
                . "found.  Using defaults.\n";
@@ -309,6 +317,12 @@ sub get_config {
 &get_config();
 
 if (-d "$srcdir/.svn") {
+       $svn_info_cmd = "svn info $srcdir";
+} elsif (-d "$srcdir/.git/svn") {
+       $svn_info_cmd = "(cd $srcdir; git svn info)";
+}
+
+if ($svn_info_cmd) {
        print "This is a build from SVN (or a SVN snapshot).\n";
        &read_svn_info();
        if ($pkg_version) {