From a674f1e2252d9fb1002bf8031ef69b1c38f4372c Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Tue, 24 Aug 2004 13:38:52 +0000 Subject: [PATCH] Clifford Wolf: Package splitting: - Fixed xfree86 modules/ dir to not go to :dev - Now allow "." as alias for the base package - Fixed generation of the dependency files [2004081902393228543] (https://www.rocklinux.net/submaster) git-svn-id: http://www.rocklinux.org/svn/rock-linux/trunk@3958 c5f82cb5-29bc-0310-9cd0-bff59a50e3bc --- package/x11/xfree86/xfree86.conf | 3 + scripts/Build-Pkg | 151 ++++++++++++++++--------------- scripts/functions | 11 ++- 3 files changed, 87 insertions(+), 78 deletions(-) diff --git a/package/x11/xfree86/xfree86.conf b/package/x11/xfree86/xfree86.conf index cd0243947..e90a0e33b 100644 --- a/package/x11/xfree86/xfree86.conf +++ b/package/x11/xfree86/xfree86.conf @@ -85,3 +85,6 @@ else custmain=x11base_stage0 fi +# don't put the modules in a :dev package +splitreg 45 . '(/lib/modules/.*\.a)$|/include/' + diff --git a/scripts/Build-Pkg b/scripts/Build-Pkg index edd5b571c..4e546edd4 100755 --- a/scripts/Build-Pkg +++ b/scripts/Build-Pkg @@ -855,11 +855,80 @@ abort() { echo Found `wc -l < $builddir/flist.split` "files for this package." splitapply $xpkg $builddir/flist.split + if [ "$ROCKCFG_FLIST" = "flwrapper" -o \ + "$ROCKCFG_FLIST" = "strace" ] && [ $stagelevel -gt 1 ] ; then + echo "Calculating package dependencies ..." + + ! egrep -v "^($flistrfilter)\$" $builddir/fl_wrapper.[rw]log | + sort -u | fl_wrparse -D -s -r "$xroot/" -p '' | \ + grep -v ' var/adm/' | awk ' + ARGIND < ARGC-1 { + if ( index($1, "'$xpkg':") != 1 ) + f[$2] = $1 " " f[$2]; + } + ARGIND == ARGC-1 { + file = $2; + while ( file != "" ) { + if ( f[file] ) { + split(f[file], a); + for (i in a) + if (! d[a[i] " " file]) { + d[a[i] " " file] = 1; + print a[i] " " file; + } + } + sub("/?[^/]*$", "", file) + } + } + ' var/adm/flists/* - > $builddir/dependencies.debug + + awk 'BEGIN { FS=": "; } { print "'$xpkg': " $1; }' \ + < $builddir/dependencies.debug > $builddir/dependencies.txt + + if [ -f var/adm/dep-debug/$xpkg ] ; then + cat var/adm/dep-debug/$xpkg >> $builddir/dependencies.debug + fi + sort -u $builddir/dependencies.debug > var/adm/dep-debug/$xpkg + + # add debug info for known false positives + if egrep -q "^[^#].*[ ]$spkg([ ]|$)" $base/scripts/dep_fixes.txt; then + echo "--- $spkg [$stagelevel] ---" >> $root/var/adm/rock-debug/falsedeps.txt + fi + while read x; do + grep "^$x: " $builddir/dependencies.debug | sort -u | \ + sed "s,:, -> $spkg [$stagelevel]:," >> $root/var/adm/rock-debug/falsedeps.txt + done < <( egrep "^$spkg[ ]+del[ ]+" $base/scripts/dep_fixes.txt | \ + tr ' ' '\t' | tr -s '\t' | cut -f3- | tr '\t' '\n' ) + + # merge the dependencies defined by the package + for x in `echo "$desc_E" | egrep '^add ' | sed 's/^add //' ` ; do + echo "Adding dependency: $x ..." + echo "$xpkg: $x" >> $builddir/dependencies.txt + done + + # remove dependencies as requested by the package + # TODO: goups are not used yet (and it is not easy here) + del_pattern="" + for x in `echo "$desc_E" | egrep '^del ' | sed 's/^del //' ` ; do + del_pattern="$del_pattern -e \".*: $x(:.*|)\$\"" + done + if [ -n "$del_pattern" ] ; then + echo "Deleting dependencies, pattern: $del_pattern ..." + eval "egrep -v $del_pattern $builddir/dependencies.txt" > $builddir/dependencies.txt.new + mv $builddir/dependencies.txt.new $builddir/dependencies.txt + fi + + if [ -f var/adm/dependencies/$xpkg ] ; then + cat var/adm/dependencies/$xpkg >> $builddir/dependencies.txt + fi + sort -u $builddir/dependencies.txt > $builddir/dependencies.txt.new + mv $builddir/dependencies.txt.new $builddir/dependencies.txt + fi + for spkg in $( sed 's,: .*,,' < $builddir/flist.split | sort -u ) do ( if [ -z "${spkg##*:*}" ]; then - echo "<$spkg> Creating split-package description ..." splitdesc_${spkg#*:} fi @@ -875,80 +944,10 @@ abort() { done } | sort -u > var/adm/flists/$spkg - echo "<$spkg> Clear (old) md5sums and cksums ..." - cat /dev/null > var/adm/md5sums/$spkg - cat /dev/null > var/adm/cksums/$spkg - - if [ "$ROCKCFG_FLIST" = "flwrapper" -o \ - "$ROCKCFG_FLIST" = "strace" ] && [ $stagelevel -gt 1 ] ; then - echo "<$spkg> Calculating package dependencies ..." + echo "<$spkg> Creating package dependencies file ..." + sed "s,^[^ ]*,$spkg:," < $builddir/dependencies.txt > var/adm/dependencies/$spkg - ! egrep -v "^($flistrfilter)\$" $builddir/fl_wrapper.[rw]log | - sort -u | fl_wrparse -D -s -r "$xroot/" -p '' | \ - grep -v ' var/adm/' | awk ' - ARGIND < ARGC-1 { - if ( index($1, "'$xpkg':") != 1 ) - f[$2] = $1 " " f[$2]; - } - ARGIND == ARGC-1 { - file = $2; - while ( file != "" ) { - if ( f[file] ) { - split(f[file], a); - for (i in a) - if (! d[a[i] " " file]) { - d[a[i] " " file] = 1; - print a[i] " " file; - } - } - sub("/?[^/]*$", "", file) - } - } - ' var/adm/flists/* - > $builddir/dependencies.debug - - awk 'BEGIN { FS=": "; } { print "'$spkg': " $1; }' \ - < $builddir/dependencies.debug > $builddir/dependencies.txt - - if [ -f var/adm/dep-debug/$spkg ] ; then - cat var/adm/dep-debug/$spkg >> $builddir/dependencies.debug - fi - sort -u $builddir/dependencies.debug > var/adm/dep-debug/$spkg - - # add debug info for known false positives - if egrep -q "^[^#].*[ ]$spkg([ ]|$)" $base/scripts/dep_fixes.txt; then - echo "--- $spkg [$stagelevel] ---" >> $root/var/adm/rock-debug/falsedeps.txt - fi - while read x; do - grep "^$x: " $builddir/dependencies.debug | sort -u | \ - sed "s,:, -> $spkg [$stagelevel]:," >> $root/var/adm/rock-debug/falsedeps.txt - done < <( egrep "^$spkg[ ]+del[ ]+" $base/scripts/dep_fixes.txt | \ - tr ' ' '\t' | tr -s '\t' | cut -f3- | tr '\t' '\n' ) - - # merge the dependencies defined by the package - for x in `echo "$desc_E" | egrep '^add ' | sed 's/^add //' ` ; do - echo "<$spkg> Adding dependency: $x ..." - echo "$spkg: $x" >> $builddir/dependencies.txt - done - - # remove dependencies as requested by the package - # TODO: goups are not used yet (and it is not easy here) - del_pattern="" - for x in `echo "$desc_E" | egrep '^del ' | sed 's/^del //' ` ; do - del_pattern="$del_pattern -e \".*: $x\$\"" - done - if [ -n "$del_pattern" ] ; then - echo "<$spkg> Deleting dependencies, pattern: $del_pattern ..." - eval egrep -v $del_pattern $builddir/dependencies.txt > $builddir/dependencies.txt.new - mv $builddir/dependencies.txt.new $builddir/dependencies.txt - fi - - if [ -f var/adm/dependencies/$spkg ] ; then - cat var/adm/dependencies/$spkg >> $builddir/dependencies.txt - fi - sort -u $builddir/dependencies.txt > var/adm/dependencies/$spkg - fi - - echo -n "<$spkg> Creating md5sum and cksum files ..." + echo "<$spkg> Creating md5sum and cksum files ..." getfiles < var/adm/flists/$spkg > $builddir/files.lst if [ -s $builddir/files.lst ] ; then cat $builddir/files.lst | \ @@ -957,8 +956,10 @@ abort() { cat $builddir/files.lst | \ grep -v '^var/adm/' | sed -e 's/ /\\ /g' | \ xargs -r cksum > var/adm/cksums/$spkg + else + cat /dev/null > var/adm/md5sums/$spkg + cat /dev/null > var/adm/cksums/$spkg fi - echo ' done.' echo "<$spkg> Creating package description ..." # diff --git a/scripts/functions b/scripts/functions index 2820ce6a8..6f289cee9 100644 --- a/scripts/functions +++ b/scripts/functions @@ -91,9 +91,14 @@ splitapply() { local p n r sed -i "s/^[^ ]+/$1:/" $2 while read p n r; do - if type "splitdesc_${n}" > /dev/null 2>&1; then - echo "Applying package split: $p $1:$n $r" - sed -ri "\,$r, s/^[^ ]+/$1:$n:/" $2 + if [ "$n" = "." ]; then + echo "Applying package split: $p $1 $r" + sed -ri "\,$r, s/^[^ ]+/$1:/" $2 + else + if type "splitdesc_${n}" > /dev/null 2>&1; then + echo "Applying package split: $p $1:$n $r" + sed -ri "\,$r, s/^[^ ]+/$1:$n:/" $2 + fi fi done < <( echo "$pkgsplits" | tr ',' '\n' | sort; ) }