Browse Source

Stefan Fiedler:


			
			
				rocklinux
			
			
		
Stefan Fiedler 17 years ago
parent
commit
76c3b55da3
2 changed files with 82 additions and 14 deletions
  1. +78
    -6
      scripts/Build-Pkg
  2. +4
    -8
      scripts/functions

+ 78
- 6
scripts/Build-Pkg

@ -396,6 +396,7 @@ fi
mkdir -p $root/var/adm/{logs,flists,cksums,md5sums,packages,dependencies}
mkdir -p $root/var/adm/{dep-debug,parse-config,cache,descs,rock-debug}
mkdir -p $root/var/adm/{provides,requires,conflicts}
[ "$root" ] && chmod 700 $root
rm -f $root/var/adm/logs/$stagelevel-$xpkg.{out,log,err}
@ -960,7 +961,7 @@ exec 202>&1
if [ "$ROCKCFG_FLIST" = "flwrapper" -o \
"$ROCKCFG_FLIST" = "strace" ] && [ $stagelevel -gt 1 ] ; then
echo "Calculating package dependencies ..."
echo "Calculating build-time package dependencies ..."
! egrep -v "^($flistrfilter)\$" "$builddir"/fl_wrapper.[rw]log |
sort -u | fl_wrparse -D -s -r "$xroot/" -p '' | \
@ -1028,6 +1029,37 @@ exec 202>&1
mv "$builddir/dependencies.txt.new" "$builddir/dependencies.txt"
fi
echo "Calculating run-time package dependencies from pkg-config files..."
grep "\.pc$" "$builddir/flist.split" | while read dummy x ; do
x="/$x"
# Only three tags are of interest here. Version: is mandatory.
version="`grep -e"^Version:" $x | cut -f2- -d' '`"
[ "$version" ] || continue
# Set the variables defined in the .pc file.
eval $( sed 's,^\([a-zA-Z0-9_]*\)=\(.*\),\1="\2",p ; d' $x )
echo "`basename ${x%.pc}` $version" >> $builddir/provides.tmp
for tag in Requires Conflicts ; do
case "$tag" in
"Requires") tmpfile="$builddir/requires.tmp" ;;
"Conflicts") tmpfile="$builddir/conflicts.tmp" ;;
esac
# Set positional parameters to the tag values.
set $( sed -e"/^$tag: / { s,^$tag: ,, ; s/,/ /g ; p } ; d" $x ) ""
while [ "$1" ] ; do
eval echo -n "$1"
case "$2" in
"<"|">"|"<="|">="|"=")
echo " $2 $3" ; shift 2 ;;
*) echo ;;
esac ; shift
done >> $tmpfile
done
done
for spkg in $( sed 's,: .*,,' < "$builddir/flist.split" | sort -u )
do
(
@ -1035,14 +1067,54 @@ exec 202>&1
splitdesc_${spkg#*:}
fi
echo "Calculating run-time package dependencies from ELF files..."
grep "^$spkg: " "$builddir/flist.split" | while read dummy x ; do
x="/$x"
# Symbolic links (to ELF files) are ignored.
[ -L "$x" ] && continue
# Strip most values from ELF dynamic and version
# sections as they don't contain useful info.
readelf -dV $x 2>/dev/null | sed -e '
/^Version definition section /,/^Version needs section / {
s,.* Flags: BASE .* Name: \(.*\),provides \1,p
}
/^Version needs section /,$ {
s,.* File: \([^ ]*\) .*,requires \1,p
}
# in dynamic section
s,.* (SONAME) .* Library soname: \[\(.*\)\]$,provides \1,p
s,.* (NEEDED) .* Shared library: \[\(.*\)\]$,requires \1,p
# in version sections
s,.* Name: \([^ ]*\).*,\1,p ; d
' | while read a b ; do
case "$a" in
"provides"|"requires")
pref="$b" ; tmpfile="$builddir/$a.tmp"
[ "$a" == provides ] && cmp_op=" " || cmp_op=" @ "
echo "$pref" >> $tmpfile ;;
*) echo "$pref${cmp_op}$a" >> $tmpfile ;;
esac
done
done
for x in {provides,requires,conflicts} ; do
if [ -f "$builddir/$x.tmp" ] ; then
echo "Creating var/adm/$x/$spkg"
sort -u "$builddir/$x.tmp" > var/adm/$x/$spkg
else
rm -f var/adm/$x/$spkg
fi
done
echo "<$spkg> Creating flist file ..."
{
grep "^$spkg: " "$builddir/flist.split"
[ -s "var/adm/parse-config/$spkg" ] && \
echo "$spkg: var/adm/parse-config/$spkg"
for x in var/adm/flists/$spkg var/adm/md5sums/$spkg \
var/adm/cksums/$spkg var/adm/packages/$spkg \
var/adm/descs/$spkg var/adm/dependencies/$spkg ; do
for x in var/adm/{parse-config,provides,requires,conflicts}/$spkg ; do
[ -s "$x" ] && echo "$spkg: $x"
done
for x in var/adm/{flists,md5sums,cksums,packages,descs,dependencies}/$spkg ; do
touch $x ; echo "$spkg: $x"
done
} | sort -u > var/adm/flists/$spkg

+ 4
- 8
scripts/functions

@ -569,14 +569,10 @@ create_package_db() {
( echo -e "$pkg"
echo -e "\027"
cat $admdir/descs/$pkg
echo -e "\027"
cat $admdir/dependencies/$pkg
echo -e "\027"
cat $admdir/cksums/$pkg
echo -e "\027"
for admfile in {descs,dependencies,cksums,provides,requires,conflicts} ; do
[ -e $admdir/$admfile/$pkg ] && cat $admdir/$admfile/$pkg
echo -e "\027"
done
echo -e "\004"
) >> $outdir/packages.db.tmp

Loading…
Cancel
Save