Processed: Re: Bug#954374: libc6: please make maintainerscript compatible with busybox
Processing control commands: > tag -1 + patch Bug #954374 [libc6] libc6: please make maintainerscript compatible with busybox Added tag(s) patch. -- 954374: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=954374 Debian Bug Tracking System Contact ow...@bugs.debian.org with problems
Bug#954374: libc6: please make maintainerscript compatible with busybox
Control: tag -1 + patch Hi again, Quoting Johannes Schauer (2020-03-21 22:50:46) > Quoting Aurelien Jarno (2020-03-21 00:00:18) > > On 2020-03-20 22:57, Johannes 'josch' Schauer wrote: > > > would it be possible to make the libc6 preinst maintainer script > > > compatible with busybox? Currently the preinst script calls "readlink > > > -m" which is not supported by busybox. Hence the following error will be > > > thrown: > > > > > > BusyBox v1.30.1 (Debian 1:1.30.1-4) multi-call binary. > > > > > > Usage: readlink [-fnv] FILE > > > > > > Display the value of a symlink > > > > > > -f Canonicalize by following all symlinks > > > -n Don't add newline > > > -v Verbose > > > > > > I tried to prepare a patch for the preinst script but ran into a FTBFS: > > > > > > x86_64-linux-gnu-gcc-9 -shared -static-libgcc -Wl,-O1 -Wl,-z,defs > > > -Wl,-dynamic-linker=/lib64/ld-linux-x86-64.so.2 > > > -B/<>/build-tree/amd64-libc/csu/ > > > -Wl,--version-script=/<>/build-tree/amd64-libc/libnss_files.map > > > -Wl,-soname=libnss_files.so.2 -Wl,-z,combreloc -Wl,-z,relro > > > -Wl,--hash-style=both -L/<>/build-tree/amd64-libc > > > -L/<>/build-tree/amd64-libc/math > > > -L/<>/build-tree/amd64-libc/elf > > > -L/<>/build-tree/amd64-libc/dlfcn > > > -L/<>/build-tree/amd64-libc/nss > > > -L/<>/build-tree/amd64-libc/nis > > > -L/<>/build-tree/amd64-libc/rt > > > -L/<>/build-tree/amd64-libc/resolv > > > -L/<>/build-tree/amd64-libc/mathvec > > > -L/<>/build-tree/amd64-libc/support > > > -L/<>/build-tree/amd64-libc/nptl > > > -Wl,-rpath-link=/<>/build-tree/amd64-libc:/<>/build-tree/amd64-libc/math:/<>/build-tree/amd64-libc/elf:/<>/build-tree/amd64-libc/dlfcn:/<>/build-tree/amd64-libc/nss:/<>/build-tree/amd64-libc/nis:/<>/build-tree/amd64-libc/rt:/<>/build-tree/amd64-libc/resolv:/<>/build-tree/amd64-libc/mathvec:/<>/build-tree/amd64-libc/support:/<>/build-tree/amd64-libc/nptl > > > -o /<>/build-tree/amd64-libc/nss/libnss_files.so > > > /<>/build-tree/amd64-libc/csu/abi-note.o -Wl,--whole-archive > > > /<>/build-tree/amd64-libc/nss/libnss_files_pic.a > > > -Wl,--no-whole-archive -Wl,--start-group > > > /<>/build-tree/amd64-libc/linkobj/libc.so > > > /<>/build-tree/amd64-libc/libc_nonshared.a -Wl,--as-needed > > > /<>/build-tree/amd64-libc/elf/ld.so -Wl,--no-as-needed > > > -Wl,--end-group > > > /usr/bin/ld: > > > /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libselinux.so: > > > undefined reference to `gettid@GLIBC_2.30' > > > collect2: error: ld returned 1 exit status > > > > Strange. How did you try to build it? > > It turned out to be a problem on my side. Sorry for the false alarm. > > > > Thus, I'm now reporting this wishlist bug here before further working on > > > a fix. > > > > > > Would you be willing to accept a change that makes the preinst script of > > > libc6 compatible with readlink from busybox? > > > > On the principle yes, but it means we need to have an equivalent to > > readlink -m. Do you have a way for doing that in busybox? > > Indeed I have. There exists a version for bash with an extensive test suite: > https://github.com/bashup/realpaths I ported that one to POSIX shell while > keeping the test suite and comparing it with "realpath -m": > https://gitlab.mister-muffin.de/josch/realpath > > The preinst script should probably continue using coreutils readlink when it > exists and only fall back to the re-implementation in POSIX shell if the > version of readlink on the system does not provide the -m option (as it is the > case with busybox). > > Since I now was able to successfully rebuild glibc, I can confirm that this is > the last puzzlepiece needed to allow to create and configure a system > containing only the following packages (and their Depends) without errors: > base-files, base-passwd, busybox, debianutils, dpkg, libc-bin, mawk, tar > > So it would be great if this could be solved somehow. What do you think? :) In case you find it useful, attached is a debdiff that worked for me. Thanks! cheers, joschdiff -Nru glibc-2.30/debian/changelog glibc-2.30/debian/changelog --- glibc-2.30/debian/changelog 2020-03-12 23:47:03.0 +0100 +++ glibc-2.30/debian/changelog 2020-03-21 21:05:38.0 +0100 @@ -1,3 +1,10 @@ +glibc (2.30-2.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * wip + + -- Johannes 'josch' Schauer Sat, 21 Mar 2020 21:05:38 +0100 + glibc (2.30-2) unstable; urgency=medium * debian/rules.d/debhelper.mk: depends on libgcc-sN instead of libgccN. diff -Nru glibc-2.30/debian/debhelper.in/libc.preinst glibc-2.30/debian/debhelper.in/libc.preinst --- glibc-2.30/debian/debhelper.in/libc.preinst 2020-03-11 09:56:37.0 +0100 +++ glibc-2.30/debian/debhelper.in/libc.preinst 2020-03-21 21:05:38.0 +0100 @@ -90,6 +90,94 @@ done } +# realpath -m and readlink -m are not supported under busybox +# this function has a test suite and documentati
Bug#954374: libc6: please make maintainerscript compatible with busybox
Hi, Quoting Aurelien Jarno (2020-03-21 00:00:18) > On 2020-03-20 22:57, Johannes 'josch' Schauer wrote: > > would it be possible to make the libc6 preinst maintainer script > > compatible with busybox? Currently the preinst script calls "readlink > > -m" which is not supported by busybox. Hence the following error will be > > thrown: > > > > BusyBox v1.30.1 (Debian 1:1.30.1-4) multi-call binary. > > > > Usage: readlink [-fnv] FILE > > > > Display the value of a symlink > > > > -f Canonicalize by following all symlinks > > -n Don't add newline > > -v Verbose > > > > I tried to prepare a patch for the preinst script but ran into a FTBFS: > > > > x86_64-linux-gnu-gcc-9 -shared -static-libgcc -Wl,-O1 -Wl,-z,defs > > -Wl,-dynamic-linker=/lib64/ld-linux-x86-64.so.2 > > -B/<>/build-tree/amd64-libc/csu/ > > -Wl,--version-script=/<>/build-tree/amd64-libc/libnss_files.map > > -Wl,-soname=libnss_files.so.2 -Wl,-z,combreloc -Wl,-z,relro > > -Wl,--hash-style=both -L/<>/build-tree/amd64-libc > > -L/<>/build-tree/amd64-libc/math > > -L/<>/build-tree/amd64-libc/elf > > -L/<>/build-tree/amd64-libc/dlfcn > > -L/<>/build-tree/amd64-libc/nss > > -L/<>/build-tree/amd64-libc/nis > > -L/<>/build-tree/amd64-libc/rt > > -L/<>/build-tree/amd64-libc/resolv > > -L/<>/build-tree/amd64-libc/mathvec > > -L/<>/build-tree/amd64-libc/support > > -L/<>/build-tree/amd64-libc/nptl > > -Wl,-rpath-link=/<>/build-tree/amd64-libc:/<>/build-tree/amd64-libc/math:/<>/build-tree/amd64-libc/elf:/<>/build-tree/amd64-libc/dlfcn:/<>/build-tree/amd64-libc/nss:/<>/build-tree/amd64-libc/nis:/<>/build-tree/amd64-libc/rt:/<>/build-tree/amd64-libc/resolv:/<>/build-tree/amd64-libc/mathvec:/<>/build-tree/amd64-libc/support:/<>/build-tree/amd64-libc/nptl > > -o /<>/build-tree/amd64-libc/nss/libnss_files.so > > /<>/build-tree/amd64-libc/csu/abi-note.o -Wl,--whole-archive > > /<>/build-tree/amd64-libc/nss/libnss_files_pic.a > > -Wl,--no-whole-archive -Wl,--start-group > > /<>/build-tree/amd64-libc/linkobj/libc.so > > /<>/build-tree/amd64-libc/libc_nonshared.a -Wl,--as-needed > > /<>/build-tree/amd64-libc/elf/ld.so -Wl,--no-as-needed > > -Wl,--end-group > > /usr/bin/ld: > > /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libselinux.so: > > undefined reference to `gettid@GLIBC_2.30' > > collect2: error: ld returned 1 exit status > > Strange. How did you try to build it? It turned out to be a problem on my side. Sorry for the false alarm. > > Thus, I'm now reporting this wishlist bug here before further working on > > a fix. > > > > Would you be willing to accept a change that makes the preinst script of > > libc6 compatible with readlink from busybox? > > On the principle yes, but it means we need to have an equivalent to > readlink -m. Do you have a way for doing that in busybox? Indeed I have. There exists a version for bash with an extensive test suite: https://github.com/bashup/realpaths I ported that one to POSIX shell while keeping the test suite and comparing it with "realpath -m": https://gitlab.mister-muffin.de/josch/realpath The preinst script should probably continue using coreutils readlink when it exists and only fall back to the re-implementation in POSIX shell if the version of readlink on the system does not provide the -m option (as it is the case with busybox). Since I now was able to successfully rebuild glibc, I can confirm that this is the last puzzlepiece needed to allow to create and configure a system containing only the following packages (and their Depends) without errors: base-files, base-passwd, busybox, debianutils, dpkg, libc-bin, mawk, tar So it would be great if this could be solved somehow. What do you think? :) Thanks! cheers, josch signature.asc Description: signature
Bug#954374: libc6: please make maintainerscript compatible with busybox
Hi, On 2020-03-20 22:57, Johannes 'josch' Schauer wrote: > Package: libc6 > Version: 2.30-2 > Severity: wishlist > > Hi, > > would it be possible to make the libc6 preinst maintainer script > compatible with busybox? Currently the preinst script calls "readlink > -m" which is not supported by busybox. Hence the following error will be > thrown: > > BusyBox v1.30.1 (Debian 1:1.30.1-4) multi-call binary. > > Usage: readlink [-fnv] FILE > > Display the value of a symlink > > -f Canonicalize by following all symlinks > -n Don't add newline > -v Verbose > > I tried to prepare a patch for the preinst script but ran into a FTBFS: > > x86_64-linux-gnu-gcc-9 -shared -static-libgcc -Wl,-O1 -Wl,-z,defs > -Wl,-dynamic-linker=/lib64/ld-linux-x86-64.so.2 > -B/<>/build-tree/amd64-libc/csu/ > -Wl,--version-script=/<>/build-tree/amd64-libc/libnss_files.map > -Wl,-soname=libnss_files.so.2 -Wl,-z,combreloc -Wl,-z,relro > -Wl,--hash-style=both -L/<>/build-tree/amd64-libc > -L/<>/build-tree/amd64-libc/math > -L/<>/build-tree/amd64-libc/elf > -L/<>/build-tree/amd64-libc/dlfcn > -L/<>/build-tree/amd64-libc/nss > -L/<>/build-tree/amd64-libc/nis > -L/<>/build-tree/amd64-libc/rt > -L/<>/build-tree/amd64-libc/resolv > -L/<>/build-tree/amd64-libc/mathvec > -L/<>/build-tree/amd64-libc/support > -L/<>/build-tree/amd64-libc/nptl > -Wl,-rpath-link=/<>/build-tree/amd64-libc:/<>/build-tree/amd64-libc/math:/<>/build-tree/amd64-libc/elf:/<>/build-tree/amd64-libc/dlfcn:/<>/build-tree/amd64-libc/nss:/<>/build-tree/amd64-libc/nis:/<>/build-tree/amd64-libc/rt:/<>/build-tree/amd64-libc/resolv:/<>/build-tree/amd64-libc/mathvec:/<>/build-tree/amd64-libc/support:/<>/build-tree/amd64-libc/nptl > -o /<>/build-tree/amd64-libc/nss/libnss_files.so > /<>/build-tree/amd64-libc/csu/abi-note.o -Wl,--whole-archive > /<>/build-tree/amd64-libc/nss/libnss_files_pic.a > -Wl,--no-whole-archive -Wl,--start-group > /<>/build-tree/amd64-libc/linkobj/libc.so > /<>/build-tree/amd64-libc/libc_nonshared.a -Wl,--as-needed > /<>/build-tree/amd64-libc/elf/ld.so -Wl,--no-as-needed > -Wl,--end-group > /usr/bin/ld: > /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libselinux.so: > undefined reference to `gettid@GLIBC_2.30' > collect2: error: ld returned 1 exit status Strange. How did you try to build it? > Thus, I'm now reporting this wishlist bug here before further working on > a fix. > > Would you be willing to accept a change that makes the preinst script of > libc6 compatible with readlink from busybox? On the principle yes, but it means we need to have an equivalent to readlink -m. Do you have a way for doing that in busybox? Aurelien -- Aurelien Jarno GPG: 4096R/1DDD8C9B aurel...@aurel32.net http://www.aurel32.net
Bug#954374: libc6: please make maintainerscript compatible with busybox
Package: libc6 Version: 2.30-2 Severity: wishlist Hi, would it be possible to make the libc6 preinst maintainer script compatible with busybox? Currently the preinst script calls "readlink -m" which is not supported by busybox. Hence the following error will be thrown: BusyBox v1.30.1 (Debian 1:1.30.1-4) multi-call binary. Usage: readlink [-fnv] FILE Display the value of a symlink -f Canonicalize by following all symlinks -n Don't add newline -v Verbose I tried to prepare a patch for the preinst script but ran into a FTBFS: x86_64-linux-gnu-gcc-9 -shared -static-libgcc -Wl,-O1 -Wl,-z,defs -Wl,-dynamic-linker=/lib64/ld-linux-x86-64.so.2 -B/<>/build-tree/amd64-libc/csu/ -Wl,--version-script=/<>/build-tree/amd64-libc/libnss_files.map -Wl,-soname=libnss_files.so.2 -Wl,-z,combreloc -Wl,-z,relro -Wl,--hash-style=both -L/<>/build-tree/amd64-libc -L/<>/build-tree/amd64-libc/math -L/<>/build-tree/amd64-libc/elf -L/<>/build-tree/amd64-libc/dlfcn -L/<>/build-tree/amd64-libc/nss -L/<>/build-tree/amd64-libc/nis -L/<>/build-tree/amd64-libc/rt -L/<>/build-tree/amd64-libc/resolv -L/<>/build-tree/amd64-libc/mathvec -L/<>/build-tree/amd64-libc/support -L/<>/build-tree/amd64-libc/nptl -Wl,-rpath-link=/<>/build-tree/amd64-libc:/<>/build-tree/amd64-libc/math:/<>/build-tree/amd64-libc/elf:/<>/build-tree/amd64-libc/dlfcn:/<>/build-tree/amd64-libc/nss:/<>/build-tree/amd64-libc/nis:/<>/build-tree/amd64-libc/rt:/<>/build-tree/amd64-libc/resolv:/<>/build-tree/amd64-libc/mathvec:/<>/build-tree/amd64-libc/support:/<>/build-tree/amd64-libc/nptl -o /<>/build-tree/amd64-libc/nss/libnss_files.so /<>/build-tree/amd64-libc/csu/abi-note.o -Wl,--whole-archive /<>/build-tree/amd64-libc/nss/libnss_files_pic.a -Wl,--no-whole-archive -Wl,--start-group /<>/build-tree/amd64-libc/linkobj/libc.so /<>/build-tree/amd64-libc/libc_nonshared.a -Wl,--as-needed /<>/build-tree/amd64-libc/elf/ld.so -Wl,--no-as-needed -Wl,--end-group /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libselinux.so: undefined reference to `gettid@GLIBC_2.30' collect2: error: ld returned 1 exit status Thus, I'm now reporting this wishlist bug here before further working on a fix. Would you be willing to accept a change that makes the preinst script of libc6 compatible with readlink from busybox? Thanks! cheers, josch -- System Information: Debian Release: bullseye/sid APT prefers stable APT policy: (990, 'stable'), (500, 'unstable-debug'), (500, 'stable-updates'), (500, 'unstable'), (500, 'testing'), (1, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386, armhf Kernel: Linux 4.19.0-8-amd64 (SMP w/4 CPU cores) Kernel taint flags: TAINT_WARN Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8), LANGUAGE=en_US:en (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled