Browse Source

Emerge-Pkg work - far way from perfect ... - but at least all dependencies are

now resolved recursively - and fast ....


git-svn-id: http://www.rocklinux.org/svn/rock-linux/trunk@1418 c5f82cb5-29bc-0310-9cd0-bff59a50e3bc
rocklinux
Rene Rebe 21 years ago
parent
commit
5e0f23758f
2 changed files with 80 additions and 14 deletions
  1. +1
    -0
      Documentation/Developers/CHANGELOG-RENE
  2. +79
    -14
      scripts/Emerge-Pkg

+ 1
- 0
Documentation/Developers/CHANGELOG-RENE

@ -12,6 +12,7 @@
- Dimitar Zhekov: fix gcc3 optimisation
- Sirkull: dcc update
- Alejandro Mery: fix to handle /share and /include when prefix=''
- some work on Emerge-Pkg
*) 2003-09-14 (2.0.0-rc1 - 2.0.0-rc2)

+ 79
- 14
scripts/Emerge-Pkg

@ -48,11 +48,6 @@ help_msg() {
echo
}
dep4pkg()
{
grep "$1:" scripts/dep_db.txt | cut -d ' ' -f 4-
}
#
# ---- Parse options + config
#
@ -93,9 +88,6 @@ check4update()
elif [ "$confdir" = X ] ; then
[ $debug = 1 ] && \
echo " $package: Package in multiple trees."
elif [ ! "`echo $alllist | grep +${package}+`" ] ; then
[ $debug = 1 ] && \
echo " $package: Package not in default package list."
elif [ ! -f /var/adm/packages/$package ] ; then
[ $debug = 1 ] && \
echo " $package: Not installed. Added."
@ -138,12 +130,81 @@ check4update()
deplist="$addlist"
}
alllist=`./scripts/Create-PkgList $arch | grep ^X | cut -d ' ' -f 5 | \
sed -e 's/$/+/' -e 's/^/+/'`
dep4pkg() {
gawk -v package=$1 '
function check_package() {
found_new = 0;
for ( package in build_list ) {
if ( debug )
print "#DEBUG PACKAGE: " package;
if ( ! package in database ) {
if (debug)
print "# " package " not in database";
}
else {
if (debug)
print "# " package " in database";
split(database[package], a);
for (d in a) {
# if ( a[c] == package ) continue;
if ( strtonum(d) <= 3 ) continue;
dep = a[d];
if ( debug && 0)
print "# dep: " dep;
if ( dep in build_list ) {
if ( debug && 0)
print "# dep: " dep " already parsed";
}
else {
if (debug)
print "# dep: " dep " now added";
build_list [ dep ] = (package);
found_new = 1;
}
}
}
}
if (found_new)
check_package();
}
BEGIN {
config="'$config'"; debug='$debug';
depdb_file = "scripts/dep_db.txt";
while ( (getline depline < depdb_file) > 0 )
{ $0 = depline; sub(/:/, "", $1); database[$1]=$0; }
close(depdb_file);
build_list [ package ] = 1;
check_package();
if (debug) {
for ( bp in build_list ) {
print "# " bp " (" build_list[bp] ")"
}
}
for ( bp in build_list ) {
print bp
}
}
'
}
if [ $builddep = 1 ] ; then
# we have a complete dependency graph cached ...
deplist="`dep4pkg $1`"
# we have to create a complete dependency graph ...
tmp="`mktemp`"
dep4pkg $1 > $tmp
[ "$debug" = 1 ] && grep '^#' $tmp
deplist="`grep -v '^#' $tmp`"
rm $tmp
check4update
else
deplist=$1
@ -157,7 +218,11 @@ echo "Packages scheduled to build: $deplist"
[ $update = 1 ] && options="$options -update"
for package in $deplist ; do
./scripts/Download -package $package
./scripts/Build-Pkg $options $package
if ./scripts/Download -package $package ; then
./scripts/Build-Pkg $options $package
else
echo "The download for package $package failed!"
exit -1
fi
done

Loading…
Cancel
Save