def snapshot(): """ Takes snapshot of the system packages. The snapshot is only a record of which packages are currently installed. The record is kept by pisilinux history mechanism as it works automatically on install, remove and upgrade operations. """ installdb = pisilinux.db.installdb.InstallDB() historydb = pisilinux.db.historydb.HistoryDB() historydb.create_history("snapshot") li = installdb.list_installed() progress = ctx.ui.Progress(len(li)) processed = 0 for name in installdb.list_installed(): package = installdb.get_package(name) historydb.add_package(pkgBefore=package, operation="snapshot") # Save changed config files of the package in snapshot for f in installdb.get_files(name).list: if f.type == "config" and pisilinux.util.config_changed(f): fpath = pisilinux.util.join_path(ctx.config.dest_dir(), f.path) historydb.save_config(name, fpath) processed += 1 ctx.ui.display_progress(operation = "snapshot", percent = progress.update(processed), info = _("Taking snapshot of the system")) historydb.update_history()
def list_upgradable(): """ Return a list of packages that are upgraded in the repository -> list_of_strings """ installdb = pisilinux.db.installdb.InstallDB() is_upgradable = pisilinux.operations.upgrade.is_upgradable upgradable = list(filter(is_upgradable, installdb.list_installed())) # replaced packages can not pass is_upgradable test, so we add them manually upgradable.extend(list_replaces()) # consider also blacklist filtering upgradable = pisilinux.blacklist.exclude_from(upgradable, ctx.const.blacklist) return upgradable