def info_name(package_name, useinstalldb=False): """Fetch package information for the given package.""" installdb = pisilinux.db.installdb.InstallDB() packagedb = pisilinux.db.packagedb.PackageDB() if useinstalldb: package = installdb.get_package(package_name) repo = None else: package, repo = packagedb.get_package_repo(package_name) metadata = pisilinux.metadata.MetaData() metadata.package = package #FIXME: get it from sourcedb if available metadata.source = None #TODO: fetch the files from server if possible (wow, you maniac -- future exa) if useinstalldb and installdb.has_package(package.name): try: files = installdb.get_files(package.name) except pisilinux.Error as e: ctx.ui.warning(e) files = None else: files = None return metadata, files, repo
def configure_pending(packages=None): # Import COMAR import pisilinux.comariface # start with pending packages # configure them in reverse topological order of dependency installdb = pisilinux.db.installdb.InstallDB() if not packages: packages = installdb.list_pending() else: packages = set(packages).intersection(installdb.list_pending()) order = generate_pending_order(packages) try: for x in order: if installdb.has_package(x): pkginfo = installdb.get_package(x) pkg_path = installdb.package_path(x) m = pisilinux.metadata.MetaData() metadata_path = pisilinux.util.join_path(pkg_path, ctx.const.metadata_xml) m.read(metadata_path) # FIXME: we need a full package info here! pkginfo.name = x ctx.ui.notify(pisilinux.ui.configuring, package = pkginfo, files = None) pisilinux.comariface.post_install( pkginfo.name, m.package.providesComar, pisilinux.util.join_path(pkg_path, ctx.const.comar_dir), pisilinux.util.join_path(pkg_path, ctx.const.metadata_xml), pisilinux.util.join_path(pkg_path, ctx.const.files_xml), None, None, m.package.version, m.package.release ) ctx.ui.notify(pisilinux.ui.configured, package = pkginfo, files = None) installdb.clear_pending(x) except ImportError: raise pisilinux.Error(_("comar package is not fully installed"))