Package: debhelper
Version: 13.11.1

Hello!

The fix of https://bugs.debian.org/1016354 resulted in a regression so Ubuntu's debhelper extension dh-translations stopped working.

This is the commit:

https://salsa.debian.org/debian/debhelper/-/commit/62a8608e

The qx_cmd() function has been used conveniently in dh_translations to grab the output from a few commands which make use of pipes. Now that doesn't work any longer. It was resolved for now by copying the qx_cmd() function as it looked like before commit 62a8608e into dh_translations. Please see the attached diff.

This raises the question if there is a need also for a 'cleaner' qx_cmd function. Maybe "complex_qx_cmd" (compare complex_doit).

--
Cheers,

Gunnar Hjalmarsson
--- /usr/bin/dh_translations.orig	2019-02-05 16:05:37.000000000 +0100
+++ /usr/bin/dh_translations	2023-01-14 09:15:08.190676370 +0100
@@ -55,6 +55,26 @@
 
 my ($domain, $use_intltool, $meson_builddir);
 
+# This is the version of the qx_cmd() function in Dh_Lib.pm before
+# https://salsa.debian.org/debian/debhelper/-/commit/62a8608
+sub qx_meson_cmd {
+	my (@cmd) = @_;
+	my ($output, @output);
+	open(my $fd, '-|', @cmd) or error('fork+exec (' . escape_shell(@cmd) . "): $!");
+	if (wantarray) {
+		@output = <$fd>;
+	} else {
+		local $/ = undef;
+		$output = <$fd>;
+	}
+	if (not close($fd)) {
+		error("close pipe failed: $!") if $!;
+		error_exitcode(escape_shell(@cmd));
+	}
+	return @output if wantarray;
+	return $output;
+}
+
 # figure out intltool usage and domain
 sub check_buildsystem {
     $use_intltool = 0;
@@ -88,7 +108,7 @@
 
             $meson_builddir = File::Spec->rel2abs($dirs[0]);
 
-            my $all_domains = qx_cmd ("meson introspect '$meson_builddir' --targets | jq -r -M '.[].name | select(endswith(\"-pot\")) | sub(\"-pot\"; \"\")'");
+            my $all_domains = qx_meson_cmd ("meson introspect '$meson_builddir' --targets | jq -r -M '.[].name | select(endswith(\"-pot\")) | sub(\"-pot\"; \"\")'");
 
             my @domains = split (' ', $all_domains);
 
@@ -101,10 +121,10 @@
             } else {
                 # meson 0.49 changed the property name from 'name' to 'descriptive_name'
                 # prevent confusion due to possible help-* domain
-                my $project = qx_cmd ("meson introspect '$meson_builddir' --projectinfo | jq -r '.descriptive_name'");
+                my $project = qx_meson_cmd ("meson introspect '$meson_builddir' --projectinfo | jq -r '.descriptive_name'");
                 chomp $project;
                 if ($project eq "null") {
-                    $project = qx_cmd ("meson introspect '$meson_builddir' --projectinfo | jq -r '.name'");
+                    $project = qx_meson_cmd ("meson introspect '$meson_builddir' --projectinfo | jq -r '.name'");
                     chomp $project;
                 }
                 @domains = grep { $_ ne 'help-'.$project } @domains;

Reply via email to