diff options
author | David James <davidjames@google.com> | 2011-04-07 16:49:58 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-04-07 16:49:58 -0700 |
commit | b773f82f3ab84270d6541b84298013b6221ebcac (patch) | |
tree | 9387e5775a6bd771a88ff788353c8b7156761a7d | |
parent | 469376e5c96b70bdd4f19782c2abd6a5264a4949 (diff) | |
download | portage-b773f82f3ab84270d6541b84298013b6221ebcac.tar.gz portage-b773f82f3ab84270d6541b84298013b6221ebcac.tar.bz2 portage-b773f82f3ab84270d6541b84298013b6221ebcac.zip |
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
-rw-r--r-- | man/make.conf.5 | 4 | ||||
-rw-r--r-- | pym/portage/const.py | 4 | ||||
-rw-r--r-- | pym/portage/package/ebuild/fetch.py | 10 |
3 files changed, 11 insertions, 7 deletions
diff --git a/man/make.conf.5 b/man/make.conf.5 index a86f257f7..cf8d2170a 100644 --- a/man/make.conf.5 +++ b/man/make.conf.5 @@ -304,6 +304,10 @@ enabled for more than a short period of time. Modifies .la files to not include other .la files and some other fixes (order of flags, duplicated entries, ...) .TP +.B force\-mirror +Only fetch files from configured mirrors, ignoring \fBSRC_URI\fR, +except when \fImirror\fR is in the \fBebuild\fR(5) \fBRESTRICT\fR variable. +.TP .B lmirror When \fImirror\fR is enabled in \fBFEATURES\fR, fetch files even when \fImirror\fR is also in the \fBebuild\fR(5) \fBRESTRICT\fR variable. diff --git a/pym/portage/const.py b/pym/portage/const.py index 89fdda151..b92149d38 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: |