shadow: link executables statically for -native variant

shadow 4.14.x adds a number of libraries it dynamically links with
(md, bsd, attr). This causes troubles in setscene tasks where
shadow executables are used (such as useradd), as pulling in
the needed dynamic libraries needs unpleasant special-casing.

(From OE-Core rev: 495ff95eae14a91c94187f78a0b30c7957c9b168)

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Alexander Kanavin authored and Richard Purdie committed 2024-01-12 11:54:05 +00:00
1 parent 405cc80b6b
commit ea9e07a3e2
2 files changed
+15

No files matched your search

@@ -21,6 +21,11 @@ DISABLE_STATIC:pn-libusb1-native = ""
# needed by rust
DISABLE_STATIC:pn-musl = ""
# needed by shadow-native to build static executables, particularly useradd
DISABLE_STATIC:pn-attr-native = ""
DISABLE_STATIC:pn-libbsd-native = ""
DISABLE_STATIC:pn-libmd-native = ""
EXTRA_OECONF:append = "${DISABLE_STATIC}"
EXTRA_OECMAKE:append:pn-libical = " -DSHARED_ONLY=True"
+10
View File
@@ -47,6 +47,16 @@ EXTRA_OECONF += "--without-libcrack \
CFLAGS:append:libc-musl = " -DLIBBSD_OVERLAY"
# Force static linking of utilities so we can use from the sysroot/sstate for useradd
# without worrying about the dependency libraries being available
LDFLAGS:append:class-native = " -no-pie"
do_compile:prepend:class-native () {
sed -i -e 's#\(LIBS.*\)-lbsd#\1 ${STAGING_LIBDIR}/libbsd.a ${STAGING_LIBDIR}/libmd.a#g' \
-e 's#\(LIBBSD.*\)-lbsd#\1 ${STAGING_LIBDIR}/libbsd.a ${STAGING_LIBDIR}/libmd.a#g' \
-e 's#\(LIBATTR.*\)-lattr#\1 ${STAGING_LIBDIR}/libattr.a#g' \
${B}/lib/Makefile ${B}/src/Makefile
}
NSCDOPT = ""
NSCDOPT:class-native = "--without-nscd"
NSCDOPT:class-nativesdk = "--without-nscd"