|
|
@ -858,3 +858,40 @@ def reVerSplitToPV(x): |
|
|
|
'PV':"", |
|
|
|
'PR':"", |
|
|
|
'PVR':""}.copy() |
|
|
|
|
|
|
|
def getPkgUses(fullpkg): |
|
|
|
"""Get USE and IUSE from package""" |
|
|
|
category,slash,pkg = fullpkg.partition('/') |
|
|
|
pkgCategory = '/var/db/pkg/{0}'.format(category) |
|
|
|
packages = filter(lambda x:x['PN'] == pkg, |
|
|
|
map(reVerSplitToPV, |
|
|
|
filter(lambda x:x, |
|
|
|
map(lambda x:reVerSplit.search(x), |
|
|
|
listDirectory(pkgCategory))))) |
|
|
|
if not packages: |
|
|
|
return None |
|
|
|
usePath = os.path.join(pkgCategory,packages[-1]['PF'],"USE") |
|
|
|
iusePath = os.path.join(pkgCategory,packages[-1]['PF'],"IUSE") |
|
|
|
return (map(lambda x:x[1:] if x.startswith("+") else x, |
|
|
|
filter(lambda x:x, |
|
|
|
open(usePath,'r').read().strip().split())), |
|
|
|
map(lambda x:x[1:] if x.startswith("+") else x, |
|
|
|
filter(lambda x:x, |
|
|
|
open(iusePath,'r').read().strip().split()))) |
|
|
|
|
|
|
|
def getPkgActiveUses(fullpkg): |
|
|
|
"""Get active uses from package""" |
|
|
|
res = getPkgUses(fullpkg) |
|
|
|
if not res: |
|
|
|
return None |
|
|
|
return list(set(res[0]) & set(res[1])) |
|
|
|
|
|
|
|
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: |
|
|
|
return map(lambda x:{"lzma":"xz"}.get(x,x), |
|
|
|
list(set(usesSquashFs) & wantMethod)) |