You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by no...@apache.org on 2020/12/29 12:38:54 UTC
[buildstream] 01/02: Upstream freedesktop-sdk strip rules
This is an automated email from the ASF dual-hosted git repository.
not-in-ldap pushed a commit to branch coldtom/strip-rules
in repository https://gitbox.apache.org/repos/asf/buildstream.git
commit e7beb2927b851c39c3c6fbe62bb3d58953b22080
Author: Thomas Coldrick <ot...@gmail.com>
AuthorDate: Thu Oct 4 11:52:15 2018 +0100
Upstream freedesktop-sdk strip rules
Adds a modified version of the freedesktop-sdk `strip-binaries` to
buildstream default `project.conf`. We implemented a few changes to
the current default, but the main change is to fix a bug due to
permissions.
The modifications I made to the freedesktop-sdk commands as they are
at present are as follows:
* Remove debugedit rules to include source debugging
* Add a switch to allow failing on error, rather than this being
the default behaviour.
These changes mean that we should now have a sensible default for
a wide variety of users.
---
buildstream/data/projectconfig.yaml | 49 +++++++++++++++++++++++++------------
1 file changed, 33 insertions(+), 16 deletions(-)
diff --git a/buildstream/data/projectconfig.yaml b/buildstream/data/projectconfig.yaml
index 4d2ccc6..701a930 100644
--- a/buildstream/data/projectconfig.yaml
+++ b/buildstream/data/projectconfig.yaml
@@ -51,23 +51,40 @@ variables:
--remove-section=.comment --remove-section=.note --strip-unneeded
+ # Causes strip-binaries to fail on error if set to true
+ fatal-strip: "false"
+
# Generic implementation for stripping debugging symbols
strip-binaries: |
-
- cd "%{install-root}" && find -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}/$1"
- mkdir -p "$(dirname "$debugfile")"
- objcopy %{objcopy-extract-args} "$1" "$debugfile"
- chmod 644 "$debugfile"
- strip %{strip-args} "$1"
- objcopy %{objcopy-link-args} "$debugfile" "$1"' - {} ';'
+ find "%{install-root}" -type f \
+ '(' -perm -111 -o -name '*.so*' \
+ -o -name '*.cmxs' -o -name '*.node' ')' \
+ -print0 | while read -r -d $'\0' file; do
+ read -n4 hdr <"${file}" || continue # check for elf header
+ if [ "$hdr" != "$(printf \\x7fELF)" ]; then
+ continue
+ fi
+ if objdump -j .gnu_debuglink -s "${file}" &>/dev/null; then
+ continue
+ fi
+ case "${file}" in
+ "%{install-root}%{debugdir}/"*)
+ continue
+ ;;
+ *)
+ ;;
+ esac
+ realpath="$(realpath -s --relative-to="%{install-root}" "${file}")"
+ debugfile="%{install-root}%{debugdir}/${realpath}.debug"
+ mkdir -p "$(dirname "$debugfile")"
+ objcopy %{objcopy-extract-args} "${file}" "$debugfile"
+ chmod 644 "$debugfile"
+ mode="$(stat -c 0%a "${file}")"
+ [ -w "${file}" ] || chmod +w "${file}"
+ strip %{strip-args} "${file}" || %{fatal-strip}
+ objcopy %{objcopy-link-args} "$debugfile" "${file}"
+ chmod "${mode}" "${file}"
+ done
# Generic implementation for reproducible python builds
fix-pyc-timestamps: |
@@ -191,4 +208,4 @@ shell:
command: [ 'sh', '-i' ]
remote-execution:
- url: ""
\ No newline at end of file
+ url: ""