Package: devscripts
Version: 2.26.11
Severity: normal
Tags: patch

Dear Maintainer,

The refactor of the mmdebstrap builder that closed #1140552 introduced
another issue. It now makes all debrebuild --builder=mmdebstrap commands
fail if anything is set in the Environment section.

> "--chrooted-customize-hook=env --chdir=$quoted_custom_build_path "
>   . (map String::ShellQuote::shell_quote, @environment)
>   . " dpkg-buildpackage -uc -a $host_arch --build=$build",

The trailing string concatenation forces `map` into scalar context, in
which it returns the count of elements. For a buildinfo with N Environment
lines the customize-hook becomes `env --chdir=<path> N dpkg-buildpackage
...`, and env fails with `env: 'N': No such file or directory`.

It's reproducible by running the following:

  $ curl -sfLO
https://buildinfos.debian.net/buildinfo-pool/h/hello/hello_2.12.3-1_amd64.buildinfo
  $ debrebuild --builder=mmdebstrap --buildresult=./out
hello_2.12.3-1_amd64.buildinfo
  [...]
  I: running --chrooted-customize-hook in shell: sh -c 'env
--chdir=/build/reproducible-path/hello-2.12.3 5 dpkg-buildpackage -uc -a
amd64 --build=any'
  env: '5': No such file or directory
  E: command failed: env --chdir=/build/reproducible-path/hello-2.12.3 5
dpkg-buildpackage -uc -a amd64 --build=any

I've attached a patch that resolves the problem for me.

Kind regards,

Serge

-- Package-specific info:

--- /etc/devscripts.conf ---
Empty.

--- ~/.devscripts ---
Not present

-- System Information:
Debian Release: forky/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 6.12.101+deb13-amd64 (SMP w/2 CPU threads; PREEMPT)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8),
LANGUAGE=en_GB:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages devscripts depends on:
ii  dpkg-dev                 1.23.7
ii  file                     1:5.47-4
ii  gosop [sopv]             1.1.0-3+b3
ii  gpg                      2.4.9-7+b1
ii  gpg-agent                2.4.9-7+b1
ii  gpgv                     2.4.9-7+b1
ii  libconfig-inifiles-perl  3.002000-1
ii  libdpkg-perl             1.23.7
ii  libfile-dirlist-perl     0.05-3
ii  libfile-homedir-perl     1.006-2
ii  libfile-touch-perl       0.12-2
ii  libio-string-perl        1.08-4
ii  libmoo-perl              2.005005-1
ii  libwww-perl              6.83-1
ii  libyaml-libyaml-perl     0.910.0+ds-1+b1
ii  patchutils               0.4.5-1
ii  perl                     5.42.2-3
ii  python3                  3.14.6-1
ii  sensible-utils           0.0.26
ii  wdiff                    1.2.2-9

Versions of packages devscripts recommends:
ii  apt                         3.3.3
ii  curl                        8.21.0-2
ii  dctrl-tools                 2.24-3+b1
ii  debian-keyring              2026.06.27
ii  debian-tag2upload-keyring   1.2
ii  diffstat                    1.69-1
ii  dput                        1.2.4
ii  equivs                      2.3.3
ii  git-debpush                 16.7
ii  libdistro-info-perl         1.17
ii  libencode-locale-perl       1.05-3
ii  libgitlab-api-v4-perl       0.27-1
ii  libjson-perl                4.10000-1
ii  liblwp-protocol-https-perl  6.15-1
ii  libmetacpan-client-perl     2.044000-1
ii  libsoap-lite-perl           1.27-3
ii  libstring-shellquote-perl   1.04-3
ii  liburi-perl                 5.35-1
ii  licensecheck                3.3.9-1
ii  lintian                     2.139.0
ii  lzip                        1.26-1
ii  man-db                      2.13.1-1
ii  mmdebstrap                  1.5.7-3
ii  patch                       2.8-2
ii  pristine-tar                1.50+nmu2
ii  python3-apt                 3.1.0
ii  python3-debian              1.1.1
ii  python3-magic               2:0.4.27-6
ii  python3-requests            2.32.5+dfsg-2
ii  python3-unidiff             0.7.5-2
ii  python3-xdg                 0.28-3
ii  sbuild                      0.91.10
ii  strace                      7.0+ds-1
ii  unzip                       6.0-30
ii  wget                        1.25.0-3
ii  xz-utils                    5.8.3-1

Versions of packages devscripts suggests:
pn  adequate                            <none>
pn  at                                  <none>
pn  autopkgtest                         <none>
pn  bls-standalone                      <none>
pn  bsd-mailx | mailx                   <none>
ii  build-essential                     12.12
pn  check-all-the-things                <none>
ii  debhelper                           14.3
pn  default-mta | mail-transport-agent  <none>
pn  diffoscope                          <none>
pn  disorderfs                          <none>
pn  docker.io                           <none>
pn  dose-extra                          <none>
pn  duck                                <none>
pn  elpa-devscripts                     <none>
pn  faketime                            <none>
pn  gnuplot                             <none>
pn  how-can-i-help                      <none>
ii  libauthen-sasl-perl                 2.2000-1
pn  libdbd-pg-perl                      <none>
pn  libterm-size-perl                   <none>
ii  libtimedate-perl                    2.3500-1
pn  mutt                                <none>
ii  openssh-client [ssh-client]         1:10.4p1-4
pn  piuparts                            <none>
pn  postgresql-client                   <none>
pn  pristine-lfs                        <none>
ii  python3-debianbts                   4.1.1
pn  python3-pycurl                      <none>
pn  quilt                               <none>
pn  ratt                                <none>
pn  reprotest                           <none>
pn  svn-buildpackage                    <none>
pn  w3m                                 <none>

-- no debconf information
From 4aabf9fe328634b8801a7d3c4ab516be785dc024 Mon Sep 17 00:00:00 2001
From: Serge Schneider <[email protected]>
Date: Fri, 7 Aug 2026 10:51:49 +0100
Subject: [PATCH] debrebuild: join env-var list in mmdebstrap
 chrooted-customize-hook

The trailing string concatenation forced `map` into scalar context, in
which it returns the count of elements, not the mapped list. env(1) then
received that count as its command and failed with `env: 'N': No such
file or directory`.

Regression from #1140552.
---
 scripts/debrebuild.pl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/debrebuild.pl b/scripts/debrebuild.pl
index bf190ed6..d361107a 100755
--- a/scripts/debrebuild.pl
+++ b/scripts/debrebuild.pl
@@ -730,7 +730,7 @@ if ($builder eq "none") {
           . ".dsc $quoted_custom_build_path",
         (map { "--chrooted-customize-hook=$_" } @binnmucmds),
         "--chrooted-customize-hook=env --chdir=$quoted_custom_build_path "
-          . (map String::ShellQuote::shell_quote, @environment)
+          . (join ' ', map { String::ShellQuote::shell_quote($_) } @environment)
           . " dpkg-buildpackage -uc -a $host_arch --build=$build",
         "--chrooted-customize-hook=rm -r $quoted_custom_build_path",
         '--customize-hook=sync-out '
-- 
2.43.0

Reply via email to