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()
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()
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)))
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
def __init__(self): """ Allows us to do look ups on all packages """ self.idb = InstallDB() self.pdb = PackageDB() self.fdb = FilesDB()
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)
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."