index : pacman | |
Archlinux32 fork of pacman | gitolite user |
summaryrefslogtreecommitdiff |
author | Dan McGee <dan@archlinux.org> | 2011-07-22 12:12:18 -0500 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2011-07-27 12:46:15 -0500 |
commit | 9929a34a6d493c94bd176b66198bdbd734678043 (patch) | |
tree | 6ce511c1809183651732d4307aae4ba3c513a17b /src/pacman/upgrade.c | |
parent | ccdb2fa800f3e89641d371056961fa1d654f363d (diff) |
-rw-r--r-- | src/pacman/upgrade.c | 114 |
diff --git a/src/pacman/upgrade.c b/src/pacman/upgrade.c index a99b1370..e4b2e2bf 100644 --- a/src/pacman/upgrade.c +++ b/src/pacman/upgrade.c @@ -41,9 +41,8 @@ */ int pacman_upgrade(alpm_list_t *targets) { - alpm_list_t *i, *data = NULL; + alpm_list_t *i; alpm_siglevel_t level = alpm_option_get_default_siglevel(config->handle); - int retval = 0; if(targets == NULL) { pm_printf(ALPM_LOG_ERROR, _("no targets specified (use -h for help)\n")); @@ -91,115 +90,8 @@ int pacman_upgrade(alpm_list_t *targets) } } - /* Step 2: "compute" the transaction based on targets and flags */ - /* TODO: No, compute nothing. This is stupid. */ - if(alpm_trans_prepare(config->handle, &data) == -1) { - enum _alpm_errno_t err = alpm_errno(config->handle); - pm_fprintf(stderr, ALPM_LOG_ERROR, _("failed to prepare transaction (%s)\n"), - alpm_strerror(err)); - switch(err) { - case ALPM_ERR_PKG_INVALID_ARCH: - for(i = data; i; i = alpm_list_next(i)) { - char *pkg = alpm_list_getdata(i); - printf(_(":: package %s does not have a valid architecture\n"), pkg); - } - break; - case ALPM_ERR_UNSATISFIED_DEPS: - for(i = data; i; i = alpm_list_next(i)) { - alpm_depmissing_t *miss = alpm_list_getdata(i); - char *depstring = alpm_dep_compute_string(miss->depend); - - /* TODO indicate if the error was a virtual package or not: - * :: %s: requires %s, provided by %s - */ - printf(_(":: %s: requires %s\n"), miss->target, depstring); - free(depstring); - } - break; - case ALPM_ERR_CONFLICTING_DEPS: - for(i = data; i; i = alpm_list_next(i)) { - alpm_conflict_t *conflict = alpm_list_getdata(i); - if(strcmp(conflict->package1, conflict->reason) == 0 || - strcmp(conflict->package2, conflict->reason) == 0) { - printf(_(":: %s and %s are in conflict\n"), - conflict->package1, conflict->package2); - } else { - printf(_(":: %s and %s are in conflict (%s)\n"), - conflict->package1, conflict->package2, conflict->reason); - } - } - break; - default: - break; - } - trans_release(); - FREELIST(data); - return 1; - } - - /* Step 3: perform the installation */ - alpm_list_t *packages = alpm_trans_get_add(config->handle); - - if(config->print) { - print_packages(packages); - trans_release(); - return 0; - } - - /* print targets and ask user confirmation */ - if(packages == NULL) { /* we are done */ - printf(_(" there is nothing to do\n")); - trans_release(); - return retval; - } - display_targets(alpm_trans_get_remove(config->handle), 0); - display_targets(alpm_trans_get_add(config->handle), 1); - printf("\n"); - int confirm = yesno(_("Proceed with installation?")); - if(!confirm) { - trans_release(); - return retval; - } - - if(alpm_trans_commit(config->handle, &data) == -1) { - enum _alpm_errno_t err = alpm_errno(config->handle); - pm_fprintf(stderr, ALPM_LOG_ERROR, _("failed to commit transaction (%s)\n"), - alpm_strerror(err)); - switch(err) { - case ALPM_ERR_FILE_CONFLICTS: - for(i = data; i; i = alpm_list_next(i)) { - alpm_fileconflict_t *conflict = alpm_list_getdata(i); - switch(conflict->type) { - case ALPM_FILECONFLICT_TARGET: - printf(_("%s exists in both '%s' and '%s'\n"), - conflict->file, conflict->target, conflict->ctarget); - break; - case ALPM_FILECONFLICT_FILESYSTEM: - printf(_("%s: %s exists in filesystem\n"), - conflict->target, conflict->file); - break; - } - } - break; - case ALPM_ERR_PKG_INVALID: - case ALPM_ERR_DLT_INVALID: - for(i = data; i; i = alpm_list_next(i)) { - char *filename = alpm_list_getdata(i); - printf(_("%s is invalid or corrupted\n"), filename); - } - break; - default: - break; - } - FREELIST(data); - trans_release(); - return 1; - } - - if(trans_release() == -1) { - retval = 1; - } - return retval; + /* now that targets are resolved, we can hand it all off to the sync code */ + return sync_prepare_execute(); } /* vim: set ts=2 sw=2 noet: */ |