[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#477057: lintian: Accept C-style comments in dpatch's 00list file



Hi Frank, Hi Rafael,

Frank Lichtenheld schrieb am Mon 21. Apr, 01:47 (+0200):
> On Mon, Apr 21, 2008 at 12:32:01AM +0200, Rafael Laboissiere wrote:
> > * Frank Lichtenheld <djpig@debian.org> [2008-04-21 00:02]:
> > 
> > > On Sun, Apr 20, 2008 at 03:19:32PM +0200, Rafael Laboissiere wrote:
> > > > C-style comments in dpatch's patches/00list files are allowed (see, e.g.
> > > > "man dpatch" for an example).  However, lintian wrongly complains with 
> > > > dpatch-index-references-non-existant-patch for lines containing
> > > > "/* comment */".
> > > 
> > > To be exact everything is allowed that gets transformed by cpp into a
> > > valid list file. So we can either run it through cpp ourself (but
> > > with which architecture defines?) or define a subset of features we
> > > will accept.
> > 
> > What about using "dpatch list-all"?
> 
> If you take a look at the code you will see that this is just a very big
> cpp wrapper ;) The problem that the outcome of the test would depend on
> the architecture you run lintian on remains.

What do you think about this patch? It simply removes all C and C++
comments.

#v+
--- /usr/share/lintian/checks/patch-systems	2008-03-03 22:49:47.000000000 +0100
+++ /tmp/lintian/checks/patch-systems	2008-05-18 18:45:35.305553295 +0200
@@ -58,11 +58,27 @@
 		if (! -r "debfiles/patches/00list") {
 			tag "dpatch-build-dep-but-no-patch-list", $pkg;
 		} else {
+			my $list_uses_cpp = 0;
+			if (open(OPTS, '<', "debfiles/patches/00options")) {
+				while(<OPTS>) {
+					if (/DPATCH_OPTION_CPP=1/) {
+						$list_uses_cpp = 1;
+						last;
+					}
+				}
+				close(OPTS);
+			}
 			if (open(IN, '<', "debfiles/patches/00list")) {
 				my @patches;
 				while(<IN>) {
 					chomp;
-					next if (/^\#/); #ignore comments
+					next if (/^\#/); #ignore comments or CPP directive
+					s/\/\/.*// if ($list_uses_cpp); # remove C++ style comments
+					if ($list_uses_cpp && /\/\*/) {
+						# remove C style comments
+						$_ .= <IN> while($_ !~ /\*\//);
+						s/\/\*[^*]*\*\///;
+					}
 					next if (/^\s*$/); #ignore blank lines
 					push @patches, split(' ', $_);
 				}
#v-

Bye, Jörg.
-- 
Die NASA brauchte 12 Jahre um einen Kugelschreiber zu entwickeln, der
kopfüber, in der Schwerelosigkeit und unter Wasser schreiben kann.
Die Russen benutzten einfach einen Bleistift …

Attachment: signature.asc
Description: Digital signature http://en.wikipedia.org/wiki/OpenPGP


Reply to: