Add an option to install the ldconfig binary from the toolchain and another one to enable the generation of /etc/ld.so.cache at first boot with a rc-once.d script. Use only the new format, which is supported since glibc 2.2 from the year 2000.
Signed-off-by: Clemens Gruber <clemens.gru...@pqgruber.com> --- Changes from v1: - Added ld.so.conf and include .conf files from ld.so.conf.d directory projectroot/etc/ld.so.conf | 1 + projectroot/etc/ld.so.conf.d/.keep | 0 projectroot/etc/rc.once.d/ldconfig | 6 ++++++ rules/glibc.in | 17 +++++++++++++++++ rules/glibc.make | 14 ++++++++++++++ 5 files changed, 38 insertions(+) create mode 100644 projectroot/etc/ld.so.conf create mode 100644 projectroot/etc/ld.so.conf.d/.keep create mode 100644 projectroot/etc/rc.once.d/ldconfig diff --git a/projectroot/etc/ld.so.conf b/projectroot/etc/ld.so.conf new file mode 100644 index 0000000..83327c0 --- /dev/null +++ b/projectroot/etc/ld.so.conf @@ -0,0 +1 @@ +include /etc/ld.so.conf.d/*.conf diff --git a/projectroot/etc/ld.so.conf.d/.keep b/projectroot/etc/ld.so.conf.d/.keep new file mode 100644 index 0000000..e69de29 diff --git a/projectroot/etc/rc.once.d/ldconfig b/projectroot/etc/rc.once.d/ldconfig new file mode 100644 index 0000000..d5461a7 --- /dev/null +++ b/projectroot/etc/rc.once.d/ldconfig @@ -0,0 +1,6 @@ +#!/bin/sh + +PATH=/sbin:/bin:/usr/sbin:/usr/bin + +echo "Creating dynamic linker cache..." +ldconfig --format=new -X diff --git a/rules/glibc.in b/rules/glibc.in index 2f2fb09..662f0aa 100644 --- a/rules/glibc.in +++ b/rules/glibc.in @@ -172,6 +172,23 @@ config GLIBC_NSL nis(+) +config GLIBC_LDCONFIG + bool + prompt "Install ldconfig" + help + ldconfig creates a shared library cache, which reduces the number + of library locations, the loader needs to check, significantly and + therefore improves launch times for programs. + +config GLIBC_LDCONFIG_RC_ONCE + bool + prompt "Create /etc/ld.so.cache" + depends on GLIBC_LDCONFIG + help + The ld.so.cache is generated once at first boot. If you update your + libraries later on at runtime, you have to make sure to update the + cache as well. See /etc/rc.once.d/ldconfig + config GLIBC_I18N_BIN_LOCALE bool prompt "Install locale" diff --git a/rules/glibc.make b/rules/glibc.make index ab2c4b6..82a8715 100644 --- a/rules/glibc.make +++ b/rules/glibc.make @@ -4,6 +4,7 @@ # 2003 by Auerswald GmbH & Co. KG, Schandelah, Germany # 2005-2009 by Marc Kleine-Budde <m...@pengutronix.de>, Pengutronix e.K., Hildesheim, Germany # (C) 2010 by Michael Olbrich <m.olbr...@pengutronix.de> +# (C) 2016 by Clemens Gruber <clemens.gru...@pqgruber.com> # # See CREDITS for details about who has contributed to this project. # @@ -124,6 +125,19 @@ ifdef PTXCONF_GLIBC_GCONV_ZH @$(call install_copy_toolchain_lib, glibc, gconv/GB18030.so) endif +ifdef PTXCONF_GLIBC_LDCONFIG + @$(call install_copy, glibc, 0, 0, 0755, \ + $(PTXDIST_SYSROOT_TOOLCHAIN)/sbin/ldconfig, /sbin/ldconfig) + @$(call install_alternative, glibc, 0, 0, 0644, /etc/ld.so.conf) + @$(call install_copy, glibc, 0, 0, 0755, /etc/ld.so.conf.d) + @$(call install_alternative_tree, glibc, 0, 0, /etc/ld.so.conf.d) +endif + +ifdef PTXCONF_GLIBC_LDCONFIG_RC_ONCE + @$(call install_alternative, glibc, 0, 0, 0755, \ + /etc/rc.once.d/ldconfig) +endif + ifdef PTXCONF_GLIBC_I18N_BIN_LOCALE @$(call install_copy_toolchain_usr, glibc, bin/locale) endif -- 2.9.3 _______________________________________________ ptxdist mailing list ptxdist@pengutronix.de