aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Thomas Petazzoni <thomas.petazzoni@free-electrons.com>2014-02-04 16:36:18 +0100
committerGravatar Peter Korsgaard <peter@korsgaard.com>2014-02-04 18:10:15 +0100
commit12d150727a8dff2d6a4c3013936c27fe71ce588d (patch)
treeb5c627479cfaa513b66a77431bb9185b007355cf
parentdcd0b3cc7b585835a9f4fb76264919946456dcaf (diff)
downloadbuildroot-12d150727a8dff2d6a4c3013936c27fe71ce588d.tar.gz
buildroot-12d150727a8dff2d6a4c3013936c27fe71ce588d.tar.bz2
Strip *.so* and not only executable files
Our current stripping strategy requires that shared libraries have the executable permission. However, this is by far not something recognized as a standard behavior: Debian/Ubuntu distributions for example do not have executable permissions on their libraries. Therefore, pushing to upstream packages fixes that add the executable permissions is not easy. As a result, this commit improves the stripping logic so that it not only strips the files that are executable, but also the ones that match '*.so*', which should match both the shared libraries and the dlopen()'able plugins, as long as they have a .so extension. Thanks to this addition, a number of manual "chmod +x" done by various packages can be removed. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
-rw-r--r--Makefile2
-rw-r--r--package/gcc/gcc-final/gcc-final.mk4
-rw-r--r--package/gettext/gettext.mk7
-rw-r--r--package/libiconv/libiconv.mk8
-rw-r--r--package/pciutils/pciutils.mk7
-rw-r--r--package/sunxi-mali/sunxi-mali.mk2
6 files changed, 2 insertions, 28 deletions
diff --git a/Makefile b/Makefile
index dec06941de..d05c5844a9 100644
--- a/Makefile
+++ b/Makefile
@@ -487,7 +487,7 @@ STRIP_FIND_CMD = find $(TARGET_DIR)
ifneq (,$(call qstrip,$(BR2_STRIP_EXCLUDE_DIRS)))
STRIP_FIND_CMD += \( $(call finddirclauses,$(TARGET_DIR),$(call qstrip,$(BR2_STRIP_EXCLUDE_DIRS))) \) -prune -o
endif
-STRIP_FIND_CMD += -type f -perm /111
+STRIP_FIND_CMD += -type f \( -perm /111 -o -name '*.so*' \)
STRIP_FIND_CMD += -not \( $(call findfileclauses,libpthread*.so* $(call qstrip,$(BR2_STRIP_EXCLUDE_FILES))) \) -print
target-finalize:
diff --git a/package/gcc/gcc-final/gcc-final.mk b/package/gcc/gcc-final/gcc-final.mk
index 47b30da105..ecc4068b49 100644
--- a/package/gcc/gcc-final/gcc-final.mk
+++ b/package/gcc/gcc-final/gcc-final.mk
@@ -103,14 +103,12 @@ HOST_GCC_FINAL_POST_INSTALL_HOOKS += HOST_GCC_FINAL_LD_LINUX_LINK
endif
# Cannot use the HOST_GCC_FINAL_USR_LIBS mechanism below, because we want
-# libgcc_s to be installed in /lib and not /usr/lib. We add +x on
-# libgcc_s to ensure it will be stripped.
+# libgcc_s to be installed in /lib and not /usr/lib.
define HOST_GCC_FINAL_INSTALL_LIBGCC
-cp -dpf $(HOST_DIR)/usr/$(GNU_TARGET_NAME)/lib*/libgcc_s* \
$(STAGING_DIR)/lib/
-cp -dpf $(HOST_DIR)/usr/$(GNU_TARGET_NAME)/lib*/libgcc_s* \
$(TARGET_DIR)/lib/
- -chmod +x $(TARGET_DIR)/lib/libgcc_s.so.1
endef
HOST_GCC_FINAL_POST_INSTALL_HOOKS += HOST_GCC_FINAL_INSTALL_LIBGCC
diff --git a/package/gettext/gettext.mk b/package/gettext/gettext.mk
index fbdb19ced2..748c2a59fd 100644
--- a/package/gettext/gettext.mk
+++ b/package/gettext/gettext.mk
@@ -57,12 +57,5 @@ endef
endif
endif # GETTEXT_TOOLS = n
-# Library lacks +x so strip skips it
-define GETTEXT_FIX_LIBRARY_MODE
- -chmod +x $(TARGET_DIR)/usr/lib/libintl.so*
-endef
-
-GETTEXT_POST_INSTALL_TARGET_HOOKS += GETTEXT_FIX_LIBRARY_MODE
-
$(eval $(autotools-package))
$(eval $(host-autotools-package))
diff --git a/package/libiconv/libiconv.mk b/package/libiconv/libiconv.mk
index 3a513b3dc1..ee313cea7f 100644
--- a/package/libiconv/libiconv.mk
+++ b/package/libiconv/libiconv.mk
@@ -20,14 +20,6 @@ endef
LIBICONV_POST_INSTALL_TARGET_HOOKS += LIBICONV_TARGET_REMOVE_PRELOADABLE_LIBS
LIBICONV_POST_INSTALL_STAGING_HOOKS += LIBICONV_STAGING_REMOVE_PRELOADABLE_LIBS
-# Library lacks +x so strip skips it
-define LIBICONV_FIX_LIBRARY_MODE
- -chmod +x $(TARGET_DIR)/usr/lib/libcharset.so*
- -chmod +x $(TARGET_DIR)/usr/lib/libiconv.so*
-endef
-
-LIBICONV_POST_INSTALL_TARGET_HOOKS += LIBICONV_FIX_LIBRARY_MODE
-
$(eval $(autotools-package))
# Configurations where the toolchain supports locales and the libiconv
diff --git a/package/pciutils/pciutils.mk b/package/pciutils/pciutils.mk
index 16ba61b07b..bc88ab38e8 100644
--- a/package/pciutils/pciutils.mk
+++ b/package/pciutils/pciutils.mk
@@ -66,11 +66,4 @@ define PCIUTILS_INSTALL_STAGING_CMDS
endef
-# Library lacks +x so strip skips it
-define PCIUTILS_FIX_LIBRARY_MODE
- -chmod +x $(TARGET_DIR)/usr/lib/libpci.so*
-endef
-
-PCIUTILS_POST_INSTALL_TARGET_HOOKS += PCIUTILS_FIX_LIBRARY_MODE
-
$(eval $(generic-package))
diff --git a/package/sunxi-mali/sunxi-mali.mk b/package/sunxi-mali/sunxi-mali.mk
index d9fd8be25f..c625c6ef7e 100644
--- a/package/sunxi-mali/sunxi-mali.mk
+++ b/package/sunxi-mali/sunxi-mali.mk
@@ -68,8 +68,6 @@ endef
define SUNXI_MALI_INSTALL_TARGET_CMDS
$(SUNXI_MALI_MAKE_ENV) $(MAKE) -C $(@D)/lib \
$(SUNXI_MALI_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install
- # add execution permissions so that libraries are properly stripped
- chmod +x $(addprefix $(TARGET_DIR)/usr/lib/lib,EGL.so GLESv1_CM.so GLESv2.so Mali.so UMP.so*)
$(if $(BR2_PACKAGE_SUNXI_MALI_DBG),
$(INSTALL) -m 755 $(@D)/version/version $(TARGET_DIR)/usr/bin/maliver; \
$(INSTALL) -m 755 $(@D)/test/test $(TARGET_DIR)/usr/bin/malitest