X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=zpm-install;h=af14c4d364de847df6591293b583a539cab34d12;hb=9bc9fdb39d33fff1c2e08d8d0c45c959b49a0909;hp=b312afa7279498c24f4b726df2cb9ac8696e1c3c;hpb=daf786e18890e5380c51cddab1b4c856a51bd1c0;p=zpackage diff --git a/zpm-install b/zpm-install index b312afa..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 @@ -211,15 +210,27 @@ do_upgrade() { set -e echo merging $newver 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 @@ -231,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) @@ -266,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 @@ -275,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