tazwok rev 415 4.3

Various code optimization
author Antoine Bodin <gokhlayeh@slitaz.org>
date Sat Mar 05 01:04:25 2011 +0100 (2011-03-05)
parents 7b60ce65b63f
children bedddc4f90f4
files tazwok
line diff
     1.1 --- a/tazwok	Sat Mar 05 00:25:38 2011 +0100
     1.2 +++ b/tazwok	Sat Mar 05 01:04:25 2011 +0100
     1.3 @@ -208,9 +208,6 @@
     1.4  		check_dir $SOURCES_REPOSITORY
     1.5  		check_dir $INCOMING_REPOSITORY
     1.6  		check_dir $LOCAL_REPOSITORY/log
     1.7 -		[ -f $dep_db ] || touch $dep_db
     1.8 -		[ -f $wan_db ] || touch $wan_db
     1.9 -		[ -f $cookorder ] || touch $cookorder
    1.10  		for file in $dep_db $wan_db $cookorder $commit $cooklist \
    1.11  			$broken $blocked $SOURCES_REPOSITORY/sources.list
    1.12  		do
    1.13 @@ -284,14 +281,6 @@
    1.14  	fi
    1.15  }
    1.16  
    1.17 -check_for_pkg_in_wok()
    1.18 -{
    1.19 -	[ -f $WOK/$PACKAGE/receipt ] && return
    1.20 -	[ "$undigest" ] grep -q ^$PACKAGE'$\t' $ref_dep_db && return 1
    1.21 -	echo "Can't find $PACKAGE in wok or mirror" >&2
    1.22 -	return 2
    1.23 -}
    1.24 -
    1.25  ########################################################################
    1.26  # TAZWOK CORE FUNCTIONS
    1.27  ########################
    1.28 @@ -1250,7 +1239,7 @@
    1.29  	report step "Removing old files"
    1.30  	for file in files.list.lzma packages.list packages.txt \
    1.31  		packages.desc packages.equiv packages.md5; do
    1.32 -		[ -f $file ] && rm $file
    1.33 +		rm -rf $file
    1.34  	done
    1.35  	touch files.list
    1.36  	
    1.37 @@ -1297,19 +1286,19 @@
    1.38  			elif [ ! -f $WOK/$PACKAGE/receipt ] && \
    1.39  				[ "$COMMAND" = check-incoming -o "$pkg_repository" = "$INCOMING_REPOSITORY" ]; then
    1.40  				erase_package_info
    1.41 -				echo "Removing $PACKAGE from $pkg_repository."	
    1.42 +				echo "Removing $PACKAGE from $pkg_repository."
    1.43  				rm $pkg
    1.44 -				[ -d $WOK/$PACKAGE ] && rm -r $WOK/$PACKAGE
    1.45 +				rm -rf $WOK/$PACKAGE
    1.46  				sed "/^$PACKAGE\t/d" -i $wan_db $dep_db $cookorder
    1.47  				sed "/^$PACKAGE$/d" -i $cooklist $commit $blocked $broken
    1.48 -				rm -f $LOCAL_REPOSITORY/log/$PACKAGE.html	
    1.49 +				rm -f $LOCAL_REPOSITORY/log/$PACKAGE.html
    1.50  				if [ "$pkg_repository" = "$INCOMING_REPOSITORY" ] && \
    1.51  				[ "$(sed 1!d $cookorder)" != "#PlanSort" ] ; then
    1.52  					sed 1i"#PlanSort" -i $cookorder
    1.53  					regen_cooklist=yes
    1.54  				else
    1.55 -					echo "$PACKAGE" >> $PACKAGES_REPOSITORY/removed
    1.56 -					sed -n '1,10p' -i $PACKAGES_REPOSITORY/removed
    1.57 +					echo "$PACKAGE" >> removed
    1.58 +					sed -n '1,10p' -i removed
    1.59  				fi
    1.60  			fi
    1.61  		fi
    1.62 @@ -1322,10 +1311,8 @@
    1.63  	unset updated_pkg
    1.64  	
    1.65  	# Look for new packages.
    1.66 -	for pkg in $(echo $pkg_repository/*.tazpkg | fgrep -v '*'); do
    1.67 -		if ! fgrep -q "  ${pkg##*/}" $pkg_repository/packages.md5; then
    1.68 -			get_packages_info
    1.69 -		fi
    1.70 +	for pkg in $pkg_repository/*.tazpkg; do
    1.71 +		fgrep -q "  ${pkg##*/}" packages.md5 || get_packages_info
    1.72  	done
    1.73  	report end-step
    1.74  	packages_db_end
    1.75 @@ -1333,17 +1320,17 @@
    1.76  
    1.77  packages_db_start()
    1.78  {
    1.79 -	if [ ! -s packages.txt ]; then
    1.80 +	if [ -s packages.txt ]; then
    1.81 +		sed -e 's/^# Packages :.*/# Packages : unknow/' \
    1.82 +			-e "s/# Date     :.*/# Date     : $(date +%Y-%m-%d\ \%H:%M:%S)/" \
    1.83 +			-i packages.txt
    1.84 +	else
    1.85  			echo "# SliTaz GNU/Linux - Packages list
    1.86  #
    1.87  # Packages : unknow
    1.88  # Date     : $(date +%Y-%m-%d\ \%H:%M:%S)
    1.89  #
    1.90  " > packages.txt
    1.91 -	else
    1.92 -		sed -e 's/^# Packages :.*/# Packages : unknow/' \
    1.93 -			-e "s/# Date     :.*/# Date     : $(date +%Y-%m-%d\ \%H:%M:%S)/" \
    1.94 -			-i packages.txt
    1.95  	fi
    1.96  	
    1.97  	# Needed in some case as tazwok define RECEIPT at configuration time
    1.98 @@ -1456,7 +1443,7 @@
    1.99  	if ! sort -c packages.list 2> /dev/null; then
   1.100  		report step "Sorting packages lists"
   1.101  		files_list="packages.list packages.desc packages.equiv"
   1.102 -		[ "$pkg_repository" = "$PACKAGES_REPOSITORY" ] && \
   1.103 +		[ "${pkg_repository##*/}" = packages ] && \
   1.104  			files_list="$files_list wanted.txt depends.txt"
   1.105  		for file in $files_list; do
   1.106  			[ -f $file ] || continue
   1.107 @@ -1545,22 +1532,13 @@
   1.108  sort_db()
   1.109  {
   1.110  	report step "Generating cookorder.txt"
   1.111 -	cat $dep_db | sed 's/ \t / /' | while read PACKAGE BUILD_DEPENDS; do
   1.112 +	sed 's/ \t / /' $dep_db | while read PACKAGE BUILD_DEPENDS; do
   1.113  		grep -q ^$PACKAGE$'\t' $wan_db && continue
   1.114  		
   1.115  		# Replace each BUILD_DEPENDS with a WANTED package by it's
   1.116  		# WANTED package.
   1.117 -		replace_by_wanted()
   1.118 -		{
   1.119 -			for p in $BUILD_DEPENDS; do
   1.120 -				if grep -q ^$p$'\t' $wan_db; then
   1.121 -					echo -n $(grep ^$p$'\t' $wan_db | cut -f 2)' '
   1.122 -				else
   1.123 -					echo -n $p' '
   1.124 -				fi
   1.125 -			done | tr ' ' '\n' | sort -u | sed "/^$PACKAGE$/d" | tr '\n' ' '
   1.126 -		}
   1.127 -		echo -e $PACKAGE"\t $(replace_by_wanted) "
   1.128 +		echo -e $PACKAGE"\t $(echo $BUILD_DEPENDS | use_wanted | \
   1.129 +			sort -u | sed "/^$PACKAGE$/d" | tr '\n' ' ') "
   1.130  	done > $tmp/db
   1.131  	while [ -s "$tmp/db" ]; do
   1.132  		status=start
   1.133 @@ -1574,8 +1552,8 @@
   1.134  		if [ "$status" = start ]; then
   1.135  			cp -f $tmp/db /tmp/remain-depends.txt
   1.136  			echo "Can't go further because there's depency(ies) loop(s). The remaining packages will be commentend in the cookorder and will be unbuild in case of major update until the problem is solved." >&2
   1.137 -			for blocked in $(cut -f 1 $tmp/db); do
   1.138 -				echo "$blocked" >> $PACKAGES_REPOSITORY/blocked
   1.139 +			for remaining in $(cut -f 1 $tmp/db); do
   1.140 +				echo "$remaining" >> $blocked
   1.141  			done
   1.142  			break
   1.143  		fi
   1.144 @@ -1667,8 +1645,15 @@
   1.145  {
   1.146  	for input in $(cat); do
   1.147  		{ grep ^$input$'\t' $wan_db || echo $input
   1.148 -		} | sed 's/.*\t//'
   1.149 -	done
   1.150 +		}
   1.151 +	done | sed 's/.*\t//'
   1.152 +}
   1.153 +
   1.154 +check_for_pkg_in_wok()
   1.155 +{
   1.156 +	[ -f $WOK/$PACKAGE/receipt ] && return
   1.157 +	echo "Can't find $PACKAGE in wok or mirror" >&2
   1.158 +	return 2
   1.159  }
   1.160  
   1.161  # Define how theses functions should act when using --undigest.
   1.162 @@ -1742,6 +1727,14 @@
   1.163  			grep -q ^$PACKAGE-dev$'\t' $ref_dep_db && echo $PACKAGE-dev
   1.164  		fi
   1.165  	}
   1.166 +
   1.167 +	check_for_pkg_in_wok()
   1.168 +	{
   1.169 +		[ -f $WOK/$PACKAGE/receipt ] && return
   1.170 +		grep -q ^$PACKAGE'$\t' $ref_dep_db && return 1
   1.171 +		echo "Can't find $PACKAGE in wok or mirror" >&2
   1.172 +		return 2
   1.173 +	}
   1.174  }
   1.175  
   1.176  ########################################################################
   1.177 @@ -1783,10 +1776,10 @@
   1.178  			done
   1.179  			append_to_dep()
   1.180  			{
   1.181 -				if ! grep -q ^$PACKAGE$'\t' $dep_db; then
   1.182 +				if grep -q ^$PACKAGE$'\t' $dep_db; then
   1.183 +					echo $PACKAGE >> $tmp/dep
   1.184 +				else
   1.185  					check_for_missing && echo $PACKAGE >> $tmp/dep
   1.186 -				else
   1.187 -					echo $PACKAGE >> $tmp/dep
   1.188  				fi
   1.189  			}
   1.190  		else
   1.191 @@ -1810,10 +1803,10 @@
   1.192  		if [ "$plan_check_for_missing" ]; then
   1.193  			append_to_dep()
   1.194  			{
   1.195 -				if ! grep -q ^$PACKAGE$'\t' $dep_db; then
   1.196 +				if grep -q ^$PACKAGE$'\t' $dep_db; then
   1.197 +					echo $PACKAGE >> $tmp/dep
   1.198 +				else
   1.199  					check_for_missing && echo $PACKAGE >> $tmp/dep
   1.200 -				else
   1.201 -					echo $PACKAGE >> $tmp/dep
   1.202  				fi
   1.203  			}
   1.204  			check_db_status=yes
   1.205 @@ -1846,9 +1839,7 @@
   1.206  		sed 1d -i $tmp/list
   1.207  		append_to_dep
   1.208  		for pkg in $(scan_pkg); do
   1.209 -			if ! grep -q ^$pkg$ $tmp/list $tmp/dep; then
   1.210 -				echo $pkg >> $tmp/list
   1.211 -			fi
   1.212 +			grep -q ^$pkg$ $tmp/list $tmp/dep || echo $pkg >> $tmp/list
   1.213  		done
   1.214  	done
   1.215  	if [ "$cooklist" ]; then
   1.216 @@ -2113,7 +2104,7 @@
   1.217  			echo "Moving $PACKAGE..."
   1.218  			mv -f $INCOMING_REPOSITORY/$PACKAGE-$VERSION.tazpkg $PACKAGES_REPOSITORY
   1.219  			touch $PACKAGES_REPOSITORY/$PACKAGE-$VERSION.tazpkg
   1.220 -			previous_tarball=$(grep ^$PACKAGE:main $SOURCES_REPOSITORY/sources.list | cut -f2)
   1.221 +			previous_tarball=$(grep -m1 ^$PACKAGE:main $SOURCES_REPOSITORY/sources.list | cut -f2)
   1.222  			sed -e "/^$PACKAGE:main/d" \
   1.223  				-e "s/^$PACKAGE:incoming/$PACKAGE:main/" \
   1.224  				-i $SOURCES_REPOSITORY/sources.list
   1.225 @@ -2130,7 +2121,7 @@
   1.226  	done
   1.227  
   1.228  	if [ "$GEN_SAFE_WOK_TARBALL" ]; then
   1.229 -		rm -rf $PACKAGES_REPOSITORY/wok.tar.lzma
   1.230 +		rm -f $PACKAGES_REPOSITORY/wok.tar.lzma
   1.231  		cd $PACKAGES_REPOSITORY/wok
   1.232  		report step "Generating safe-wok tarball"
   1.233  		tar -c * | lzma e $PACKAGES_REPOSITORY/wok.tar.lzma
   1.234 @@ -2189,7 +2180,7 @@
   1.235  	if grep -q ^clean_wok $RECEIPT; then
   1.236  		clean_wok
   1.237  	fi
   1.238 -	# Clean should only have a receipt, stuff and optional desc.
   1.239 +	# Clean should only have a receipt, stuff and optionals desc/md5.
   1.240  	for f in `ls .`
   1.241  	do
   1.242  		case $f in
   1.243 @@ -2234,7 +2225,9 @@
   1.244  	source_receipt
   1.245  
   1.246  	# Define log path and start report.
   1.247 -	[ -f $LOCAL_REPOSITORY/log/$PACKAGE.html ] && rm $LOCAL_REPOSITORY/log/$PACKAGE.html
   1.248 +	for i in $(look_for_rwanted) $PACKAGE; do
   1.249 +		rm -f $LOCAL_REPOSITORY/log/$i.html
   1.250 +	done
   1.251  	report sublog $LOCAL_REPOSITORY/log/$PACKAGE.html
   1.252  	echo "$PACKAGE" > $LOCAL_REPOSITORY/log/package
   1.253  	report step "Cooking $PACKAGE"
   1.254 @@ -2259,7 +2252,7 @@
   1.255  		# Upgrade to cooked packages if it was previously installed.
   1.256  		report step "Look for package(s) to upgrade"
   1.257  		for pkg in $(look_for_rwanted) $PACKAGE; do
   1.258 -			if [ -d $INSTALLED/$pkg ]; then
   1.259 +			if [ -f $INSTALLED/$pkg/receipt ]; then
   1.260  				tazpkg get-install $pkg --forced
   1.261  			fi
   1.262  		done