tazwok rev 95

Add 'tazwok cmp --cook'
author Pascal Bellard <pascal.bellard@slitaz.org>
date Fri Oct 03 07:59:59 2008 +0000 (2008-10-03)
parents c5af27ee2f6f
children d335ff8c479f
files tazwok
line diff
     1.1 --- a/tazwok	Fri Sep 26 09:05:56 2008 +0000
     1.2 +++ b/tazwok	Fri Oct 03 07:59:59 2008 +0000
     1.3 @@ -613,7 +613,7 @@
     1.4  	local date
     1.5  	local mon
     1.6  	# Default date is Jan 1 1970
     1.7 -	[ -d $WOK/.hg ] || return 0
     1.8 +	[ -d $WOK/.hg -a -x /usr/bin/hg ] || { echo "0"; return; }
     1.9  	pkg=$(basename $1)
    1.10  	# Get date for last commit
    1.11  	date="$( cd $WOK; hg log $(find $pkg/receipt $pkg/stuff -type f \
    1.12 @@ -710,34 +710,39 @@
    1.13  		for pkg in $WOK/*
    1.14  		do
    1.15  			. $pkg/receipt
    1.16 -			echo "$PACKAGE-$VERSION.tazpkg" >> /tmp/wok.list
    1.17 +			echo "$PACKAGE-$VERSION.tazpkg" >> /tmp/wok.list.$$
    1.18  			tpkg="$(ls $PACKAGES_REPOSITORY/$PACKAGE-$VERSION*.tazpkg 2> /dev/null)"
    1.19  			if [ -z "$tpkg" ]; then
    1.20  				echo "Missing package: $PACKAGE ($VERSION)"
    1.21 -				echo "$PACKAGE" >> /tmp/pkgs.missing
    1.22 +				echo "$PACKAGE" >> /tmp/pkgs.missing.$$
    1.23  			elif [ -f $pkg/taz/*/receipt -a ! -f $pkg/taz/*/md5sum ]; then
    1.24  				echo "Obsolete package: $PACKAGE ($VERSION)"
    1.25 -				echo "$PACKAGE" >> /tmp/pkgs.missing
    1.26 +				echo "$PACKAGE" >> /tmp/pkgs.missing.$$
    1.27  			else
    1.28  				srcdate=$(hgdate $pkg)
    1.29  				pkgdate=$(date -u -r $tpkg '+%m%d%H%M%Y')
    1.30  				if [ $(date -d $pkgdate +%s) -lt $(date -d $srcdate +%s) ]; then
    1.31  					echo "Rebuild package: $PACKAGE ($VERSION) cooked $(date -d $pkgdate "+%x %X"), modified $(date -d $srcdate "+%x %X")"
    1.32 -					echo "$PACKAGE" >> /tmp/pkgs.missing
    1.33 +					echo "$PACKAGE" >> /tmp/pkgs.missing.$$
    1.34 +				else
    1.35 +					continue
    1.36  				fi
    1.37  			fi
    1.38 +			if [ "$2" = "--cook" ]; then
    1.39 +				tazwok cook $PACKAGE
    1.40 +			fi
    1.41  		done
    1.42  		for pkg in `cd $PACKAGES_REPOSITORY && ls *.tazpkg`
    1.43  		do
    1.44 -			# grep $pkg in /tmp/wok.list
    1.45 +			# grep $pkg in /tmp/wok.list.$$
    1.46  			# may include EXTRAVERSION or computed VERSION
    1.47 -			for i in $(grep ^${pkg%-*} /tmp/wok.list); do
    1.48 +			for i in $(grep ^${pkg%-*} /tmp/wok.list.$$); do
    1.49  				case "$pkg" in
    1.50  				${i%.tazpkg}*.tazpkg) continue 2;;
    1.51  				esac
    1.52  			done
    1.53  			# Not found
    1.54 -			echo $pkg >> /tmp/pkgs.old
    1.55 +			echo $pkg >> /tmp/pkgs.old.$$
    1.56  			if [ "$2" = "--remove" ]; then
    1.57  				echo "Removing package: $pkg"
    1.58  				rm $PACKAGES_REPOSITORY/$pkg
    1.59 @@ -747,12 +752,12 @@
    1.60  		done
    1.61  		cd /tmp
    1.62  		echo "================================================================================"
    1.63 -		echo "Wok: `cat wok.list | wc -l` - \
    1.64 +		echo "Wok: `cat wok.list.$$ | wc -l` - \
    1.65  Cooked: `ls -1 $PACKAGES_REPOSITORY/*.tazpkg 2>/dev/null | wc -l` - \
    1.66 -Missing: `cat pkgs.missing 2>/dev/null | wc -l` - \
    1.67 -Old: `cat pkgs.old 2>/dev/null | wc -l`"
    1.68 +Missing: `cat pkgs.missing.$$ 2>/dev/null | wc -l` - \
    1.69 +Old: `cat pkgs.old.$$ 2>/dev/null | wc -l`"
    1.70  		echo ""
    1.71 -		rm -f wok.list pkgs.old pkgs.missing
    1.72 +		rm -f wok.list.$$ pkgs.old.$$ pkgs.missing.$$
    1.73  		;;
    1.74  	list)
    1.75  		# List packages in wok directory. User can specifiy a category
    1.76 @@ -908,16 +913,22 @@
    1.77  		# Remove taz/ and source tree if exists.
    1.78  		if [ -d "taz" ]; then
    1.79  			echo -n "Removing taz files..."
    1.80 -			rm -rf taz && status
    1.81 +			rm -rf taz
    1.82 +			status
    1.83  		fi
    1.84 -		if [ -d "$PACKAGE-$VERSION" ]; then
    1.85 +		for i in $PACKAGE-$VERSION $SOURCE-$VERSION ; do
    1.86 +			[ -e "$i" ] || continue
    1.87  			echo -n "Removing source files..."
    1.88 -			rm -rf $PACKAGE-$VERSION && status
    1.89 -		fi
    1.90 -		if [ -d "$SOURCE-$VERSION" ]; then
    1.91 -			echo -n "Removing source files..."
    1.92 -			rm -rf $SOURCE-$VERSION && status
    1.93 -		fi
    1.94 +			if [ -L $i ]; then
    1.95 +				target=$(readlink $i)
    1.96 +				[ -d "$target" ] && case "$target" in
    1.97 +				/*|.|./*|..|../*);;
    1.98 +				*) rm -rf $target;;
    1.99 +				esac
   1.100 +			fi
   1.101 +			rm -rf $i
   1.102 +			status
   1.103 +		done
   1.104  		# Remove an envental $PACKAGE-build directory.
   1.105  		if [ -d "$PACKAGE-build" ]; then
   1.106  			echo -n "Removing build tree..."