aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2017-07-29 17:03:25 -0700
committerZac Medico <zmedico@gentoo.org>2017-07-29 17:07:04 -0700
commitfa1ba6318e114cd9f3bb5b4e61ed3dab7521bc19 (patch)
treeca612d3e97e8157db3b606527a8c93acfbe64b37
parentSupport different compressors for binary packages (diff)
downloadportage-fa1ba6318e114cd9f3bb5b4e61ed3dab7521bc19.tar.gz
portage-fa1ba6318e114cd9f3bb5b4e61ed3dab7521bc19.tar.bz2
portage-fa1ba6318e114cd9f3bb5b4e61ed3dab7521bc19.zip
config.validate: check for invalid BINPKG_COMPRESSION
-rw-r--r--pym/portage/package/ebuild/config.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/ebuild/config.py
index f8043dbf5..3d232e0be 100644
--- a/pym/portage/package/ebuild/config.py
+++ b/pym/portage/package/ebuild/config.py
@@ -25,6 +25,7 @@ portage.proxy.lazyimport.lazyimport(globals(),
'portage.dep.soname.SonameAtom:SonameAtom',
'portage.dbapi.vartree:vartree',
'portage.package.ebuild.doebuild:_phase_func_map',
+ 'portage.util.compression_probe:_compressors',
'portage.util.locale:check_locale,split_LC_ALL',
)
from portage import bsd_chflags, \
@@ -1171,6 +1172,32 @@ class config(object):
writemsg(_("!!! See https://bugs.pypy.org/issue833 for details.\n"),
noiselevel=-1)
+ binpkg_compression = self.get("BINPKG_COMPRESSION")
+ if binpkg_compression:
+ try:
+ compression = _compressors[binpkg_compression]
+ except KeyError as e:
+ writemsg("!!! BINPKG_COMPRESSION contains invalid or "
+ "unsupported compression method: %s" % e.args[0],
+ noiselevel=-1)
+ else:
+ try:
+ compression_binary = shlex_split(
+ portage.util.varexpand(compression["compress"],
+ mydict=self))[0]
+ except IndexError as e:
+ writemsg("!!! BINPKG_COMPRESSION contains invalid or "
+ "unsupported compression method: %s" % e.args[0],
+ noiselevel=-1)
+ else:
+ if portage.process.find_binary(
+ compression_binary) is None:
+ missing_package = compression["package"]
+ writemsg("!!! BINPKG_COMPRESSION unsupported %s. "
+ "Missing package: %s" %
+ (binpkg_compression, missing_package),
+ noiselevel=-1)
+
def load_best_module(self,property_string):
best_mod = best_from_dict(property_string,self.modules,self.module_priority)
mod = None