-rwxr-xr-x | scripts/tothreaded | 132 |
1 files changed, 132 insertions, 0 deletions
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 |