Make transaction resolve step optional.
authorKristian Høgsberg <krh@jiraiya.boston.redhat.com>
Wed, 9 Apr 2008 03:53:57 +0000 (23:53 -0400)
committerKristian Høgsberg <krh@jiraiya.boston.redhat.com>
Wed, 9 Apr 2008 03:53:57 +0000 (23:53 -0400)
main.c
razor.c
razor.h
test-driver.c

diff --git a/main.c b/main.c
index 23f08c8..e15c511 100644 (file)
--- a/main.c
+++ b/main.c
@@ -421,7 +421,7 @@ command_update(int argc, const char *argv[])
                }
        }
                
-       errors = razor_transaction_describe(trans);
+       errors = razor_transaction_resolve(trans);
        if (errors)
                return 1;
 
@@ -453,7 +453,7 @@ command_remove(int argc, const char *argv[])
                }
        }
 
-       errors = razor_transaction_describe(trans);
+       errors = razor_transaction_resolve(trans);
        if (errors)
                return 1;
 
@@ -626,7 +626,12 @@ command_install(int argc, const char *argv[])
        struct razor_set *system, *upstream, *next;
        struct razor_transaction *trans;
        char path[PATH_MAX], new_path[PATH_MAX];
-       int i, errors, fd;
+       int i = 0, errors, fd, dependencies = 1;
+
+       if (i < argc && strcmp(argv[i], "--no-dependencies") == 0) {
+               dependencies = 0;
+               i++;
+       }
 
        /* Create the new next repo file up front to ensure exclusive
         * access. */
@@ -653,7 +658,7 @@ command_install(int argc, const char *argv[])
                return 1;
        }
        trans = razor_transaction_create(system, upstream);
-       for (i = 0; i < argc; i++) {
+       for (; i < argc; i++) {
                if (mark_packages_for_update(trans, upstream, argv[i]) == 0) {
                        fprintf(stderr, "no package matched %s\n", argv[i]);
                        unlink(new_path);
@@ -661,10 +666,12 @@ command_install(int argc, const char *argv[])
                }
        }
 
-       errors = razor_transaction_describe(trans);
-       if (errors) {
-               unlink(new_path);
-               return 1;
+       if (dependencies) {
+               errors = razor_transaction_resolve(trans);
+               if (errors) {
+                       unlink(new_path);
+                       return 1;
+               }
        }
 
        next = razor_transaction_finish(trans);
diff --git a/razor.c b/razor.c
index e21e5bf..23ce5e3 100644 (file)
--- a/razor.c
+++ b/razor.c
@@ -2696,7 +2696,7 @@ print_requirement(struct razor_transaction_package *p)
 }
 
 int
-razor_transaction_describe(struct razor_transaction *trans)
+razor_transaction_resolve(struct razor_transaction *trans)
 {
        struct razor_transaction_package *p, *pend, *tps;
        int errors_only = 0;
@@ -2841,8 +2841,6 @@ razor_transaction_unsatisfied_property(struct razor_transaction *trans,
 {
        struct razor_transaction_package *p, *end;
 
-       resolve_transaction(trans);
-
        end = trans->packages.data + trans->packages.size;
        for (p = trans->packages.data; p < end; p++) {
                if (p->state != RAZOR_PACKAGE_UNSATISFIABLE)
@@ -2871,8 +2869,6 @@ razor_transaction_finish(struct razor_transaction *trans)
        struct razor_transaction_package *p, *end;
        int cmp;
 
-       resolve_transaction(trans);
-
        /* FIXME */
        if (trans->errors)
                return NULL;
diff --git a/razor.h b/razor.h
index b64d661..30268e4 100644 (file)
--- a/razor.h
+++ b/razor.h
@@ -118,7 +118,7 @@ void razor_transaction_install_package(struct razor_transaction *transaction,
 void razor_transaction_remove_package(struct razor_transaction *transaction,
                                      struct razor_package *package);
 void razor_transaction_update_all(struct razor_transaction *transaction);
-int razor_transaction_describe(struct razor_transaction *trans);
+int razor_transaction_resolve(struct razor_transaction *trans);
 struct razor_set *razor_transaction_finish(struct razor_transaction *trans);
 void razor_transaction_destroy(struct razor_transaction *trans);
 
index 2bdc3e6..8ff184e 100644 (file)
@@ -267,7 +267,7 @@ end_transaction(struct test_context *ctx)
                razor_transaction_remove_package(ctx->trans, pkg);
        }               
 
-       errors = razor_transaction_describe(ctx->trans);
+       errors = razor_transaction_resolve(ctx->trans);
        printf("\n");
 
        while (ctx->n_install_pkgs--)