Add support for --usepkg=n so that it's possible to disable it on
authorZac Medico <zmedico@gentoo.org>
Sat, 1 Aug 2009 19:58:52 +0000 (19:58 -0000)
committerZac Medico <zmedico@gentoo.org>
Sat, 1 Aug 2009 19:58:52 +0000 (19:58 -0000)
the command line after it's been enabled in EMERGE_DEFAULT_OPTS.
Also do the same for --usepkgonly, --getbinpkg, and --getbinpkgonly.

svn path=/main/trunk/; revision=13873

man/emerge.1
pym/_emerge/help.py
pym/_emerge/main.py

index 45cf951556a6d0ff0ba394009f0a1c9ec54ebc04..47d1efafd325f926386befafae041c7944aaed57 100644 (file)
@@ -324,14 +324,14 @@ packages (fetch things from SRC_URI based upon USE setting).
 Instead of doing any package building, just perform fetches for all
 packages (fetch everything in SRC_URI regardless of USE setting).
 .TP
-.BR "\-\-getbinpkg " (\fB\-g\fR)
+.BR "\-\-getbinpkg[=n] " (\fB\-g\fR)
 Using the server and location defined in \fIPORTAGE_BINHOST\fR (see 
 \fBmake.conf\fR(5)), portage will download the information from each binary 
 package found and it will use that information to help build the dependency 
 list.  This option implies \fB\-k\fR.  (Use \fB\-gK\fR for binary\-only 
 merging.)
 .TP
-.BR "\-\-getbinpkgonly " (\fB\-G\fR)
+.BR "\-\-getbinpkgonly[=n] " (\fB\-G\fR)
 This option is identical to \fB\-g\fR, as above, except binaries from the
 remote server are preferred over local packages if they are not identical.
 .TP
@@ -462,13 +462,13 @@ Shows the dependency tree for the given target by indenting dependencies.
 This is only really useful in combination with \fB\-\-emptytree\fR or 
 \fB\-\-update\fR and \fB\-\-deep\fR.
 .TP
-.BR "\-\-usepkg " (\fB\-k\fR) 
+.BR "\-\-usepkg[=n] " (\fB\-k\fR) 
 Tells emerge to use binary packages (from $PKGDIR) if they are available, thus 
 possibly avoiding some time\-consuming compiles.  This option is useful for CD 
 installs; you can export PKGDIR=/mnt/cdrom/packages and then use this option to 
 have emerge "pull" binary packages from the CD in order to satisfy dependencies.
 .TP
-.BR "\-\-usepkgonly " (\fB\-K\fR)
+.BR "\-\-usepkgonly[=n] " (\fB\-K\fR)
 Tells emerge to only use binary packages (from $PKGDIR).  All the binary 
 packages must be available at the time of dependency calculation or emerge 
 will simply abort.  Portage does not use $PORTDIR when calculating dependency 
index 4c4525a4dd13ea889d8c845358463bcfb135c4b3..448ef1adf4c673bfa50e72c4b3e803a7ba6a939d 100644 (file)
@@ -338,13 +338,13 @@ def help(myopts, havecolor=1):
                print "              Same as --fetchonly except that all package files, including those"
                print "              not required to build the package, will be processed."
                print
-               print "       "+green("--getbinpkg")+" ("+green("-g")+" short option)"
+               print "       "+green("--getbinpkg")+ "[=%s]" % turquoise("n") + " ("+green("-g")+" short option)"
                print "              Using the server and location defined in PORTAGE_BINHOST, portage"
                print "              will download the information from each binary file there and it"
                print "              will use that information to help build the dependency list. This"
                print "              option implies '-k'. (Use -gK for binary-only merging.)"
                print
-               print "       "+green("--getbinpkgonly")+" ("+green("-G")+" short option)"
+               print "       "+green("--getbinpkgonly")+ "[=%s]" % turquoise("n") + " ("+green("-G")+" short option)"
                print "              This option is identical to -g, as above, except it will not use"
                print "              ANY information from the local machine. All binaries will be"
                print "              downloaded from the remote server without consulting packages"
@@ -492,7 +492,7 @@ def help(myopts, havecolor=1):
                print "              a package's dependencies follow the package. Only really useful"
                print "              in combination with --emptytree, --update or --deep."
                print
-               print "       "+green("--usepkg")+" ("+green("-k")+" short option)"
+               print "       "+green("--usepkg")+ "[=%s]" % turquoise("n") + " ("+green("-k")+" short option)"
                print "              Tell emerge to use binary packages (from $PKGDIR) if they are"
                print "              available, thus possibly avoiding some time-consuming compiles."
                print "              This option is useful for CD installs; you can export"
@@ -500,7 +500,7 @@ def help(myopts, havecolor=1):
                print "              emerge \"pull\" binary packages from the CD in order to satisfy" 
                print "              dependencies."
                print
-               print "       "+green("--usepkgonly")+" ("+green("-K")+" short option)"
+               print "       "+green("--usepkgonly")+ "[=%s]" % turquoise("n") + " ("+green("-K")+" short option)"
                print "              Like --usepkg above, except this only allows the use of binary"
                print "              packages, and it will abort the emerge if the package is not"
                print "              available at the time of dependency calculation."
