From 90b7a235a290e16b0ec151d77e8166c62c1745aa Mon Sep 17 00:00:00 2001 From: David James Date: Thu, 7 Apr 2011 16:49:58 -0700 Subject: Add force-mirror FEATURE. force-mirror: Only fetch files from configured mirrors, ignoring SRC_URI, except when mirror is in the ebuild(5) RESTRICT variable. BUG=chromium-os:13221 TEST=Test that ebuilds now fail with FEATURES=force-mirror if files are not in the configured mirror. Change-Id: I8484d5af8dff97b431398030b33c024ff1295ba0 Review URL: http://codereview.chromium.org/6677171 --- pym/portage/const.py | 4 ++-- pym/portage/package/ebuild/fetch.py | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) (limited to 'pym') diff --git a/pym/portage/const.py b/pym/portage/const.py index f79820277..15afc9be9 100644 --- a/pym/portage/const.py +++ b/pym/portage/const.py @@ -88,8 +88,8 @@ EBUILD_PHASES = ("pretend", "setup", "unpack", "prepare", "configure" SUPPORTED_FEATURES = frozenset([ "assume-digests", "binpkg-logs", "buildpkg", "buildsyspkg", "candy", "ccache", "chflags", "collision-protect", "compress-build-logs", - "digest", "distcc", "distlocks", - "fakeroot", "fail-clean", "fixpackages", "getbinpkg", + "digest", "distcc", "distlocks", "fakeroot", + "fail-clean", "fixpackages", "force-mirror", "getbinpkg", "installsources", "keeptemp", "keepwork", "fixlafiles", "lmirror", "metadata-transfer", "mirror", "multilib-strict", "news", "noauto", "noclean", "nodoc", "noinfo", "noman", "nostrip", diff --git a/pym/portage/package/ebuild/fetch.py b/pym/portage/package/ebuild/fetch.py index c33375ca6..6e4c728ec 100644 --- a/pym/portage/package/ebuild/fetch.py +++ b/pym/portage/package/ebuild/fetch.py @@ -245,8 +245,8 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, userpriv = secpass >= 2 and "userpriv" in features # 'nomirror' is bad/negative logic. You Restrict mirroring, not no-mirroring. - if "mirror" in restrict or \ - "nomirror" in restrict: + restrict_mirror = "mirror" in restrict or "nomirror" in restrict + if restrict_mirror: if ("mirror" in features) and ("lmirror" not in features): # lmirror should allow you to bypass mirror restrictions. # XXX: This is not a good thing, and is temporary at best. @@ -344,8 +344,7 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, if "local" in custommirrors: mymirrors += custommirrors["local"] - if "nomirror" in restrict or \ - "mirror" in restrict: + if restrict_mirror: # We don't add any mirrors. pass else: @@ -374,6 +373,7 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, del mymirrors[x] restrict_fetch = "fetch" in restrict + force_mirror = "force-mirror" in features and not restrict_mirror custom_local_mirrors = custommirrors.get("local", []) if restrict_fetch: # With fetch restriction, a normal uri may only be fetched from @@ -430,7 +430,7 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, writemsg(_("Invalid mirror definition in SRC_URI:\n"), noiselevel=-1) writemsg(" %s\n" % (myuri), noiselevel=-1) else: - if restrict_fetch: + if restrict_fetch or force_mirror: # Only fetch from specific mirrors is allowed. continue if "primaryuri" in restrict: -- cgit v1.2.3-1-g7c22