From 23b2d39e7dd8de9bc78b4ad7fe35e820b27f9eba Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Tue, 6 Oct 2009 06:57:06 +0000 Subject: Add a new --accept-properties option so that users can temporarily override ACCEPT_PROPERTIES on the commandline, without relying on emerge's legacy behavior of allowing variables to leak in from the calling environment. A typical usage example for this option would be to use --accept-properties=-interactive to temporarily mask interactive packages. With default configuration, this would result in an effective ACCEPT_PROPERTIES value of "* -interactive". svn path=/main/trunk/; revision=14501 --- man/emerge.1 | 17 ++++++++++++++++- man/make.conf.5 | 4 +++- pym/_emerge/help.py | 16 ++++++++++++++++ pym/_emerge/main.py | 6 ++++++ 4 files changed, 41 insertions(+), 2 deletions(-) diff --git a/man/emerge.1 b/man/emerge.1 index 1822048d1..efe583064 100644 --- a/man/emerge.1 +++ b/man/emerge.1 @@ -234,6 +234,20 @@ match multiple installed versions of slotted packages. Displays the version number of \fBemerge\fR. .SH "OPTIONS" .TP +.BR \-\-accept\-properties=ACCEPT_PROPERTIES +This option temporarily overrides the \fBACCEPT_PROPERTIES\fR +variable. The \fBACCEPT_PROPERTIES\fR variable is incremental, +which means that the specified setting is appended to the +existing value from your configuration. The special \fB-*\fR +token can be used to discard the existing configuration +value and start fresh. See the \fBMASKED PACKAGES\fR section +and \fBmake.conf\fR(5) for more information about +ACCEPT_PROPERTIES. A typical usage example for this option +would be to use \fI\-\-accept\-properties=-interactive\fR to +temporarily mask interactive packages. With default +configuration, this would result in an effective +\fBACCEPT_PROPERTIES\fR value of "* -interactive". +.TP .BR "\-\-alphabetical " When displaying USE and other flag output, combines the enabled and disabled lists into one list and sorts the whole list alphabetically. @@ -667,7 +681,8 @@ packages based on properties restrictions. \fBemerge\fR examines the \fBACCEPT_PROPERTIES\fR environment variable to allow or disallow the emerging of a package masked by \fBPROPERTIES\fR. See \fBmake.conf\fR(5) for information about \fBACCEPT_PROPERTIES\fR, and see \fBportage\fR(5) for information about -\fI/etc/portage/package.properties\fR. +\fI/etc/portage/package.properties\fR. Use the \fB\-\-accept\-properties\fR +option to temporarily override \fBACCEPT_PROPERTIES\fR. .SH "CONFIGURATION FILES" Portage has a special feature called "config file protection". The purpose of this feature is to prevent new package installs from clobbering existing diff --git a/man/make.conf.5 b/man/make.conf.5 index 73861d859..c0b48e924 100644 --- a/man/make.conf.5 +++ b/man/make.conf.5 @@ -43,7 +43,9 @@ Defaults to the value of * -@EULA. .TP \fBACCEPT_PROPERTIES\fR = \fI[space delimited list of properties]\fR This variable is used to mask packages based on PROPERTIES restrictions. -See \fBebuild\fR(5) for more information about PROPERTIES. +This varable can be temporarily overridden using the the +\fB\-\-accept\-properties\fR option of \fBemerge\fR(1). +See \fBebuild\fR(5) for more information about PROPERTIES. .br Defaults to the value of *. .TP diff --git a/pym/_emerge/help.py b/pym/_emerge/help.py index f34691682..3cb5a9f54 100644 --- a/pym/_emerge/help.py +++ b/pym/_emerge/help.py @@ -232,6 +232,22 @@ def help(myopts, havecolor=1): print(" "+bold("emerge info")+" for more advanced information.") print() print(turquoise("Options:")) + print(" "+green("--accept-properties=ACCEPT_PROPERTIES")) + desc = "This option temporarily overrides the ACCEPT_PROPERTIES " + \ + "variable. The ACCEPT_PROPERTIES variable is incremental, " + \ + "which means that the specified setting is appended to the " + \ + "existing value from your configuration. The special -* " + \ + "token can be used to discard the existing configuration " + \ + "value and start fresh. See the MASKED PACKAGES section " + \ + "and make.conf(5) for more information about " + \ + "ACCEPT_PROPERTIES. A typical usage example for this option " + \ + "would be to use --accept-properties=-interactive to " + \ + "temporarily mask interactive packages. With default " + \ + "configuration, this would result in an effective " + \ + "ACCEPT_PROPERTIES value of \"* -interactive\"." + for line in wrap(desc, desc_width): + print(desc_indent + line) + print() print(" "+green("--alphabetical")) print(" When displaying USE and other flag output, combines the enabled") print(" and disabled flags into a single list and sorts it alphabetically.") diff --git a/pym/_emerge/main.py b/pym/_emerge/main.py index 777d10192..4635cdaf2 100644 --- a/pym/_emerge/main.py +++ b/pym/_emerge/main.py @@ -498,6 +498,10 @@ def parse_opts(tmpcmdline, silent=False): longopt_aliases = {"--cols":"--columns", "--skip-first":"--skipfirst"} argument_options = { + "--accept-properties": { + "help":"temporarily override ACCEPT_PROPERTIES", + "action":"store" + }, "--config-root": { "help":"specify the location for portage configuration files", "action":"store" @@ -1047,6 +1051,8 @@ def emerge_main(): os.environ["PORTAGE_CONFIGROOT"] = myopts["--config-root"] if "--root" in myopts: os.environ["ROOT"] = myopts["--root"] + if "--accept-properties" in myopts: + os.environ["ACCEPT_PROPERTIES"] = myopts["--accept-properties"] # Portage needs to ensure a sane umask for the files it creates. os.umask(0o22) -- cgit v1.2.3-1-g7c22