Exemplo n.º 1
0
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
Exemplo n.º 2
0
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"))