index fbdcc58f5d777bcff2ab60291beb51b6f074f2d8..ca38570518a0f625570e6529a698a3916cfea118 100644 (file)
@@ -52,7 +52,6 @@ options=[
 "--digest",
 "--emptytree",
 "--fetchonly",    "--fetch-all-uri",
-"--getbinpkg",    "--getbinpkgonly",
 "--ignore-default-opts",
 "--keep-going",
 "--noconfmem",
@@ -65,7 +64,6 @@ options=[
 "--skipfirst",
 "--tree",
 "--update",
-"--usepkg",       "--usepkgonly",
 "--verbose",
 ]
 
@@ -77,9 +75,7 @@ shortmapping={
 "d":"--debug",
 "e":"--emptytree",
 "f":"--fetchonly", "F":"--fetch-all-uri",
-"g":"--getbinpkg", "G":"--getbinpkgonly",
 "h":"--help",
-"k":"--usepkg",    "K":"--usepkgonly",
 "l":"--changelog",
 "n":"--noreplace", "N":"--newuse",
 "o":"--onlydeps",  "O":"--nodeps",
@@ -386,8 +382,12 @@ def insert_optional_args(args):
                '--deep'       : valid_integers,
                '--deselect'   : ('n',),
                '--binpkg-respect-use'   : ('n', 'y',),
+               '--getbinpkg'            : ('n',),
+               '--getbinpkgonly'        : ('n',),
                '--jobs'       : valid_integers,
                '--root-deps'  : ('rdeps',),
+               '--usepkg'               : ('n',),
+               '--usepkgonly'           : ('n',),
        }
 
        short_arg_opts = {
@@ -395,6 +395,15 @@ def insert_optional_args(args):
                'j' : valid_integers,
        }
 
+       # Don't make things like "-kn" expand to "-k n"
+       # since existence of -n makes it too ambiguous.
+       short_arg_opts_n = {
+               'g' : ('n',),
+               'G' : ('n',),
+               'k' : ('n',),
+               'K' : ('n',),
+       }
+
        arg_stack = args[:]
        arg_stack.reverse()
        while arg_stack:
@@ -420,6 +429,12 @@ def insert_optional_args(args):
                                match = k
                                break
 
+               if match is None:
+                       for k, arg_choices in short_arg_opts_n.iteritems():
+                               if k in arg:
+                                       match = k
+                                       break
+
                if match is None:
                        new_args.append(arg)
                        continue
@@ -441,7 +456,7 @@ def insert_optional_args(args):
                saved_opts = None
 
                if arg[1:2] == match:
-                       if arg[2:] in arg_choices:
+                       if match not in short_arg_opts_n and arg[2:] in arg_choices:
                                opt_arg = arg[2:]
                        else:
                                saved_opts = arg[2:]
@@ -551,6 +566,20 @@ def parse_opts(tmpcmdline, silent=False):
                        "choices" : ("True", "y", "n")
                },
 
+               "--getbinpkg": {
+                       "shortopt" : "-g",
+                       "help"     : "fetch binary packages",
+                       "type"     : "choice",
+                       "choices"  : ("True", "n")
+               },
+
+               "--getbinpkgonly": {
+                       "shortopt" : "-G",
+                       "help"     : "fetch binary packages only",
+                       "type"     : "choice",
+                       "choices"  : ("True", "n")
+               },
+
                "--root": {
                 "help"   : "specify the target root filesystem for merging packages",
                 "action" : "store"
@@ -561,6 +590,21 @@ def parse_opts(tmpcmdline, silent=False):
                        "type"    : "choice",
                        "choices" :("True", "rdeps")
                },
+
+               "--usepkg": {
+                       "shortopt" : "-k",
+                       "help"     : "use binary packages",
+                       "type"     : "choice",
+                       "choices"  : ("True", "n")
+               },
+
+               "--usepkgonly": {
+                       "shortopt" : "-K",
+                       "help"     : "use only binary packages",
+                       "type"     : "choice",
+                       "choices"  : ("True", "n")
+               },
+
        }
 
        from optparse import OptionParser
@@ -606,6 +650,16 @@ def parse_opts(tmpcmdline, silent=False):
        else:
                myoptions.complete_graph = None
 
+       if myoptions.getbinpkg in ("True",):
+               myoptions.getbinpkg = True
+       else:
+               myoptions.getbinpkg = None
+
+       if myoptions.getbinpkgonly in ("True",):
+               myoptions.getbinpkgonly = True
+       else:
+               myoptions.getbinpkgonly = None
+
        if myoptions.root_deps == "True":
                myoptions.root_deps = True
 
@@ -660,6 +714,16 @@ def parse_opts(tmpcmdline, silent=False):
 
                myoptions.load_average = load_average
 
+       if myoptions.usepkg in ("True",):
+               myoptions.usepkg = True
+       else:
+               myoptions.usepkg = None
+
+       if myoptions.usepkgonly in ("True",):
+               myoptions.usepkgonly = True
+       else:
+               myoptions.usepkgonly = None
+
        for myopt in options:
                v = getattr(myoptions, myopt.lstrip("--").replace("-", "_"))
                if v: