Hello, Can someone explain when and how this function is used?
I'm having troubles understanding this part: # remove local files that have not changed from # the installed version of this package rm -f $(cat $PKGDIR/$pkg.sha1 | sed '/ -/d' | \ sha1sum -c 2>/dev/null | grep OK | sed 's/: OK$//') for file in $(cat $TMP/$SESSIONID.changed); do if [ "$2" = 1 ]; then test -f $file && echo "$pkg upgrade failed - config file(s) are changed, try manual upgrade" && return 1 fi test -f $file && apkg.merge $PKGROOT . $file test -f $file && mv $file $PKGROOT/$file done When $2 = 1 that means to 'freshen'. But if a local config file has changed, then abort the upgrade. First of all, what is the point of this (to "freshen")? And secondly, why test for "local" changes, then abort if true ("return 1") inside the for loop, especially after the potential deletion of lots of--unchanged--files, from the "installed version"? Seems like this has the potential to leave an LRP in a broken/inconsistent state. Also note: create_sha1 $pkg is being called to create a *running* .sha1 file list even when the *updated* package doesn't contain a .local file. Shouldn't the running .local and .sha1 be deleted instead? Complete code: # --------------------------------------------------------- # upgrade - upgrades a package upgrade () { local pkg pth if [ -z "$1" ]; then echo "No package name given." ; return 1 fi pth=$( makeFN $1 ) pkg=$( package_part $pth ) if [ -z "$pkg" ]; then echo "No package name given."; return 1 fi if ! list_pkgs "$pkg" >/dev/null; then echo "$pkg not installed."; return 1 fi if [ ! -f "$pth" ]; then echo "$pth not found."; return 1 fi # ok, its there, installed... let's upgrade it... ( if [ -f $PKGDIR/$pkg.local ]; then package_changed_files $pkg >$TMP/$SESSIONID.changed mkdir $TMP/$SESSIONID.tmpdir cd $TMP/$SESSIONID.tmpdir tar -zxpf $pth $LRPKG/$pkg.local if [ -f $LRPKG/$pkg.local ] ; then tar -zxpf $pth -T $LRPKG/$pkg.local tar -ztf $pth >$LRPKG/$pkg.list find $(cat $LRPKG/$pkg.local) -type f | \ xargs sha1sum > $LRPKG/$pkg.sha1 # remove local files that have not changed from # the installed version of this package rm -f $(cat $PKGDIR/$pkg.sha1 | sed '/ -/d' | \ sha1sum -c 2>/dev/null | grep OK | sed 's/: OK$//') for file in $(cat $TMP/$SESSIONID.changed); do if [ "$2" = 1 ]; then test -f $file && echo "$pkg upgrade failed - config file(s) are changed, try manual upgrade" && return 1 fi test -f $file && apkg.merge $PKGROOT . $file test -f $file && mv $file $PKGROOT/$file done tar -zxpf $pth -X $TMP/$SESSIONID.changed -C $PKGROOT mv $LRPKG/$pkg.list $PKGDIR mv $LRPKG/$pkg.sha1 $PKGDIR else tar -zxvpf $pth -C $PKGROOT >$PKGDIR/$pkg.list create_sha1 $pkg fi else tar -zxvpf $pth -C $PKGROOT >$PKGDIR/$pkg.list create_sha1 $pkg fi ) if [ $? -eq 0 ]; then echo "$pkg upgraded" # process any package dependencies by recursively calling install()... deplist="" if [ -f $PKGDIR/$pkg.deplrp ] ; then for deplrp in `cat $PKGDIR/$pkg.deplrp` ; do [ -f "$PKGDIR/$deplrp.list" ] || deplist="$deplist $deplrp" done fi [ -n "$deplist" ] && echo "Required packages that are missed: $deplist" return 0 else return $? fi } ------------------------------------------------------------------------------ Comprehensive Server Monitoring with Site24x7. Monitor 10 servers for $9/Month. Get alerted through email, SMS, voice calls or mobile push notifications. Take corrective actions from your mobile device. http://p.sf.net/sfu/Zoho _______________________________________________ leaf-devel mailing list leaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/leaf-devel