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