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