Build Breakage - busybox 1.27.2 with glibc-2.26 (rpc/rpc.h)

Reuben Farrelly reuben-busybox at reub.net
Sun Sep 10 06:36:33 UTC 2017


Hi,

Since upgrading from glibc-2.25 to glibc-2.26 I'm now seeing build 
breakage with busybox on an x86_64 Gentoo Linux installation.

This is on a gentoo box, and busybox is being called via genkernel:

gentoo-template boot # ./create-initramfs
* Gentoo Linux Genkernel; Version 3.5.2.1
* Running with options: --install --kerneldir=/usr/src/linux ramdisk

* Using genkernel.conf from /etc/genkernel.conf
* Sourcing arch-specific config.sh from 
/usr/share/genkernel/arch/x86_64/config.sh ..
* Sourcing arch-specific modules_load from 
/usr/share/genkernel/arch/x86_64/modules_load ..
* Linux Kernel 4.13.0-gentoo for x86_64...
* .. with config file /usr/share/genkernel/arch/x86_64/generated-config
* busybox: >> Applying patches...
patching file console-tools/openvt.c
Hunk #1 succeeded at 147 (offset 23 lines).
*           - 1.18.1-openvt.diff
patching file modutils/modprobe.c
Hunk #1 succeeded at 444 (offset 31 lines).
Hunk #2 succeeded at 492 (offset 32 lines).
*           - busybox-1.20.2-modprobe.patch
patching file util-linux/mdStart.c
*           - busybox-1.26.0-mdstart.patch
patching file libbb/u_signal_names.c
Hunk #1 succeeded at 76 (offset 10 lines).
Hunk #2 succeeded at 100 (offset 10 lines).
*           - busybox-1.7.4-signal-hack.patch
* busybox: >> Configuring...
* busybox: >> Compiling...
* ERROR: Failed to compile the "all" target...
*
* -- Grepping log... --
*
*  GEN     printutils/Kbuild
*  GEN     printutils/Config.in
*  GEN     applets/Kbuild

<>

*  gcc -Wp,-MD,util-linux/.more.o.d   -std=gnu99 -Iinclude -Ilibbb 
-include include/autoconf.h -D_GNU_SOURCE -DNDEBUG -D_LARGEFILE_SOURCE 
-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 
-D"BB_VER=KBUILD_STR(1.27.2)" -DBB_BT=AUTOCONF_TIMESTAMP  -Wall -Wshadow 
-Wwrite-strings -Wundef -Wstrict-prototypes -Wunused -Wunused-parameter 
-Wunused-function -Wunused-value -Wmissing-prototypes 
-Wmissing-declarations -Wno-format-security 
-Wdeclaration-after-statement -Wold-style-definition -fno-builtin-strlen 
-finline-limit=0 -fomit-frame-pointer -ffunction-sections 
-fdata-sections -fno-guess-branch-probability -funsigned-char 
-static-libgcc -falign-functions=1 -falign-jumps=1 -falign-labels=1 
-falign-loops=1 -fno-unwind-tables -fno-asynchronous-unwind-tables 
-fno-builtin-printf -Os     -D"KBUILD_STR(s)=#s" 
-D"KBUILD_BASENAME=KBUILD_STR(more)" -D"KBUILD_MODNAME=KBUILD_STR(more)" 
-c -o util-linux/more.o util-linux/more.c
*  gcc -Wp,-MD,util-linux/.mount.o.d   -std=gnu99 -Iinclude -Ilibbb 
-include include/autoconf.h -D_GNU_SOURCE -DNDEBUG -D_LARGEFILE_SOURCE 
-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 
-D"BB_VER=KBUILD_STR(1.27.2)" -DBB_BT=AUTOCONF_TIMESTAMP  -Wall -Wshadow 
-Wwrite-strings -Wundef -Wstrict-prototypes -Wunused -Wunused-parameter 
-Wunused-function -Wunused-value -Wmissing-prototypes 
-Wmissing-declarations -Wno-format-security 
-Wdeclaration-after-statement -Wold-style-definition -fno-builtin-strlen 
-finline-limit=0 -fomit-frame-pointer -ffunction-sections 
-fdata-sections -fno-guess-branch-probability -funsigned-char 
-static-libgcc -falign-functions=1 -falign-jumps=1 -falign-labels=1 
-falign-loops=1 -fno-unwind-tables -fno-asynchronous-unwind-tables 
-fno-builtin-printf -Os     -D"KBUILD_STR(s)=#s" 
-D"KBUILD_BASENAME=KBUILD_STR(mount)" 
-D"KBUILD_MODNAME=KBUILD_STR(mount)" -c -o util-linux/mount.o 
util-linux/mount.c
*util-linux/mount.c:252:11: fatal error: rpc/rpc.h: No such file or 
directory
* # include <rpc/rpc.h>
*           ^~~~~~~~~~~
*compilation terminated.
*make[1]: *** [scripts/Makefile.build:197: util-linux/mount.o] Error 1
*make[1]: *** Waiting for unfinished jobs....
*make: *** [Makefile:742: util-linux] Error 2

The cause of this is that rpc.h is no longer included in glibc-2.26. See 
the announcement and release notes here:

https://sourceware.org/ml/libc-alpha/2017-08/msg00010.html

* Sun RPC is deprecated. The rpcgen program, librpcsvc, and Sun RPC 
headers will only be built and installed when the GNU C Library is 
configured with --enable-obsolete-rpc.  This allows alternative RPC 
implementations, such as TIRPC or rpcsvc-proto, to be used.

So there are workarounds that work (enable obsolete-rpc).

But in my case I don't require RPC/NFS support anyway so I'd rather not 
even have to build the obsolete support for something which I don't 
need.  Normal util-linux tools build fine on this system, only the one 
included with busybox does not.

Please let me know if there is any other information required.  This one 
should be very easy to reproduce.  For me it is as easy as building 
against glibc-2.25 (works) vs 2.26 (fails) with no other changes in between.

Thanks,
Reuben


More information about the busybox mailing list