Your message dated Mon, 22 Apr 2024 17:02:11 +0000
with message-id <e1ryx3t-0052ww...@fasolo.debian.org>
and subject line Bug#1039612: fixed in libtool 2.4.7-7~deb12u1
has caused the Debian Bug report #1039612,
regarding libtool: Incorrect check for += operator causes func_append to fail
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
1039612: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1039612
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: libtool
Version: 2.4.6-15
Severity: grave
Tags: patch
Justification: renders package unusable
X-Debbugs-Cc: erjoa...@gmail.com

Dear Maintainer,

While building isc-dhcpd-server, I tried using autoreconf as per instructions
to generate the ./configure file.
But running `autoreconf -i` on this project failed with this error:

    /usr/bin/libtoolize: 1: eval: hookable_fns+=: not found
    /usr/bin/libtoolize: 1: eval: hookable_fns+=: not found
    /usr/bin/libtoolize: 1: eval: hookable_fns+=: not found
    /usr/bin/libtoolize: 1: eval: hookable_fns+=: not found
    libtoolize:   error: 'func_options_prep' does not accept hook functions.
    autoreconf: libtoolize failed with exit status: 1
    
Some others have reported this error, but the solution mentioned in that thread
was to run as root, which I shouldn't have to do to build in a local directory:

https://github.com/libsndfile/libsndfile/issues/132#issue-153391414

Looking at the source, I noticed the problem is not that
`func_options_prep does not accept hook functions`,
but that the script assumes the append operator `+=` works when it doesn't.

This assumption is based on the value of BASH_VERSION, but unfortunately this 
is not reliable:


    if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then
        : ${_G_HAVE_ARITH_OP="yes"}
        : ${_G_HAVE_XSI_OPS="yes"}
        # The += operator was introduced in bash 3.1
        case $BASH_VERSION in
          [12].* | 3.0 | 3.0*) ;;
          *)
            : ${_G_HAVE_PLUSEQ_OP="yes"} # not really!
            ;;
        esac
      fi


It's not reliable because on my system, plain debian 11, /bin/sh is linked to
/usr/bin/dash, but the BASH_VERSION environment variable appears to have been
inherited from the bash process on my terminal and it is not
modified or deleted by dash. And += doesn't work in dash:

    █[debian-x1-7th][isc-dhcp-4.4.1][0]$ ls -l /usr/bin/sh
    lrwxrwxrwx 1 root root 4 Apr 27 17:06 /usr/bin/sh -> dash
    █[debian-x1-7th][isc-dhcp-4.4.1][130]$ dash
    \[\]█\[\][\h][\W][0]$ \[\]echo $BASH_VERSION
    5.1.4(1)-release
    \[\]█\[\][\h][\W][0]$ \[\]a=1
    \[\]█\[\][\h][\W][0]$ \[\]a+=2
    dash: 3: a+=2: not found
    \[\]█\[\][\h][\W][127]$ \[\]
    

There's some advice online about how to find the true name of the shell:
https://stackoverflow.com/questions/23011370/ but I think it is too
complicated and error prone, and I think
the simplest way to correct this is to actually test for the feature directly
as is already being done in the script:

    (eval 'x=a; x+=" b"; test "a b" = "$x"') && _G_HAVE_PLUSEQ_OP=yes


There is a comment expressing concern about speed of the test above and about
minimizing forks:


    # We should try to minimise forks, especially on Windows where they are
    # unreasonably slow, so skip the feature probes when bash or zsh are
    # being used:

But I don't see any reason for needing a fork here:
    
    if test -z "$_G_HAVE_PLUSEQ_OP" &&  \
        __PLUSEQ_TEST="a" &&  \
        __PLUSEQ_TEST+=" b" 2>/dev/null &&  \
        test "a b" = "$__PLUSEQ_TEST"; then
      _G_HAVE_PLUSEQ_OP=yes
    fi
    

Even if a fork were needed, I don't think the possible speedup of avoiding the
a one-line feature probe is worth the risk of breaking users who
invoke this script from a parent bash terminal.

I'm including my suggested patch inline below:


