poldek: poldek/install3/requirements.c, poldek/tests/sh/07-depsolver - be g...
mis
mis at pld-linux.org
Thu Oct 29 16:05:44 CET 2009
Author: mis Date: Thu Oct 29 15:05:44 2009 GMT
Module: poldek Tag: HEAD
---- Log message:
- be greedy on unmet requirements
---- Files affected:
poldek/poldek/install3:
requirements.c (1.12 -> 1.13)
poldek/poldek/tests/sh:
07-depsolver (1.12 -> 1.13)
---- Diffs:
================================================================
Index: poldek/poldek/install3/requirements.c
diff -u poldek/poldek/install3/requirements.c:1.12 poldek/poldek/install3/requirements.c:1.13
--- poldek/poldek/install3/requirements.c:1.12 Thu Sep 18 20:03:24 2008
+++ poldek/poldek/install3/requirements.c Thu Oct 29 16:05:39 2009
@@ -370,8 +370,8 @@
//if (i3_is_user_choosable_equiv(ts))
candidates = pkgs_array_new(8);
- if (i3_find_req(indent, ictx, pkg, req, &tomark, candidates)) {
- if (tomark == NULL) {
+ if (i3_find_req(indent, ictx, pkg, req, &tomark, candidates)) { /* found? */
+ if (tomark == NULL) { /* found but nothing to install */
trace(indentt, "- satisfied by being installed set");
msgn_i(3, indent, "%s: satisfied by already installed set", strreq);
goto l_end;
@@ -385,8 +385,8 @@
goto l_end;
}
- /* try upgrade orphan */
- if (ts->getop(ts, POLDEK_OP_GREEDY)) {
+ /* try upgrade orphan if requirement not found or greedy mode */
+ if (tomark == NULL || ts->getop(ts, POLDEK_OP_GREEDY)) {
if (try_to_upgrade_orphan(indent, ictx, pkg, req, tomark))
goto l_end;
}
================================================================
Index: poldek/poldek/tests/sh/07-depsolver
diff -u poldek/poldek/tests/sh/07-depsolver:1.12 poldek/poldek/tests/sh/07-depsolver:1.13
--- poldek/poldek/tests/sh/07-depsolver:1.12 Thu Oct 29 00:06:59 2009
+++ poldek/poldek/tests/sh/07-depsolver Thu Oct 29 16:05:39 2009
@@ -90,33 +90,40 @@
# try to install package and check result
# usage: try_install <package> <expected installed> [<expected removed>]
try_install() {
- package="$1"; shift
- expected="$1"; shift
- rm_expected=""
- [ $# -gt 0 ] && rm_expected="$1"
+ typeset package="$1"; shift
+ typeset expected="$1"; shift
+ typeset rm_expected=""
+ if [ $# -gt 0 ]; then
+ rm_expected="$1"
+ shift
+ fi
- regexp=$(echo $expected | sed 's/,/|/g')
- n_expected=$(echo $expected | sed 's|,|\n|g' | wc -l)
+ typeset regexp=$(echo $expected | sed 's/,/|/g')
+ typeset n_expected=$(echo $expected | sed 's|,|\n|g' | wc -l)
if [ -n "$rm_expected" ]; then
- rm_regexp=$(echo $rm_expected | sed 's/,/|/g')
- rm_n_expected=$(echo $rm_expected | sed 's|,|\n|g' | wc -l)
+ typeset rm_regexp=$(echo $rm_expected | sed 's/,/|/g')
+ typeset rm_n_expected=$(echo $rm_expected | sed 's|,|\n|g' | wc -l)
fi
- cmd="-uvt $package"
+ typeset cmd="-uvt $package"
+ if [ $# -gt 0 ]; then
+ cmd="$1 $cmd"
+ shift
+ fi
runpoldek $cmd
- out=$($POLDEK_INSTALL $cmd --parsable-tr-summary | egrep "^%[IDR]")
+ typeset out=$($POLDEK_INSTALL $cmd --parsable-tr-summary | egrep "^%[IDR]")
- n_all=$(echo $out | sed 's|%|\n%|g' | egrep '^%[ID]' | wc -l)
- n=$(echo $out | sed 's|%|\n%|g' | egrep "^%[ID] ($regexp)" | wc -l)
+ typeset n_all=$(echo $out | sed 's|%|\n%|g' | egrep '^%[ID]' | wc -l)
+ typeset n=$(echo $out | sed 's|%|\n%|g' | egrep "^%[ID] ($regexp)" | wc -l)
assertEquals "unexpected ($n_all) number of packages (expected $n)" "$n_all" "$n"
assertEquals "not all or non expected packages installed (expected $expected)" "$n" "$n_expected"
if [ -n "$rm_expected" ]; then
- n_all=$(echo $out | sed 's|%|\n%|g' | egrep '^%R' | wc -l)
- n=$(echo $out | sed 's|%|\n%|g' | egrep "^%R ($rm_regexp)" | wc -l)
- assertEquals "unexpected ($n_all) number of packages removed (expected $n)" "$n_all" "$n"
- assertEquals "not all or non expected packages removed (expected $rm_expected)" "$n" "$rm_n_expected"
+ typeset n_all=$(echo $out | sed 's|%|\n%|g' | egrep '^%R' | wc -l)
+ typeset n=$(echo $out | sed 's|%|\n%|g' | egrep "^%R ($rm_regexp)" | wc -l)
+ assertEquals "unexpected ($n_all) number of packages removed (expected $n)" "$n_all" "$n"
+ assertEquals "not all or non expected packages removed (expected $rm_expected)" "$n" "$rm_n_expected"
fi
}
@@ -246,6 +253,39 @@
try_install a-static "a,a-devel,a-static"
}
+# should honour --greedy option
+testGreedyOnOff() {
+ msgn "Preparing repositories..."
+ v=1-1
+ build_installed foo $v -p "CAP"
+ build_installed bar $v -r "CAP"
+
+ v=2-2
+ build foo $v
+ build bar $v
+ build baz 1-1 -p "CAP"
+
+ msgn "Greedy..."
+ try_install foo "foo,bar" "foo,bar" --greedy=yes
+ msgn "Not so greedy..."
+ try_install foo "foo,baz" "foo" --greedy=no
+}
+
+# should be greedy on unmet dependecies
+testBeGreedyOnUnmetDeps() {
+ msgn "Preparing repositories..."
+ v=1-1
+ build_installed foo $v -p "CAP"
+ build_installed bar $v -r "CAP"
+
+ v=2-2
+ build foo $v
+ build bar $v
+
+ try_install foo "foo,bar" "foo,bar" --greedy=yes
+}
+
+
# bar obsoletes foo
testUpgradeObsolete() {
msgn "Preparing repositories..."
@@ -511,7 +551,7 @@
}
-#
+# NFY should score orphan successors
testOrhpanSuccessorScore() {
#ORIG_POLDEK_INSTALL="$POLDEK_INSTALL"
#POLDEK_INSTALL="$POLDEK_INSTALL -Omultilib=1"
================================================================
---- CVS-web:
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/install3/requirements.c?r1=1.12&r2=1.13&f=u
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/poldek/poldek/tests/sh/07-depsolver?r1=1.12&r2=1.13&f=u
More information about the pld-cvs-commit
mailing list