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/<<PKGBUILDDIR>>/build-tree/amd64-libc/csu/ -Wl,--version-script=/<<PKGBUILDDIR>>/build-tree/amd64-libc/libnss_files.map -Wl,-soname=libnss_files.so.2 -Wl,-z,combreloc -Wl,-z,relro -Wl,--hash-style=both -L/<<PKGBUILDDIR>>/build-tree/amd64-libc -L/<<PKGBUILDDIR>>/build-tree/amd64-libc/math -L/<<PKGBUILDDIR>>/build-tree/amd64-libc/elf -L/<<PKGBUILDDIR>>/build-tree/amd64-libc/dlfcn -L/<<PKGBUILDDIR>>/build-tree/amd64-libc/nss -L/<<PKGBUILDDIR>>/build-tree/amd64-libc/nis -L/<<PKGBUILDDIR>>/build-tree/amd64-libc/rt -L/<<PKGBUILDDIR>>/build-tree/amd64-libc/resolv -L/<<PKGBUILDDIR>>/build-tree/amd64-libc/mathvec -L/<<PKGBUILDDIR>>/build-tree/amd64-libc/support -L/<<PKGBUILDDIR>>/build-tree/amd64-libc/nptl -Wl,-rpath-link=/<<PKGBUILDDIR>>/build-tree/amd64-libc:/<<PKGBUILDDIR>>/build-tree/amd64-libc/math:/<<PKGBUILDDIR>>/build-tree/amd64-libc/elf:/<<PKGBUILDDIR>>/build-tree/amd64-libc/dlfcn:/<<PKGBUILDDIR>>/build-tree/amd64-libc/nss:/<<PKGBUILDDIR>>/build-tree/amd64-libc/nis:/<<PKGBUILDDIR>>/build-tree/amd64-libc/rt:/<<PKGBUILDDIR>>/build-tree/amd64-libc/resolv:/<<PKGBUILDDIR>>/build-tree/amd64-libc/mathvec:/<<PKGBUILDDIR>>/build-tree/amd64-libc/support:/<<PKGBUILDDIR>>/build-tree/amd64-libc/nptl -o /<<PKGBUILDDIR>>/build-tree/amd64-libc/nss/libnss_files.so /<<PKGBUILDDIR>>/build-tree/amd64-libc/csu/abi-note.o -Wl,--whole-archive /<<PKGBUILDDIR>>/build-tree/amd64-libc/nss/libnss_files_pic.a -Wl,--no-whole-archive -Wl,--start-group /<<PKGBUILDDIR>>/build-tree/amd64-libc/linkobj/libc.so /<<PKGBUILDDIR>>/build-tree/amd64-libc/libc_nonshared.a -Wl,--as-needed /<<PKGBUILDDIR>>/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
Attachment:
signature.asc
Description: signature