diff --git a/filters/80-elf.sh b/filters/80-elf.sh index bdb111f..a0510ea 100644 --- a/filters/80-elf.sh +++ b/filters/80-elf.sh @@ -2,6 +2,19 @@ ##filter/elf.sh: ELF-related filters ##@copyright GPL-2.0+ +# Executable and libraries can only exist in following directories in AOSC OS package +# ref: AOSC OS Package Styling Manual (https://wiki.aosc.io/developer/packaging/package-styling-manual/) +# Filesystem Hierarchy Standard 3.0 (https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html) +BIN_DIRS=( + opt/ + usr/bin/ + usr/lib/ + usr/libexec/ + usr/local/bin/ + usr/local/lib/ + usr/local/libexec/ +) + filter_elf() { local _opts=() if ! bool "$ABSTRIP"; then @@ -13,7 +26,8 @@ filter_elf() { fi local _elf_path=() - for i in "$PKGDIR"/{opt/*/*/,opt/*/,usr/,}{lib{,64,exec},{s,}bin}/; do + for p in "${BIN_DIRS[@]}"; do + i="$PKGDIR"/"$p" if [ -d "$i" ]; then _elf_path+=("$i") fi diff --git a/filters/81-pdb.sh b/filters/81-pdb.sh new file mode 100644 index 0000000..d65e83d --- /dev/null +++ b/filters/81-pdb.sh @@ -0,0 +1,24 @@ +#!/bin/bash +##filter/pdb.sh: Move or delete Program Database file +##@copyright GPL-2.0+ + +filter_pdb() { + for p in ${BIN_DIRS[@]}; do + i="$PKGDIR"/"$p" + if [ -d "$i" ]; then + for f in `find $i -type f -name "*.pdb"`; do + if bool "$ABSPLITDBG"; then + path="${f#"$PKGDIR"}" + abinfo "Saving Program Database file $f ..." + mkdir -p `dirname "$SYMDIR"/"$path"` + mv "$f" "$SYMDIR"/"$path" + elif bool "$ABSTRIP"; then + abinfo "Dropping Program Database file $f ..." + rm "$f" + fi + done + fi + done +} + +ab_register_filter pdb