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