* [Buildroot] [PATCH 1 of 2 v5-resend2] pkg-utils.mk: add utility functions find*clauses and notfirstword
2012-06-22 5:34 [Buildroot] [PATCH 0 of 2 v5-resend2] Add find utility functions / exclude files from strip Thomas De Schampheleire
@ 2012-06-22 5:34 ` Thomas De Schampheleire
2012-06-22 5:34 ` [Buildroot] [PATCH 2 of 2 v5-resend2] build: add option to exclude executables/dirs from being stripped Thomas De Schampheleire
2012-06-23 21:16 ` [Buildroot] [PATCH 0 of 2 v5-resend2] Add find utility functions / exclude files from strip Peter Korsgaard
2 siblings, 0 replies; 4+ messages in thread
From: Thomas De Schampheleire @ 2012-06-22 5:34 UTC (permalink / raw)
To: buildroot
This patch adds a few utility functions to pkg-utils.mk.
Functions finddirclauses and findfileclauses help in building a find command
that skips a set of directories and performs operations on a set of files.
This pattern can for example be used to keep certain files or directories from
being stripped, or to remove certain files from a package installation.
The notfirstword function is the inverse of the 'firstword' function in make:
it returns all but the first word.
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
---
v5: Take split of Makefile.package.in into account.
v4: simplify find*clauses even further. Thanks, Arnout!
v3: use -path instead of -wholename; fix a bug in finddirclauses. Thanks, Cam.
v2: integrate _cont variants in main find*clauses functions. Thanks, Arnout.
package/pkg-utils.mk | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/package/pkg-utils.mk b/package/pkg-utils.mk
--- a/package/pkg-utils.mk
+++ b/package/pkg-utils.mk
@@ -76,6 +76,15 @@ MESSAGE = echo "$(TERM_BOLD)>>> $($(PKG)
TERM_BOLD := $(shell tput smso)
TERM_RESET := $(shell tput rmso)
+# Utility functions for 'find'
+# findfileclauses(filelist) => -name 'X' -o -name 'Y'
+findfileclauses = $(call notfirstword,$(patsubst %,-o -name '%',$(1)))
+# finddirclauses(base, dirlist) => -path 'base/dirX' -o -path 'base/dirY'
+finddirclauses = $(call notfirstword,$(patsubst %,-o -path '$(1)/%',$(2)))
+
+# Miscellaneous utility functions
+# notfirstword(wordlist): returns all but the first word in wordlist
+notfirstword = $(wordlist 2,$(words $(1)),$(1))
# Needed for the foreach loops to loop over the list of hooks, so that
# each hook call is properly separated by a newline.
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Buildroot] [PATCH 2 of 2 v5-resend2] build: add option to exclude executables/dirs from being stripped
2012-06-22 5:34 [Buildroot] [PATCH 0 of 2 v5-resend2] Add find utility functions / exclude files from strip Thomas De Schampheleire
2012-06-22 5:34 ` [Buildroot] [PATCH 1 of 2 v5-resend2] pkg-utils.mk: add utility functions find*clauses and notfirstword Thomas De Schampheleire
@ 2012-06-22 5:34 ` Thomas De Schampheleire
2012-06-23 21:16 ` [Buildroot] [PATCH 0 of 2 v5-resend2] Add find utility functions / exclude files from strip Peter Korsgaard
2 siblings, 0 replies; 4+ messages in thread
From: Thomas De Schampheleire @ 2012-06-22 5:34 UTC (permalink / raw)
To: buildroot
Sometimes it may be desirable to keep debug symbols for some binaries and
libraries on the target. This commit introduces the config option
BR2_STRIP_EXCLUDE_FILES, which is interpreted as a list of such binaries
and libraries, and the option BR2_STRIP_EXCLUDE_DIRS, which indicates
directories excluded from stripping entirely.
These exclusions are passed to the find command in the target-finalize step.
Signed-off-by: Sven Neumann <s.neumann@raumfeld.com>
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
---
v5: line up with latest git
v4: whitespace changes
v3: merge with redundant patch 'stripping: use findfileclauses utility function'
v2: add the possibility to exclude entire directories
Config.in | 19 +++++++++++++++++++
Makefile | 10 ++++++++--
2 files changed, 27 insertions(+), 2 deletions(-)
diff --git a/Config.in b/Config.in
--- a/Config.in
+++ b/Config.in
@@ -283,6 +283,25 @@ config BR2_STRIP_none
filesystem.
endchoice
+config BR2_STRIP_EXCLUDE_FILES
+ string "executables that should not be stripped"
+ depends on !BR2_STRIP_none
+ default ""
+ help
+ You may specify a space-separated list of binaries and libraries
+ here that should not be stripped on the target.
+
+config BR2_STRIP_EXCLUDE_DIRS
+ string "directories that should be skipped when stripping"
+ depends on !BR2_STRIP_none
+ default ""
+ help
+ You may specify a space-separated list of directories that should
+ be skipped when stripping. Binaries and libraries in these
+ directories will not be touched.
+ The directories should be specified relative to the target directory,
+ without leading slash.
+
choice
prompt "gcc optimization level"
default BR2_OPTIMIZE_S
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -386,6 +386,13 @@ endif
$(TARGET_DIR): $(BUILD_DIR)/.root
+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 += -not \( $(call findfileclauses,libthread_db*.so* $(call qstrip,$(BR2_STRIP_EXCLUDE_FILES))) \) -print
+
target-finalize:
ifeq ($(BR2_HAVE_DEVFILES),y)
( support/scripts/copy.sh $(STAGING_DIR) $(TARGET_DIR) )
@@ -410,8 +417,7 @@ endif
ifeq ($(BR2_PACKAGE_PYTHON_PYC_ONLY),y)
find $(TARGET_DIR)/usr/lib/ -name '*.py' -print0 | xargs -0 rm -f
endif
- find $(TARGET_DIR) -type f -perm +111 '!' -name 'libthread_db*.so*' | \
- xargs $(STRIPCMD) 2>/dev/null || true
+ $(STRIP_FIND_CMD) | xargs $(STRIPCMD) 2>/dev/null || true
find $(TARGET_DIR)/lib/modules -type f -name '*.ko' | \
xargs -r $(KSTRIPCMD) || true
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Buildroot] [PATCH 0 of 2 v5-resend2] Add find utility functions / exclude files from strip
2012-06-22 5:34 [Buildroot] [PATCH 0 of 2 v5-resend2] Add find utility functions / exclude files from strip Thomas De Schampheleire
2012-06-22 5:34 ` [Buildroot] [PATCH 1 of 2 v5-resend2] pkg-utils.mk: add utility functions find*clauses and notfirstword Thomas De Schampheleire
2012-06-22 5:34 ` [Buildroot] [PATCH 2 of 2 v5-resend2] build: add option to exclude executables/dirs from being stripped Thomas De Schampheleire
@ 2012-06-23 21:16 ` Peter Korsgaard
2 siblings, 0 replies; 4+ messages in thread
From: Peter Korsgaard @ 2012-06-23 21:16 UTC (permalink / raw)
To: buildroot
>>>>> "Thomas" == Thomas De Schampheleire <patrickdepinguin+buildroot@gmail.com> writes:
Thomas> This patch series adds a few utility functions to pkg-utils.mk that
Thomas> help in composing find commands, and uses these functions to exclude
Thomas> user-configured files and directories from being stripped in target-finalize.
Committed both, thanks.
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 4+ messages in thread