Processed: Re: Bug#954374: libc6: please make maintainerscript compatible with busybox

2020-03-22 Thread Debian Bug Tracking System
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

2020-03-22 Thread Johannes Schauer
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 

Bug#954374: libc6: please make maintainerscript compatible with busybox

2020-03-21 Thread Johannes Schauer
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

2020-03-20 Thread Aurelien Jarno
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

2020-03-20 Thread Johannes 'josch' Schauer
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