X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=zpm-install;h=af14c4d364de847df6591293b583a539cab34d12;hb=c20db3d43f58abb15e22fca0fe12e23ffb21d0d5;hp=1886cf1760076da90b54002989cacb78432ba2b2;hpb=4d5cd305f3b6768810445c05de4cade0d4a7154e;p=zpackage diff --git a/zpm-install b/zpm-install index 1886cf1..af14c4d 100755 --- a/zpm-install +++ b/zpm-install @@ -154,9 +154,10 @@ pkgname() { # paths to replace newfiles() { - #zpm merge $pkgfile $newver - - # add... + nv=$1 + ov=$2 +# printf "zzz checking %s vs %s\n" "$1" "$2" +# printf "zzz checking %s vs %s\n" "$nv" "$ov" zpm shell $ZPMDB<<-EOS select NV.path from packagefiles NV @@ -172,8 +173,6 @@ newfiles() { } removedfiles() { - #zpm merge $pkgfile $newver - zpm shell $ZPMDB<<-EOS select OV.path from packagefiles OV @@ -213,14 +212,25 @@ do_upgrade() { zpm merge $pkgfile $newver zpm pkg $newver status installing - echo newfiles - newfiles $newver $oldver | xargs zpm ipkgfile ${user+-u $user} ${group+-g $group} -R "$pkgroot" -f $pkgfile -- $nver + newct=$(newfiles "$newver" "$oldver" | wc -l) + echo newfiles $newct - echo changed - changedfiles $newver $oldver | xargs zpm ipkgfile ${user+-u $user} ${group+-g $group} -R "$pkgroot" -f $pkgfile -- $pkg + if [ $newct -gt 0 ]; then + newfiles $newver $oldver + { newfiles "$newver" "$oldver"; } | xargs zpm ipkgfile ${user+-u $user} ${group+-g $group} -R "$pkgroot" -f $pkgfile -- $nver + fi + + ct=$(changedfiles $newver $oldver | wc -l) + echo changed $ct + if [ $ct -gt 0 ]; then + changedfiles $newver $oldver | xargs zpm ipkgfile ${user+-u $user} ${group+-g $group} -R "$pkgroot" -f $pkgfile -- $pkg + fi - echo removed - removedfiles $newver $oldver | xargs rm + ct=$(removedfiles $newver $oldver | wc -l) + echo removed $ct + if [ $ct -gt 0 ]; then + removedfiles $newver $oldver | xargs rm + fi zpm pkg $newver status installed zpm pkg $oldver status upgraded @@ -232,6 +242,49 @@ do_upgrade() { EOS } +conflicts() { + echo conflict check $pkg $pkgfile + #newver=$1 + { + zpm shell $pkgfile<<-EOS + .separator " " + select hash,path from packagefiles + where package||'-'||version||'-'||release = '$pkg' + and filetype = 'r' + ; + EOS + } | while read hash path; do + rpath=$pkgroot$path + if [ -f $rpath ]; then + ihash=$(zpm hash $rpath) + if [ $ihash != $hash ]; then + die $path already exists + fi + elif [ -d $rpath ]; then + die $path already exists + fi + done + + { + zpm shell $pkgfile<<-EOS + .separator " " + select path from packagefiles + where package||'-'||version||'-'||release = '$pkg' + and filetype = 'd' + ; + EOS + } | while read hash path; do + rpath=$pkgroot$path + if [ -f $rpath ]; then + die $path already exists + elif [ -d $rpath ]; then + die $path already exists + elif [ -e $rpath ]; then + die $path already exists + fi + done +} + for pkg in $pkglist; do pname=$(pkgname $pkg) curver=$(zpm findpkg $ZPMDB $pname) @@ -267,6 +320,8 @@ for pkg in $pkglist; do # check for conflicts + conflicts $pkgroot $pkg + # mark package in localdb as installing # zpm setmark installing $pkg # install all the files for a package @@ -276,12 +331,14 @@ for pkg in $pkglist; do echo $filecount files #die 'aborting for test' #pathlist + zpm pkg $pkg status installing pathlist | xargs zpm ipkgfile ${user+-u $user} ${group+-g $group} -R "$pkgroot" -f $pkgfile -- $pkg # TODO find scripts marked as post-install # TODO if this is an upgrade, run post-upgrade # mark as ready for install + zpm pkg $pkg status installed #zpm setmark ready $pkg done