]> pd.if.org Git - zpackage/blobdiff - zpm-install
rework zpm-merge
[zpackage] / zpm-install
index 1fb470e4810d50c568b3b28a3534c22e9b87c48b..8d92ff7e5e51baddde1603c6e3c3dd856ebab275 100755 (executable)
@@ -18,11 +18,13 @@ absorb=0
 overwrite=0
 syncopts=''
 installall=0
+mergefiles=0
 
 # zpm-install [-SCn] [ -d localdb ] [ -f pkgfile ] [ -R installroot ] pkgstr ...
-while getopts f:d:R:nSCvAOa opt; do
+while getopts f:d:R:nSCvAOaF opt; do
        case $opt in
                f) pkgfile="$OPTARG" ;;
+               F) mergefiles=1 ;;
                d) localdb="$OPTARG" ;;
                R) rootdir="$OPTARG" ;;
                S) runscripts=0 ;;
@@ -137,7 +139,7 @@ for pkgid in $pkglist; do
                fi
        else
                if zpm script -f $pkgfile -Fql -p pre-install $pkgid; then
-                       zpm note -p $pkgid -m 'pre-install script not run'
+                       zpm note -e -p $pkgid -m 'pre-install script not run'
                fi
        fi
 
@@ -154,7 +156,11 @@ for pkgid in $pkglist; do
                if [ $verbose -gt 0 ]; then
                        echo merging $pkgid
                fi
-               zpm merge -u -F -f $pkgfile -s installing $pkgid
+               if [ $mergefiles -eq 1 ]; then
+                       zpm merge -u -F -f $pkgfile -s installing $pkgid
+               else
+                       zpm merge -u -f $pkgfile -s installing $pkgid
+               fi
                if [ $? -ne 0 ]; then
                        die "merging $pkgid failed"
                fi
@@ -174,13 +180,19 @@ if [ $verbose -gt 0 ]; then
        syncopts="$syncopts -v"
 fi
 
+if [ "$pkgfile" != "$ZPMDB" ]; then
+       syncopts="$syncopts -f $pkgfile"
+fi
+
 zpm syncfs $syncopts
 
 syncrv=$?
 
-for pkgid in $pkglist; do
-       zpm pkg $pkgid status=dryrun
-done
+if [ $dryrun -gt 0 ]; then
+       for pkgid in $pkglist; do
+               zpm pkg $pkgid status=dryrun
+       done
+fi
 
 if [ $syncrv -ne 0 ]; then
        zpm pkg $pkgid status=failed
@@ -204,10 +216,10 @@ for pkgid in $pkglist; do
        current=$(zpm list -s installed "$package")
        
        if [ $runscripts -gt 0 ]; then
-               zpm script -f $pkgfile -p post-install $pkgid $current
+               zpm script -p post-install $pkgid $current
        else
-               if zpm script -f $pkgfile -Fql -p post-install $pkgid; then
-                       zpm note -p $pkgid -m 'post-install script not run'
+               if zpm script -Fql -p post-install $pkgid; then
+                       zpm note -e -p $pkgid -m 'post-install script not run'
                fi
        fi
 
@@ -220,10 +232,10 @@ for pkgid in $pkglist; do
        # TODO skip configure if not on a terminal, regardless of settings
        # TODO will need force option
        if [ $runconfigure -gt 0 ]; then
-               zpm script -f $pkgfile -p configure $pkgid
+               zpm script -p configure $pkgid
        else
-               if zpm script -f $pkgfile -Fql -p configure $pkgid; then
-                       zpm note -p $pkgid -m 'configure script not run'
+               if zpm script -Fql -p configure $pkgid; then
+                       zpm note -e -p $pkgid -m 'configure script not run'
                fi
        fi