There are cases where one doesn't want ldconfig on target (e.g. for read-only root filesystems, it's rather pointless), yet one still needs ld.so.conf to be present at image build time:
When some recipe installs libraries to a non-standard location, and dutifully drops in a file in /etc/ld.so.conf.d/foo.conf, we need the ld.so.conf containing the include /etc/ld.so.conf.d/*.conf stanza to get those other locations picked up. So change the packaging logic so that there's always an ld.so.conf present when the build-time ldconfig runs, then delete it (and the .d directory) when they would serve no purpose at run-time. While here, fix a typo in the bb.note so one can just copy-paste the line from the log-file and redo the command. Signed-off-by: Rasmus Villemoes <[email protected]> --- meta/lib/oe/rootfs.py | 11 ++++++++++- meta/recipes-core/glibc/glibc-package.inc | 4 ++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/meta/lib/oe/rootfs.py b/meta/lib/oe/rootfs.py index cd65e62030..0ff4278d15 100644 --- a/meta/lib/oe/rootfs.py +++ b/meta/lib/oe/rootfs.py @@ -297,9 +297,18 @@ class Rootfs(object, metaclass=ABCMeta): def _run_ldconfig(self): if self.d.getVar('LDCONFIGDEPEND'): - bb.note("Executing: ldconfig -r" + self.image_rootfs + "-c new -v") + bb.note("Executing: ldconfig -r " + self.image_rootfs + " -c new -v") self._exec_shell_cmd(['ldconfig', '-r', self.image_rootfs, '-c', 'new', '-v']) + # If DISTRO_FEATURES doesn't contain ldconfig, and the + # ldconfig binary hasn't been pulled in explicitly, remove the + # configuration file(s) from the image. + keep_conf = bb.utils.contains("DISTRO_FEATURES", "ldconfig", True, False, self.d) + keep_conf = keep_conf or os.path.exists(os.path.join(self.image_rootfs, self.d.getVar('base_sbindir'), 'ldconfig')) + if not keep_conf: + sysconfdir = os.path.join(self.image_rootfs, self.d.getVar('sysconfdir')) + bb.utils.remove(os.path.join(sysconfdir, 'ld.so.conf')) + bb.utils.remove(os.path.join(sysconfdir, 'ld.so.conf.d'), recurse=True) def _check_for_kernel_modules(self, modules_dir): for root, dirs, files in os.walk(modules_dir, topdown=True): diff --git a/meta/recipes-core/glibc/glibc-package.inc b/meta/recipes-core/glibc/glibc-package.inc index aa8e059216..387e90a0ab 100644 --- a/meta/recipes-core/glibc/glibc-package.inc +++ b/meta/recipes-core/glibc/glibc-package.inc @@ -23,9 +23,9 @@ ARCH_DYNAMIC_LOADER_aarch64 = "ld-linux-${TARGET_ARCH}.so.1" libc_baselibs_append = " ${@oe.utils.conditional('ARCH_DYNAMIC_LOADER', '', '', '${root_prefix}/lib/${ARCH_DYNAMIC_LOADER}', d)}" INSANE_SKIP_${PN}_append_aarch64 = " libdir" -FILES_${PN} = "${libc_baselibs} ${libexecdir}/*" +FILES_${PN} = "${libc_baselibs} ${libexecdir}/* ${sysconfdir}/ld.so.conf" RRECOMMENDS_${PN} = "${@bb.utils.filter('DISTRO_FEATURES', 'ldconfig', d)}" -FILES_ldconfig = "${base_sbindir}/ldconfig ${sysconfdir}/ld.so.conf" +FILES_ldconfig = "${base_sbindir}/ldconfig" FILES_ldd = "${bindir}/ldd" FILES_libsegfault = "${base_libdir}/libSegFault*" FILES_libcidn = "${base_libdir}/libcidn-*.so ${base_libdir}/libcidn.so.*" -- 2.23.0
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#138401): https://lists.openembedded.org/g/openembedded-core/message/138401 Mute This Topic: https://lists.openembedded.org/mt/74289052/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
