From 5f6f8c26b8741a1b61d97f54f7a74a6d6c2ec91c Mon Sep 17 00:00:00 2001 From: Helmut Pozimski Date: Thu, 16 Jul 2020 19:44:01 +0200 Subject: [PATCH 1/3] 11-pkglint-elf-in-usrshare: allow explicit setting of exceptions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Piotr Wójcik --- .../11-pkglint-elf-in-usrshare.sh | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) 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..e586264139b 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,44 @@ # # This hook executes the following tasks: # - Looks on all packages for binary files being installed to /usr/share +# - Allows exceptions listed in $ignore_elf_dirs and $ignore_elf_files 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 From 4e034a3318117dc94b7427ec340424f08d60713a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= Date: Tue, 4 Aug 2020 22:24:10 +0200 Subject: [PATCH 2/3] 11-pkglint-elf-in-usrshare: check whole noarch packages --- .../11-pkglint-elf-in-usrshare.sh | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) 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 e586264139b..f11c5b5ac76 100644 --- a/common/hooks/post-install/11-pkglint-elf-in-usrshare.sh +++ b/common/hooks/post-install/11-pkglint-elf-in-usrshare.sh @@ -2,12 +2,21 @@ # # This hook executes the following tasks: # - Looks on all packages for binary files being installed to /usr/share +# - For noarch packages, looks into / # - Allows exceptions listed in $ignore_elf_dirs and $ignore_elf_files hook() { - local matches mime file f prune_expr dir + local matches mime file f prune_expr dir basedir found_in - if [ ! -d ${PKGDESTDIR}/usr/share ]; then + if [ "${archs// /}" = "noarch" ]; then + basedir=/ + found_in="noarch package" + else + basedir=/usr/share + found_in=$basedir + fi + + if [ ! -d ${PKGDESTDIR}${basedir} ]; then return 0 fi @@ -22,7 +31,7 @@ hook() { prune_expr+=" ) -prune -o " fi - # Find all binaries in /usr/share and add them to the pool + # Find all binaries in $basedir and add them to the pool while read -r f; do mime="${f##*:}" mime="${mime// /}" @@ -37,14 +46,14 @@ hook() { fi ;; esac - done < <(find $PKGDESTDIR/usr/share $prune_expr -type f | file --mime-type --files-from -) + done < <(find ${PKGDESTDIR}${basedir} $prune_expr -type f | file --mime-type --files-from -) # Check passed if no packages in pool if [ -z "$matches" ]; then return 0 fi - msg_red "${pkgver}: ELF files found in /usr/share:\n" + msg_red "${pkgver}: ELF files found in ${found_in}:\n" for f in $matches; do msg_red " ${f}\n" done From b0cbe3f212855f03978c262656809e2622a686e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20W=C3=B3jcik?= Date: Tue, 4 Aug 2020 22:28:14 +0200 Subject: [PATCH 3/3] 11-pkglint-elf-in-usrshare: disallow x-executable Can be allowed per-package now --- common/hooks/post-install/11-pkglint-elf-in-usrshare.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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 f11c5b5ac76..e3987117051 100644 --- a/common/hooks/post-install/11-pkglint-elf-in-usrshare.sh +++ b/common/hooks/post-install/11-pkglint-elf-in-usrshare.sh @@ -38,8 +38,7 @@ hook() { 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*) + application/x-sharedlib*|application/x-pie-executable*|x-executable*) if [[ ${ignore_elf_files} != *"${file}"* ]] then matches+=" ${file}"