aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2009-07-22 23:59:15 +0000
committerGerald Combs <gerald@wireshark.org>2009-07-22 23:59:15 +0000
commit1e93d53b568a8fd0769cec90ee22f85f29490ee2 (patch)
treec61b5bb801c801e54ed7a9bbe79a2ec5af2f22f7
parent0b0ff6cdcfe0541f94d00bbfb0979a421d69deda (diff)
Use "svn info" to fetch the version by default. Fetch the repository path as
well. Add the repository path to the version strings. svn path=/trunk/; revision=29171
-rw-r--r--capinfos.c2
-rw-r--r--editcap.c2
-rwxr-xr-xmake-version.pl113
-rw-r--r--mergecap.c2
-rw-r--r--text2pcap.c2
-rw-r--r--version_info.c2
6 files changed, 73 insertions, 50 deletions
diff --git a/capinfos.c b/capinfos.c
index 88d9acb83a..972ff13cc7 100644
--- a/capinfos.c
+++ b/capinfos.c
@@ -241,7 +241,7 @@ usage(gboolean is_error)
fprintf(output, "Capinfos %s"
#ifdef SVNVERSION
- " (" SVNVERSION ")"
+ " (" SVNVERSION " from " SVNPATH ")"
#endif
"\n", VERSION);
fprintf(output, "Prints information about capture files.\n");
diff --git a/editcap.c b/editcap.c
index 82dedb4f05..b401066535 100644
--- a/editcap.c
+++ b/editcap.c
@@ -563,7 +563,7 @@ usage(void)
{
fprintf(stderr, "Editcap %s"
#ifdef SVNVERSION
- " (" SVNVERSION ")"
+ " (" SVNVERSION " from " SVNPATH ")"
#endif
"\n", VERSION);
fprintf(stderr, "Edit and/or translate the format of capture files.\n");
diff --git a/make-version.pl b/make-version.pl
index 03f5ebfa7d..c17626fc49 100755
--- a/make-version.pl
+++ b/make-version.pl
@@ -45,7 +45,7 @@
# Default configuration:
#
# enable: 1
-# svn_client: 0
+# svn_client: 1
# format: SVN %Y%m%d%H%M%S
# pkg_enable: 1
# pkg_format: -SVN-%#
@@ -64,10 +64,11 @@ my $package_string = "";
my $vconf_file = 'version.conf';
my $last_change = 0;
my $revision = 0;
+my $repo_path = "unknown";
my $pkg_version = 0;
my %version_pref = (
"enable" => 1,
- "svn_client" => 0,
+ "svn_client" => 1,
"format" => "SVN %Y%m%d%H%M%S",
# Normal development builds
@@ -90,17 +91,46 @@ sub read_svn_info {
my $in_entries = 0;
my $svn_name;
my $repo_version;
+ my $repo_root = undef;
+ my $repo_url = undef;
+ my $do_hack = 1;
if ($version_pref{"pkg_enable"}) {
$package_format = $version_pref{"pkg_format"};
}
- if (!$version_pref{"svn_client"}) {
+ if ($version_pref{"svn_client"}) {
+ 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;
+ }
+ };
+
+ if ($last_change && $revision && $repo_url && $repo_root) {
+ $do_hack = 0;
+ }
+ }
+
+ # 'svn info' failed or the user really wants us to dig around in .svn/entries
+ if ($do_hack) {
# Start of ugly internal SVN file hack
if (! open (ENTRIES, "< $srcdir/.svn/entries")) {
- print ("Unable to open $srcdir/.svn/entries, trying 'svn info'\n");
- # Fall back to "svn info"
- $version_pref{"svn_client"} = 1;
+ print ("Unable to open $srcdir/.svn/entries\n");
} else {
# We need to find out whether our parser can handle the entries file
$line = <ENTRIES>;
@@ -112,46 +142,33 @@ sub read_svn_info {
} else {
$repo_version = "unknown";
}
- }
- }
- if ($version_pref{"svn_client"} || ($repo_version ne "pre1.4")) {
- if (!$version_pref{"svn_client"}) {
- close ENTRIES;
- }
- $line = qx{svn info $srcdir};
- 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 =~ /^\s*$/ || $revision =~ /^\s*$/) {
- $last_change = "unknown";
- $revision = "unknown";
- }
- } else {
- # The entries schema is flat, so we can use regexes to parse its contents.
- while ($line = <ENTRIES>) {
- if ($line =~ /<entry$/ || $line =~ /<entry\s/) {
- $in_entries = 1;
- $svn_name = "";
- }
- if ($in_entries) {
- if ($line =~ /name="(.*)"/) { $svn_name = $1; }
- if ($line =~ /committed-date="(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)/) {
- $last_change = timegm($6, $5, $4, $3, $2 - 1, $1);
- }
- if ($line =~ /revision="(\d+)"/) { $revision = $1; }
- }
- if ($line =~ /\/>/) {
- if (($svn_name eq "" || $svn_name eq "svn:this_dir") &&
- $last_change && $revision) {
- $in_entries = 0;
- last;
+
+ if ($repo_version eq "pre1.4") {
+ # The entries schema is flat, so we can use regexes to parse its contents.
+ while ($line = <ENTRIES>) {
+ if ($line =~ /<entry$/ || $line =~ /<entry\s/) {
+ $in_entries = 1;
+ $svn_name = "";
+ }
+ if ($in_entries) {
+ if ($line =~ /name="(.*)"/) { $svn_name = $1; }
+ if ($line =~ /committed-date="(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)/) {
+ $last_change = timegm($6, $5, $4, $3, $2 - 1, $1);
+ }
+ if ($line =~ /revision="(\d+)"/) { $revision = $1; }
+ }
+ if ($line =~ /\/>/) {
+ if (($svn_name eq "" || $svn_name eq "svn:this_dir") &&
+ $last_change && $revision) {
+ $in_entries = 0;
+ last;
+ }
+ }
+ # XXX - Fetch the repository root & URL
}
}
+ close ENTRIES;
}
- close ENTRIES;
}
# If we picked up the revision and modification time,
@@ -161,6 +178,10 @@ sub read_svn_info {
$package_format =~ s/%#/$revision/;
$package_string = strftime($package_format, gmtime($last_change));
}
+
+ if ($repo_url && $repo_root && index($repo_url, $repo_root) == 0) {
+ $repo_path = substr($repo_url, length($repo_root));
+ }
}
@@ -229,9 +250,11 @@ sub print_svn_version
if ($last_change && $revision) {
$svn_version = "#define SVNVERSION \"SVN Rev " .
- $revision . "\"\n";
+ $revision . "\"\n" .
+ "#define SVNPATH \"" . $repo_path . "\"\n";
} else {
- $svn_version = "/* #define SVNVERSION \"\" */\n";
+ $svn_version = "/* #define SVNVERSION \"\" */\n" .
+ "/* #define SVNPATH \"\" */\n";
}
if (open(OLDVER, "<$version_file")) {
if (<OLDVER> eq $svn_version) {
diff --git a/mergecap.c b/mergecap.c
index 89e9740804..358ebe2359 100644
--- a/mergecap.c
+++ b/mergecap.c
@@ -89,7 +89,7 @@ usage(void)
fprintf(stderr, "Mergecap %s"
#ifdef SVNVERSION
- " (" SVNVERSION ")"
+ " (" SVNVERSION " from " SVNPATH ")"
#endif
"\n", VERSION);
fprintf(stderr, "Merge two or more capture files into one.\n");
diff --git a/text2pcap.c b/text2pcap.c
index 7168730bae..b799262c6f 100644
--- a/text2pcap.c
+++ b/text2pcap.c
@@ -1028,7 +1028,7 @@ usage (void)
fprintf(stderr,
"Text2pcap %s"
#ifdef SVNVERSION
- " (" SVNVERSION ")"
+ " (" SVNVERSION " from " SVNPATH ")"
#endif
"\n"
"Generate a capture file from an ASCII hexdump of packets.\n"
diff --git a/version_info.c b/version_info.c
index 2cf7d3df09..ef7adda333 100644
--- a/version_info.c
+++ b/version_info.c
@@ -96,7 +96,7 @@
#endif
#ifdef SVNVERSION
- const char *wireshark_svnversion = " (" SVNVERSION ")";
+ const char *wireshark_svnversion = " (" SVNVERSION " from " SVNPATH ")";
#else
const char *wireshark_svnversion = "";
#endif