summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--elements/gnu-toolchain/stage2-binutils.bst4
-rw-r--r--elements/gnu-toolchain/stage2-gawk.bst4
-rw-r--r--elements/gnu-toolchain/stage2-gcc.bst4
-rw-r--r--elements/gnu-toolchain/stage2-glibc.bst4
-rw-r--r--elements/gnu-toolchain/stage2-libstdcxx.bst4
-rw-r--r--elements/gnu-toolchain/stage2-make.bst4
-rw-r--r--project.conf20
7 files changed, 44 insertions, 0 deletions
diff --git a/elements/gnu-toolchain/stage2-binutils.bst b/elements/gnu-toolchain/stage2-binutils.bst
index e3ef2eaa..612b31b6 100644
--- a/elements/gnu-toolchain/stage2-binutils.bst
+++ b/elements/gnu-toolchain/stage2-binutils.bst
@@ -38,3 +38,7 @@ config:
- |
export STAGE2_SYSROOT="$(dirname $(dirname $(pwd)))"
make
+
+ strip-commands:
+ - |
+ %{stage2-strip-binaries}
diff --git a/elements/gnu-toolchain/stage2-gawk.bst b/elements/gnu-toolchain/stage2-gawk.bst
index 1c15d53a..aa80f829 100644
--- a/elements/gnu-toolchain/stage2-gawk.bst
+++ b/elements/gnu-toolchain/stage2-gawk.bst
@@ -28,3 +28,7 @@ config:
--build=$(sh config.guess) --host=%{target-stage1}
build-commands:
- STAGE2_SYSROOT="$(dirname $(dirname $(pwd)))" make
+
+ strip-commands:
+ - |
+ %{stage2-strip-binaries}
diff --git a/elements/gnu-toolchain/stage2-gcc.bst b/elements/gnu-toolchain/stage2-gcc.bst
index beaff58f..dffa4439 100644
--- a/elements/gnu-toolchain/stage2-gcc.bst
+++ b/elements/gnu-toolchain/stage2-gcc.bst
@@ -100,3 +100,7 @@ config:
install -d "%{install-root}/lib"
ln -s "%{prefix}/$libdir/libgcc_s.so" "%{install-root}/lib/"
ln -s "%{prefix}/$libdir/libgcc_s.so.1" "%{install-root}/lib/"
+
+ strip-commands:
+ - |
+ %{stage2-strip-binaries}
diff --git a/elements/gnu-toolchain/stage2-glibc.bst b/elements/gnu-toolchain/stage2-glibc.bst
index 8c75e788..fd2c9b88 100644
--- a/elements/gnu-toolchain/stage2-glibc.bst
+++ b/elements/gnu-toolchain/stage2-glibc.bst
@@ -129,3 +129,7 @@ config:
[ -z $loader ] && ( echo "Bug in stage2-glibc ld.so symlinks" ; exit 1 )
ln -s "%{prefix}/lib/$loader" "%{install-root}/lib/$loader"
esac
+
+ strip-commands:
+ - |
+ %{stage2-strip-binaries}
diff --git a/elements/gnu-toolchain/stage2-libstdcxx.bst b/elements/gnu-toolchain/stage2-libstdcxx.bst
index 12ea73fa..58055e8b 100644
--- a/elements/gnu-toolchain/stage2-libstdcxx.bst
+++ b/elements/gnu-toolchain/stage2-libstdcxx.bst
@@ -53,3 +53,7 @@ config:
install-commands:
- cd o && make DESTDIR="%{install-root}" install
+
+ strip-commands:
+ - |
+ %{stage2-strip-binaries}
diff --git a/elements/gnu-toolchain/stage2-make.bst b/elements/gnu-toolchain/stage2-make.bst
index 9c804f1b..0cb4cdb4 100644
--- a/elements/gnu-toolchain/stage2-make.bst
+++ b/elements/gnu-toolchain/stage2-make.bst
@@ -27,3 +27,7 @@ config:
--build=$(sh config/config.guess) --host=%{target-stage1}
build-commands:
- STAGE2_SYSROOT="$(dirname $(dirname $(pwd)))" make
+
+ strip-commands:
+ - |
+ %{stage2-strip-binaries}
diff --git a/project.conf b/project.conf
index 36da61d4..83a09073 100644
--- a/project.conf
+++ b/project.conf
@@ -14,6 +14,26 @@ variables:
target-stage1: "%{cpu}-bootstrap-linux-%{abi}"
target: "%{cpu}-baserock-linux-%{abi}"
+ # This should match the %{strip-binaries} variable in BuildStream's default
+ # project config. But when doing a cross-build of stage2.bst we need to force
+ # use the cross binutils; the native binutils from the base sysroot will
+ # ignore the non-native binaries and leave them unstripped.
+ stage2-strip-binaries: |
+ find "%{install-root}" -type f \
+ '(' -perm -111 -o -name '*.so*' \
+ -o -name '*.cmxs' -o -name '*.node' ')' \
+ -exec sh -ec \
+ 'read -n4 hdr <"$1" # check for elf header
+ if [ "$hdr" != "$(printf \\x7fELF)" ]; then
+ exit 0
+ fi
+ debugfile="%{install-root}%{debugdir}/$(basename "$1")"
+ mkdir -p "$(dirname "$debugfile")"
+ %{target-stage1}-objcopy --only-keep-debug "$1" "$debugfile"
+ chmod 644 "$debugfile"
+ %{target-stage1}-strip --remove-section=.comment --remove-section=.note --strip-unneeded "$1"
+ %{target-stage1}-objcopy --add-gnu-debuglink "$debugfile" "$1"' - {} ';'
+
# Resolve the cpu and ABI portions of the host triple based
# on architecture names.
arches: