[SCM] Debian package checker branch, master, updated. 2.5.4-38-gb08ea61
The following commit has been merged in the master branch:
commit b08ea6174d0b057cae166fc8d020873aede6886a
Author: Evan Broder <evan@ebroder.net>
Date: Thu Dec 8 11:21:43 2011 +0100
Check git and debian/changelog before showing dummy version number
This should ensure that lintian --version prints out something
reasonable if it's run from a source tree.
Based on the original patch with the following changes:
* Do not load IPC::Run, Parse::DebianChangelog or File::Basename
unless they are needed for guessing the version.
* Moved the "version-guessing" code into a sub.
* Guarded the guesses with eval - "just in case".
Acked-by: Niels Thykier <niels@thykier.net>
diff --git a/debian/changelog b/debian/changelog
index af96d13..1676f05 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -61,6 +61,9 @@ lintian (2.5.5) UNRELEASED; urgency=low
status of some collections.
+ [NT] Keep auto-cleaned collections until all processables in
the group has been checked.
+ + [NT] Attempt guess the version number when running in an git
+ checkout or unpacked source dir. Based on patch from Evan
+ Broder. (Closes: #650701)
* frontend/lintian-info:
+ [NT] Support new lintian.log format.
+ [NT] Support new override file format with -a.
diff --git a/debian/rules b/debian/rules
index feaaf11..fb7159c 100755
--- a/debian/rules
+++ b/debian/rules
@@ -97,7 +97,7 @@ binary-indep: $(neededfiles) build
dh_install
# some manual work
- sed -i 's/<VERSION>/$(VER)/' $(tmp)/usr/bin/lintian
+ sed -i 's/my $$LINTIAN_VERSION = "<VERSION>"/my $$LINTIAN_VERSION = "$(VER)"/' $(tmp)/usr/bin/lintian
install -m 644 doc/lintianrc.example $(tmp)/etc/lintianrc
dh_installdocs
dh_installchangelogs
diff --git a/frontend/lintian b/frontend/lintian
index d9ab54c..e16c5ed 100755
--- a/frontend/lintian
+++ b/frontend/lintian
@@ -73,7 +73,15 @@ qw(
### "Normal" application variables
# Version number - Is replaced during build with sed, see d/rules
-my $LINTIAN_VERSION = '<VERSION>'; #External Version number
+my $LINTIAN_VERSION = "<VERSION>"; #External Version number
+if ($LINTIAN_VERSION eq '<VERSION>') {
+ # For some reason the version above has not be substituted.
+ # Most likely this means we are a git clone or an unpacked
+ # source package. If so, we will use a version that best
+ # describes our situation...
+ my $guess = _guess_version (__FILE__);
+ $LINTIAN_VERSION = $guess if $guess;
+}
my $BANNER = "Lintian v$LINTIAN_VERSION"; #Version Banner - text form
# Variables used to record commandline options
@@ -1723,6 +1731,37 @@ sub handle_lab_query {
}
}
+sub _guess_version {
+ require File::Basename;
+ require Cwd;
+ my ($frontend) = @_;
+ my $guess;
+ my $absfront = Cwd::abs_path ($frontend);
+ my $rootdir;
+ return '' unless $absfront;
+ $rootdir = File::Basename::dirname (File::Basename::dirname ($absfront));
+
+ if ( -d "$rootdir/.git" ) {
+ # Lets try git
+ eval {
+ require IPC::Run;
+ IPC::Run::run (['git', "--git-dir=$rootdir/.git", 'describe'], \undef, \$guess);
+ chomp $guess;
+ };
+ return $guess if $guess;
+ }
+ # git was not possible - maybe the changelog is available
+ if ( -f "$rootdir/debian/changelog" ) {
+ eval {
+ my $changelog = Parse::DebianChangelog->init({ infile => dirname(__FILE__) . "/../debian/changelog" });
+ $guess = $changelog->dpkg()->{'Version'} if $changelog;
+ };
+ return $guess if $guess;
+ }
+ # Out of guesses ...
+ return;
+}
+
# }}}
# {{{ Exit handler.
--
Debian package checker
Reply to: