Zac Medico [Wed, 2 Jul 2008 22:44:03 +0000 (22:44 -0000)]
Fix broken except statement. Thanks to hawking.
svn path=/main/trunk/; revision=10896
Zac Medico [Wed, 2 Jul 2008 12:04:53 +0000 (12:04 -0000)]
Fix EbuildBuildDir so that it works properly with binary packages.
svn path=/main/trunk/; revision=10895
Zac Medico [Wed, 2 Jul 2008 11:33:55 +0000 (11:33 -0000)]
Handle missing select.poll on interix by using select() to emulate a poll
object.
svn path=/main/trunk/; revision=10894
Zac Medico [Wed, 2 Jul 2008 08:21:20 +0000 (08:21 -0000)]
Remove $PORTAGE_BUILDDIR locking from portage.pkgmerge() and use
an instance of EbuildBuildDir instead.
svn path=/main/trunk/; revision=10892
Zac Medico [Wed, 2 Jul 2008 08:07:38 +0000 (08:07 -0000)]
Split out a SubProcess base class for EbuildFetcherAsync, EbuildPhase,
and BinpkgFetcherAsync.
svn path=/main/trunk/; revision=10891
Zac Medico [Wed, 2 Jul 2008 07:50:54 +0000 (07:50 -0000)]
Py3k compatibility patch by Ali Polatel <hawking@g.o>.
Don't use the format raise Exception, "string"
svn path=/main/trunk/; revision=10890
Zac Medico [Wed, 2 Jul 2008 06:45:00 +0000 (06:45 -0000)]
Fix EbuildBuild.execute() to return os.EX_OK on success.
svn path=/main/trunk/; revision=10889
Zac Medico [Wed, 2 Jul 2008 02:09:56 +0000 (02:09 -0000)]
Fix inverted buildpkgonly logic.
svn path=/main/trunk/; revision=10888
Zac Medico [Wed, 2 Jul 2008 02:01:41 +0000 (02:01 -0000)]
Split out a Binpkg class from code inside Scheduler._execute_task().
svn path=/main/trunk/; revision=10887
Zac Medico [Wed, 2 Jul 2008 01:15:44 +0000 (01:15 -0000)]
Remove debugging code from the previous commit.
svn path=/main/trunk/; revision=10886
Zac Medico [Wed, 2 Jul 2008 01:13:15 +0000 (01:13 -0000)]
* Rename existing EbuildBuild class to EbuildExecuter.
* Split more code out of Scheduler._execute_task() and use it to make
a more comprehensive EbuildBuild class.
svn path=/main/trunk/; revision=10885
Zac Medico [Tue, 1 Jul 2008 12:55:49 +0000 (12:55 -0000)]
Py3k compatibility patch #6 by Ali Polatel <hawking@g.o>.
Replace dict.has_key() calls with "in" and "not in" operators.
svn path=/main/trunk/; revision=10875
Zac Medico [Tue, 1 Jul 2008 12:53:07 +0000 (12:53 -0000)]
Py3k compatibility patch #5 by Ali Polatel <hawking@g.o>.
Replace dict.has_key() calls with "in" and "not in" operators.
svn path=/main/trunk/; revision=10874
Zac Medico [Tue, 1 Jul 2008 12:50:41 +0000 (12:50 -0000)]
Py3k compatibility patch #4 by Ali Polatel <hawking@g.o>.
Replace dict.has_key() calls with "in" and "not in" operators.
svn path=/main/trunk/; revision=10873
Zac Medico [Tue, 1 Jul 2008 12:48:57 +0000 (12:48 -0000)]
Py3k compatibility patch #3 by Ali Polatel <hawking@g.o>.
Replace dict.has_key() calls with "in" and "not in" operators.
svn path=/main/trunk/; revision=10872
Zac Medico [Tue, 1 Jul 2008 12:42:15 +0000 (12:42 -0000)]
Py3k compatibility patch #2 by Ali Polatel <hawking@g.o>.
Replace dict.has_key() calls with "in" and "not in" operators.
svn path=/main/trunk/; revision=10871
Zac Medico [Tue, 1 Jul 2008 12:38:49 +0000 (12:38 -0000)]
Py3k compatibility patch #1 by Ali Polatel <hawking@g.o>.
Replace dict.has_key() calls with "in" and "not in" operators..
svn path=/main/trunk/; revision=10870
Zac Medico [Tue, 1 Jul 2008 10:11:10 +0000 (10:11 -0000)]
Add a "prefix" keyword parameter to slot_dict_class() which controls the
prefix used when mapping attribute names from keys. Use this to change
the syntax from files["foo"] to files.foo (it's fewer characters to look
at).
svn path=/main/trunk/; revision=10869
Zac Medico [Tue, 1 Jul 2008 09:47:32 +0000 (09:47 -0000)]
Add a new BinpkgFetcherAsync class and use it to implement parellel-fetch
for --getbinpkg.
svn path=/main/trunk/; revision=10868
Zac Medico [Tue, 1 Jul 2008 08:43:10 +0000 (08:43 -0000)]
Never do realpath() on an empty string for portdbapi.porttree_root since
otherwise it can evaluate to $CWD which leads to undesireable results.
svn path=/main/trunk/; revision=10867
Zac Medico [Tue, 1 Jul 2008 08:29:41 +0000 (08:29 -0000)]
Also avoid sandbox violations in PreservedLibsRegistry.store(), for running
portage inside ebuild phases.
svn path=/main/trunk/; revision=10866
Zac Medico [Tue, 1 Jul 2008 08:24:07 +0000 (08:24 -0000)]
Handle potential errors in PreservedLibsRegistry.store() now that it can
be called via pruneNonExisting(), due to things such as portageq calls
where the user may not have write permission to the registry.
svn path=/main/trunk/; revision=10865
Zac Medico [Tue, 1 Jul 2008 08:10:17 +0000 (08:10 -0000)]
Split out a write_contents() function and a vardbapi.removeFromContents()
function. This is refactoring of code from the blocker file collision
contents handling in dblink.treewalk(). Also, there is a new
dblink._match_contents() method derived from isowner(). It returns the
exact path from the contents file that matches the given path, regardless
of path differences due to things such as symlinks.
svn path=/main/trunk/; revision=10864
Zac Medico [Tue, 1 Jul 2008 05:22:57 +0000 (05:22 -0000)]
add a call to pruneNonExisting() at the end of dbapi.vartree.PreservedLibsRegistry.__init__()
svn path=/main/trunk/; revision=10862
Zac Medico [Mon, 30 Jun 2008 22:20:35 +0000 (22:20 -0000)]
Fix typo.
svn path=/main/trunk/; revision=10861
Zac Medico [Mon, 30 Jun 2008 22:18:46 +0000 (22:18 -0000)]
Bug #230249 - Disable the "ebuild.notadded" check when not in commit mode and
running `svn list` and `svn status` calls in every package dir will be too
expensive.
svn path=/main/trunk/; revision=10860
Zac Medico [Mon, 30 Jun 2008 21:54:20 +0000 (21:54 -0000)]
Bug #230245 - Use os.path.basename() on paths returned from `svn list`
and `svn status`.
svn path=/main/trunk/; revision=10859
Zac Medico [Mon, 30 Jun 2008 21:51:19 +0000 (21:51 -0000)]
Bug #230245 - Pass the correct directory when calling `snv list` and
`svn status` since repoman supports category-level and repo-level
commits.
svn path=/main/trunk/; revision=10858
Zac Medico [Mon, 30 Jun 2008 21:13:14 +0000 (21:13 -0000)]
Add "(no inline comments)" to qualify "comments begin with #" statements.
svn path=/main/trunk/; revision=10857
Zac Medico [Mon, 30 Jun 2008 12:46:29 +0000 (12:46 -0000)]
Clear the self._task_queue to avoid duplicate parallel-fetch tasks
in --keep-going mode.
svn path=/main/trunk/; revision=10856
Zac Medico [Mon, 30 Jun 2008 12:08:16 +0000 (12:08 -0000)]
Reimplement parallel-fetch by spawning the `ebuild fetch` command for each
ebuild. The benefit of using this approach is that it can be integrated
together with parallel build scheduling that's planned. Parallel-fetch
support for binhost is not implemented yet, though it worked previously.
svn path=/main/trunk/; revision=10855
Zac Medico [Mon, 30 Jun 2008 03:18:07 +0000 (03:18 -0000)]
Avoid python-2.6 deprecation warnings for md5 and sha modules by trying
to import hashlib first and then falling back to the deprecated modules
if necessary. Thanks to ColdWind for reporting.
svn path=/main/trunk/; revision=10854
Zac Medico [Mon, 30 Jun 2008 02:34:16 +0000 (02:34 -0000)]
Rename the MergeTask class to Scheduler.
svn path=/main/trunk/; revision=10853
Zac Medico [Mon, 30 Jun 2008 00:18:56 +0000 (00:18 -0000)]
* Tweak conditionals in doebuild() to fix emerge --fetch breakage reported
by Arfrever.
* Change a couple EMERGE_FROM conditionals to use the "returnpid" parameter
instead.
svn path=/main/trunk/; revision=10852
Zac Medico [Sun, 29 Jun 2008 17:27:37 +0000 (17:27 -0000)]
Centralize select.poll() event handling in MergeTask._schedule(). This will
allow the parent process to handle output of multiple child processes
running in parllel.
svn path=/main/trunk/; revision=10851
Zac Medico [Sun, 29 Jun 2008 15:08:37 +0000 (15:08 -0000)]
Add EMERGE_FROM to the blacklisted vars in the config constructor.
svn path=/main/trunk/; revision=10850
Zac Medico [Sun, 29 Jun 2008 14:51:05 +0000 (14:51 -0000)]
* Add "fd_pipes" and "returnpid" parameters to doebuild() and pass
these into spawn calls, enabling ebuild processes to execute
asynchronously.
* Add a EbuildPhase class that's derived from the pty logging code
inside portage.spawn().
* Integrate post-phase code from spawnebuild() into EbuildBuild.execute()
so that it still gets called even though doebuild() calls execute
asynchronously.
svn path=/main/trunk/; revision=10849
Zac Medico [Sun, 29 Jun 2008 09:38:16 +0000 (09:38 -0000)]
In EbuildBuild.execute(), call doebuild() separately for each phase since
it will be easier to add asynchronous support to doebuild() if it's called
this way.
svn path=/main/trunk/; revision=10848
Zac Medico [Sun, 29 Jun 2008 08:50:36 +0000 (08:50 -0000)]
Split out a _check_build_log() function from spawnebuild().
svn path=/main/trunk/; revision=10847
Zac Medico [Sun, 29 Jun 2008 08:23:17 +0000 (08:23 -0000)]
Split out a _post_src_install_uid_fix() function from spawnebuild().
svn path=/main/trunk/; revision=10846
Zac Medico [Sun, 29 Jun 2008 08:09:58 +0000 (08:09 -0000)]
Split out a _spawn_misc_sh() function from spawnebuild().
svn path=/main/trunk/; revision=10845
Zac Medico [Sun, 29 Jun 2008 06:46:13 +0000 (06:46 -0000)]
Handle invalid atoms inside depgraph._add_pkg_deps(), to avoid an
unhandled InvalidAtom exception from dep_expand() when matching
against the vardb.
svn path=/main/trunk/; revision=10844
Zac Medico [Sun, 29 Jun 2008 04:27:57 +0000 (04:27 -0000)]
Move clean code, from the previous commit, from doebuild() to
EbuildBuild.execute() where it fits better.
svn path=/main/trunk/; revision=10843
Zac Medico [Sun, 29 Jun 2008 03:13:17 +0000 (03:13 -0000)]
Instead of calling the ebuild "clean" phase in MergeTask.merge(),
move it inside doebuild() where it can be tied into the actionmap_deps
framework.
svn path=/main/trunk/; revision=10842
Zac Medico [Sun, 29 Jun 2008 01:43:13 +0000 (01:43 -0000)]
Split out an EbuildBuildDir class to handle locking of the build dir.
svn path=/main/trunk/; revision=10841
Zac Medico [Sat, 28 Jun 2008 23:54:43 +0000 (23:54 -0000)]
Handle re.error exceptions raised from re.compile() when ACCEPT_CHOSTS
is invalid. Thanks to solar for reporting.
svn path=/main/trunk/; revision=10840
Zac Medico [Sat, 28 Jun 2008 23:32:58 +0000 (23:32 -0000)]
Make EbuildBinpkg delegate everything up to src_install() to
the EbuildBuild class.
svn path=/main/trunk/; revision=10839
Zac Medico [Sat, 28 Jun 2008 22:38:51 +0000 (22:38 -0000)]
* Remove unused EbuildBuild.pretend attribute.
* Add TODO not about asynchronous execution.
svn path=/main/trunk/; revision=10838
Zac Medico [Sat, 28 Jun 2008 22:14:25 +0000 (22:14 -0000)]
Bug #229859 - Also add atom validation to match().
svn path=/main/trunk/; revision=10837
Zac Medico [Sat, 28 Jun 2008 21:58:02 +0000 (21:58 -0000)]
Copy portageq exit code validation from has_version() to best_version().
svn path=/main/trunk/; revision=10836
Zac Medico [Sat, 28 Jun 2008 21:54:31 +0000 (21:54 -0000)]
Bug #229859 - Make portageq check atom validity when has_version() and
best_version() are called from inside the ebuild environment.
svn path=/main/trunk/; revision=10835
Zac Medico [Sat, 28 Jun 2008 09:16:08 +0000 (09:16 -0000)]
Use the EbuildMerge class instead of portage.merge().
svn path=/main/trunk/; revision=10834
Zac Medico [Sat, 28 Jun 2008 09:08:24 +0000 (09:08 -0000)]
Split out a PackageUninstall class.
svn path=/main/trunk/; revision=10833
Zac Medico [Sat, 28 Jun 2008 07:00:45 +0000 (07:00 -0000)]
* Split out an EbuildBinpkg class.
* Remove unused EbuildBuild.ldpath_mtimes attribute.
svn path=/main/trunk/; revision=10832
Zac Medico [Sat, 28 Jun 2008 06:10:23 +0000 (06:10 -0000)]
Split out an EbuildBuild class.
svn path=/main/trunk/; revision=10831
Zac Medico [Sat, 28 Jun 2008 06:06:10 +0000 (06:06 -0000)]
Fix typo.
svn path=/main/trunk/; revision=10830
Zac Medico [Sat, 28 Jun 2008 05:24:13 +0000 (05:24 -0000)]
Split out an EbuildMerge class.
svn path=/main/trunk/; revision=10829
Zac Medico [Sat, 28 Jun 2008 05:04:19 +0000 (05:04 -0000)]
* Split out a BinpkgMerge class.
* Fix typos in _get_hash_key() methods.
svn path=/main/trunk/; revision=10828
Zac Medico [Sat, 28 Jun 2008 04:20:53 +0000 (04:20 -0000)]
Split out a BinpkgFetcher class.
svn path=/main/trunk/; revision=10827
Zac Medico [Sat, 28 Jun 2008 02:53:36 +0000 (02:53 -0000)]
Split out an EbuildFetcher class.
svn path=/main/trunk/; revision=10826
Zac Medico [Sat, 28 Jun 2008 01:45:14 +0000 (01:45 -0000)]
Split the MergeTask._merge() method into 3 smaller methods. The new
methods are _execute_task() and _post_merge().
svn path=/main/trunk/; revision=10825
Zac Medico [Sat, 28 Jun 2008 01:01:42 +0000 (01:01 -0000)]
Bug #226307 - Copy come code from depgraph._iter_atoms_for_pkg() that
was used to solve bug #218854, and use it inside unmerge() when
matching sets to packages.
svn path=/main/trunk/; revision=10824
Zac Medico [Fri, 27 Jun 2008 23:42:29 +0000 (23:42 -0000)]
Fix depgraph.break_refs() to work with DependencyArg instances (or anything
else that may have a "root_config" attribute).
svn path=/main/trunk/; revision=10823
Zac Medico [Fri, 27 Jun 2008 23:34:55 +0000 (23:34 -0000)]
Remove the MergeTask._blocker_db attribute since it can just be a
local variable.
svn path=/main/trunk/; revision=10822
Zac Medico [Fri, 27 Jun 2008 23:17:56 +0000 (23:17 -0000)]
Break references from Package instances in the digraph before passing
it into the MergeTask constructor.
svn path=/main/trunk/; revision=10821
Zac Medico [Fri, 27 Jun 2008 22:53:08 +0000 (22:53 -0000)]
Pass the digraph into the MergeTask constructor. It's currently unused
but it will be useful for parallel scheduling.
svn path=/main/trunk/; revision=10820
Zac Medico [Fri, 27 Jun 2008 22:44:01 +0000 (22:44 -0000)]
Fix typo.
svn path=/main/trunk/; revision=10819
Zac Medico [Fri, 27 Jun 2008 22:26:22 +0000 (22:26 -0000)]
Add documentation for the new --keep-going option.
svn path=/main/trunk/; revision=10818
Zac Medico [Fri, 27 Jun 2008 20:58:40 +0000 (20:58 -0000)]
Generate and log eerror messages for any packages that need to be dropped
due to unsatisfied dependencies when --keep-going is enabled.
svn path=/main/trunk/; revision=10817
Zac Medico [Fri, 27 Jun 2008 08:04:12 +0000 (08:04 -0000)]
Call clear_caches() after the depgraph is out of scope, in MergeTask.merge().
svn path=/main/trunk/; revision=10812
Zac Medico [Fri, 27 Jun 2008 07:49:57 +0000 (07:49 -0000)]
Bug #12768 - Add a --keep-going option. This uses the same resume_depgraph()
function that's called for emerge --resume operations. Given the remaining
tasks, depedencies are recalculated and any tasks with unsatisfied
dependencies are automatically dropped.
svn path=/main/trunk/; revision=10811
Zac Medico [Fri, 27 Jun 2008 06:44:29 +0000 (06:44 -0000)]
Use bool() to simplify ObjectProxy.__nonzero__().
svn path=/main/trunk/; revision=10810
Zac Medico [Fri, 27 Jun 2008 04:00:48 +0000 (04:00 -0000)]
Split the --skipfirst code into a resume_depgraph() function that will
be useful for implementing a --keep-going option (bug #12768).
svn path=/main/trunk/; revision=10809
Zac Medico [Thu, 26 Jun 2008 22:05:00 +0000 (22:05 -0000)]
For brevity, and consistency with pkgcore, rename "all-installed" to just
"installed". Thanks to ferringb for the suggestion.
svn path=/main/trunk/; revision=10808
Zac Medico [Thu, 26 Jun 2008 21:36:17 +0000 (21:36 -0000)]
Call use_reduce() with matchall=1 when checking depstrings. Otherwise it's
possible for invalid deps to be ignored. Thanks to grobian for reporting.
svn path=/main/trunk/; revision=10807
Zac Medico [Thu, 26 Jun 2008 21:16:04 +0000 (21:16 -0000)]
Add "PATH" to the set of allowed pacakge metadata keys for the PackageIndex.
svn path=/main/trunk/; revision=10806
Zac Medico [Thu, 26 Jun 2008 19:34:02 +0000 (19:34 -0000)]
Fix the PermissionDenied message for color.map.
svn path=/main/trunk/; revision=10805
Zac Medico [Thu, 26 Jun 2008 19:28:29 +0000 (19:28 -0000)]
* Remove PORTAGE_LEGACY_GLOBALS hack for portage import since late
initialization of portage.settings (via ObjectProxy) allows us
to rely on being able to access the portage.exception namespace
before portage.settings is initialized.
* Use portage.settings["ROOT"] instead of portage.root to avoid
potential ObjectProxy compatibility issues.
svn path=/main/trunk/; revision=10804
Zac Medico [Thu, 26 Jun 2008 18:49:14 +0000 (18:49 -0000)]
Use settings["ROOT"] at the beginning of env_update() to avoid breakage
due to "root" being an ObjectProxy instance.
svn path=/main/trunk/; revision=10803
Zac Medico [Thu, 26 Jun 2008 18:24:34 +0000 (18:24 -0000)]
Handle KeyError from aux_get() inside dbapi._iter_match_slot() and
_iter_match_use(). Thanks to grobian for reporting.
svn path=/main/trunk/; revision=10802
Marius Mauch [Thu, 26 Jun 2008 17:11:52 +0000 (17:11 -0000)]
change default name of EverythingSet to @all-installed (bug #229467)
svn path=/main/trunk/; revision=10801
Zac Medico [Thu, 26 Jun 2008 06:43:47 +0000 (06:43 -0000)]
Also use a separate proxy type for portage.mtimedb since it's independent
from the portdb and settings.
svn path=/main/trunk/; revision=10800
Zac Medico [Thu, 26 Jun 2008 06:01:30 +0000 (06:01 -0000)]
Use a separate proxy type to trigger portage.portdb initialization separately
from the rest of the legacy global variables. This can be useful since
sometimes the other variables are needed while the portdb is not.
svn path=/main/trunk/; revision=10799
Zac Medico [Thu, 26 Jun 2008 05:28:04 +0000 (05:28 -0000)]
Implement lazy initialization of global "portdb", "settings" and other
variables that pollute the portage module. This works by initializing
the global variables with dummy "proxy" objects that serve as a means
to trigger lazy initialization. As soon as the first attribute access
or method call occurs on one of the proxy objects, it causes all the
proxy objects to be replaced with the real ones.
It's possible for an unsupported attribute access or method call on a
proxy object to trigger an error, leading to breakage. However, hopefully
these such corner cases will negligible (only time will tell).
svn path=/main/trunk/; revision=10798
Zac Medico [Thu, 26 Jun 2008 00:49:10 +0000 (00:49 -0000)]
Make PackageIndex use SlotDict for package metadata storage. The set of
allowed keys is passed into the PackageIndex constructor (normal dict
instances will be used if the set of keys is not passed in for some
reason). A SlotDict.allowed_keys attribute now provides access to a
frozenset of allowed keys.
svn path=/main/trunk/; revision=10797
Zac Medico [Wed, 25 Jun 2008 23:10:28 +0000 (23:10 -0000)]
Use SlotDict where appropriate in binarytree._populate().
svn path=/main/trunk/; revision=10796
Zac Medico [Wed, 25 Jun 2008 22:54:17 +0000 (22:54 -0000)]
Fix typo.
svn path=/main/trunk/; revision=10795
Zac Medico [Wed, 25 Jun 2008 22:49:32 +0000 (22:49 -0000)]
Add docstring to slot_dict_class().
svn path=/main/trunk/; revision=10794
Zac Medico [Wed, 25 Jun 2008 22:39:42 +0000 (22:39 -0000)]
Fix typo.
svn path=/main/trunk/; revision=10793
Zac Medico [Wed, 25 Jun 2008 22:39:00 +0000 (22:39 -0000)]
Fix KeyError constructor style.
svn path=/main/trunk/; revision=10792
Zac Medico [Wed, 25 Jun 2008 22:37:43 +0000 (22:37 -0000)]
Fix indentation.
svn path=/main/trunk/; revision=10791
Zac Medico [Wed, 25 Jun 2008 22:36:19 +0000 (22:36 -0000)]
Add a generic portage.cache.mappings.slot_dict_class() function which
generates mapping classes that behave similar to a dict but store
values as object attributes that are allocated via __slots__. Instances
of these objects have a smaller memory footprint than a normal dict object.
These classes are used to reduce the memory footprint of the dbapi.aux_get()
caches and the Package.metadata attribute.
svn path=/main/trunk/; revision=10790
Zac Medico [Wed, 25 Jun 2008 20:47:38 +0000 (20:47 -0000)]
Swap out the whole Package.root_config attribute inside depgraph.break_refs().
svn path=/main/trunk/; revision=10789
Zac Medico [Wed, 25 Jun 2008 20:08:35 +0000 (20:08 -0000)]
Clarify EverythingSet.description a bit. Thanks to Necoro.
svn path=/main/trunk/; revision=10787
Zac Medico [Wed, 25 Jun 2008 20:06:11 +0000 (20:06 -0000)]
Clarify EverythingSet.description a bit. Thanks to Necoro.
svn path=/main/trunk/; revision=10786
Zac Medico [Wed, 25 Jun 2008 19:45:07 +0000 (19:45 -0000)]
Fix Atom -> str breakage in depgraph.saveNomergeFavorites(). Thanks to
grobian and darsiide.
svn path=/main/trunk/; revision=10785
Zac Medico [Wed, 25 Jun 2008 12:41:22 +0000 (12:41 -0000)]
Fix repoman breakage wrt _PackageMetadataWrapper._keys values.
svn path=/main/trunk/; revision=10783
Zac Medico [Wed, 25 Jun 2008 10:06:42 +0000 (10:06 -0000)]
After the depgraph caches the vardb state in a FakeVartree, to make
some room on the heap, clear the vardbapi caches.
svn path=/main/trunk/; revision=10782
Zac Medico [Wed, 25 Jun 2008 08:42:02 +0000 (08:42 -0000)]
Implement __contains__, pop() and clear() for Package.metadata attributes.
svn path=/main/trunk/; revision=10780
Zac Medico [Wed, 25 Jun 2008 07:49:58 +0000 (07:49 -0000)]
Use os.listdir() instead of portage.listdir() to avoid needless caching
of directories that only need to be listed once.
svn path=/main/trunk/; revision=10779