aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorHelmut Pozimski <helmut@pozimski.eu>2020-07-16 19:44:01 +0200
committerPiotr <chocimier@tlen.pl>2020-08-25 21:18:59 +0200
commite0979275b4c6036f103c171cf60d2e57500d1167 (patch)
tree828615821a48eb93cc904f56a305822a477ddf4a
parentsasm: add update file (diff)
11-pkglint-elf-in-usrshare: allow explicit setting of exceptions
Co-authored-by: Piotr Wójcik <chocimier@tlen.pl>
-rw-r--r--Manual.md10
-rw-r--r--common/hooks/post-install/11-pkglint-elf-in-usrshare.sh23
2 files changed, 28 insertions, 5 deletions
diff --git a/Manual.md b/Manual.md
index 854017adf80..5502c6e26f8 100644
--- a/Manual.md
+++ b/Manual.md
@@ -141,7 +141,7 @@ to be accepted. New fonts are welcome if they provide value beyond
aesthetics (e.g. they contain glyphs for a script missing in already
packaged fonts).
-Browser forks, including those based on Chromium and Firefox, are generally not
+Browser forks, including those based on Chromium and Firefox, are generally not
accepted. Such forks require heavy patching, maintenance and hours of build time.
<a id="buildphase"></a>
@@ -623,6 +623,12 @@ the `$DESTDIR` which will not be scanned for runtime dependencies. This may be u
skip files which are not meant to be run or loaded on the host but are to be sent to some
target device or emulation.
+- `ignore_elf_files` White space separated list of machine code files
+in /usr/share directory specified by absolute path, which are expected and allowed.
+
+- `ignore_elf_dirs` White space separated list of directories in /usr/share directory
+specified by absolute path, which are expected and allowed to contain machine code files.
+
- `nocross` If set, cross compilation won't be allowed and will exit immediately.
This should be set to a string describing why it fails, or a link to a travis
buildlog demonstrating the failure.
@@ -953,7 +959,7 @@ Environment variables for a specific `build_style` can be declared in a filename
matching the `build_style` name, Example:
`common/environment/build-style/gnu-configure.sh`
-
+
- `texmf` For texmf zip/tarballs that need to go into /usr/share/texmf-dist. Includes
duplicates handling.
diff --git a/common/hooks/post-install/11-pkglint-elf-in-usrshare.sh b/common/hooks/post-install/11-pkglint-elf-in-usrshare.sh
index ff4f7789e86..bd0a4f25725 100644
--- a/common/hooks/post-install/11-pkglint-elf-in-usrshare.sh
+++ b/common/hooks/post-install/11-pkglint-elf-in-usrshare.sh
@@ -2,26 +2,43 @@
#
# This hook executes the following tasks:
# - Looks on all packages for binary files being installed to /usr/share
+# - Allows exceptions listed in $ignore_elf_files and $ignore_elf_dirs
hook() {
- local matches mime file
+ local matches mime file f prune_expr dir
if [ ! -d ${PKGDESTDIR}/usr/share ]; then
return 0
fi
+ if [ "${ignore_elf_dirs}" ]; then
+ for dir in ${ignore_elf_dirs}; do
+ if ! [ "${prune_expr}" ]; then
+ prune_expr="( -path ${PKGDESTDIR}${dir}"
+ else
+ prune_expr+=" -o -path ${PKGDESTDIR}${dir}"
+ fi
+ done
+ prune_expr+=" ) -prune -o "
+ fi
+
# Find all binaries in /usr/share and add them to the pool
while read -r f; do
mime="${f##*:}"
mime="${mime// /}"
file="${f%:*}"
+ file="${file#${PKGDESTDIR}}"
case "${mime}" in
# Note application/x-executable is missing which is present in most Electron apps
application/x-sharedlib*|application/x-pie-executable*)
- matches+=" ${file#$PKGDESTDIR}" ;;
+ if [[ ${ignore_elf_files} != *"${file}"* ]]; then
+ matches+=" ${file}"
+ fi
+ ;;
esac
- done < <(find $PKGDESTDIR/usr/share -type f | file --mime-type --files-from -)
+ done < <(find $PKGDESTDIR/usr/share $prune_expr -type f | file --mime-type --files-from -)
+ # Check passed if no packages in pool
if [ -z "$matches" ]; then
return 0
fi