summaryrefslogtreecommitdiff
path: root/scripts
Side-by-side diff
Diffstat (limited to 'scripts') (more/less context) (ignore whitespace changes)
-rwxr-xr-xscripts/GeneratePackageMake8
-rwxr-xr-xscripts/mkipkg10
-rwxr-xr-xscripts/tothreaded4
3 files changed, 13 insertions, 9 deletions
diff --git a/scripts/GeneratePackageMake b/scripts/GeneratePackageMake
index 099d3e8..9d692a9 100755
--- a/scripts/GeneratePackageMake
+++ b/scripts/GeneratePackageMake
@@ -1,137 +1,137 @@
# generate file containg control name / package name / files
find . -name *.control | grep -v -- "-mt.control" | while read i
do
i=${i/.\//}
CDIR=${i%/*}
BNAME=${i##*/}
BNAME=${BNAME/.control/}
echo "cdir: ${CDIR}"
echo "bname: ${BNAME}"
grep -e "Package:" -e "Files:" ./${i}
done > /tmp/ALL
#
# makefile header
#
cat << MAKEFILEHEADER
#
# generate -mt.control file from regular control
# arg 1 : path to control file to convert
#
define GenerateMTControl
@echo "Generating -mt control file for \$(basename \$<)"
@\$(OPIEDIR)/scripts/tothreaded \$< \$(OPIEDIR)/AllThreadedPackages
endef
#
# package one control file
# arg 1 : directory from OPIEROOT where control file resides
# arg 2 : control file basename without -mt (no .control)
# arg 3 : control file basename with -mt if needed
# arg 4 : package name (value specified by Package: ...)
#
define DoPackage
-@echo \"Building ipk of \$(4)\"
-@( \$(ForSubst) ) > \$(TOPDIR)/scripts/subst
-@( \$(ForFileSubst) ) > \$(TOPDIR)/scripts/Filesubst
-@( cd \$(OPIEDIR); \\
+echo \"Building ipk of \$(4)\"
+( \$(ForSubst) ) > \$(TOPDIR)/scripts/subst
+( \$(ForFileSubst) ) > \$(TOPDIR)/scripts/Filesubst
+( cd \$(OPIEDIR); \\
\$(OPIEDIR)/scripts/mkipkg \\
--subst=\$(OPIEDIR)/scripts/subst \\
--filesubst=\$(OPIEDIR)/scripts/filesubst \\
--control=\$(OPIEDIR)/\$(1)/\$(3).control \\
--prerm=\$(OPIEDIR)/\$(1)/\$(2).prerm \\
--preinst=\$(OPIEDIR)/\$(1)/\$(2).preinst \\
--postrm=\$(OPIEDIR)/\$(1)/\$(2).postrm \\
--postinst=\$(OPIEDIR)/\$(1)/\$(2).postinst \\
--strip=\$(STRIP) \$(OPIEDIR); \\
rm -f \$(OPIEDIR)/Packages/\$(4)_*.ipk; \\
mv *.ipk \$(OPIEDIR)/Packages; \\
touch \$(OPIEDIR)/Packages/\$(4) \\
) || true
endef
#
# prepared for generating the substfile for every build
#
define ForSubst
echo 's,\\\$\$QPE_VERSION,\$(QPE_VERSION),g'; \\
echo 's,\\\$\$OPIE_VERSION,\$(OPIE_VERSION),g'; \\
echo 's,\\\$\$QTE_VERSION,\$(QTE_VERSION),g'; \\
echo 's,\\\$\$QTE_REVISION,\$(QTE_REVISION),g'; \\
echo 's,\\\$\$SUB_VERSION,\$(SUB_VERSION),g'; \\
echo 's,\\\$\$EXTRAVERSION,\$(EXTRAVERSION),g'; \\
echo 's,\\\$\$QTE_BASEVERSION,\$(QTE_BASEVERSION),g'
endef
define ForFileSubst
echo 's,\\\$\$OPIEDIR/root/,/,g'; \\
echo 's,\$(OPIEDIR)/root/,/,g'; \\
echo 's,\\\$\$OPIEDIR,\$(prefix),g'; \\
echo 's,\$(OPIEDIR),\$(prefix),g'; \\
echo 's,\\\$\$QTDIR,\$(prefix),g'; \\
echo 's,\$(QTDIR),\$(prefix),g'; \\
echo 's,^\(\./\)*root/,/,g'; \\
echo 's,^\(\./\)*etc/,\$(prefix)/etc/,g'; \\
echo 's,^\(\./\)*lib/,\$(prefix)/lib/,g'; \\
echo 's,^\(\./\)*bin/,\$(prefix)/bin/,g'; \\
echo 's,^\(\./\)*pics/,\$(prefix)/pics/,g'; \\
echo 's,^\(\./\)*sounds/,\$(prefix)/sounds/,g'; \\
echo 's,^\(\./\)*i18n/,\$(prefix)/i18n/,g'; \\
echo 's,^\(\./\)*plugins/,\$(prefix)/plugins/,g'; \\
echo 's,^\(\./\)*apps/,\$(prefix)/apps/,g'; \\
echo 's,^\(\./\)*share/,\$(prefix)/share/,g'; \\
echo 's,^\(\./\)*i18n/,\$(prefix)/i18n/,g'; \\
echo 's,^\(\./\)*help/,\$(prefix)/help/,g'
endef
#
# Will contain a list of all non-mt control files
ALLCONTROLFILES=
#
# Will contain a list of all packaging targets
ALLPACKAGES=
# s contains now single space
s=\$(x) \$(x)
#
# for convenience : generate AllTh
ATP=\$(OPIEDIR)/AllThreadedPackages
MAKEFILEHEADER
while read k
do
CDIR="${k#* }"
read k
BNAME="${k#* }"
read k
case $k in
*"ackage:"*)
Pkg="${k#* }"
Pkg="${Pkg// }"
;;
*"iles:"*)
Files="${k/Files:/}"
;;
esac
read k
case $k in
*"ackage:"*)
Pkg="${k#* }"
Pkg="${Pkg// }"
;;
*"iles:"*)
Files="${k/Files:/}"
;;
esac
cat << HERE
#
# package $Pkg in ${BNAME}
diff --git a/scripts/mkipkg b/scripts/mkipkg
index a336371..2f020f4 100755
--- a/scripts/mkipkg
+++ b/scripts/mkipkg
@@ -151,225 +151,229 @@ findFile()
fi
}
_pushd() { oldpwd=`pwd`; cd $1; }
_popd() { cd $oldpwd; }
setVar()
{
eval "$1='$2'"
}
expandMaskToList()
{
local _list=`echo $1`
local _tmpFileList=
for f in $_list; do
if [ -d $f ]; then
f="`findFile $f`"
fi
_tmpFileList="`eval echo $f` $_tmpFileList"
done
setVar $2 "$_tmpFileList"
}
createFileList()
{
local excludeMask
local includeMask
local includemaskpresent=0
local excludemaskpresent=0
if (grep -q ^FileExcludeMask $1); then
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 )
if [ -z "$filesubst" ]; then
( cd $tempDir && stripFiles "$ipkgFileList" )
else
if ! (echo $filesubst|grep -q '^/'); then
filesubst="$oldpwd/$filesubst"
fi
( cd $tempDir && substAndStripFiles "$ipkgFileList" $filesubst )
fi
# removing CVS directories
find $tempDir -name CVS -a -type d -print0 | xargs -0 rm -rf
path="`echo "$PATH" | sed -e "s/\:/ /g"`"
if [ -z "$mkfsjffs2" ]; then
for i in $path; do
if [ -x "$i/mkfs.jffs2" ]; then
mkfsjffs2="$i/mkfs.jffs2"
break
fi
done
fi
if [ -z "$mkfsjffs2" ]; then
echo "$self: WARNING: no mkjfs.jffs2 found in path. Falling back to using du"
echo "for size calculation. mkfs.jffs2 is recommended for size calculation"
echo "as it calculates the real package size on the compressed file system,"
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
diff --git a/scripts/tothreaded b/scripts/tothreaded
index 31ed31e..f916ad8 100755
--- a/scripts/tothreaded
+++ b/scripts/tothreaded
@@ -1,130 +1,130 @@
#!/bin/sh
# PURPOSE :
#
# this script converts a non-threaded control file to a threaded one
# by extending appropriate names with -mt as extension
#
# eg abc.control becoms abc-mt.control
#
#
# make sure that the depends expression has enough spaces
# expression can contian : , ( ) || &&
#
tokenize() {
sed "s/,/ & /g" | sed "s/)/ & /g" | sed "s/(/ & /g" | sed "s/|/ & /g" | sed "s/&/ & /g"
}
#
# function converts package name to threaded equivalend IF the
# package file HAS a threaded version
#
findthreadedequiv() {
local isin i
for i in $*
do
isin=`grep "^$i\$" "$ALLTHREADEDPKGSFILE"`
if [ -z "$isin" ]
then
# no threaded package
- echo -n "$i "
+ echo -n "$i"
else
# threaded package
- echo -n "${isin}-mt "
+ echo -n "${isin}-mt"
fi
done
echo
}
#
# signature of binary files
# currently obsolete
#
# ISBINARY="*ELF*LSB*"
usage() {
echo "Usage : tothreaded <controlfile> <ALLPackages file>"
exit 2
}
. scripts/SpecialMTFiles
#
# get the name of the controlfile to check for threading
#
if [ -z "$1" ]
then
usage
fi
controlfile=$1
shift
case $controlfile in
*-mt.control)
#already threaded
echo $controlfile
exit 0;
;;
esac
#
# file containing list of all known threaded packages
#
if [ -z "$1" ]
then
usage
fi
ALLTHREADEDPKGSFILE=$1
shift
#
# strip out the name of the package
#
packagename=${controlfile##*/} # path
packagename=${packagename%.control} # extension
#
# generate new control file
#
newcontrolfile=${controlfile/\.control/-mt\.control}
#
# read all lines in original control file
#
while read line
do
case $line in
# convert some files to threaded equivalent
"Files:"*)
files=${line#Files:}
# thread-converted files
T_files=`ConvertSpecialFiles "$files"`
echo "Files: $T_files"
;;
"Package: "*)
T_package=`findthreadedequiv ${line#Package: }`
echo "Package: ${T_package}"
;;
"Depends: "*)
depends=`echo "${line#Depends: }" | tokenize`
T_depends=`findthreadedequiv ${depends}`
echo "Depends: $T_depends"
;;
"Provides: "*)
T_provides=`findthreadedequiv ${line#Provides: }`
echo "Provides: $T_provides"
;;
"Recommends: "*)
T_recommends=`findthreadedequiv ${line#Recommends: }`
echo "Recommends: $T_recommends"
;;
"Conflicts: "*)
conflicts=`echo "${line#Conflicts: }" | tokenize`
T_conflicts=`findthreadedequiv ${conflicts}`
echo "Conflicts: $T_conflicts"
;;
*":"*)
echo "$line"
;;
*) # al other lines