527,547c527,535
<   # We should try to minimise forks, especially on Windows where they are
<   # unreasonably slow, so skip the feature probes when bash or zsh are
<   # being used:
<   if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then
<     : ${_G_HAVE_ARITH_OP="yes"}
<     : ${_G_HAVE_XSI_OPS="yes"}
<     # The += operator was introduced in bash 3.1
<     case $BASH_VERSION in
<       [12].* | 3.0 | 3.0*) ;;
<       *)
<         : ${_G_HAVE_PLUSEQ_OP="yes"}
<         ;;
<     esac
<   fi
< 
<   # _G_HAVE_PLUSEQ_OP
<   # Can be empty, in which case the shell is probed, "yes" if += is
<   # useable or anything else if it does not work.
<   test -z "$_G_HAVE_PLUSEQ_OP" \
<     && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \
<     && _G_HAVE_PLUSEQ_OP=yes
---
> # _G_HAVE_PLUSEQ_OP
> # Can be empty, in which case the shell is probed, "yes" if += is
> # usable or anything else if it does not work.
> if test -z "$_G_HAVE_PLUSEQ_OP" &&  \
>     __PLUSEQ_TEST="a" &&  \
>     __PLUSEQ_TEST+=" b" 2>/dev/null &&  \
>     test "$__PLUSEQ_TEST" = "a b"; then
>   _G_HAVE_PLUSEQ_OP=yes
> fi

Thanks,

Ernesto

*** Reporter, please consider answering these questions, where appropriate ***

   * What led up to the situation?
   * What exactly did you do (or not do) that was effective (or
     ineffective)?
   * What was the outcome of this action?
   * What outcome did you expect instead?

*** End of the template - remove these template lines ***


-- System Information:
Debian Release: 11.7
  APT prefers oldstable-updates
  APT policy: (500, 'oldstable-updates'), (500, 'oldstable')
Architecture: amd64 (x86_64)

Kernel: Linux 5.10.0-22-amd64 (SMP w/8 CPU threads)
Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages libtool depends on:
ii  autotools-dev         20180224.1+nmu1
ii  cpp                   4:10.2.1-1
ii  file                  1:5.39-3
ii  gcc [c-compiler]      4:10.2.1-1
ii  gcc-10 [c-compiler]   10.2.1-6
ii  libc6-dev [libc-dev]  2.31-13+deb11u6

Versions of packages libtool recommends:
ii  libltdl-dev  2.4.6-15

Versions of packages libtool suggests:
ii  autoconf                          2.69-14
ii  automake [automaken]              1:1.16.3-2
pn  gcj-jdk                           <none>
ii  gfortran                          4:10.2.1-1
ii  gfortran-10 [fortran95-compiler]  10.2.1-6
pn  libtool-doc                       <none>

-- no debconf information
527,547c527,535
<   # We should try to minimise forks, especially on Windows where they are
<   # unreasonably slow, so skip the feature probes when bash or zsh are
<   # being used:
<   if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then
<     : ${_G_HAVE_ARITH_OP="yes"}
<     : ${_G_HAVE_XSI_OPS="yes"}
<     # The += operator was introduced in bash 3.1
<     case $BASH_VERSION in
<       [12].* | 3.0 | 3.0*) ;;
<       *)
<         : ${_G_HAVE_PLUSEQ_OP="yes"}
<         ;;
<     esac
<   fi
< 
<   # _G_HAVE_PLUSEQ_OP
<   # Can be empty, in which case the shell is probed, "yes" if += is
<   # useable or anything else if it does not work.
<   test -z "$_G_HAVE_PLUSEQ_OP" \
<     && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \
<     && _G_HAVE_PLUSEQ_OP=yes
---
> # _G_HAVE_PLUSEQ_OP
> # Can be empty, in which case the shell is probed, "yes" if += is
> # useable or anything else if it does not work.
> if test -z "$_G_HAVE_PLUSEQ_OP" &&  \
>     __PLUSEQ_TEST="a" &&  \
>     __PLUSEQ_TEST+=" b" 2>/dev/null &&  \
>     test "a b" = "$__PLUSEQ_TEST"; then
>   _G_HAVE_PLUSEQ_OP=yes
> fi

--- End Message ---
--- Begin Message ---
Source: libtool
Source-Version: 2.4.7-7~deb12u1
Done: Andreas Beckmann <a...@debian.org>

