Make quickpkg print a warning if "bindist" is in RESTRICT.
authorZac Medico <zmedico@gentoo.org>
Fri, 22 Jun 2007 06:13:46 +0000 (06:13 -0000)
committerZac Medico <zmedico@gentoo.org>
Fri, 22 Jun 2007 06:13:46 +0000 (06:13 -0000)
svn path=/main/trunk/; revision=6937

bin/quickpkg

index 0070ffac9919b6170f2e8a3124b1dfae9f8d4147..17611d6ed66dccbaae84ba3cfdd2eef1de8a9415 100755 (executable)
@@ -6,10 +6,11 @@
 import errno, signal, sys, os
 
 def quickpkg_main(options, args, eout):
-       from portage import dblink, dep_expand, catsplit, isvalidatom, xpak
+       from portage import catsplit, dep_expand, flatten, isvalidatom, xpak
+       from portage.dep import use_reduce, paren_reduce
        from portage.util import ensure_dirs
-       from portage.exception import InvalidData
-       from portage.dbapi.vartree import tar_contents
+       from portage.exception import InvalidData, InvalidDependString
+       from portage.dbapi.vartree import dblink, tar_contents
        import tarfile
        import portage
        root = portage.settings["ROOT"]
@@ -54,12 +55,24 @@ def quickpkg_main(options, args, eout):
                                if not dblnk.exists():
                                        # unmerged by a concurrent process
                                        continue
-                               iuse, use = vardb.aux_get(cpv, ["IUSE","USE"])
+                               iuse, use, restrict = vardb.aux_get(cpv,
+                                       ["IUSE","USE","RESTRICT"])
                                iuse = [ x.lstrip("+-") for x in iuse.split() ]
                                use = use.split()
+                               try:
+                                       restrict = flatten(use_reduce(
+                                               paren_reduce(restrict), uselist=use))
+                               except InvalidDependString, e:
+                                       eout.eerror("Invalid RESTRICT metadata " + \
+                                               "for '%s': %s; skipping" % (cpv, str(e)))
+                                       del e
+                                       continue
                                if "bindist" in iuse and "bindist" not in use:
                                        eout.ewarn("%s: package was emerged with USE=-bindist!" % cpv)
                                        eout.ewarn("%s: it may not be legal to redistribute this." % cpv)
+                               elif "bindist" in restrict:
+                                       eout.ewarn("%s: package has RESTRICT=bindist!" % cpv)
+                                       eout.ewarn("%s: it may not be legal to redistribute this." % cpv)
                                eout.ebegin("Building package for %s" % cpv)
                                pkgs_for_arg += 1
                                contents = dblnk.getcontents()