]> pd.if.org Git - zpackage/blobdiff - zpm-update
fix compile process for elf programs
[zpackage] / zpm-update
index 44529783408c1c195c4524ae071d53e574c3622a..39c111a2f17f6e7274bac7f298f09834b8e427ea 100755 (executable)
@@ -102,13 +102,14 @@ install_for_libs=''
 backup=0
 ignorelibdeps=0
 justlist=0
+pullrepos=1
 
 # treat un-adorned packages as uninstalls
 uninstall=0
 
 # TODO option to attempt to resume an ongoing install
 # zpm-install [-SCn] [ -d localdb ] [ -f pkgfile ] [ -R installroot ] pkgstr ...
-while getopts f:d:R:nSCvAObBLU opt; do
+while getopts f:d:R:nSCvAObBLUzp opt; do
        case $opt in
                f) pkgfile="$OPTARG" ;;
                d) localdb="$OPTARG" ;;
@@ -126,13 +127,27 @@ while getopts f:d:R:nSCvAObBLU opt; do
                L) ignorelibdeps=1 ;;
                l) justlist=1 ;;
                U) uninstall=1 ;;
+               z) pullrepos=0 ;;
+               p) syncopts="$syncopts -p" ;;
                *) die "usage ..." ;;
        esac
 done
-shift $(( OPTIND - 1))
+shift $(( OPTIND - 1 ))
+
+if [ -n "$rootdir" ]; then
+       : rootdir=${rootdir%%/}
+       ZPM_ROOT_DIR=$rootdir
+       export ZPM_ROOT_DIR
+fi
+
+if [ -n "$localdb" ]; then
+       ZPMDB=$localdb
+elif [ -z "$ZPMDB" ]; then
+       ZPMDB="$ZPM_ROOT_DIR/var/lib/zpm/local.db"
+fi
 
-ZPMDB=${localdb:-${ZPMDB:-/var/lib/zpm/local.db}}
 export ZPMDB
+
 # create the localdb if needed
 zpm init $ZPMDB
 
@@ -180,6 +195,11 @@ search=$(echo $search)
 
 ebail=0
 
+if [ $pullrepos -eq 1 ]; then
+       echo pulling repos
+       zpm repo pull
+fi
+
 if [ $ignorelibdeps -eq 1 ]; then
        merge=$(zpm search -iIO $search)
 else
@@ -238,6 +258,12 @@ if [ -n "$baddl" ]; then
        die
 fi
 
+for package in $merge; do
+       pkgid=${package%:*}
+       installlist="$installlist $pkgid"
+done
+installlist=${installlist#' '}
+
 if [ $justlist -eq 1 ]; then
        for package in $merge; do
                pkgid=${package%:*}
@@ -246,6 +272,7 @@ if [ $justlist -eq 1 ]; then
        for pkgid in $to_remove; do
                printf 'remove %s\n' $pkgid
        done
+       exit 0
 fi
 
 if [ -z "$merge" ] && [ -z "$to_remove" ]; then
@@ -253,7 +280,8 @@ if [ -z "$merge" ] && [ -z "$to_remove" ]; then
        exit 0
 fi
 
-echo "merge: $merge"
+test -n "$merge" && echo "install: $installlist"
+test -n "$to_remove" && echo "remove: $to_remove"
 
 # finally, merge everything
 for mergepkg in $merge; do
@@ -266,13 +294,18 @@ for mergepkg in $merge; do
        if [ $pkgfile != $ZPMDB ]; then
                echo merging $pkgfile $pkgid
                zpm merge -Fuv -f "$pkgfile" $pkgid
+               if [ $? -ne 0 ]; then
+                       die "unable to merge $pkgfile"
+               fi
        fi
        to_install="$to_install $pkgid"
 done
 
 to_install=${to_install#' '}
 
-echo "installing: $to_install"
+if [ -n "$to_install" ]; then
+       echo "installing: $to_install"
+fi
 
 # absorb anything we're updating or removing, if absorb flag set
 
@@ -302,12 +335,6 @@ if [ -n "$to_remove" ]; then
        done
 fi
 
-if [ -n "$rootdir" ]; then
-       ZPM_ROOT_DIR=$rootdir
-       export ZPM_ROOT_DIR
-       : rootdir=${rootdir%%/}
-fi
-
 if [ $dryrun -gt 0 ]; then
        runscripts=0 # we don't want to run post scripts on a dry-run
        syncopts="$syncopts -n"