예제 #1
0
    def __deserialize(self, queueName, fileName):
        try:
            queue = open(os.path.join(conf.buildfarmdir, fileName), "r")
        except IOError:
            return

        for line in queue.readlines():
            if not line.startswith("#"):
                line = line.strip()
                if not os.path.exists(line):
                    # Try to guess absolute path from package name
                    try:
                        component = InstallDB().get_package(line).partOf
                    except:
                        continue

                    if component:
                        path = "%s/%s/%s/pspec.xml" % (
                            utils.get_local_repository_url(),
                            component.replace(".", "/"), line)

                        if os.path.exists(path):
                            queueName.append(path)
                else:
                    queueName.append(line)

        queue.close()
예제 #2
0
    def __init__(self):
        """ Allows us to do look ups on all packages """
        self.idb = InstallDB()
        self.pdb = PackageDB()
        self.fdb = FilesDB()

        # Cache the pkgconfigs known in the pdb
        self.pkgConfigs, self.pkgConfigs32 = self.pdb.get_pkgconfig_providers()
예제 #3
0
파일: window.py 프로젝트: guimmp92/doflicky
    def detect_drivers(self):
        self.installdb = InstallDB()
        self.packagedb = PackageDB()

        for child in self.listbox.get_children():
            child.destroy()

        self.bundleset = BundleSet()
        self.bundleset.detect()

        pkgs = detection.detect_hardware_packages()
        GObject.idle_add(lambda: self.add_pkgs())

        if len(pkgs) == 0:
            d = "No drivers were found for your system"
            GObject.idle_add(lambda: self.rs.set_markup("<b>{}</b>".format(d)))
예제 #4
0
    def __init__(self):
        """ Initialise the potential driver bundle set """
        self.drivers = [
            DriverBundleNvidia390(),
            DriverBundleNvidia(),
            DriverBundleBroadcom(),
        ]
        self.allDrivers = list()
        self.uniqueDrivers = list()
        self.emul32Triggers = dict()
        self.context = OSContext()

        self.db = InstallDB()
        for driver in self.drivers:
            for pkg in driver.triggers_emul32():
                if self.db.has_package(pkg):
                    self.emul32Triggers[driver] = True
예제 #5
0
 def __init__(self):
     """ Allows us to do look ups on all packages """
     self.idb = InstallDB()
     self.pdb = PackageDB()
     self.fdb = FilesDB()
예제 #6
0
def handle_dependencies(context, gene, metadata, package, files):
    """ Insert providers and dependencies into the spec """
    global idb

    # Insert the simple guys first, replaces/conflicts, as these don't map
    # to internal names at all and are completely from the user
    if package.name in context.spec.replaces:
        for item in sorted(set(context.spec.replaces[package.name])):
            repl = pisi.replace.Replace()
            repl.package = str(item)
            metadata.package.replaces.append(repl)
    # conflicts
    if package.name in context.spec.conflicts:
        for item in sorted(set(context.spec.conflicts[package.name])):
            conf = pisi.conflict.Conflict()
            conf.package = str(item)
            metadata.package.conflicts.append(conf)

    if len(package.provided_symbols) > 0:
        for sym in package.provided_symbols:
            spc = None
            name = None
            g = pkgconfig32_dep.match(sym)
            if g:
                spc = pisi.specfile.PkgConfig32Provide()
                spc.om = g.group(1)
                metadata.package.providesPkgConfig32.append(spc)
            g = pkgconfig_dep.match(sym)
            if g:
                spc = pisi.specfile.PkgConfigProvide()
                spc.om = g.group(1)
                metadata.package.providesPkgConfig.append(spc)

    all_names = set()
    for i in gene.packages:
        all_names.add(context.spec.get_package_name(i))

    dependencies = set(package.depend_packages)

    # Ensure some sane defaults are in place
    if package.name == "32bit" and "main" in gene.packages:
        if context.spec.get_component("main") != "kernel.drivers":
            dependencies.add(context.spec.get_package_name("main"))
    elif package.name == "32bit-devel":
        if "32bit" in gene.packages:
            dependencies.add(context.spec.get_package_name("32bit"))
        if "devel" in gene.packages:
            dependencies.add(context.spec.get_package_name("devel"))
    elif package.name == "devel":
        if "main" in gene.packages:
            dependencies.add(context.spec.get_package_name("main"))
    elif package.name == "dbginfo":
        if "main" in gene.packages:
            dependencies.add(context.spec.get_package_name("main"))
    elif package.name == "32bit-dbginfo":
        if "32bit" in gene.packages:
            dependencies.add(context.spec.get_package_name("32bit"))

    for dependency in dependencies:
        release = context.spec.pkg_release

        newDep = pisi.dependency.Dependency()

        local_fullname = context.spec.get_package_name(package.name)

        # Don't self depend.
        if dependency == local_fullname:
            continue
        if dependency not in all_names:
            # External dependency
            if not idb:
                idb = InstallDB()
            pkg = idb.get_package(dependency)
            newDep.package = dependency
            # Special case, kernel.image is an explicit dependency
            if pkg.partOf == "kernel.image":
                newDep.release = str(pkg.release)
            else:
                newDep.releaseFrom = str(pkg.release)
        else:
            newDep.package = dependency
            newDep.release = str(release)

        metadata.package.packageDependencies.append(newDep)

    if package.name not in context.spec.rundeps:
        return
    # Handle pattern/ypkg spec rundep
    for depname in context.spec.rundeps[package.name]:
        if depname in dependencies:
            continue
        dep = pisi.dependency.Dependency()
        if depname in all_names:
            dep.releaseFrom = str(context.spec.pkg_release)
        dep.package = str(depname)
        metadata.package.packageDependencies.append(dep)
예제 #7
0
    if not options.soname and not options.soname_regexp and not options.package:
        search_broken = True
    elif options.soname and options.soname_regexp:
        print "%suse --soname and --soname-regexp separately%s" % (RD, NO)
        sys.exit(1)
    elif options.package and (options.soname or options.soname_regexp):
        print "%suse --package and (--soname or --soname-regexp) separately%s" % (
            RD, NO)
        sys.exit(1)
    else:
        search_broken = False

    print "\n%sCollecting installed packages and files...%s" % (GR, NO)

    installdb = InstallDB()
    idb = installdb.installed_db
    pkgfs = {}
    pkgls = {}
    for pkg, vr in idb.iteritems():
        if re.search(DOCPKGPATTERN, pkg): continue
        ver = re.sub(VRPATTERN, "\\1", vr)
        files_xml = open(
            os.path.join(installdb.package_path(pkg),
                         ctx.const.files_xml)).read()
        pkgfs[pkg] = re.compile('<Path>(.*?)</Path>', re.I).findall(files_xml)
        pkgls[pkg] = re.compile('<Path>(.*?\.so[\.\d]*)</Path>',
                                re.I).findall(files_xml)

    print "  done."