We believe that the bug you reported is fixed in the latest version of
libtool, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 1039...@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Andreas Beckmann <a...@debian.org> (supplier of updated libtool package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmas...@ftp-master.debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Format: 1.8
Date: Tue, 09 Apr 2024 22:04:40 +0200
Source: libtool
Architecture: source
Version: 2.4.7-7~deb12u1
Distribution: bookworm
Urgency: medium
Maintainer: Alastair McKinstry <mckins...@debian.org>
Changed-By: Andreas Beckmann <a...@debian.org>
Closes: 1039583 1039612 1041229
Changes:
 libtool (2.4.7-7~deb12u1) bookworm; urgency=medium
 .
   * Non-maintainer upload.
   * Rebuild for bookworm.
   * Reinstate obsolete Breaks, Provides.
 .
 libtool (2.4.7-7) unstable; urgency=medium
 .
   * Remove obsolete Breaks: for oldstable, Provides: libltdl7-dev.
   * Replace Breaks: libltdl3-dev with Conflicts: libltdl3-dev.
     Thanks  Andreas Beckmann. Closes: #1041229
 .
 libtool (2.4.7-6) unstable; urgency=medium
 .
   * Incorrect check for += operator causes func_append to fail
     Patch from Ernesto Alfonso. Closes: #1039612
   * Standards-Version: 4.6.2
   * Add Breaks/Replaces on libtldl3-dev. Closes: #1039583
Checksums-Sha1:
 a6cd16cd9029c360d22fb0800bf36eec6c3b7d4e 2314 libtool_2.4.7-7~deb12u1.dsc
 66bc345cd1d47f6b081091b98973f2658c3ff24e 41016 
libtool_2.4.7-7~deb12u1.debian.tar.xz
 31aff4212c73e5d0ff4ad8134eceda31a22c85e2 6296 
libtool_2.4.7-7~deb12u1_source.buildinfo
Checksums-Sha256:
 4285486d14795acbc423442e183c976625f7d481ac0ec3a0ec1ff800046310c4 2314 
libtool_2.4.7-7~deb12u1.dsc
 c9e5cb0a64b0d02976bcb02b554a565fbdc5da9aef036ecd66328d6230843dda 41016 
libtool_2.4.7-7~deb12u1.debian.tar.xz
 23b32a19c73770bb14645257e8a237e15b8da7600131045a2b51ffa9d4727ed9 6296 
libtool_2.4.7-7~deb12u1_source.buildinfo
Files:
 f316573efa903a845d26348f27a47ef0 2314 devel optional 
libtool_2.4.7-7~deb12u1.dsc
 c40bc74f5d89a4f84cd403b574f2c287 41016 devel optional 
libtool_2.4.7-7~deb12u1.debian.tar.xz
 c4e32d1a1911a0fbd165dc1a0f2ddd87 6296 devel optional 
libtool_2.4.7-7~deb12u1_source.buildinfo

-----BEGIN PGP SIGNATURE-----

iQJEBAEBCAAuFiEE6/MKMKjZxjvaRMaUX7M/k1np7QgFAmYVn8gQHGFuYmVAZGVi
aWFuLm9yZwAKCRBfsz+TWentCDYZEACYUU1qYcnbwzbzsmNoxZVDq98nTEULKdvX
HmUmTPiIebpnbMBIcLBuEeQOfzPgqmZC9jfeGextNWUjHasM72zaccOQhXpvYm1m
yCQyy3Ulq/eZkAo09oKgBYQEZ6DfkGXVTOuCoExUb/FK7gRxWk6sodXsQpKITBiC
6IBwkUjLgmy1Cth8DkdIRRmV3vONLep3z3uEBs/U4b0OI+i9MlwzzT0fQmrhaCwj
Fa3HRn9uU6JKS0mXnSMTU4eN/bzMAhsS3RyXNfkOo5wir3Sa4/Awbi0t/WLpg+nV
pNaUVkFfsBMOcDXPcS/8UDJFu168R7bihL2IeWsgMRewfFrFRUKKuPyPC6QBnz11
SvCRoorncLdKMeKO/pg6PS59wuXVuZO2o/FR8g7v4hLN2Pps4I+bVbJ4rOY9bFsK
+aJBFqALn7GoyPU0H+AurWTDPNOv/Q/UF1jZB1ZbERsCnX9yl2wCBJ1dTwkIbMKi
teuF0lIr6YDTWlWeuL4oBkQd9hInzDB4V9NMzw6OLEFTdsF/GbylI9722lMyuRnu
mwh+p7m59cTnGwcumVV3iKGEIghPdwGSinieFMEssVVjS4NwsZcLNkJl2nz6zOw5
U0Ea6HelooGoKDKPmrmL4qlWhSOs+BMWotmVFpF0kQ3DNiq2WJgFABRIpf5CZ0Ol
8Mo0zhGW1A==
=i5oj
-----END PGP SIGNATURE-----

Attachment: pgppcAKgEWGcW.pgp
Description: PGP signature


--- End Message ---

Reply via email to