summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-08-01 19:58:52 +0000
committerZac Medico <zmedico@gentoo.org>2009-08-01 19:58:52 +0000
commit45e21cba91318dd00b93aebfeafe86e4e836743a (patch)
treed263ebf26c7194767c931476b744dcd03e958bea
parent8d280b019ca49ef855d53c389be761c1a9a1eb90 (diff)
downloadportage-45e21cba91318dd00b93aebfeafe86e4e836743a.tar.gz
portage-45e21cba91318dd00b93aebfeafe86e4e836743a.tar.bz2
portage-45e21cba91318dd00b93aebfeafe86e4e836743a.zip
Add support for --usepkg=n so that it's possible to disable it on
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
-rw-r--r--man/emerge.18
-rw-r--r--pym/_emerge/help.py8
-rw-r--r--pym/_emerge/main.py74
3 files changed, 77 insertions, 13 deletions
diff --git a/man/emerge.1 b/man/emerge.1
index 45cf95155..47d1efafd 100644
--- a/man/emerge.1
+++ b/man/emerge.1
@@ -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
diff --git a/pym/_emerge/help.py b/pym/_emerge/help.py
index 4c4525a4d..448ef1adf 100644
--- a/pym/_emerge/help.py
+++ b/pym/_emerge/help.py
@@ -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."
diff --git a/pym/_emerge/main.py b/pym/_emerge/main.py
index fbdcc58f5..ca3857051 100644
--- a/pym/_emerge/main.py
+++ b/pym/_emerge/main.py
@@ -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:
@@ -421,6 +430,12 @@ def insert_optional_args(args):
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: