summaryrefslogtreecommitdiff
path: root/scripts
Side-by-side diff
Diffstat (limited to 'scripts') (more/less context) (show whitespace changes)
-rw-r--r--scripts/SpecialMTFiles14
-rwxr-xr-xscripts/ipkg-build55
-rwxr-xr-xscripts/mkipkg22
-rwxr-xr-xscripts/tothreaded132
4 files changed, 205 insertions, 18 deletions
diff --git a/scripts/SpecialMTFiles b/scripts/SpecialMTFiles
new file mode 100644
index 0000000..456550c
--- a/dev/null
+++ b/scripts/SpecialMTFiles
@@ -0,0 +1,14 @@
+ConvertSpecialFiles() {
+ local f
+ for f in "$*"
+ do
+ case "$f" in
+ *libqte*)
+ echo ${f//qte/qte-mt}
+ ;;
+ *)
+ echo $f
+ ;;
+ esac
+ done
+}
diff --git a/scripts/ipkg-build b/scripts/ipkg-build
index c6af056..b661bbf 100755
--- a/scripts/ipkg-build
+++ b/scripts/ipkg-build
@@ -7,4 +7,15 @@ set -e
-ipkg_extract_value() {
- sed -e "s/^[^:]*:[[:space:]]*//"
+#declare array for values and fields found in control file
+declare -a AllValues AllFields
+
+collect_values() {
+ local i line
+
+ i=0
+ while read line
+ do
+ AllFields[$i]=${line%%:*}
+ AllValues[$i]=`echo ${line#*:}` # echo to remove spaces
+ let i=i+1
+ done < ${pkg_dir}/${CONTROL}/control
}
@@ -12,13 +23,37 @@ ipkg_extract_value() {
required_field() {
+ local field i
field=$1
- value=`grep "^$field:" < $CONTROL/control | ipkg_extract_value`
- if [ -z "$value" ]; then
+ i=0
+ for af in "${AllFields[@]}"
+ do
+ if [ "$field" = "$af" ]
+ then
+ # return value
+ echo "${AllValues[$i]}"
+ return 0;
+ fi
+ let i=i+1
+ done
+ # not found
echo "*** Error: $CONTROL/control is missing field $field" >&2
return 1
- fi
- echo $value
- return 0
}
+#ipkg_extract_value() {
+# sed -e "s/^[^:]*:[[:space:]]*//"
+#}
+#
+#required_field() {
+# field=$1
+#
+# value=`grep "^$field:" < $CONTROL/control | ipkg_extract_value`
+# if [ -z "$value" ]; then
+# echo "*** Error: $CONTROL/control is missing field $field" >&2
+# return 1
+# fi
+# echo $value
+# return 0
+#}
+
pkg_appears_sane() {
@@ -139,2 +174,5 @@ done
+# maks sure that tar produces headers compatible with busybox format
+# debian needs this
+ogargs="$ogargs --format=oldgnu"
@@ -173,2 +211,5 @@ fi
+# load values
+collect_values
+
if ! pkg_appears_sane $pkg_dir; then
diff --git a/scripts/mkipkg b/scripts/mkipkg
index 43bd3a3..a336371 100755
--- a/scripts/mkipkg
+++ b/scripts/mkipkg
@@ -181,3 +181,3 @@ createFileList()
- if (cat $1|grep -q ^FileExcludeMask); then
+ if (grep -q ^FileExcludeMask $1); then
excludemaskpresent=1
@@ -185,3 +185,3 @@ createFileList()
fi
- if (cat $1|grep -q ^FileIncludeMask); then
+ if (grep -q ^FileIncludeMask $1); then
includemaskpresent=1
@@ -189,3 +189,3 @@ createFileList()
else
- if (cat $1|grep -q ^Files:); then
+ if (grep -q ^Files: $1); then
includemaskpresent=1
@@ -197,3 +197,5 @@ createFileList()
- excludeMask="$excludeMask CONTROL/* usr/share/*"
+ declare -a excludeMaskArray
+ excludeMaskArray=( $excludeMask )
+ excludeMaskArray=( "${excludeMaskArray[@]}" "CONTROL/*" "usr/share/*" )
@@ -211,7 +213,3 @@ createFileList()
- _excludeList=
- if [ -n "$excludeMask" ]; then
- expandMaskToList "$excludeMask" _excludeList
- _excludeList="$_excludeList `find -name \*CVS\* -o -name \*SCCS\*`"
- fi
+ excludeMaskArray=( "${excludeMaskArray[@]}" "*/CVS*" "*/SCCS*" )
@@ -221,7 +219,9 @@ createFileList()
local containedInList=0
- for i in $_excludeList; do
- if [ $file = $i ]; then
+ for i in "${excludeMaskArray[@]}"; do
+ if [[ $file == $i ]]; then
containedInList=1
+ break;
fi
done
+
if [ $containedInList = 0 ]; then
diff --git a/scripts/tothreaded b/scripts/tothreaded
new file mode 100755
index 0000000..d9f8488
--- a/dev/null
+++ b/scripts/tothreaded
@@ -0,0 +1,132 @@
+#!/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 "
+ else
+ # threaded package
+ 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"
+ ;;
+ "Conflicts: "*)
+ conflicts=`echo "${line#Conflicts: }" | tokenize`
+ T_conflicts=`findthreadedequiv ${conflicts}`
+ echo "Conflicts: $T_conflicts"
+ ;;
+ *":"*)
+ echo "$line"
+ ;;
+ *) # al other lines
+ echo " $line"
+ ;;
+ esac
+done < $controlfile > $newcontrolfile
+
+echo $newcontrolfile