Bug#954393: please Breaks: libc6-dev-${DEB_HOST_ARCH}-cross (<< ${CURRENT_UPSTREAM_VERSION})

2020-03-21 Thread Helmut Grohne
Package: libc6-dev
Version: 2.30-2
Severity: wishlist

Every time a new glibc upstream release gets uploaded,
cross-toolchain-base breaks in difficult to diagnose ways. This seems to
happen, because gcc uses the libc6-dev:somearch headers together with
libc6-dev-somearch-cross libraries.

Would you agree to have libc6-dev declare

Breaks: libc6-dev-${DEB_HOST_ARCH}-cross (<< ${CURRENT_UPSTREAM_VERSION}~)

where CURRENT_UPSTREAM_VERSION would presently be 2.30? I think that'd
spare us from diagnosing these issues in general.

Helmut



Bug#954392: libc6-dev-armhf-cross is incompatible with current libc6-dev:armhf

2020-03-21 Thread Helmut Grohne
Package: libc6-dev-armhf-cross
Version: 2.29-9cross1
Severity: serious

The current libc6-dev-armhf-cross is incompatible with libc6-dev:armhf
versioned >= 2.30. Typical symptoms include (mips64el this time, but
also reproducible for armhf):

/usr/lib/gcc-cross/mips64el-linux-gnuabi64/9/../../../../mips64el-linux-gnuabi64/bin/ld:
 /lib/mips64el-linux-gnuabi64/libpthread.so.0: undefined reference to 
`__twalk_r@GLIBC_PRIVATE'
/usr/lib/gcc-cross/mips64el-linux-gnuabi64/9/../../../../mips64el-linux-gnuabi64/bin/ld:
 /lib/mips64el-linux-gnuabi64/libsystemd.so: undefined reference to 
`gettid@GLIBC_2.30'

This seems to happen, because gcc uses the glibc 2.30 headers from
libc6-dev:armhf and then links the shared library from
libc6-dev-armhf-cross. Deferring the sysroot library path after the
multiarch library path might solve this.

In the mean time, please rebuild cross-toolchain-base with glibc >=
2.30.

Helmut



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