cookutils rev 887

cook: make function copy(), use it to copy files to $fs (thanks Pascal for having pointed out the problem); fix cook_copy_icons() status.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Fri Mar 03 02:37:16 2017 +0200 (2017-03-03)
parents 9b02985442a0
children de8a102a01d9
files cook
line diff
     1.1 --- a/cook	Wed Mar 01 18:46:12 2017 +0200
     1.2 +++ b/cook	Fri Mar 03 02:37:16 2017 +0200
     1.3 @@ -417,6 +417,17 @@
     1.4  }
     1.5  
     1.6  
     1.7 +# A bit smarter function than the classic `cp` command
     1.8 +
     1.9 +copy() {
    1.10 +	if [ "$(stat -c %h -- "$1")" -gt 1 ]; then
    1.11 +		cp -al "$1" "$2"	# copy hardlinks
    1.12 +	else
    1.13 +		cp -a  "$1" "$2"	# copy generic files
    1.14 +	fi
    1.15 +}
    1.16 +
    1.17 +
    1.18  # Copy all generic files (locale, pixmaps, .desktop). We use standard paths,
    1.19  # so some packages need to copy these files with the receipt and genpkg_rules.
    1.20  
    1.21 @@ -427,7 +438,7 @@
    1.22  			mkdir -p $fs/usr/share/locale
    1.23  			for i in $LOCALE; do
    1.24  				if [ -d "$install/usr/share/locale/$i" ]; then
    1.25 -					cp -a $install/usr/share/locale/$i $fs/usr/share/locale
    1.26 +					copy $install/usr/share/locale/$i $fs/usr/share/locale
    1.27  				fi
    1.28  			done
    1.29  		fi
    1.30 @@ -438,10 +449,10 @@
    1.31  		if [ -d "$install/usr/share/pixmaps" ]; then
    1.32  			mkdir -p $fs/usr/share/pixmaps
    1.33  			if [ -f "$install/usr/share/pixmaps/$PACKAGE.png" ]; then
    1.34 -				cp -a $install/usr/share/pixmaps/$PACKAGE.png \
    1.35 +				copy $install/usr/share/pixmaps/$PACKAGE.png \
    1.36  					$fs/usr/share/pixmaps
    1.37  			elif [ -f "$install/usr/share/pixmaps/$PACKAGE.xpm" ]; then
    1.38 -				cp -a $install/usr/share/pixmaps/$PACKAGE.xpm \
    1.39 +				copy   $install/usr/share/pixmaps/$PACKAGE.xpm \
    1.40  					$fs/usr/share/pixmaps
    1.41  			fi
    1.42  		fi
    1.43 @@ -449,7 +460,7 @@
    1.44  		# Custom or homemade PNG pixmap can be in stuff.
    1.45  		if [ -f "$stuff/$PACKAGE.png" ]; then
    1.46  			mkdir -p $fs/usr/share/pixmaps
    1.47 -			cp -a $stuff/$PACKAGE.png $fs/usr/share/pixmaps
    1.48 +			copy $stuff/$PACKAGE.png $fs/usr/share/pixmaps
    1.49  		fi
    1.50  	fi
    1.51  
    1.52 @@ -458,24 +469,24 @@
    1.53  	if [ "${COOKOPTS/!menus/}" == "$COOKOPTS" -a "$GENERIC_MENUS" != 'no' ]; then
    1.54  		if [ -d "$install/usr/share/applications" ] && [ -z "$WANTED" ]; then
    1.55  			mkdir -p $fs/usr/share
    1.56 -			cp -a $install/usr/share/applications $fs/usr/share
    1.57 +			copy $install/usr/share/applications $fs/usr/share
    1.58  		fi
    1.59  	fi
    1.60  
    1.61  	# Homemade desktop file(s) can be in stuff.
    1.62  	if [ -d "$stuff/applications" ]; then
    1.63  		mkdir -p $fs/usr/share
    1.64 -		cp -a $stuff/applications $fs/usr/share
    1.65 +		copy $stuff/applications $fs/usr/share
    1.66  	fi
    1.67  	if [ -f "$stuff/$PACKAGE.desktop" ]; then
    1.68  		mkdir -p $fs/usr/share/applications
    1.69 -		cp -a $stuff/$PACKAGE.desktop $fs/usr/share/applications
    1.70 +		copy $stuff/$PACKAGE.desktop $fs/usr/share/applications
    1.71  	fi
    1.72  
    1.73  	# Add custom licenses
    1.74  	if [ -d "$stuff/licenses" ]; then
    1.75  		mkdir -p $fs/usr/share/licenses
    1.76 -		cp -a $stuff/licenses $fs/usr/share/licenses/$PACKAGE
    1.77 +		copy $stuff/licenses $fs/usr/share/licenses/$PACKAGE
    1.78  	fi
    1.79  }
    1.80  
    1.81 @@ -532,7 +543,7 @@
    1.82  		newline; newline
    1.83  		# Keep the last diff for debug and info.
    1.84  		mv -f $diff $CACHE/installed.diff
    1.85 -	fi
    1.86 +	fi | fold -sw80
    1.87  }
    1.88  
    1.89  
    1.90 @@ -1173,7 +1184,7 @@
    1.91  		name=$(echo $i | sed 's|\.[gbx]z2*$||')
    1.92  		section=${name##*/}; section=${section##*.}
    1.93  		mkdir -p $install/usr/share/man/man$section
    1.94 -		cp -a $i $install/usr/share/man/man$section
    1.95 +		copy $i  $install/usr/share/man/man$section
    1.96  	done
    1.97  	status
    1.98  }
    1.99 @@ -1189,9 +1200,7 @@
   1.100  	for i in $@; do
   1.101  		for j in $(find . -name $i ! -type d); do
   1.102  			mkdir -p  $fs$(dirname ${j#.})
   1.103 -			# Option -l used here to prevent hardinked files to become individual files,
   1.104 -			# please don't remove it: package with individual files becomes bigger.
   1.105 -			[ -e "$fs${j#.}" ] || cp -al $j $fs$(dirname ${j#.})
   1.106 +			copy $j $fs$(dirname ${j#.})
   1.107  		done
   1.108  	done
   1.109  	cd - >/dev/null
   1.110 @@ -1209,9 +1218,7 @@
   1.111  	for i in $@; do
   1.112  		for j in $(find . -name $i -type d); do
   1.113  			mkdir -p  $fs$(dirname ${j#.})
   1.114 -			# Option -l used here to prevent hardinked folders to become individual folders,
   1.115 -			# please don't remove it: package with individual folders becomes bigger.
   1.116 -			[ -d "$fs${j#.}" ] || cp -al $j $fs$(dirname ${j#.})
   1.117 +			copy $j $fs$(dirname ${j#.})
   1.118  		done
   1.119  	done
   1.120  	cd - >/dev/null
   1.121 @@ -1227,8 +1234,8 @@
   1.122  	action 'Copying hicolor icons...'
   1.123  	mkdir -p $fs/usr/share/icons/hicolor
   1.124  	for i in ${sizes:-16 48}; do
   1.125 -		[ -e "$install/usr/share/icons/hicolor/${i}x$i" ] &&
   1.126 -		cp -a $install/usr/share/icons/hicolor/${i}x$i \
   1.127 +		[ ! -e "$install/usr/share/icons/hicolor/${i}x$i" ] ||
   1.128 +		copy $install/usr/share/icons/hicolor/${i}x$i \
   1.129  			$fs/usr/share/icons/hicolor
   1.130  	done
   1.131  	status