diff options
Diffstat (limited to 'apkg')
| -rwxr-xr-x | apkg | 73 |
1 files changed, 35 insertions, 38 deletions
@@ -5,12 +5,13 @@ # \ \_\ \_\\ \_\ \ \_\ \_\\ \_____\ # \/_/\/_/ \/_/ \/_/\/_/ \/_____/ # -# APKG - Alice Package Manager (C) 2023-2025 Emmett1 +# APKG - Alice Package Manager (C) 2023-2026 Emmett1 # fetch_src() { [ "$source" ] || return 0 for i in $source; do + unset resume i=${i%::noextract} case $i in *::*) sn=${i%::*};; @@ -239,8 +240,9 @@ build_src() { fi elif [ -d $name-$version ]; then build_dir=$name-$version - elif [ -d "$(ls -1 --group-directories-first | head -n1)" ]; then - build_dir=$(ls -1 --group-directories-first | head -n1) + elif [ -d "$(ls -1d */ 2>/dev/null | head -n1)" ]; then + build_dir=$(ls -1d */ 2>/dev/null | head -n1) + build_dir=${build_dir%/} fi # cd into extracted source directory @@ -291,13 +293,14 @@ build_src() { esac rm -rf $m done - for i in $(find $PKG/usr/share/man -type f); do - [ $i = ${i%%.gz} ] || continue - gzip -9 $i + find $PKG/usr/share/man -type f | while IFS= read -r i; do + [ "$i" = "${i%%.gz}" ] || continue + gzip -9 "$i" done - for i in $(find $PKG/usr/share/man -type l) ; do - ln -s $(readlink $i).gz ${i%.gz}.gz - rm $i + find $PKG/usr/share/man -type l | while IFS= read -r i; do + [ "$i" = "${i%%.gz}" ] || continue + ln -s "$(readlink "$i").gz" "${i%.gz}.gz" + rm "$i" done fi @@ -333,9 +336,14 @@ build_src() { # strip binaries and libraries if [ ! "$no_strip" ]; then - find $PKG | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs ${CROSS_COMPILE}strip --strip-all 2>/dev/null - find $PKG | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs ${CROSS_COMPILE}strip --strip-unneeded 2>/dev/null - find $PKG | xargs file | grep "current ar archive" | cut -f 1 -d : | xargs ${CROSS_COMPILE}strip --strip-debug 2>/dev/null + find $PKG -type f -exec file {} + | while read -r line; do + f=${line%%: *} + case $line in + *ELF*executable*) ${CROSS_COMPILE}strip --strip-all "$f" 2>/dev/null;; + *ELF*shared\ object*) ${CROSS_COMPILE}strip --strip-unneeded "$f" 2>/dev/null;; + *current\ ar\ archive*) ${CROSS_COMPILE}strip --strip-debug "$f" 2>/dev/null;; + esac + done fi # usrmerge @@ -369,28 +377,17 @@ build_src() { ret 1 fi - # temporary: for backward compatibility - if [ "$(grep '#MARKER' /usr/bin/spm)" ]; then - cd $PKG - spm -b $packagefile || { - msg "Failed packaging $packagefile" - ret 1 - } - else - cd $APKG_PACKAGE_DIR - spm -b $PKG && { - mv package.spm $packagefile - } || { - msg "Failed packaging $packagefile" - ret 1 - } - fi + cd $PKG + spm -b $packagefile || { + msg "Failed packaging $packagefile" + ret 1 + } + cd - >/dev/null - if [ ! -f "$apkg_list" ] || [ "$apkg_build" -nt "$apkg_list" ]; then + if [ ! -f "$apkg_list" ] || [ -n "$(find "$apkg_build" -newer "$apkg_list")" ]; then pkg_updatefiles fi - cd $HERE remove_workdir } @@ -429,11 +426,11 @@ checkdep() { [ -s $SPM_PKGDB/$ii ] && continue fi # if deps already in process list, skip, cycle deps detected - printf "%s\n" $process | tr ' ' '\n' | grep -qx $ii && continue + printf "%s\n" $process | tr ' ' '\n' | grep -Fxq "$ii" && continue # skip if itself in depends list [ "$ii" = "$1" ] && continue # skip if pkg already in deps list - printf "%s\n" $DEPS | tr ' ' '\n' | grep -x $ii && continue + printf "%s\n" $DEPS | tr ' ' '\n' | grep -Fx "$ii" && continue # check deps checkdep $ii done @@ -444,7 +441,7 @@ checkdep() { pkg_deplist() { for i in $@; do # if already have in list deps, dont check again - if [ ! $(printf "%s\n" $DEPS | tr ' ' '\n' | grep -x $i) ]; then + if [ ! $(printf "%s\n" $DEPS | tr ' ' '\n' | grep -Fx "$i") ]; then checkdep $i fi done @@ -462,7 +459,7 @@ pkg_dependents() { for r in $APKG_REPO; do rr="$rr $r/*/depends" done - grep -x $1 $rr 2>/dev/null | rev | cut -d / -f 2 | rev + grep -Fx "$1" $rr 2>/dev/null | rev | cut -d / -f 2 | rev } pkg_depends() { @@ -487,7 +484,7 @@ pkg_outdate() { verbose=1 pkg_allinstalled | while read -r n v; do if [ "$mask" ]; then [ "$APKG_MASK" ] && { - printf "%s\n" "$APKG_MASK" | tr ' ' '\n' | grep -xq $n && continue + printf "%s\n" "$APKG_MASK" | tr ' ' '\n' | grep -Fxq "$n" && continue } fi [ "$(pkg_path $n)" ] || continue @@ -515,7 +512,7 @@ pkg_sysup() { msg "Solving dependencies..." for p in $(pkg_deplist $od); do [ -s $SPM_PKGDB/$p ] || ni="$ni $p" - printf "%s\n" $od | tr ' ' '\n' | grep -qx $p && pu="$pu $p" + printf "%s\n" $od | tr ' ' '\n' | grep -Fxq "$p" && pu="$pu $p" done if [ "$ni" ]; then newpkg=$(printf "%s\n" $ni | tr ' ' '\n' | wc -l) @@ -551,7 +548,7 @@ pkg_search() { } } -pkg_depinstalll() { +pkg_depinstall() { needroot for p in $@; do if [ -s $SPM_PKGDB/$p ]; then @@ -822,7 +819,7 @@ updateopts() { parseopts() { while [ "$1" ]; do case $1 in - -I) pkg_depinstalll "$(parsesubopt "$@")"; exit 0;; + -I) pkg_depinstall "$(parsesubopt "$@")"; exit 0;; -D) pkg_deplist "$(parsesubopt "$@")"; exit 0;; -r) pkg_remove "$(parsesubopt "$@")"; exit 0;; -p) pkg_path "$(parsesubopt "$@")"; exit 0;; |