Package: debhelper
Version: 10.6.4
Severity: normal

The recommended compat version substitution is broken in three ways.

Firstly, it fails to build with Ubuntu's version suffix as follows:

  cat debhelper.pod | \
        perl -e ' undef $/; foreach (@ARGV) { open (IN, $_) or die "$_: $!"; 
$file=<IN>; close IN; if ($file=~m/=head1 .*?\n\n(.*?) - (.*?)\n\n/s) { my 
$item="=item $1(1)\n\n$2\n\n"; if (" dh_installmanpages " !~ / $1 /) { 
$list.=$item; } else { $list_deprecated.=$item; } } } END { my 
$recommended_compat = 10.6.4ubuntu1; $recommended_compat =~ s{\..*}{}; while 
(<STDIN>) { s/#LIST#/$list/; s/#LIST_DEPRECATED#/$list_deprecated/; 
s/#RECOMMEDED_COMPAT#/$recommeded_compat/; print; }; }' dh_auto_build 
dh_auto_clean dh_auto_configure dh_auto_install dh_auto_test dh_bugfiles 
dh_builddeb dh_clean dh_compress dh_fixperms dh_gconf dh_gencontrol dh_icons 
dh_install dh_installcatalogs dh_installchangelogs dh_installcron dh_installdeb 
dh_installdebconf dh_installdirs dh_installdocs dh_installemacsen 
dh_installexamples dh_installgsettings dh_installifupdown dh_installinfo 
dh_installinit dh_installlogcheck dh_installlogrotate dh_installman 
dh_installmanpages dh_installmenu dh_installmime dh_installmodules 
dh_installpam dh_installppp dh_installudev dh_installwm dh_installxfonts 
dh_link dh_lintian dh_listpackages dh_makeshlibs dh_md5sums dh_missing 
dh_movefiles dh_perl dh_prep dh_shlibdeps dh_strip dh_systemd_enable 
dh_systemd_start dh_testdir dh_testroot dh_ucf dh_update_autotools_config 
dh_usrlocal | \
        pod2man --utf8 -c Debhelper -r "10.6.4ubuntu1" --name="debhelper" 
--section=7  > debhelper.7
  Bareword found where operator expected at -e line 1, near "10.6.4ubuntu1"
        (Missing operator before ubuntu1?)
  syntax error at -e line 1, near "10.6.4ubuntu1"
  Execution of -e aborted due to compilation errors.

Secondly, the variable that's substituted into POD files is misspelled:
it should be RECOMMENDED_COMPAT, not RECOMMEDED_COMPAT.  Relatedly, the
Perl variable that's substituted is spelled $recommended_compat in one
place and $recommeded_compat in another, which means the substitution
just doesn't work at all.

Thirdly, due to "undef $/" arranging for <STDIN> to read the whole file,
the substitutions need to be performed with the /g flag, otherwise only
the first occurrence is handled.

The attached patch should fix all of this.

-- 
Colin Watson                                       [cjwat...@debian.org]
>From 67e9d2d9cd058cb10c1e43bce9213c4307ee854e Mon Sep 17 00:00:00 2001
From: Colin Watson <cjwat...@debian.org>
Date: Wed, 26 Jul 2017 12:20:15 +0100
Subject: [PATCH] Fix substitution of recommended compat version

Quote assignment to $recommended_compat in case it isn't a valid Perl
version string (e.g. for Debian derivatives).  Fix typos that caused it
not to be used correctly.  Use the /g flag so that all instances of the
substitution variable are handled.
---
 Makefile                  |  8 ++++----
 debhelper.pod             |  8 ++++----
 debian/changelog          |  7 +++++++
 man/po4a/po/de.po         | 16 ++++++++--------
 man/po4a/po/debhelper.pot |  8 ++++----
 man/po4a/po/es.po         | 24 ++++++++++++------------
 man/po4a/po/fr.po         | 16 ++++++++--------
 man/po4a/po/ja.po         | 18 +++++++++---------
 man/po4a/po/pt.po         | 16 ++++++++--------
 9 files changed, 64 insertions(+), 57 deletions(-)

diff --git a/Makefile b/Makefile
index 6e5b5f64..9cd42c8e 100644
--- a/Makefile
+++ b/Makefile
@@ -40,12 +40,12 @@ MAKEMANLIST=$(PERL) -e ' \
 		        } \
 		} \
 		END { \
-			my $$recommended_compat = $(VERSION); \
+			my $$recommended_compat = q{$(VERSION)}; \
 			$$recommended_compat =~ s{\..*}{}; \
 			while (<STDIN>) { \
-		        	s/\#LIST\#/$$list/; \
-		        	s/\#LIST_DEPRECATED\#/$$list_deprecated/; \
-		        	s/\#RECOMMEDED_COMPAT\#/$$recommeded_compat/; \
+				s/\#LIST\#/$$list/g; \
+				s/\#LIST_DEPRECATED\#/$$list_deprecated/g; \
+				s/\#RECOMMENDED_COMPAT\#/$$recommended_compat/g; \
 				print; \
 			}; \
 		}'
diff --git a/debhelper.pod b/debhelper.pod
index 03fec655..1f35ff41 100644
--- a/debhelper.pod
+++ b/debhelper.pod
@@ -277,15 +277,15 @@ it modifies its behavior in various ways.  The compatibility level is
 specified in the F<debian/compat> file and the file must be present.
 
 Tell debhelper what compatibility level to use by writing a number to
-F<debian/compat>. For example, to use v#RECOMMEDED_COMPAT# mode:
+F<debian/compat>. For example, to use v#RECOMMENDED_COMPAT# mode:
 
-  % echo #RECOMMEDED_COMPAT# > debian/compat
+  % echo #RECOMMENDED_COMPAT# > debian/compat
 
 Your package will also need a versioned build dependency on a version of
 debhelper equal to (or greater than) the compatibility level your package
-uses. So for compatibility level #RECOMMEDED_COMPAT#, ensure debian/control has:
+uses. So for compatibility level #RECOMMENDED_COMPAT#, ensure debian/control has:
 
-  Build-Depends: debhelper (>= #RECOMMEDED_COMPAT#)
+  Build-Depends: debhelper (>= #RECOMMENDED_COMPAT#)
 
 Unless otherwise indicated, all debhelper documentation assumes that you
 are using the most recent compatibility level, and in most cases does not
diff --git a/debian/changelog b/debian/changelog
index 3c43061f..5ea702a9 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,5 +1,6 @@
 debhelper (10.7) UNRELEASED; urgency=medium
 
+  [ Niels Thykier ]
   * dh_usrlocal: Fix call to doit to avoid making it fork a shell.
   * autoconf.pm: Ditto.
   * cmake.pm: Ditto.
@@ -55,6 +56,12 @@ debhelper (10.7) UNRELEASED; urgency=medium
     misc:Pre-Depends are present to avoid relying external processes
     for this.
 
+  [ Colin Watson ]
+  * Quote assignment to $recommended_compat in case it isn't a valid Perl
+    version string (e.g. for Debian derivatives).  Fix typos that caused it
+    not to be used correctly.  Use the /g flag so that all instances of the
+    substitution variable are handled.
+
  -- Niels Thykier <ni...@thykier.net>  Sat, 15 Jul 2017 09:42:32 +0000
 
 debhelper (10.6.4) unstable; urgency=medium
diff --git a/man/po4a/po/de.po b/man/po4a/po/de.po
index 455c6c68..178db207 100644
--- a/man/po4a/po/de.po
+++ b/man/po4a/po/de.po
@@ -771,20 +771,20 @@ msgstr ""
 #: debhelper.pod:279
 msgid ""
 "Tell debhelper what compatibility level to use by writing a number to "
-"F<debian/compat>. For example, to use v#RECOMMEDED_COMPAT# mode:"
+"F<debian/compat>. For example, to use v#RECOMMENDED_COMPAT# mode:"
 msgstr ""
 "Schreiben Sie eine Zahl nach F<debian/compat>, um Debhelper mitzuteilen, "
 "welche Kompatibilitätsstufe es nutzen soll. Um beispielsweise den Modus "
-"V#RECOMMEDED_COMPAT# zu benutzen, geben Sie Folgendes ein:"
+"V#RECOMMENDED_COMPAT# zu benutzen, geben Sie Folgendes ein:"
 
 #. type: verbatim
 #: debhelper.pod:282
 #, no-wrap
 msgid ""
-"  % echo #RECOMMEDED_COMPAT# > debian/compat\n"
+"  % echo #RECOMMENDED_COMPAT# > debian/compat\n"
 "\n"
 msgstr ""
-"  % echo #RECOMMEDED_COMPAT# > debian/compat\n"
+"  % echo #RECOMMENDED_COMPAT# > debian/compat\n"
 "\n"
 
 #. type: textblock
@@ -792,23 +792,23 @@ msgstr ""
 msgid ""
 "Your package will also need a versioned build dependency on a version of "
 "debhelper equal to (or greater than) the compatibility level your package "
-"uses. So for compatibility level #RECOMMEDED_COMPAT#, ensure debian/control "
+"uses. So for compatibility level #RECOMMENDED_COMPAT#, ensure debian/control "
 "has:"
 msgstr ""
 "Ihr Paket wird außerdem eine Bauabhängigkeit mit Versionspflege auf eine "
 "Debhelper-Version benötigen, die gleich (oder größer) als die ist, die von "
 "der Kompatibilitätsstufe Ihres Pakets verwandt wird. Daher müssen Sie für "
-"Kompatibilitätsstufe #RECOMMEDED_COMPAT# sicherstellen, dass debian/control "
+"Kompatibilitätsstufe #RECOMMENDED_COMPAT# sicherstellen, dass debian/control "
 "Folgendes hat:"
 
 #. type: verbatim
 #: debhelper.pod:288
 #, no-wrap
 msgid ""
-"  Build-Depends: debhelper (>= #RECOMMEDED_COMPAT#)\n"
+"  Build-Depends: debhelper (>= #RECOMMENDED_COMPAT#)\n"
 "\n"
 msgstr ""
-"  Build-Depends: debhelper (>= #RECOMMEDED_COMPAT#)\n"
+"  Build-Depends: debhelper (>= #RECOMMENDED_COMPAT#)\n"
 "\n"
 
 #. type: textblock
diff --git a/man/po4a/po/debhelper.pot b/man/po4a/po/debhelper.pot
index 64580e12..46148e1e 100644
--- a/man/po4a/po/debhelper.pot
+++ b/man/po4a/po/debhelper.pot
@@ -553,14 +553,14 @@ msgstr ""
 #: debhelper.pod:279
 msgid ""
 "Tell debhelper what compatibility level to use by writing a number to "
-"F<debian/compat>. For example, to use v#RECOMMEDED_COMPAT# mode:"
+"F<debian/compat>. For example, to use v#RECOMMENDED_COMPAT# mode:"
 msgstr ""
 
 #. type: verbatim
 #: debhelper.pod:282
 #, no-wrap
 msgid ""
-"  % echo #RECOMMEDED_COMPAT# > debian/compat\n"
+"  % echo #RECOMMENDED_COMPAT# > debian/compat\n"
 "\n"
 msgstr ""
 
@@ -569,7 +569,7 @@ msgstr ""
 msgid ""
 "Your package will also need a versioned build dependency on a version of "
 "debhelper equal to (or greater than) the compatibility level your package "
-"uses. So for compatibility level #RECOMMEDED_COMPAT#, ensure debian/control "
+"uses. So for compatibility level #RECOMMENDED_COMPAT#, ensure debian/control "
 "has:"
 msgstr ""
 
@@ -577,7 +577,7 @@ msgstr ""
 #: debhelper.pod:288
 #, no-wrap
 msgid ""
-"  Build-Depends: debhelper (>= #RECOMMEDED_COMPAT#)\n"
+"  Build-Depends: debhelper (>= #RECOMMENDED_COMPAT#)\n"
 "\n"
 msgstr ""
 
diff --git a/man/po4a/po/es.po b/man/po4a/po/es.po
index cf0a643c..61655460 100644
--- a/man/po4a/po/es.po
+++ b/man/po4a/po/es.po
@@ -875,21 +875,21 @@ msgstr ""
 #| "F<debian/compat>. For example, to turn on v9 mode:"
 msgid ""
 "Tell debhelper what compatibility level to use by writing a number to "
-"F<debian/compat>. For example, to use v#RECOMMEDED_COMPAT# mode:"
+"F<debian/compat>. For example, to use v#RECOMMENDED_COMPAT# mode:"
 msgstr ""
 "Para especificar a debhelper qué nivel de compatibilidad debe utilizar, "
 "escriba un número en F<debian/compat>. Por ejemplo, para activar el modo "
-"v#RECOMMEDED_COMPAT#:"
+"v#RECOMMENDED_COMPAT#:"
 
 # type: verbatim
 #. type: verbatim
 #: debhelper.pod:282
 #, no-wrap
 msgid ""
-"  % echo #RECOMMEDED_COMPAT# > debian/compat\n"
+"  % echo #RECOMMENDED_COMPAT# > debian/compat\n"
 "\n"
 msgstr ""
-"  % echo #RECOMMEDED_COMPAT# > debian/compat\n"
+"  % echo #RECOMMENDED_COMPAT# > debian/compat\n"
 "\n"
 
 # type: textblock
@@ -898,13 +898,13 @@ msgstr ""
 msgid ""
 "Your package will also need a versioned build dependency on a version of "
 "debhelper equal to (or greater than) the compatibility level your package "
-"uses. So for compatibility level #RECOMMEDED_COMPAT#, ensure debian/control "
+"uses. So for compatibility level #RECOMMENDED_COMPAT#, ensure debian/control "
 "has:"
 msgstr ""
 "El paquete también requiere como dependencia de construcción («build-"
 "depend») una versión de debhelper igual o mayor que el nivel de "
 "compatibilidad de debhelper que utiliza el paquete. Por ejemplo, para "
-"utilizar el nivel de compatibilidad #RECOMMEDED_COMPAT#, compruebe que "
+"utilizar el nivel de compatibilidad #RECOMMENDED_COMPAT#, compruebe que "
 "«debian/control» contiene lo siguiente:"
 
 # type: verbatim
@@ -912,10 +912,10 @@ msgstr ""
 #: debhelper.pod:288
 #, no-wrap
 msgid ""
-"  Build-Depends: debhelper (>= #RECOMMEDED_COMPAT#)\n"
+"  Build-Depends: debhelper (>= #RECOMMENDED_COMPAT#)\n"
 "\n"
 msgstr ""
-"  Build-Depends: debhelper (>= #RECOMMEDED_COMPAT#)\n"
+"  Build-Depends: debhelper (>= #RECOMMENDED_COMPAT#)\n"
 "\n"
 
 # type: textblock
@@ -1687,13 +1687,13 @@ msgstr ""
 #: debhelper.pod:757
 #, fuzzy, no-wrap
 #| msgid ""
-#| "  % echo #RECOMMEDED_COMPAT# > debian/compat\n"
+#| "  % echo #RECOMMENDED_COMPAT# > debian/compat\n"
 #| "\n"
 msgid ""
 "  % echo beta-tester > debian/compat\n"
 "\n"
 msgstr ""
-"  % echo #RECOMMEDED_COMPAT# > debian/compat\n"
+"  % echo #RECOMMENDED_COMPAT# > debian/compat\n"
 "\n"
 
 #. type: textblock
@@ -1706,13 +1706,13 @@ msgstr ""
 #: debhelper.pod:761
 #, fuzzy, no-wrap
 #| msgid ""
-#| "  Build-Depends: debhelper (>= #RECOMMEDED_COMPAT#)\n"
+#| "  Build-Depends: debhelper (>= #RECOMMENDED_COMPAT#)\n"
 #| "\n"
 msgid ""
 "  Build-Depends: debhelper (>= 9.20160815~)\n"
 "\n"
 msgstr ""
-"  Build-Depends: debhelper (>= #RECOMMEDED_COMPAT#)\n"
+"  Build-Depends: debhelper (>= #RECOMMENDED_COMPAT#)\n"
 "\n"
 
 #. type: textblock
diff --git a/man/po4a/po/fr.po b/man/po4a/po/fr.po
index 4f115d84..c9701109 100644
--- a/man/po4a/po/fr.po
+++ b/man/po4a/po/fr.po
@@ -831,21 +831,21 @@ msgstr ""
 #: debhelper.pod:279
 msgid ""
 "Tell debhelper what compatibility level to use by writing a number to "
-"F<debian/compat>. For example, to use v#RECOMMEDED_COMPAT# mode:"
+"F<debian/compat>. For example, to use v#RECOMMENDED_COMPAT# mode:"
 msgstr ""
 "Pour indiquer à debhelper le niveau de compatibilité à utiliser il faut "
 "placer un nombre dans F<debian/compat>. Par exemple, pour exploiter la "
-"version #RECOMMEDED_COMPAT# :"
+"version #RECOMMENDED_COMPAT# :"
 
 # type: verbatim
 #. type: verbatim
 #: debhelper.pod:282
 #, no-wrap
 msgid ""
-"  % echo #RECOMMEDED_COMPAT# > debian/compat\n"
+"  % echo #RECOMMENDED_COMPAT# > debian/compat\n"
 "\n"
 msgstr ""
-" % echo #RECOMMEDED_COMPAT# > debian/compat\n"
+" % echo #RECOMMENDED_COMPAT# > debian/compat\n"
 "\n"
 
 # type: textblock
@@ -854,13 +854,13 @@ msgstr ""
 msgid ""
 "Your package will also need a versioned build dependency on a version of "
 "debhelper equal to (or greater than) the compatibility level your package "
-"uses. So for compatibility level #RECOMMEDED_COMPAT#, ensure debian/control "
+"uses. So for compatibility level #RECOMMENDED_COMPAT#, ensure debian/control "
 "has:"
 msgstr ""
 "Le paquet nécessitera aussi une version de debhelper dans les dépendances de "
 "construction au moins égale au niveau de compatibilité utilisée pour la "
 "construction du paquet. Ainsi, si le paquet emploie le "
-"niveau #RECOMMEDED_COMPAT# de compatibilité, F<debian/control> devra "
+"niveau #RECOMMENDED_COMPAT# de compatibilité, F<debian/control> devra "
 "contenir :"
 
 # type: verbatim
@@ -868,10 +868,10 @@ msgstr ""
 #: debhelper.pod:288
 #, no-wrap
 msgid ""
-"  Build-Depends: debhelper (>= #RECOMMEDED_COMPAT#)\n"
+"  Build-Depends: debhelper (>= #RECOMMENDED_COMPAT#)\n"
 "\n"
 msgstr ""
-" Build-Depends: debhelper (>= #RECOMMEDED_COMPAT#)\n"
+" Build-Depends: debhelper (>= #RECOMMENDED_COMPAT#)\n"
 "\n"
 
 # type: textblock
diff --git a/man/po4a/po/ja.po b/man/po4a/po/ja.po
index 7c42213e..08819570 100644
--- a/man/po4a/po/ja.po
+++ b/man/po4a/po/ja.po
@@ -752,19 +752,19 @@ msgstr ""
 #: debhelper.pod:279
 msgid ""
 "Tell debhelper what compatibility level to use by writing a number to "
-"F<debian/compat>. For example, to use v#RECOMMEDED_COMPAT# mode:"
+"F<debian/compat>. For example, to use v#RECOMMENDED_COMPAT# mode:"
 msgstr ""
 "数字を F<debian/compat> に記述して、debhelper にどの互換性レベルを使うかを教"
-"えます。例えば、v#RECOMMEDED_COMPAT# モードを使うには次の様にします:"
+"えます。例えば、v#RECOMMENDED_COMPAT# モードを使うには次の様にします:"
 
 #. type: verbatim
 #: debhelper.pod:282
 #, no-wrap
 msgid ""
-"  % echo #RECOMMEDED_COMPAT# > debian/compat\n"
+"  % echo #RECOMMENDED_COMPAT# > debian/compat\n"
 "\n"
 msgstr ""
-"  % echo #RECOMMEDED_COMPAT# > debian/compat\n"
+"  % echo #RECOMMENDED_COMPAT# > debian/compat\n"
 "\n"
 
 #. type: textblock
@@ -772,22 +772,22 @@ msgstr ""
 msgid ""
 "Your package will also need a versioned build dependency on a version of "
 "debhelper equal to (or greater than) the compatibility level your package "
-"uses. So for compatibility level #RECOMMEDED_COMPAT#, ensure debian/control "
+"uses. So for compatibility level #RECOMMENDED_COMPAT#, ensure debian/control "
 "has:"
 msgstr ""
 "パッケージは、利用する互換性レベルと同じ (あるいはそれ以上) のバージョンの "
 "debhelper プログラムをビルド依存として設定する必要があります。互換性レベル "
-"#RECOMMEDED_COMPAT# の場合、debian/control ファイルが以下の様になっていること"
-"を確認してください:"
+"#RECOMMENDED_COMPAT# の場合、debian/control ファイルが以下の様になっているこ"
+"とを確認してください:"
 
 #. type: verbatim
 #: debhelper.pod:288
 #, no-wrap
 msgid ""
-"  Build-Depends: debhelper (>= #RECOMMEDED_COMPAT#)\n"
+"  Build-Depends: debhelper (>= #RECOMMENDED_COMPAT#)\n"
 "\n"
 msgstr ""
-"  Build-Depends: debhelper (>= #RECOMMEDED_COMPAT#)\n"
+"  Build-Depends: debhelper (>= #RECOMMENDED_COMPAT#)\n"
 "\n"
 
 #. type: textblock
diff --git a/man/po4a/po/pt.po b/man/po4a/po/pt.po
index 821b90b2..f44464de 100644
--- a/man/po4a/po/pt.po
+++ b/man/po4a/po/pt.po
@@ -763,20 +763,20 @@ msgstr ""
 #: debhelper.pod:279
 msgid ""
 "Tell debhelper what compatibility level to use by writing a number to "
-"F<debian/compat>. For example, to use v#RECOMMEDED_COMPAT# mode:"
+"F<debian/compat>. For example, to use v#RECOMMENDED_COMPAT# mode:"
 msgstr ""
 "Diz ao debhelper qual nível de compatibilidade deve usar ao escrever um "
 "número em F<debian/compat>. Por exemplo, para usar o modo "
-"v#RECOMMEDED_COMPAT#:"
+"v#RECOMMENDED_COMPAT#:"
 
 #. type: verbatim
 #: debhelper.pod:282
 #, no-wrap
 msgid ""
-"  % echo #RECOMMEDED_COMPAT# > debian/compat\n"
+"  % echo #RECOMMENDED_COMPAT# > debian/compat\n"
 "\n"
 msgstr ""
-"  % echo #RECOMMEDED_COMPAT# > debian/compat\n"
+"  % echo #RECOMMENDED_COMPAT# > debian/compat\n"
 "\n"
 
 #. type: textblock
@@ -784,22 +784,22 @@ msgstr ""
 msgid ""
 "Your package will also need a versioned build dependency on a version of "
 "debhelper equal to (or greater than) the compatibility level your package "
-"uses. So for compatibility level #RECOMMEDED_COMPAT#, ensure debian/control "
+"uses. So for compatibility level #RECOMMENDED_COMPAT#, ensure debian/control "
 "has:"
 msgstr ""
 "O seu pacote também vai precisar de uma dependência de compilação de versão "
 "de uma versão do debhelper igual (ou maior que) ao nível de compatibilidade "
 "que o seu pacote usa. Portanto para nível de compatibilidade "
-"#RECOMMEDED_COMPAT#, certifique-se que debian/control tem:"
+"#RECOMMENDED_COMPAT#, certifique-se que debian/control tem:"
 
 #. type: verbatim
 #: debhelper.pod:288
 #, no-wrap
 msgid ""
-"  Build-Depends: debhelper (>= #RECOMMEDED_COMPAT#)\n"
+"  Build-Depends: debhelper (>= #RECOMMENDED_COMPAT#)\n"
 "\n"
 msgstr ""
-"  Build-Depends: debhelper (>= #RECOMMEDED_COMPAT#)\n"
+"  Build-Depends: debhelper (>= #RECOMMENDED_COMPAT#)\n"
 "\n"
 
 #. type: textblock
-- 
2.13.2

Reply via email to