Zac Medico [Sun, 7 Jul 2013 20:23:00 +0000 (13:23 -0700)]
test_doebuild_fd_pipes: test pkg_info
Zac Medico [Sun, 7 Jul 2013 19:48:00 +0000 (12:48 -0700)]
doebuild: support 'nofetch' phase
Zac Medico [Sun, 7 Jul 2013 19:34:34 +0000 (12:34 -0700)]
doebuild: handle tmpdir / returnpid interaction
Zac Medico [Sun, 7 Jul 2013 19:10:34 +0000 (12:10 -0700)]
calc_depclean: use runtime_slot_op priorities
Zac Medico [Sun, 7 Jul 2013 18:14:09 +0000 (11:14 -0700)]
Use sys.__std* streams for fileno().
Zac Medico [Sun, 7 Jul 2013 03:22:50 +0000 (20:22 -0700)]
MergeProcess: flush stderr for traceback
Zac Medico [Sun, 7 Jul 2013 02:48:38 +0000 (19:48 -0700)]
DoebuildFdPipesTestCase: fix docstring
Zac Medico [Sun, 7 Jul 2013 02:41:37 +0000 (19:41 -0700)]
doebuild: fix fd_pipes support, bug #475812
The fd_pipes was previously unsupported with returnpid=False. Now it's
fixed to pass fd_pipes down to the appropriate places.
Zac Medico [Sun, 7 Jul 2013 02:16:56 +0000 (19:16 -0700)]
ForkProcess: flush stderr for traceback
Zac Medico [Sat, 6 Jul 2013 22:06:28 +0000 (15:06 -0700)]
doebuild: deprecate returnpid
This case is not supported, since it bypasses the EbuildPhase class
which implements important functionality (including post phase hooks
and IPC for things like best/has_version and die).
Zac Medico [Sat, 6 Jul 2013 21:52:09 +0000 (14:52 -0700)]
_ignore_satisfied_buildtime: tweak optional
Zac Medico [Sat, 6 Jul 2013 21:45:04 +0000 (14:45 -0700)]
depgraph: tweak slot-operator merge order
This handles circular DEPEND/RDEPEND with one := operator, so that when
both deps are already satisfied by installed packages, the := dep is
given higher priority in merge order.
Zac Medico [Sat, 6 Jul 2013 19:23:45 +0000 (12:23 -0700)]
man/portage.5: clarify package.provided virtuals
Zac Medico [Sat, 6 Jul 2013 01:41:01 +0000 (18:41 -0700)]
doebuild: cleanup returnpid support, bug #475812
The returnpid parameter is no longer deprecated, since it's useful for
API consumers that wish to use the fd_pipes parameter (the fd_pipes
parameter is only respected when returnpid is True).
Zac Medico [Sat, 6 Jul 2013 00:09:30 +0000 (17:09 -0700)]
Disable global spawned_pids (avoid memory leak)
It used to be necessary for API consumers to remove pids from the
global spawned_pids, since otherwise it would accumulate a pids
endlessly. Now, spawned_pids is just an empty dummy list, so for
backward compatibility, ignore ValueError for removal on non-existent
items.
Zac Medico [Fri, 5 Jul 2013 05:33:52 +0000 (22:33 -0700)]
emerge --info: KeyError with ROOT, bug #475778
The KeyError was triggered when calling vardbapi.aux_get() on a
vardbapi instance from the wrong ROOT.
Zac Medico [Tue, 2 Jul 2013 17:15:18 +0000 (10:15 -0700)]
_copyxattr: report attribute name in error
The specific attribute name is often relevant. For example, an issue
with system.nfs4_acl was reported in bug #475496.
Zac Medico [Sat, 29 Jun 2013 04:21:38 +0000 (21:21 -0700)]
repoman: fix PORTDIR{,_OVERLAY} interference
Ensure that the repository corresponding to $PWD overrides a
repository of the same name referenced by the existing PORTDIR
or PORTDIR_OVERLAY settings (broken since commit
eab5b86c2d45765ea718e1e9488dde43c9bbac7e).
Zac Medico [Fri, 28 Jun 2013 01:54:20 +0000 (18:54 -0700)]
RepoConfigLoader: support repos.conf directory
Zac Medico [Fri, 28 Jun 2013 01:45:42 +0000 (18:45 -0700)]
getconfig: share recursion code with grablines
Zac Medico [Thu, 27 Jun 2013 21:31:49 +0000 (14:31 -0700)]
util.listir: simplify and optimize
Use zip() to simplify, and fix "list = list + foo" usage to use
list.extend() or equivalent.
Zac Medico [Thu, 27 Jun 2013 19:38:39 +0000 (12:38 -0700)]
cacheddir: disable cache (avoid memory leak)
The global dircache is no longer supported, since it could
be a memory leak for API consumers. Any cacheddir callers
should use higher-level caches instead, when necessary.
Arfrever Frehtes Taifersar Arahesis [Wed, 26 Jun 2013 03:31:43 +0000 (05:31 +0200)]
Update comments.
Zac Medico [Tue, 25 Jun 2013 19:24:40 +0000 (12:24 -0700)]
repoman: simplify repo location comparison
Zac Medico [Tue, 25 Jun 2013 18:50:01 +0000 (11:50 -0700)]
repoman: canonical path for repo location compare
Zac Medico [Tue, 25 Jun 2013 07:48:18 +0000 (00:48 -0700)]
Use /proc/self/fd for solaris compat, bug #474536
Zac Medico [Tue, 25 Jun 2013 03:29:10 +0000 (20:29 -0700)]
repoman: dedent generated repos.conf
This fixes a "File contains no section headers" error raised by
configparser with Python 2.
Zac Medico [Tue, 25 Jun 2013 03:26:15 +0000 (20:26 -0700)]
repoman: samefile for repo location comparison
This ensures correct behavior with symlinks.
Arfrever Frehtes Taifersar Arahesis [Tue, 25 Jun 2013 02:21:07 +0000 (04:21 +0200)]
Stop setting PORTDIR / PORTDIR_OVERLAY in repoman.
Arfrever Frehtes Taifersar Arahesis [Mon, 24 Jun 2013 23:42:37 +0000 (01:42 +0200)]
portage.repository.config.RepoConfigLoader: Support io.StringIO in paths argument.
Arfrever Frehtes Taifersar Arahesis [Mon, 24 Jun 2013 22:02:39 +0000 (00:02 +0200)]
portage.repository.config.RepoConfigLoader: Add __contains__().
Arfrever Frehtes Taifersar Arahesis [Mon, 24 Jun 2013 21:45:31 +0000 (23:45 +0200)]
portage.repository.config.RepoConfigLoader: Fix __delitem__() and unimplement __setitem__().
Zac Medico [Mon, 24 Jun 2013 21:21:18 +0000 (14:21 -0700)]
repoman: re-use repoman_settings.repositories
This avoids constructing a separate instance for each profile.
Arfrever Frehtes Taifersar Arahesis [Mon, 24 Jun 2013 20:00:15 +0000 (22:00 +0200)]
portage.package.ebuild.config.config(): Add repositories parametre.
Arfrever Frehtes Taifersar Arahesis [Mon, 24 Jun 2013 19:44:30 +0000 (21:44 +0200)]
portage.repository.config.RepoConfigLoader: Add __setitem__() and __delitem__().
Arfrever Frehtes Taifersar Arahesis [Mon, 24 Jun 2013 19:37:48 +0000 (21:37 +0200)]
Improve portage.repository.config.RepoConfig.__repr__() for location of DEFAULT repository.
Zac Medico [Mon, 24 Jun 2013 19:24:39 +0000 (12:24 -0700)]
RepoConfigLoader: fix bug #474578
Vladimir Romanov [Mon, 24 Jun 2013 19:09:24 +0000 (12:09 -0700)]
Add man/ru/color.map.5
Zac Medico [Mon, 24 Jun 2013 18:56:44 +0000 (11:56 -0700)]
RepoConfigLoader: don't use ValueError to warn
Handling ValueError can hide tracebacks from unexpected bugs,
so avoid it.
Arfrever Frehtes Taifersar Arahesis [Mon, 24 Jun 2013 17:04:14 +0000 (19:04 +0200)]
Print error when section name set in repos.conf differs from name set inside repository.
Arfrever Frehtes Taifersar Arahesis [Mon, 24 Jun 2013 09:28:11 +0000 (11:28 +0200)]
Update notes about aliases, eclass-overrides and masters attributes in repos.conf and layout.conf.
Zac Medico [Mon, 24 Jun 2013 04:29:25 +0000 (21:29 -0700)]
util/__init__.py: enable unicode_literals
Unicode literals are nice for uniformity, but in this file it's more
complex than usual, since Python 2's shlex does not support unicode.
So, use _native_string() for compatibility in this case.
Zac Medico [Mon, 24 Jun 2013 02:27:37 +0000 (19:27 -0700)]
getconfig: convert source IOError to ParseError
Zac Medico [Sun, 23 Jun 2013 22:56:58 +0000 (15:56 -0700)]
Use /proc/<pid>/fd for solaris compat, bug 474536
Zac Medico [Sat, 22 Jun 2013 19:33:50 +0000 (12:33 -0700)]
Python 3.1: pass bytes to Popen
For Python 3.1, it's possible to pass bytes to Popen as long as the
executable has an absolute path, since otherwise we would trigger a
TypeError in os._execvp (see http://bugs.python.org/issue8513).
Note that Python <=3.1.3 produces the following message:
TypeError: expected an object with the buffer interface
Later 3.1.x releases produce a different message:
TypeError: startswith first arg must be bytes or a tuple of bytes, not str
The difference in messages is due to os.path.join() implementation
changes, but both errors are triggered by the same underlying bug in
os._execvp() which was fixed by using fsencode() in this hunk:
--- a/Lib/os.py
+++ b/Lib/os.py
@@ -355,7 +355,11 @@ def _execvpe(file, args, env=None):
return
last_exc = saved_exc = None
saved_tb = None
- for dir in get_exec_path(env):
+ path_list = get_exec_path(env)
+ if name != 'nt':
+ file = fsencode(file)
+ path_list = map(fsencode, path_list)
+ for dir in path_list:
fullname = path.join(dir, file)
Zac Medico [Sat, 22 Jun 2013 17:49:36 +0000 (10:49 -0700)]
find_binary: return bytes when input is bytes
Zac Medico [Sat, 22 Jun 2013 06:37:12 +0000 (23:37 -0700)]
emerge-webrsync: fetch_file rm absolute path
Zac Medico [Sat, 22 Jun 2013 06:14:35 +0000 (23:14 -0700)]
emerge-delta-webrsync: clean TMPDIR more
Zac Medico [Sat, 22 Jun 2013 05:53:41 +0000 (22:53 -0700)]
emerge-delta-webrsync: check full snapshot sig
This patch merges a lot of code from emerge-webrsync, so that the same
code is used when it's necessary to download a full snapshot and check
the signature. This will fix bug #286373.
Zac Medico [Sat, 22 Jun 2013 01:15:36 +0000 (18:15 -0700)]
FEATURES=xattr: wrap install binary, bug #465000
The install wrapper is added to PATH only when FEATURES=xattr is
enabled, and the wrapper respects PORTAGE_XATTR_EXCLUDE.
Zac Medico [Sat, 22 Jun 2013 00:29:42 +0000 (17:29 -0700)]
install.py: add bash wrapper for python script
The wrapper is needed in order to support the PORTAGE_PYTHON variable,
and also safe python imports (see bug #469338).
Zac Medico [Fri, 21 Jun 2013 23:07:31 +0000 (16:07 -0700)]
install.py: use surrogateescape for Python >=3.2
We can't trust that the filesystem encoding (locale dependent)
correctly matches the arguments, so use surrogateescape to
pass through the original argv bytes for Python 3.
Since Python <3.2 does not support bytes in Popen args, trust
the locale in that case.
Zac Medico [Fri, 21 Jun 2013 22:23:32 +0000 (15:23 -0700)]
Normalize EPREFIX more.
Zac Medico [Fri, 21 Jun 2013 22:09:52 +0000 (15:09 -0700)]
install.py: add note about parse_known_args
Zac Medico [Fri, 21 Jun 2013 21:24:36 +0000 (14:24 -0700)]
install.py: Python 2.6 and 3.1 optparse compat
Anthony Basile [Fri, 21 Jun 2013 20:41:17 +0000 (13:41 -0700)]
install.py wrapper for xattrs, bug #465000
Zac Medico [Thu, 20 Jun 2013 10:11:37 +0000 (03:11 -0700)]
Decode sys.argv with surrogateescape for Python 3
With Python 3, the surrogateescape encoding error handler makes it
possible to access the original argv bytes, which can be useful
if their actual encoding does no match the filesystem encoding.
Zac Medico [Thu, 20 Jun 2013 07:05:34 +0000 (00:05 -0700)]
chpathtool: fix mime_type TypeError, bug #473892
Zac Medico [Thu, 20 Jun 2013 01:23:21 +0000 (18:23 -0700)]
emirrordist: wget --no-check-certificate
Use --no-check-certificate since Manifest digests should provide
enough security, and certificates can be self-signed or whatnot.
Zac Medico [Thu, 20 Jun 2013 00:00:58 +0000 (17:00 -0700)]
Test cross-prefix best/has_version --host-root.
Zac Medico [Wed, 19 Jun 2013 23:41:12 +0000 (16:41 -0700)]
Fix cross-prefix bugs, and test.
* Fix create_trees to correctly handle the case where ROOT=/ for two
different EPREFIX offsets.
* For best/has_version, handle the case where ROOT=/ for bug prefixes,
though each has a different EPREFIX offset.
* Use portage.const.EPREFIX for default EMERGE_LOG_DIR offset, which
is analogous to existing un-prefixed behavior.
* Use portage.const.EPREFIX for default PORTAGE_CONFIGROOT, which is
analogous to existing un-prefixed behavior.
* Add cross-prefix cases to emerge tests, including chpathtool for
binpkgs.
Zac Medico [Wed, 19 Jun 2013 21:07:17 +0000 (14:07 -0700)]
depgraph: fix installed/newuse logic more
The matched_pkgs_ignore_use logic, introduced in commit
dc8d70479dfb54a1f2561ba3fe82d7a62d97964f, is questionable because we
need to ensure that an installed package can be selected if there are
no other available packages that match a given USE-dep.
Zac Medico [Wed, 19 Jun 2013 20:05:28 +0000 (13:05 -0700)]
depgraph: fix --exclude/--newuse interaction
This fixes a case where an installed package could possibly be rejected
due to --newuse, even though it was selected by --exclude. The problem
may have been triggered randomly by differences in graph traversal
order, which may have been affected by hash randomization (enabled by
default since Python 3.3).
Zac Medico [Wed, 19 Jun 2013 19:21:44 +0000 (12:21 -0700)]
RepoConfigLoader: fix last commit
Zac Medico [Wed, 19 Jun 2013 19:10:48 +0000 (12:10 -0700)]
RepoConfigLoader: handle equal priorities
Include repo.name in sort key, for predictable sorting even when
priorities are equal.
Zac Medico [Wed, 19 Jun 2013 18:51:34 +0000 (11:51 -0700)]
RepoConfig: safe config for repoman/egencache
For repoman/egencache, omit local configuration overrides involving
aliases, eclass-overrides, and masters.
Zac Medico [Wed, 19 Jun 2013 18:02:21 +0000 (11:02 -0700)]
RepoConfigLoader: handle invalid repos.conf more
Zac Medico [Wed, 19 Jun 2013 05:55:32 +0000 (22:55 -0700)]
RepoConfigLoader: initialize missing_repo_names
Zac Medico [Wed, 19 Jun 2013 04:49:36 +0000 (21:49 -0700)]
RepoConfigLoader: return early for parse error
The configparser state is unreliable (prone to odd quirky exceptions)
after is has thrown an error, so just return early.
Zac Medico [Wed, 19 Jun 2013 03:57:52 +0000 (20:57 -0700)]
RepoConfigLoader: handle configparser.Error
Zac Medico [Wed, 19 Jun 2013 03:42:33 +0000 (20:42 -0700)]
RepoConfigLoader: pass source arg to read_file
The 'source' keyword argument is needed since otherwise ConfigParser
may throw a TypeError because it assumes f.name is a native string
rather than binary when constructing error messages.
Zac Medico [Wed, 19 Jun 2013 02:19:05 +0000 (19:19 -0700)]
RepoConfigLoader: refer to make.globals in comment
Zac Medico [Wed, 19 Jun 2013 01:58:15 +0000 (18:58 -0700)]
RepoConfigLoader: suppress /usr/portage warning
Suppress warnings for the make.defaults PORTDIR setting if we have an
existing main-repo defined in repos.conf.
Zac Medico [Tue, 18 Jun 2013 21:20:35 +0000 (14:20 -0700)]
RepoConfigLoader: main-repo priority before sort
Ruud Koolen [Mon, 17 Jun 2013 07:21:41 +0000 (09:21 +0200)]
Add cross-prefix support
This patch series adds support for using a portage installed in one prefix
to build packages with a different prefix.
The current portage has a single EPREFIX variable specifying both the prefix
of the portage installation, and the prefix of the packages portage is
building. This patch series splits it into two parts: the
portage.const.EPREFIX variable specifying the prefix of the portage
installation, used for constructing the PATH as well as the paths to files
belonging to a portage installation itself rather than a target root; and the
EPREFIX setting in config instances, specifying the prefix of the
to-be-built packages and being used for almost everything else.
The EPREFIX config setting defaults to const.EPREFIX, but can be overridden
by the EPREFIX environment variable, as well as the emerge --prefix option.
This allows one to install systems with different prefixes using
`EPREFIX=/foo emerge @system`, though some unrelated changes need to happen
elsewhere first in order to make that a reality.
Ruud Koolen (3):
Distinguish between portage prefix and package prefix
Based GLOBAL_CONFIG_PATH and DEPCACHE_PATH on portage prefix
Pick up EPREFIX environment variable
Zac Medico [Tue, 18 Jun 2013 17:57:20 +0000 (10:57 -0700)]
portage.5: repos.conf: document priority
Zac Medico [Tue, 18 Jun 2013 17:46:59 +0000 (10:46 -0700)]
RepoConfigLoader: fix main-repo priority default
This ensures that the main-repo default priority is set to -1000
in all cases where it's appropriate.
Zac Medico [Tue, 18 Jun 2013 16:35:23 +0000 (09:35 -0700)]
portage.5: repos.conf: document main-repo
Zac Medico [Tue, 18 Jun 2013 16:13:43 +0000 (09:13 -0700)]
RepoConfigLoader: delete repo if location missing
Zac Medico [Tue, 18 Jun 2013 15:48:16 +0000 (08:48 -0700)]
RootConfig.update: call delattr when appropriate
Zac Medico [Tue, 18 Jun 2013 14:58:52 +0000 (07:58 -0700)]
RootConfig: mtimedb AttributeError, bug #473710
Zac Medico [Mon, 17 Jun 2013 05:59:02 +0000 (22:59 -0700)]
action_build: remove useless --ask autoclean
This autoclean invocation would should have no effect anyway, unless
the vdb happens to be in an inconsistent state due to a previously
interrupted emerge (relatively rare).
Zac Medico [Sun, 16 Jun 2013 01:22:31 +0000 (18:22 -0700)]
Show blocker parents for non slot-conflict pkgs.
Show parents for packages involved in blocker conflicts but not
directly involved in slot conflicts, since this information may be
helpful for troubleshooting blocker conflicts. This information had
been hidded when there were unrelated simultaneous slot conflicts,
since commit
77b651300731ec007cd535a83b8ee9a898602783.
Zac Medico [Sat, 15 Jun 2013 23:33:36 +0000 (16:33 -0700)]
run_action: use emerge_config attrs, not locals
Zac Medico [Sat, 15 Jun 2013 00:11:50 +0000 (17:11 -0700)]
Show unevaluated atom in blocker parent display.
Zac Medico [Thu, 13 Jun 2013 18:53:57 +0000 (11:53 -0700)]
emerge --autounmask-write: chk_updated_cfg_files
Instead of suggesting to call dispatch-conf, call chk_updated_cfg_files
in order to display a config update message when appropriate.
Zac Medico [Thu, 13 Jun 2013 00:14:37 +0000 (17:14 -0700)]
man/make.conf.5: mention RSYNC_PROXY
Zac Medico [Mon, 10 Jun 2013 04:01:26 +0000 (21:01 -0700)]
_emerge_config: simplify __getitem__
Zac Medico [Mon, 10 Jun 2013 03:50:16 +0000 (20:50 -0700)]
_emerge_config: implement __iter__
Zac Medico [Mon, 10 Jun 2013 00:50:07 +0000 (17:50 -0700)]
dep_check: remove redundant list copy
There's no need to copy the list before calling dep_wordreduce, since
dep_wordreduce copies the list internally.
Zac Medico [Sun, 9 Jun 2013 23:29:09 +0000 (16:29 -0700)]
man/portage.5: remove /etc/make.conf references
Since /etc/portage/make.conf supersedes /etc/make.conf, there's no need
to mention /etc/make.conf here anymore (it's still mentioned in
make.conf(5) though).
Zac Medico [Sun, 9 Jun 2013 01:17:34 +0000 (18:17 -0700)]
emerge_main: call portdbapi destructors
Zac Medico [Sun, 9 Jun 2013 00:22:50 +0000 (17:22 -0700)]
match_from_list: =* op with revision, bug #467826
Zac Medico [Sat, 8 Jun 2013 20:45:25 +0000 (13:45 -0700)]
emerge_main: hold large objects in emerge_config
This allows emerge_main to avoid having direct local references to
large local objects (like "settings" and "trees"), making it easier to
ensure that stale objects can be garbage collected when other functions
refresh the config with calls to load_emerge_config(). This will be
much more flexible than the "gc_locals" approach that was introduce in
commit
e9fd283aedf54e2effc73f4157524fe9a26993c0.
Zac Medico [Sat, 8 Jun 2013 11:47:01 +0000 (04:47 -0700)]
emerge --metadata/regen: flush portdbapi cache
Zac Medico [Sat, 8 Jun 2013 11:08:47 +0000 (04:08 -0700)]
close_portdbapi_caches: portage.db atexit hook
The python interpreter does _not_ guarantee that destructors are
called for objects that remain when the interpreter exits, so we
use an atexit hook to call destructors for any global portdbapi
instances that may have been constructed.
Zac Medico [Sat, 8 Jun 2013 05:47:48 +0000 (22:47 -0700)]
porttree._dummy_list: fix infinite recursion
Zac Medico [Sat, 8 Jun 2013 02:48:51 +0000 (19:48 -0700)]
_iter_match_use: construct _pkg_str instances
Now _match_use does not have to construct them itself.
Zac Medico [Sat, 8 Jun 2013 01:32:01 +0000 (18:32 -0700)]
cache/template.py: call self.sync() from __del__
This allows portdbapi.portdbapi_instances to be eliminated, which is
nice because we no longer has to be so careful to avoid memory leaks
involving this variable. It was not just annoying for portage
internals, but also for any API consumers that needed to create/destroy
many portdbapi instances.
Arfrever Frehtes Taifersar Arahesis [Fri, 7 Jun 2013 20:41:28 +0000 (22:41 +0200)]
portage.dbapi.dbapi._match_use(): Use _emerge.Package.Package._iuse.get_real_flag().
It fixes support for USE aliases in:
best_version
has_version
emerge --keep-going
emerge --resume