From 9c2fd21700e19887599c07ca4bd05cbf4aa70795 Mon Sep 17 00:00:00 2001 From: emmett1 Date: Fri, 18 Aug 2017 11:26:41 +0800 Subject: [PATCH] updated --- buildpkg | 41 +++++++++++++++++++++++++---------------- installpkg | 34 +++++++++++++++++++++++++++++++++- removepkg | 9 +++++++-- scratch | 10 +++------- 4 files changed, 68 insertions(+), 26 deletions(-) diff --git a/buildpkg b/buildpkg index ba89a75..dfad7e6 100755 --- a/buildpkg +++ b/buildpkg @@ -377,20 +377,6 @@ lockbuild() { fi } -checkneworphan() { - - for md in ${makedepends[@]}; do - removemakedepends $md - done - if [ "${#saferemove[@]}" -gt 0 ]; then - msg "Package safe for remove:" - for saferem in ${saferemove[@]}; do - msg2 "$saferem" - done - fi - -} - updatepkgdepends() { # only installed depends will count as depends @@ -419,6 +405,20 @@ updatepkgdepends() { } +checkneworphan() { + + for md in ${makedepends[@]}; do + removemakedepends $md + done + if [ "${#saferemove[@]}" -gt 0 ]; then + msg "Package safe for remove:" + for saferem in ${saferemove[@]}; do + msg2 "$saferem" + done + fi + +} + removemakedepends() { ORPHAN="yes" @@ -431,7 +431,7 @@ removemakedepends() { done done - [ "$ORPHAN" = "yes" ] && saferemove+=($1) + [ "$ORPHAN" = "yes" ] && [ -d $INDEX_DIR/$1 ] && saferemove+=($1) } clearworkdir() { @@ -522,6 +522,9 @@ parse_options() { --no-color) NO_COLOR=yes ;; + --no-orphan-check) + NO_ORPHAN_CHECK=yes + ;; # this option not pass to installpkg -fr|--force-rebuild) FORCE_REBUILD=yes @@ -612,6 +615,10 @@ main() { loadspkgbuild + if [ "$UPGRADE_PKG" ] || [ "$REINSTALL_PKG" ]; then + NO_ORPHAN_CHECK=yes + fi + ### CHECK SPKGBUILD ### if [ -z "$name" ] || [ -z "$version" ] || [ -z "$release" ] || [ "$(basename `pwd`)" != "$name" ] || [ "`type -t build`" != "function" ]; then msg "Error, please check spkgbuild." @@ -670,7 +677,9 @@ main() { updatepkgdepends fi buildpkg - checkneworphan + if [ ! "$NO_ORPHAN_CHECK" ]; then + checkneworphan + fi fi ### INSTALL PACKAGE ### diff --git a/installpkg b/installpkg index 1416a74..189ee3f 100755 --- a/installpkg +++ b/installpkg @@ -162,6 +162,7 @@ getname() { version=$(tar xf $PKGNAME .pkginfo -O | grep ^version | cut -d " " -f3) release=$(tar xf $PKGNAME .pkginfo -O | grep ^release | cut -d " " -f3) depends=$(tar xf $PKGNAME .pkginfo -O | grep ^depends | cut -d " " -f3-) + makedepends=$(tar xf $PKGNAME .pkginfo -O | grep ^makedepends | cut -d " " -f3-) conflict=$(tar xf $PKGNAME .pkginfo -O | grep ^conflict | cut -d " " -f3-) packagename=$name-$version-$release @@ -196,7 +197,7 @@ upgradepkg() { if [ ! "$NO_BACKUP" ]; then backupconf fi - removepkg $name -id --no-preremove --no-postremove + removepkg $name -id --no-preremove --no-postremove --no-orphan-check NO_PREINSTALL=yes NO_POSTINSTALL=yes @@ -300,6 +301,35 @@ run_postupgrade() { } +checkneworphan() { + + for md in ${makedepends[@]}; do + removemakedepends $md + done + if [ "${#saferemove[@]}" -gt 0 ]; then + msg "Package safe for remove:" + for saferem in ${saferemove[@]}; do + msg2 "$saferem" + done + fi + +} + +removemakedepends() { + + ORPHAN="yes" + for all_installed in $(ls $INDEX_DIR); do + depend=$(cat $INDEX_DIR/$all_installed/.pkginfo | grep ^depends | cut -d " " -f3-) + for dep in ${depend[@]}; do + if [ $dep = $1 ]; then + ORPHAN="no" + fi + done + done + + [ "$ORPHAN" = "yes" ] && [ -d $INDEX_DIR/$1 ] && saferemove+=($1) +} + help() { echo -e "Usage:" @@ -443,6 +473,8 @@ main() { ### INSTALL PACKAGE INTO SYSTEM ### installpkg + checkneworphan + ### RUN THINGS THAT NEED UPDATE AFTER INSTALL PACKAGE ### updatesystemdb diff --git a/removepkg b/removepkg index 0e7f041..0397128 100755 --- a/removepkg +++ b/removepkg @@ -171,7 +171,7 @@ saferemove() { done done - [ "$ORPHAN" = "yes" ] && neworphan+=($1) + [ "$ORPHAN" = "yes" ] && [ -d $INDEX_DIR/$1 ] && neworphan+=($1) } @@ -215,6 +215,9 @@ parse_options() { --no-color) NO_COLOR=yes ;; + --no-orphan-check) + NO_ORPHAN_CHECK=yes + ;; *) RMNAME=$1 ;; @@ -265,7 +268,9 @@ main() { removepkg $RMNAME ### CHECK NEW ORPHANED PACKAGE ### - checkneworphan + if [ ! "$NO_ORPHAN_CHECK" ]; then + checkneworphan + fi ### RUN NECESSARY UPDATE AFTER REMOVE PACKAGE ### updatesystemdb diff --git a/scratch b/scratch index 9d11e27..3b9a6aa 100755 --- a/scratch +++ b/scratch @@ -4,6 +4,7 @@ pushtoport() { for port in ${PORT_REPO[@]}; do if [ -d $port/$PORTNAME ]; then + PORT_EXIST=yes pushd $port/$PORTNAME IGNORE_CONFLICT="$IGNORE_CONFLICT" \ IGNORE_DEP="$IGNORE_DEP" \ @@ -17,12 +18,13 @@ pushtoport() { break fi done + + [ ! "$PORT_EXIST" ] && msg "Port ${color_red}$PORTNAME${color_reset} not found." } listinstalled() { for installed in $(ls $INDEX_DIR); do getinstalledname $installed - #msg3 $installedname installedpkg+=($installedname) done for ip in ${installedpkg[@]}; do @@ -63,7 +65,6 @@ listorphan() { done if [ "$ORPHAN" = yes ]; then ORPHAN_PKG+=($installedname) - #msg $installedname fi done @@ -283,11 +284,6 @@ showdependent() { showglobaldependent() { - #if [ -d $INDEX_DIR/$GLOBAL_PACKAGE_DEPENDENT ]; then - #msg "Package ${color_green}$GLOBAL_PACKAGE_DEPENDENT${color_reset} is installed." - #else - #msg "Package ${color_red}$GLOBAL_PACKAGE_DEPENDENT${color_reset} not installed." - #fi for port in ${PORT_REPO[@]}; do if [ -d $port ]; then for all in $(ls $port); do