def getSquashList(): """Get supprted squashfs compressions method""" wantMethod = set(["lzo", "lzma", "xz", "gzip"]) usesSquashFs = getPkgActiveUses("sys-fs/squashfs-tools") if not usesSquashFs: return ["gzip"] else: pkgInfo = isPkgInstalled("sys-fs/squashfs-tools") if pkgInfo and pkgInfo[0]["PV"]: pkgVer = getTupleVersion(pkgInfo[0]["PV"]) gzipVer = getTupleVersion("4.2") if pkgVer >= gzipVer: usesSquashFs.append("gzip") return map(lambda x: {"lzma": "xz"}.get(x, x), list(set(usesSquashFs) & wantMethod))
def isPkgInstalled(pkg, prefix="/", sortByVersion=False): """Check is package installed""" pkgDir = path.join(prefix, "var/db/pkg") if "/" in pkg: category, op, pkg = pkg.partition("/") res = map( lambda x: x.update({"CATEGORY": category}) or x, filter(lambda x: x["PN"] == pkg, map(reVerSplitToPV, listDirectory(path.join(pkgDir, category)))), ) if len(res) > 1 and sortByVersion: return sorted(res, key=lambda x: getTupleVersion(x["PVR"])) else: return res else: return filter( lambda x: filter(lambda y: y["PN"] == pkg, map(reVerSplitToPV, listDirectory(x))), listDirectory(pkgDir, fullPath=True), )