diff options
-rw-r--r-- | man/portage.5 | 6 | ||||
-rw-r--r-- | pym/portage.py | 14 | ||||
-rw-r--r-- | pym/portage_const.py | 2 |
3 files changed, 19 insertions, 3 deletions
diff --git a/man/portage.5 b/man/portage.5 index 725e09375..6728ebe28 100644 --- a/man/portage.5 +++ b/man/portage.5 @@ -163,9 +163,13 @@ Architecture type (x86/ppc/hppa/etc...). .B USERLAND = \fI"GNU"\fR Support BSD/cygwin/etc... .TP -.B PORTAGE_LIBC = \fI"glibc"\fR +.B ELIBC = \fI"glibc"\fR Support uClibc/BSD libc/etc... .TP +.B PROFILE_ONLY_VARIABLES = \fI"ARCH"\fR +Prevent critical variables from being changed by the user in make.conf +or the env. +.TP .BR PROFILE_ARCH Distinguish machines classes that have the same \fBARCH\fR. All sparc machines have ARCH=sparc but set this to either 'sparc32' or 'sparc64'. diff --git a/pym/portage.py b/pym/portage.py index bddc3f257..5e3cb6bd6 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -1301,6 +1301,13 @@ class config: "this. Do not use them.\n", noiselevel=-1) sys.exit(1) + + # Don't allow the user to override certain variables in make.conf + profile_only_variables = self.configdict["defaults"].get( + "PROFILE_ONLY_VARIABLES", "").split() + for k in profile_only_variables: + self.mygcfg.pop(k, None) + # Allow ROOT setting to come from make.conf if it's not overridden # by the constructor argument (from the calling environment). As a # special exception for a very common use case, config_root == "/" @@ -1324,7 +1331,12 @@ class config: self.configlist.append(self.backupenv) # XXX Why though? self.configdict["backupenv"]=self.configlist[-1] - self.configlist.append(os.environ.copy()) + myenv = os.environ.copy() + # Don't allow the user to override certain variables in the env + for k in profile_only_variables: + myenv.pop(k, None) + + self.configlist.append(myenv) self.configdict["env"]=self.configlist[-1] if not local_config: # Clean up pollution from portage_data so that it doesn't diff --git a/pym/portage_const.py b/pym/portage_const.py index f29e7b6b7..c27764e46 100644 --- a/pym/portage_const.py +++ b/pym/portage_const.py @@ -51,7 +51,7 @@ REPO_NAME_LOC = "profiles" + "/" + REPO_NAME_FILE INCREMENTALS = ["USE", "USE_EXPAND", "USE_EXPAND_HIDDEN", "FEATURES", "ACCEPT_KEYWORDS", "ACCEPT_LICENSE", "CONFIG_PROTECT_MASK", "CONFIG_PROTECT", - "PRELINK_PATH", "PRELINK_PATH_MASK"] + "PRELINK_PATH", "PRELINK_PATH_MASK", "PROFILE_ONLY_VARIABLES"] EBUILD_PHASES = ["setup", "unpack", "compile", "test", "install", "preinst", "postinst", "prerm", "postrm", "other"] |