]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/commitdiff
strip: Make this work when cross-compiling
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 22 Feb 2022 12:51:24 +0000 (12:51 +0000)
committerPeter Müller <peter.mueller@ipfire.org>
Tue, 22 Feb 2022 19:41:39 +0000 (19:41 +0000)
The host might not have the correct tools to strip a foreign
architecture, therefore we need to use the cross tools.

The crosstools might be built in an architecture that they
cannot strip themselves and since they are not being part of the
packaged toolchain, we will just skip them.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
lfs/strip
src/stripper

index 466dfd9d5696cf4791b91db4b688644c3c8a6c14..c577c954be2456ed6c0c479c71fb3187ba6533a9 100644 (file)
--- a/lfs/strip
+++ b/lfs/strip
@@ -48,7 +48,10 @@ md5 :
 $(TARGET) :
 ifeq "$(TOOLCHAIN)" "1"
        # Strip everything in the toolchain
-       $(DIR_SRC)/src/stripper $(TOOLS_DIR)
+       $(DIR_SRC)/src/stripper $(TOOLS_DIR) \
+               --strip="$(TOOLS_DIR)/$(CROSSTARGET)/bin/strip" \
+               --ignore-errors \
+               --exclude=$(TOOLS_DIR)/$(CROSSTARGET)
 else
        # Don't strip VDR binaries, because they use a weird plugin system
        # which does not work when unneeded symbols get stripped from
index fa624815bb1b81267a8f8c0762cc7563a1067e24..498a8a30ecdba103f18e7a2b36f95373125947e0 100755 (executable)
@@ -2,12 +2,20 @@
 
 paths=()
 excludes=()
+strip="strip"
+break_on_error="1"
 
 while [ $# -gt 0 ]; do
        case "${1}" in
+               --strip=*)
+                       strip="${1#*=}"
+                       ;;
                --exclude=*)
                        excludes+=( "!" "-path" "${1#*=}/*" )
                        ;;
+               --ignore-errors)
+                       break_on_error="0"
+                       ;;
                *)
                        paths+=( "${1}" )
                        ;;
@@ -49,11 +57,10 @@ function _strip() {
                --absolute-names --dump "${file}" 2>/dev/null)"
 
        echo "Stripping ${file}..."
-       if ! strip "${args[@]}" "${file}"; then
-               return 1
+       if ! "${strip}" "${args[@]}" "${file}"; then
+               return ${break_on_error}
        fi
 
-
        # Restore capabilities
        if [ -n "${capabilities}" ]; then
                setfattr --no-dereference --restore=<(echo "${capabilities}")