From 774490b34f92840e7fd65d140a01ca0116ca4c29 Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Tue, 24 Aug 2004 13:39:10 +0000 Subject: [PATCH] Clifford Wolf: Better forcing of man and info to be in share Don't package locale skeleton dirs Don't package man skeleton dirs Don't package pre-rendered manpages Added misc/archive/getdirdeps.pl [2004081914242307389] (https://www.rocklinux.net/submaster) git-svn-id: http://www.rocklinux.org/svn/rock-linux/trunk@3960 c5f82cb5-29bc-0310-9cd0-bff59a50e3bc --- misc/archive/getdirdeps.pl | 61 ++++++++++++++++++++++++++++ package/base/00-dirtree/parse-config | 9 ++++ package/base/man/parse-config | 15 +++++-- scripts/functions | 33 +++++++++------ 4 files changed, 102 insertions(+), 16 deletions(-) create mode 100644 misc/archive/getdirdeps.pl create mode 100644 package/base/00-dirtree/parse-config diff --git a/misc/archive/getdirdeps.pl b/misc/archive/getdirdeps.pl new file mode 100644 index 000000000..29160465f --- /dev/null +++ b/misc/archive/getdirdeps.pl @@ -0,0 +1,61 @@ +#!/usr/bin/perl -w + +use English; +use strict; + +if (not defined $ARGV[0] or not chdir $ARGV[0]) { + print "\nUsage: $0 rootdir\n\n"; + print "E.g.: $0 build/ref0818-2.1.0-DEV-x86-reference-expert\n\n"; + exit 1; +} + +my %baddirs; +my %badcount; +my %badpkgs; + +while () { + /.*\/(\S+)/; + my $p = $1; + my %dirdep; + my %filedep; + + open P, $_ or die $!; + while (

) { + chomp; + my ($d, $f) = split /: /; + next if $d =~ /-dirtree$/; + + if (-d $f) { + $dirdep{$d}{$f} = 1; + } else { + $filedep{$d} = 1; + } + } + close P; + + foreach (keys %filedep) { + delete $dirdep{$_}; + } + + foreach my $d (keys %dirdep) { + foreach (keys %{$dirdep{$d}}) { + $baddirs{$d}{$_}++; + $badpkgs{$d}{$p}++; + } + $badcount{$d}++; + } +} + +foreach my $d (keys %badcount) { + print "\nFound pure dir dependencies to $d ($badcount{$d}):\n"; + foreach (keys %{$badpkgs{$d}}) { + print "\tpkg\t$badpkgs{$d}{$_}\t$_\n"; + } + foreach (keys %{$baddirs{$d}}) { + print "\tdir\t$baddirs{$d}{$_}\t$_\n"; + } +} + +print "\n"; +exit 0; + diff --git a/package/base/00-dirtree/parse-config b/package/base/00-dirtree/parse-config new file mode 100644 index 000000000..61b4d215e --- /dev/null +++ b/package/base/00-dirtree/parse-config @@ -0,0 +1,9 @@ + +# never add the .../share/locale/*/ directories to the package file list +# every package creates them if they are not present and its absolutely +# random which package is built first and so gets the directory.. +var_append flistdel "|" '.*/share/locale/[a-z][a-z](_[^/]*|)(/[A-Z]*|)' + +# the same thing for localized manual pages +var_append flistdel "|" '.*/share/man/[a-z][a-z](_[^/]*|)(/man.|)' + diff --git a/package/base/man/parse-config b/package/base/man/parse-config index 2f3cba35c..eb2442f0f 100644 --- a/package/base/man/parse-config +++ b/package/base/man/parse-config @@ -21,7 +21,13 @@ # --- ROCK-COPYRIGHT-NOTE-END --- postflist_man() { - egrep '^usr/share/(man|info)/.*\.gz$' $builddir/flist.txt | + egrep '/share/man/(.*/|)cat./' $builddir/flist.txt | + while read fn ; do + [ -f $root/$fn ] || continue + rm -fv $root/$fn + done + + egrep '/share/(man|info)/.*\.gz$' $builddir/flist.txt | while read fn ; do [ -f $root/$fn ] || continue rm -f $root/${fn%.gz} @@ -29,13 +35,14 @@ postflist_man() { add_flist $root/${fn%.gz} done - egrep '^usr/share/(man|info)/' $builddir/flist.txt | + egrep '/share/(man|info)/' $builddir/flist.txt | while read fn ; do [ -f $root/$fn ] || continue - chmod 0644 $fn - chown root:root $fn + chmod 0644 $root/$fn + chown root:root $root/$fn done } +var_append flistdel "|" '.*/share/man/(.*/|)cat.(/.*|)' hook_add postflist 2 postflist_man diff --git a/scripts/functions b/scripts/functions index d241203d7..b2852d90b 100644 --- a/scripts/functions +++ b/scripts/functions @@ -191,16 +191,16 @@ set_confopt() { datadir="$root/usr/share" includedir="$root/usr/include" - docdir="$root/usr/doc/$xpkg" - infodir="$root/usr/info" - mandir="$root/usr/man" + docdir="$root/usr/share/doc/$xpkg" + infodir="$root/usr/share/info" + mandir="$root/usr/share/man" else datadir="$root/$prefix/share" includedir="$root/$prefix/include" - docdir="$root/$prefix/doc/$xpkg" - infodir="$root/$prefix/info" - mandir="$root/$prefix/man" + docdir="$root/$prefix/share/doc/$xpkg" + infodir="$root/$prefix/share/info" + mandir="$root/$prefix/share/man" fi confopt="$confopt --datadir=\$datadir" confopt="$confopt --includedir=\$includedir" @@ -648,14 +648,22 @@ build_this_package() { if [ "$createprefix" = 1 ]; then echo "Creating $root/$prefix/<..> if required ..." - for x in $docdir $root/$prefix/bin $root/$prefix/lib \ - $root/$prefix/share $sysconfdir $localstatedir + for x in $root/$prefix $bindir $sbindir $libdir $datadir $includedir \ + $docdir $infodir $mandir $sysconfdir $localstatedir do if [ ! -e $x ]; then mkdir -p $x - rmemptydir="$rmemptydir $x" + rmemptydir="$x $rmemptydir" fi done + if [ ! -e $root/$prefix/man ]; then + ln -s ${mandir#$root} $root/$prefix/man + rmemptydir="$rmemptydir $root/$prefix/man" + fi + if [ ! -e $root/$prefix/info ]; then + ln -s ${infodir#$root} $root/$prefix/info + rmemptydir="$rmemptydir $root/$prefix/info" + fi fi if [ ".$custmain" = "." ] @@ -758,9 +766,10 @@ build_this_package() { patchfiles="$saved_patchfiles" done - if [ "$rmemptydir" ]; then - rmdir $rmemptydir 2> /dev/null || true - fi + for x in $rmemptydir; do + rmdir $x 2> /dev/null || true + [ -e $x ] || rm $x 2> /dev/null || true + done return 0 }