Add a new --accept-properties option so that users can temporarily override
authorZac Medico <zmedico@gentoo.org>
Tue, 6 Oct 2009 06:57:06 +0000 (06:57 -0000)
committerZac Medico <zmedico@gentoo.org>
Tue, 6 Oct 2009 06:57:06 +0000 (06:57 -0000)
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
man/make.conf.5
pym/_emerge/help.py
pym/_emerge/main.py

index 1822048d1174676c50831f488630d03b68347a71..efe583064d0e73076b3b6f98ee602705bc416ecb 100644 (file)
@@ -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
index 73861d85980fb997d76889e83a68e5dad090775a..c0b48e92477aaab419331103dfaa22e5c450b32c 100644 (file)
@@ -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
index f34691682f8fbd9a1ab9c404ad6710bfca77ae86..3cb5a9f541924f785d9f897d0965c650f6d75860 100644 (file)
@@ -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.")
index 777d10192c5ac8035574d6b34541d724c3c2861f..4635cdaf231c4351e38e80f30bdb9ed73bd0018c 100644 (file)
@@ -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)