Fix bug causing updates to fail on systems with multiple versions of a package installed
authorJ. Ali Harlow <ali@juiblex.co.uk>
Mon, 28 Sep 2009 17:29:05 +0000 (18:29 +0100)
committerJ. Ali Harlow <ali@juiblex.co.uk>
Mon, 28 Sep 2009 16:37:12 +0000 (17:37 +0100)
librazor/transaction.c
test/update.sh

index 50d13d6..23c4a2e 100644 (file)
@@ -692,15 +692,18 @@ flush_scheduled_system_updates(struct razor_transaction *trans)
                if (!prop_iter_seek_to(&ppi, RAZOR_PROPERTY_PROVIDES, name))
                        continue;
 
+               if (any_provider_satisfies_requirement(&ppi,
+                                                      RAZOR_PROPERTY_GREATER,
+                                                      version)) {
+                       razor_transaction_remove_package(trans, p);
+                       continue;
+               }
+
                pkg = pick_matching_provider(trans->upstream.set, &ppi,
                                             RAZOR_PROPERTY_GREATER, version);
                if (pkg == NULL)
                        continue;
 
-               fprintf(stderr, "updating %s-%s to %s-%s\n",
-                       name, version,
-                       &ppi.pool[pkg->name], &ppi.pool[pkg->version]);
-
                razor_transaction_remove_package(trans, p);
                razor_transaction_install_package(trans, pkg);
        }
index 80725db..3a2a421 100755 (executable)
@@ -86,4 +86,16 @@ fs_check_file_contents /opt/bin/zip zip-2-1
 fs_check_file /opt/var/lib/zip/data.zap
 ../src/razor remove zip || exit 1
 fs_check_no_file /opt/var/lib/zip/data.zap
+set_repository base
+../src/razor import-yum || exit 1
+../src/razor install --relocate /usr=/opt zip || exit 1
+../src/razor install --relocate /usr=/opt zip || exit 1
+set_repository updates
+../src/razor import-yum || exit 1
+../src/razor update --relocate /usr=/opt || exit 1
+check_file /opt/bin/zip
+fs_check_file_contents /opt/bin/zip zip-2-1
+fs_check_file /opt/var/lib/zip/data.zap
+../src/razor remove zip || exit 1
+fs_check_no_file /opt/var/lib/zip/data.zap
 rm -rf "$RAZOR_ROOT"