diff options
-rw-r--r-- | libopkg/opkg_install.c | 248 |
1 files changed, 0 insertions, 248 deletions
diff --git a/libopkg/opkg_install.c b/libopkg/opkg_install.c index 7bdd3ba..883f559 100644 --- a/libopkg/opkg_install.c +++ b/libopkg/opkg_install.c @@ -1702,251 +1702,3 @@ static int backup_remove(const char *file_name) return 0; } - - -#ifdef CONFIG_OPKG_PROCESS_ACTIONS - -int opkg_remove_packages(opkg_conf_t *conf, pkg_vec_t *pkgs_to_remove) -{ - /* first, remove the packages that need removing */ - for (i = 0 ; i < pkgs_to_remove->len; i++ ) { - pkg_t *pkg = pkgs_to_remove->pkgs[i]; - err = opkg_remove_pkg(conf, pkg,0); - if (err) return err; - } - return 0; -} - -int opkg_process_actions_sanity_check(opkg_conf_t *conf, pkg_vec_t *pkgs_to_remove, pkg_vec_t *pkgs_superseded, pkg_vec_t *pkgs_to_install) -{ - int i; - /* now one more pass checking on the ones that need to be installed */ - for (i = 0 ; i < pkgs_to_install->len; i++ ) { - pkg_t *pkg = pkgs_to_install->pkgs[i]; - if (pkg->dest == NULL) - pkg->dest = conf->default_dest; - - pkg->state_want = SW_INSTALL; - - /* Abhaya: conflicts check */ - err = check_conflicts_for(conf, pkg); - if (err) { return err; } - } - return 0; -} - -int opkg_process_actions_unpack_packages(opkg_conf_t *conf, pkg_vec_t *pkgs_to_remove, pkg_vec_t *pkgs_to_install) -{ - int i; - /* now one more pass checking on the ones that need to be installed */ - for (i = 0 ; i < pkgs_to_install->len; i++ ) { - pkg_t *pkg = pkgs_to_install->pkgs[i]; - - /* XXX: FEATURE: Need to really support Provides/Replaces: here at some point */ - pkg_vec_t *replacees = pkg_vec_alloc(); - pkg_get_installed_replacees(conf, pkg, replacees); - - /* XXX: BUG: we really should treat replacement more like an upgrade - * Instead, we're going to remove the replacees - */ - err = pkg_remove_installed_replacees(conf, replacees); - if (err) return err; - pkg->state_flag |= SF_REMOVED_REPLACEES; - } - return 0; -} - -int opkg_process_actions_unpack_packages(opkg_conf_t *conf, pkg_vec_t *pkgs_to_remove, pkg_vec_t *pkgs_to_install) -{ - int i; - /* now one more pass checking on the ones that need to be installed */ - for (i = 0 ; i < pkgs_to_install->len; i++ ) { - pkg_t *pkg = pkgs_to_install->pkgs[i]; - if (pkg->local_filename == NULL) { - err = opkg_download_pkg(conf, pkg, conf->tmp_dir); - if (err) { - opkg_message(conf, OPKG_ERROR, - "Failed to download %s. Perhaps you need to run 'opkg update'?\n", - pkg->name); - return err; - } - } - if (pkg->tmp_unpack_dir == NULL) { - err = unpack_pkg_control_files(conf, pkg); - if (err) return err; - } - } - return 0; -} - -int opkg_process_actions_prerm(opkg_conf_t *conf, pkg_vec_t *pkgs_to_install) -{ - int i; - /* now one more pass checking on the ones that need to be installed */ - for (i = 0 ; i < pkgs_to_install->len; i++ ) { - pkg_t *pkg = pkgs_to_install->pkgs[i]; - pkg_t *old_pkg = pkg->old_pkg; - - err = prerm_upgrade_old_pkg(conf, pkg, old_pkg); - if (err) return err; - - err = prerm_deconfigure_conflictors(conf, pkg, replacees); - if (err) return err; - - err = preinst_configure(conf, pkg, old_pkg); - if (err) return err; - - err = backup_modified_conffiles(conf, pkg, old_pkg); - if (err) return err; - - err = postrm_upgrade_old_pkg(conf, pkg, old_pkg); - if (err) return err; - } - return 0; -} - -int opkg_process_actions_install(opkg_conf_t *conf, pkg_vec_t *pkgs_to_install) -{ - int i; - /* now one more pass checking on the ones that need to be installed */ - for (i = 0 ; i < pkgs_to_install->len; i++ ) { - pkg_t *pkg = pkgs_to_install->pkgs[i]; - pkg_t *old_pkg = pkg->old_pkg; - - if (old_pkg) { - old_pkg->state_want = SW_DEINSTALL; - - if (old_pkg->state_flag & SF_NOPRUNE) { - opkg_message(conf, OPKG_INFO, - " not removing obsolesced files because package marked noprune\n"); - } else { - opkg_message(conf, OPKG_INFO, - " removing obsolesced files\n"); - remove_obsolesced_files(conf, pkg, old_pkg); - } - } - - opkg_message(conf, OPKG_INFO, - " installing maintainer scripts\n"); - install_maintainer_scripts(conf, pkg, old_pkg); - - /* the following just returns 0 */ - remove_disappeared(conf, pkg); - - opkg_message(conf, OPKG_INFO, - " installing data files\n"); - install_data_files(conf, pkg); - - opkg_message(conf, OPKG_INFO, - " resolving conf files\n"); - resolve_conffiles(conf, pkg); - - pkg->state_status = SS_UNPACKED; - - if (old_pkg) { - old_pkg->state_status = SS_NOT_INSTALLED; - } - - time(&pkg->installed_time); - - opkg_message(conf, OPKG_INFO, - " cleanup temp files\n"); - cleanup_temporary_files(conf, pkg); - - if (pkg->parent) - pkg->parent->state_status = pkg->state_status; - } - return 0; -} - -int opkg_process_actions_unwind_prerm(opkg_conf_t *conf, pkg_vec_t *pkgs_to_install) -{ - int i; - /* now one more pass checking on the ones that need to be installed */ - for (i = 0 ; i < pkgs_to_install->len; i++ ) { - pkg_t *pkg = pkgs_to_install->pkgs[i]; - pkg_t *old_pkg = pkg->old_pkg; - - if (old_pkg) { - if (old_pkg->state_flags & SF_POSTRM_UPGRADE) - postrm_upgrade_old_pkg_unwind(conf, pkg, old_pkg); - if (old_pkg->state_flags & SF_CHECK_DATA_FILE_CLASHES) - check_data_file_clashes_unwind(conf, pkg, old_pkg); - if (old_pkg->state_flags & SF_BACKUP_MODIFIED_CONFFILES) - backup_modified_conffiles_unwind(conf, pkg, old_pkg); - if (old_pkg->state_flags & SF_PREINST_CONFIGURE) - preinst_configure_unwind(conf, pkg, old_pkg); - if (old_pkg->state_flags & SF_DECONFIGURE_CONFLICTORS) - prerm_deconfigure_conflictors_unwind(conf, pkg, replacees); - if (old_pkg->state_flags & SF_PRERM_UPGRADE) - prerm_upgrade_old_pkg_unwind(conf, pkg, old_pkg); - - if (old_pkg->state_flags & SF_REMOVED_REPLACEES) - remove_installed_replacees_unwind(conf, pkg, old_pkg); - - } - } - return 0; -} - -/* - * Perform all the actions. - * - * pkgs_to_remove are packages marked for removal. - * pkgs_superseded are the old packages being replaced by upgrades. - * - * Assumes pkgs_to_install includes all dependences, recursively, sorted in installable order. - */ -int opkg_process_actions(opkg_conf_t *conf, pkg_vec_t *pkgs_to_remove, pkg_vec_t *pkgs_superseded, pkg_vec_t *pkgs_to_install) -{ - int err; - int i; - - err = opkg_remove_packages(conf, pkgs_to_remove); - if (err) return err; - - err = opkg_process_actions_sanity_check(conf, pkgs_superseded, pkgs_to_install); - if (err) return err; - - err = opkg_process_actions_remove_replacees(conf, pkgs_to_install); - if (err) goto UNWIND; - - /* @@@@ look at opkg_install_pkg for handling replacements */ - err = opkg_process_actions_unpack_packages(conf, pkgs_to_install); - if (err) goto UNWIND; - - /* - * Now that we have the packages unpacked, we can look for data - * file clashes. First, we mark the files from the superseded - * packages as obsolete. Then we scan the files in - * pkgs_to_install, and only complain about clashes with - * non-obsolete files. - */ - - err = opkg_process_actions_check_data_file_clashes(conf, pkgs_superseded, pkgs_to_install); - if (err) goto UNWIND; - - /* this was before checking data file clashes */ - err = opkg_process_actions_prerm(conf, pkgs_superseded, pkgs_to_install); - if (err) goto UNWIND; - - /* point of no return: no unwinding after this */ - err = opkg_process_actions_install(conf, pkgs_to_install); - if (err) return err; - - opkg_message(conf, OPKG_INFO, "Done.\n"); - return 0; - - UNWIND: - opkg_process_actions_unwind(conf, pkgs_to_install); - - opkg_message(conf, OPKG_INFO, - " cleanup temp files\n"); - cleanup_temporary_files(conf, pkg); - - opkg_message(conf, OPKG_INFO, - "Failed.\n"); - return err; -} - -#endif |