This commit is contained in:
emmett1
2017-08-18 11:26:41 +08:00
parent 2378e58a57
commit 9c2fd21700
4 changed files with 68 additions and 26 deletions

View File

@@ -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 ###

View File

@@ -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

View File

@@ -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

10
scratch
View File

@@ -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