-rwxr-xr-x | scripts/mkipkg | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/scripts/mkipkg b/scripts/mkipkg index a336371..2f020f4 100755 --- a/scripts/mkipkg +++ b/scripts/mkipkg @@ -183,161 +183,165 @@ createFileList() excludemaskpresent=1 excludeMask=$(eval echo '"'$(sed -n -e "s,^FileExcludeMask: *,,p" $1)'"') fi if (grep -q ^FileIncludeMask $1); then includemaskpresent=1 includeMask=$(eval echo '"'$(sed -n -e "s,^FileIncludeMask: *,,p" $1)'"') else if (grep -q ^Files: $1); then includemaskpresent=1 includeMask=$(eval echo '"'$(sed -n -e "s,^Files: *,,p" $1)'"') fi fi _pushd $destdir declare -a excludeMaskArray excludeMaskArray=( $excludeMask ) excludeMaskArray=( "${excludeMaskArray[@]}" "CONTROL/*" "usr/share/*" ) if [ $includemaskpresent != 1 ]; then includeMask="." fi if [ -z "$includeMask" ]; then setVar $2 "" _popd return 0 fi expandMaskToList "$includeMask" _fileList excludeMaskArray=( "${excludeMaskArray[@]}" "*/CVS*" "*/SCCS*" ) local realFileList= local missing=0 for file in $_fileList; do local containedInList=0 for i in "${excludeMaskArray[@]}"; do if [[ $file == $i ]]; then containedInList=1 break; fi done if [ $containedInList = 0 ]; then if ! [ -e $file -o -L $file ]; then echo "$self: $file not found" missing=1 fi realFileList=$file" $realFileList" fi done _popd if [ $missing = 1 ]; then return 1 fi setVar $2 "$realFileList" } stripFile() { - if [ -f $1 -a -x $1 ]; then - $strip --strip-all $1 + if [ ! -h $1 -a -f $1 -a -x $1 ]; then + $strip -p --strip-all $1 fi } substFile() { local oldfile=$1 if [ ! -e $2 ]; then return 1; fi if [ -e $oldfile -o -L $oldfile ]; then newfile=`echo $oldfile|sed -f $2|sed -e's,^/,,g'` olddir=`dirname $oldfile` base=`basename $oldfile` newdir=`dirname $newfile` # echo >&2 moving $oldfile to $newfile if [ "$newdir" = "$olddir" ]; then return 0 fi mkdir -p $newdir mv $olddir/$base $newfile rmdir -p $olddir 2>/dev/null fi } stripFiles() { for f in $1; do - stripFile ./$f + # do not strip links + if [ ! -h ./$f ] + then + stripFile ./$f + fi done } substFiles() { for f in $1; do substFile ./$f done } substAndStripFiles() { for f in $1; do stripFile ./$f substFile ./$f $2 done } installScript() { if [ -n "$1" -a -f "$1" ]; then destfile=`basename $1` filetype=`echo $destfile|cut -d. -f2` if [ -n "$filetype" ]; then destfile=$filetype; fi if [ -n "$subst" ]; then sed -f $subst < $1 > $ctrldir/$destfile else cat $1 > $ctrldir/$destfile fi chmod +x $ctrldir/$destfile fi } tempDir=/tmp/`basename $self`.$$ mkdir -p $tempDir if [ $? != 0 ]; then echo "$self: cannot create $tempDir, exiting..." rm -rf $tempDir exit 1 fi ctrldir=$tempDir/CONTROL mkdir -p $ctrldir if [ ! -e $subst ] || [ -z "$subst" ]; then cat $control > $ctrldir/control.new else sed -f $subst < $control > $ctrldir/control.new fi createFileList $ctrldir/control.new ipkgFileList if [ "$?" != "0" ]; then echo "$self: ERROR: missing files, not building $control" rm -rf $tempDir exit 1 fi cat $ctrldir/control.new | egrep -v '^(Files|FileExcludeMask|FileIncludeMask):' > $ctrldir/control rm -f $ctrldir/control.new ( cd $destdir && tar -cf - $ipkgFileList 2>/dev/null ) | ( cd $tempDir && tar -xf - 2>/dev/null ) |