strip: Make this work when cross-compiling

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>
This commit is contained in:
Michael Tremer
2022-02-22 12:51:24 +00:00
committed by Peter Müller
parent 3080500ddc
commit d79715dbf9
2 changed files with 14 additions and 4 deletions

View File

@@ -48,7 +48,10 @@ md5 :
$(TARGET) : $(TARGET) :
ifeq "$(TOOLCHAIN)" "1" ifeq "$(TOOLCHAIN)" "1"
# Strip everything in the toolchain # 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 else
# Don't strip VDR binaries, because they use a weird plugin system # Don't strip VDR binaries, because they use a weird plugin system
# which does not work when unneeded symbols get stripped from # which does not work when unneeded symbols get stripped from

View File

@@ -2,12 +2,20 @@
paths=() paths=()
excludes=() excludes=()
strip="strip"
break_on_error="1"
while [ $# -gt 0 ]; do while [ $# -gt 0 ]; do
case "${1}" in case "${1}" in
--strip=*)
strip="${1#*=}"
;;
--exclude=*) --exclude=*)
excludes+=( "!" "-path" "${1#*=}/*" ) excludes+=( "!" "-path" "${1#*=}/*" )
;; ;;
--ignore-errors)
break_on_error="0"
;;
*) *)
paths+=( "${1}" ) paths+=( "${1}" )
;; ;;
@@ -49,11 +57,10 @@ function _strip() {
--absolute-names --dump "${file}" 2>/dev/null)" --absolute-names --dump "${file}" 2>/dev/null)"
echo "Stripping ${file}..." echo "Stripping ${file}..."
if ! strip "${args[@]}" "${file}"; then if ! "${strip}" "${args[@]}" "${file}"; then
return 1 return ${break_on_error}
fi fi
# Restore capabilities # Restore capabilities
if [ -n "${capabilities}" ]; then if [ -n "${capabilities}" ]; then
setfattr --no-dereference --restore=<(echo "${capabilities}") setfattr --no-dereference --restore=<(echo "${capabilities}")