#!/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 " 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 echo " $line" ;; esac done < $controlfile > $newcontrolfile echo $newcontrolfile