summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rwxr-xr-xscripts/mkipkg104
1 files changed, 58 insertions, 46 deletions
diff --git a/scripts/mkipkg b/scripts/mkipkg
index 54651af..7877078 100755
--- a/scripts/mkipkg
+++ b/scripts/mkipkg
@@ -139,18 +139,19 @@ if [ -z "`which $ipkgbuild 2>/dev/null`" ]; then
fi
findFile()
{
local path=
if [ $# = 1 ]; then
- find $1 -type f -o -type b -o -type c -o -type l -o -type d
+ find $1 -type f -o -type b -o -type c -o -type l
+ find $1 -type d -a -empty
else
- find . -type f -o -type b -o -type c -o -type l -o -type d | \
- sed -e "s,\./\(.*\),\\1,g"
+ find . -type f -o -type b -o -type c -o -type l | \
+ sed -e "s,\./\(.*\),\\1,g"
+ find . -type d -a -empty
fi
-
}
_pushd() { oldpwd=`pwd`; cd $1; }
_popd() { cd $oldpwd; }
setVar()
@@ -161,27 +162,26 @@ setVar()
expandMaskToList()
{
local _list=`echo $1`
local _tmpFileList=
for f in $_list; do
if [ -d $f ]; then
- find="`findFile $f`"
- if [ -z "$find" ]; then
- find="$f"
- fi
- f="$f `findFile $f`"
+ f="`findFile $f`"
fi
- _tmpFileList=$f" $_tmpFileList"
+ _tmpFileList="`eval echo $f` $_tmpFileList"
done
setVar $2 "$_tmpFileList"
}
createFileList()
{
local excludeMask
local includeMask
+ local includemaskpresent=0
+ local excludemaskpresent=0
+
if (cat $1|grep -q ^FileExcludeMask); then
excludemaskpresent=1
excludeMask=$(eval echo '"'$(sed -n -e "s,^FileExcludeMask: *,,p" $1)'"')
fi
if (cat $1|grep -q ^FileIncludeMask); then
includemaskpresent=1
@@ -190,51 +190,54 @@ createFileList()
if (cat $1|grep -q ^Files:); then
includemaskpresent=1
includeMask=$(eval echo '"'$(sed -n -e "s,^Files: *,,p" $1)'"')
fi
fi
- excludeMask="$excludeMask CONTROL/* usr/share/* CVS/* SCCS/*"
+ _pushd $destdir
+
+ excludeMask="$excludeMask CONTROL/* usr/share/*"
- if [ $includemaskpresent == 1 ]; then
- if [ -z "$includeMask" ]; then
- setVar $2 ""
- return 0
- fi
- _pushd $destdir
- expandMaskToList "$includeMask" _fileList
- _popd
- else
- _fileList=`cd $destdir && findFile`
+ if [ $includemaskpresent != 1 ]; then
+ includeMask="."
+ fi
+
+ if [ -z "$includeMask" ]; then
+ setVar $2 ""
+ _popd
+ return 0
fi
+ expandMaskToList "$includeMask" _fileList
+
_excludeList=
if [ -n "$excludeMask" ]; then
- _pushd $destdir
expandMaskToList "$excludeMask" _excludeList
- _popd
+ _excludeList="$_excludeList `find -name \*CVS\* -o -name \*SCCS\*`"
fi
local realFileList=
local missing=0
for file in $_fileList; do
local containedInList=0
for i in $_excludeList; do
if [ $file = $i ]; then
containedInList=1
fi
done
if [ $containedInList = 0 ]; then
- if [ ! -e $file ]; then
-# echo "$self: $file not found"
+ 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"
}
@@ -249,53 +252,58 @@ stripFile()
substFile()
{
local oldfile=$1
if [ ! -e $2 ]; then return 1; fi
- if [ -e $oldfile ]; then
- newfile=./`echo $1|sed -f $2|sed -e's,^/,,g'`
- olddir=./`dirname $1`
+ 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 $1 $newfile
+ mv $olddir/$base $newfile
rmdir -p $olddir 2>/dev/null
fi
}
stripFiles()
{
for f in $1; do
- stripFile $f
+ stripFile ./$f
done
}
substFiles()
{
for f in $1; do
- substFile $f
+ substFile ./$f
done
}
substAndStripFiles()
{
for f in $1; do
- stripFile $f
- substFile $f $2
+ 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
@@ -306,20 +314,34 @@ tempDir=/tmp/`basename $self`.$$
mkdir -p $tempDir
if [ $? != 0 ]; then
echo "$self: cannot create $tempDir, exiting..."
exit 1
fi
-cd $destdir; createFileList $control ipkgFileList
+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"
exit 1
fi
-( cd $destdir && tar cf - $ipkgFileList 2>/dev/null ) | \
-( cd $tempDir && tar xf - 2>/dev/null )
+
+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 )
if [ -z "$filesubst" ]; then
( cd $tempDir && stripFiles "$ipkgFileList" )
else
if ! (echo $filesubst|grep -q '^/'); then
filesubst="$oldpwd/$filesubst"
@@ -344,22 +366,12 @@ if [ -z "$mkfsjffs2" ]; then
echo "in contrast to du calculating the uncompressed size!"
buildsize=`du -h -s $tempDir | awk '{print $1}'`
else
buildsize=`$mkfsjffs2 -r $tempDir | wc -c`
fi
-ctrldir=$tempDir/CONTROL
-
-mkdir -p $ctrldir
-
-if [ ! -e $subst ] || [ -z "$subst" ]; then
- cat $control | egrep -v '^(FileIncludeMask|FileExcludeMask|Files):' > $ctrldir/control
-else
- sed -f $subst < $control | egrep -v '^(FileIncludeMask|FileExcludeMask|Files):' > $ctrldir/control
-fi
-
if [ "$buildsize" != "0" ]; then
echo "Installed-Size: $buildsize" >> $ctrldir/control
fi
installScript $preinst
installScript $postinst