Zac Medico [Tue, 3 Jun 2008 20:44:29 +0000 (20:44 -0000)]
Make PackagesSystemSet.description refer to the real profile rather than
/etc/portage/profile when possible.
svn path=/main/trunk/; revision=10561
Zac Medico [Tue, 3 Jun 2008 20:37:11 +0000 (20:37 -0000)]
Avoid an unhandled IndexError thrown from the PackagesSystemSet constructor
when neither /etc/make.profile nor /etc/portage/profile exist.
svn path=/main/trunk/; revision=10560
Zac Medico [Tue, 3 Jun 2008 20:11:00 +0000 (20:11 -0000)]
Fix regex for compatibility with the regex implementation from FreeBSD's
libc (used by bash on FreeBSD). Thanks to Alexis Ballier <aballier@g.o>
for the patch.
svn path=/main/trunk/; revision=10558
Zac Medico [Tue, 3 Jun 2008 09:38:56 +0000 (09:38 -0000)]
Tweak the installed masked code from bug #223447 so that it less noisy
by suppressing masking messages for packages that haven't been pulled
into the current dependency graph.
svn path=/main/trunk/; revision=10553
Zac Medico [Tue, 3 Jun 2008 06:51:49 +0000 (06:51 -0000)]
Fix typo.
svn path=/main/trunk/; revision=10552
Zac Medico [Tue, 3 Jun 2008 06:50:32 +0000 (06:50 -0000)]
When pruning the digests to optimize parallel-fetch, use a separate dict
so that the original digests are still available if a file needs to be
downloaded.
svn path=/main/trunk/; revision=10551
Zac Medico [Tue, 3 Jun 2008 05:41:32 +0000 (05:41 -0000)]
Use float mtime instead of int for finer granularity in vardbapi.match()
cache staleness checks.
svn path=/main/trunk/; revision=10550
Zac Medico [Tue, 3 Jun 2008 04:04:14 +0000 (04:04 -0000)]
Add modification threshold for BlockerCache.flush(), to avoid wasteful IO.
svn path=/main/trunk/; revision=10549
Zac Medico [Tue, 3 Jun 2008 03:45:58 +0000 (03:45 -0000)]
Fix vardbapi.flush_cache() so that it only updates the cache when the
number of uncached packages reaches a certain threshold (currently 5).
The cache file can be several megabytes in size, so updating it for
every vdb change is wasteful.
svn path=/main/trunk/; revision=10548
Zac Medico [Tue, 3 Jun 2008 02:24:40 +0000 (02:24 -0000)]
Add support for a PORTAGE_RO_DISTDIRS variable. When a given file does not
exist in DISTDIR, search for the file in this list of directories. Search
order is from left to right. Note that the current implementation works by
creating a symlink inside DISTDIR, but that may change in the future.
svn path=/main/trunk/; revision=10547
Zac Medico [Tue, 3 Jun 2008 01:41:09 +0000 (01:41 -0000)]
Don't unset PORTAGE_BINPKG_FILE because it's readonly.
svn path=/main/trunk/; revision=10546
Zac Medico [Sun, 1 Jun 2008 18:28:04 +0000 (18:28 -0000)]
Filter PORTAGE_BINPKG_FILE in save_ebuild_env().
svn path=/main/trunk/; revision=10541
Zac Medico [Sun, 1 Jun 2008 08:33:00 +0000 (08:33 -0000)]
Fix typo.
svn path=/main/trunk/; revision=10538
Zac Medico [Sun, 1 Jun 2008 04:58:37 +0000 (04:58 -0000)]
Mention masked packages in another --resume message.
svn path=/main/trunk/; revision=10535
Zac Medico [Sun, 1 Jun 2008 04:50:27 +0000 (04:50 -0000)]
Reference depgraph.UnsatisfiedResumeDep instead of mydepgraph since the
latter can trigger an UnboundLocalError in some cases (^C for example).
svn path=/main/trunk/; revision=10533
Zac Medico [Sun, 1 Jun 2008 04:47:01 +0000 (04:47 -0000)]
Update the --skipfirst dropped packages warning to mention "masking"
in addition to unsatisfied dependencies.
svn path=/main/trunk/; revision=10532
Zac Medico [Sun, 1 Jun 2008 04:35:51 +0000 (04:35 -0000)]
Update the UnsatisfiedResumeDep display to distinguish masked packages
from those with unsatisfied dependencies.
svn path=/main/trunk/; revision=10529
Zac Medico [Sun, 1 Jun 2008 04:27:55 +0000 (04:27 -0000)]
Revert changes wrt argument atoms in the previous commit since it's not
really useful.
svn path=/main/trunk/; revision=10528
Zac Medico [Sun, 1 Jun 2008 01:37:34 +0000 (01:37 -0000)]
Make --skipfirst tolerate masked packages by dropping them (similar to
how it would drop a package that has an unsatisfied dependency).
svn path=/main/trunk/; revision=10526
Zac Medico [Sun, 1 Jun 2008 01:27:21 +0000 (01:27 -0000)]
Fix EditablePackageSet.update() to create Atom instances when necessary.
svn path=/main/trunk/; revision=10525
Zac Medico [Sat, 31 May 2008 23:10:14 +0000 (23:10 -0000)]
Make PackageSet._setAtoms() use existing Atom instances when available.
svn path=/main/trunk/; revision=10523
Zac Medico [Sat, 31 May 2008 20:02:58 +0000 (20:02 -0000)]
Fix create_world_atom() to take a Package instance in it's arguments.
svn path=/main/trunk/; revision=10521
Zac Medico [Sat, 31 May 2008 09:35:51 +0000 (09:35 -0000)]
Add some isvalidatom() test cases with "null" and missing category.
svn path=/main/trunk/; revision=10519
Zac Medico [Sat, 31 May 2008 09:24:01 +0000 (09:24 -0000)]
Fix TypeError: 'tuple' object does not support item assignment
svn path=/main/trunk/; revision=10518
Zac Medico [Sat, 31 May 2008 09:11:25 +0000 (09:11 -0000)]
* Tweak isvalidatom() to treat "null" category as valid, but missing category
as invalid (previously both where treated as invalid).
* Fix a spot inside emerge's unmerge() function that sometimes generates
invalid atoms by adding an unnecessary "=" to the front. Even when in
cases that resulted in a valid atom here, adding the "=" was redundant
because dep_expand() does that automatically now (for backward compat).
svn path=/main/trunk/; revision=10516
Zac Medico [Sat, 31 May 2008 02:06:01 +0000 (02:06 -0000)]
Clean up reference to parts of the first graph for --skipfirst.
svn path=/main/trunk/; revision=10514
Zac Medico [Sat, 31 May 2008 01:54:11 +0000 (01:54 -0000)]
Optimize the new --skipfirst code so that in only has to build
a new depgraph one time when there are unsatisfied deps. This
works by recursively traversing the digraph to remove the parent
packages whose deps become unsatisfied when their dependencies are
pruned from the mergelist.
svn path=/main/trunk/; revision=10513
Zac Medico [Fri, 30 May 2008 23:46:08 +0000 (23:46 -0000)]
Fix PackageSet.findAtomForPackage() to find the most specific atom since
it can affect behavior when deciding whether or not to add a slot atom to
the world file.
svn path=/main/trunk/; revision=10511
Zac Medico [Fri, 30 May 2008 21:14:32 +0000 (21:14 -0000)]
Now that dbapi._iter_match() is guaranteed to return a real iterator with
a next method(), we can just call next() and handle StopIteration.
svn path=/main/trunk/; revision=10509
Zac Medico [Fri, 30 May 2008 20:46:05 +0000 (20:46 -0000)]
For consistency, make sure that a normal iterator is always returned
from dbapi._iter_match() (and never a list). This way the caller can
be sure that the returned object has a next() method.
svn path=/main/trunk/; revision=10507
Zac Medico [Fri, 30 May 2008 20:19:43 +0000 (20:19 -0000)]
Make the use_cache=0 listdir() implementation inside vardbapi.cpv_all()
rains a PermissionDenied error when appropriate.
svn path=/main/trunk/; revision=10505
Zac Medico [Fri, 30 May 2008 09:56:20 +0000 (09:56 -0000)]
Pass a mutable config instance into get_masking_status(). Currently
it doesn't matter for installed packages but it's safer to be
consistent to avoid accidental breakage in the future.
svn path=/main/trunk/; revision=10503
Zac Medico [Fri, 30 May 2008 06:50:34 +0000 (06:50 -0000)]
Make PackageSet.findAtomForPackage() just return the first atom found
since best_match_to_list() won't work correctly for atoms matched
via PROVIDE.
svn path=/main/trunk/; revision=10501
Zac Medico [Fri, 30 May 2008 01:08:35 +0000 (01:08 -0000)]
Simplify None Package.slot handling in match_from_list().
svn path=/main/trunk/; revision=10499
Zac Medico [Fri, 30 May 2008 00:37:34 +0000 (00:37 -0000)]
Fix Atom attribute handling in get_operator() and dep_getslot() to account
for None return values.
svn path=/main/trunk/; revision=10497
Zac Medico [Fri, 30 May 2008 00:03:45 +0000 (00:03 -0000)]
Create Atom instances earlier to avoid redundant validation.
svn path=/main/trunk/; revision=10495
Zac Medico [Thu, 29 May 2008 23:40:58 +0000 (23:40 -0000)]
When dropping deps from the resume list, make sure that the loop can't
be infinite.
svn path=/main/trunk/; revision=10493
Zac Medico [Thu, 29 May 2008 23:31:54 +0000 (23:31 -0000)]
Use Package.metadata instead of calling dbapi.aux_get().
svn path=/main/trunk/; revision=10491
Zac Medico [Thu, 29 May 2008 23:10:33 +0000 (23:10 -0000)]
Use a frozenset instead of a list for containment tests.
svn path=/main/trunk/; revision=10489
Zac Medico [Thu, 29 May 2008 22:54:37 +0000 (22:54 -0000)]
Fix typo.
svn path=/main/trunk/; revision=10487
Zac Medico [Thu, 29 May 2008 22:34:11 +0000 (22:34 -0000)]
Use izip() to eliminate temporary dict instances.
svn path=/main/trunk/; revision=10485
Zac Medico [Thu, 29 May 2008 21:00:16 +0000 (21:00 -0000)]
Clean up references to unsatisfied_parents.
svn path=/main/trunk/; revision=10482
Zac Medico [Thu, 29 May 2008 20:52:13 +0000 (20:52 -0000)]
Clean up reference to dropped_tasks when finished.
svn path=/main/trunk/; revision=10481
Zac Medico [Thu, 29 May 2008 20:44:08 +0000 (20:44 -0000)]
When --skipfirst drops packages due to unsatisfied dependencies, display
a warning message with the list of dropped packages.
svn path=/main/trunk/; revision=10480
Zac Medico [Thu, 29 May 2008 19:56:42 +0000 (19:56 -0000)]
Clean up exception reference from previous commit.
svn path=/main/trunk/; revision=10479
Zac Medico [Thu, 29 May 2008 19:50:50 +0000 (19:50 -0000)]
Make --skipfirst handle missing dependencies by dropping the merge tasks
that have missing dependencies. This involves creating an entirely new
depgraph each time that a missing dependency is discovered. This isn't
the most efficient approach but it's simple and it works well.
This new behavior can server as a fix for bug #12768 by calling emerge
--resume --skipfirst each time that emerge exits unsuccessfully. This
was possible before, but now packages with unsatisfied dependencies
will be properly identified and dropped from the list.
svn path=/main/trunk/; revision=10478
Zac Medico [Thu, 29 May 2008 05:23:18 +0000 (05:23 -0000)]
Save the content of CONFIG_MEMORY_FILE in dblink.treewalk() _before_
unmerging other instances, in order to avoid overwritting/undoing
the pruning that's done during unmerge.
svn path=/main/trunk/; revision=10476
Zac Medico [Thu, 29 May 2008 04:53:15 +0000 (04:53 -0000)]
Make the unmerge time CONFIG_MEMORY_FILE pruning slightly more aggressive,
so that anything not claimed by another package in the same slot is
pruned.
svn path=/main/trunk/; revision=10474
Zac Medico [Thu, 29 May 2008 00:35:09 +0000 (00:35 -0000)]
Filter out installed keyword masked packages when populating
RootConfig.visible_pkgs since otherwise such packages can trigger
undesireable results inside depgraph._iter_atoms_for_pkg().
svn path=/main/trunk/; revision=10471
Zac Medico [Thu, 29 May 2008 00:32:27 +0000 (00:32 -0000)]
Fix the code from bug #220341 so that it matches the atom against the
installed package, like it's supposed to.
svn path=/main/trunk/; revision=10470
Zac Medico [Wed, 28 May 2008 22:12:18 +0000 (22:12 -0000)]
Skip redundant Atom construction in select_package().
svn path=/main/trunk/; revision=10468
Zac Medico [Wed, 28 May 2008 22:06:45 +0000 (22:06 -0000)]
Update the fix from bug #220341 to protect USE deps from being neglected.
svn path=/main/trunk/; revision=10467
Zac Medico [Wed, 28 May 2008 08:31:06 +0000 (08:31 -0000)]
Bug #223447 - Adjust the "installed packages are masked" display to recognize
packages that are masked by keywords and are eligible for uninstallation by
depclean. This is a workaround for the fact that depclean may fail to
recognize that the package is eligible for uninstall due to differences in
visibility filtering which can lead to differences in || dep evaluation.
TODO: Share visibility code to fix this inconsistency.
svn path=/main/trunk/; revision=10465
Zac Medico [Wed, 28 May 2008 01:27:56 +0000 (01:27 -0000)]
Make the new behavior from bug #222439 conditional on EAPI being something
other than 0 or 1.
svn path=/main/trunk/; revision=10462
Zac Medico [Wed, 28 May 2008 01:13:40 +0000 (01:13 -0000)]
Make set_term_size() handle the CommandNotFound exception if stty
is missing for some reason.
svn path=/main/trunk/; revision=10461
Zac Medico [Wed, 28 May 2008 00:37:22 +0000 (00:37 -0000)]
Convert doman to use bash's =~ operator instead of calling egrep.
svn path=/main/trunk/; revision=10460
Zac Medico [Tue, 27 May 2008 23:08:22 +0000 (23:08 -0000)]
Bug #222439 - Add doman support for foo.lang.N filenames. Behavior is
as follows:
foo.1 -> man/man1/foo.1
foo.lang.1 -> man/lang/man1/foo.1
Thanks to Yuri Vasilevski for the initial patch. I've modified it to
use bash's =~ operator and corresponding $BASH_REMATCH array.
svn path=/main/trunk/; revision=10459
Zac Medico [Tue, 27 May 2008 10:20:20 +0000 (10:20 -0000)]
Fix breakage due to frozenset being immutable.
svn path=/main/trunk/; revision=10455
Zac Medico [Tue, 27 May 2008 07:53:32 +0000 (07:53 -0000)]
Fix typo.
svn path=/main/trunk/; revision=10453
Zac Medico [Tue, 27 May 2008 07:48:19 +0000 (07:48 -0000)]
Make config._init_dirs() preserver /tmp and /var/tmp permissions if
those directories already exist. This gives freedom to the user to
adjust permissions to suit their taste.
svn path=/main/trunk/; revision=10452
Zac Medico [Tue, 27 May 2008 06:22:36 +0000 (06:22 -0000)]
Fix a typo from the previous commit.
svn path=/main/trunk/; revision=10450
Zac Medico [Tue, 27 May 2008 06:08:12 +0000 (06:08 -0000)]
Use new Package.use and iuse attributes to avoid extra split() calls.
svn path=/main/trunk/; revision=10448
Zac Medico [Tue, 27 May 2008 05:45:48 +0000 (05:45 -0000)]
Set Atom.use = None when there are no USE deps (instead of the empty
tuple returned from dep_getusedeps()).
svn path=/main/trunk/; revision=10447
Zac Medico [Tue, 27 May 2008 05:42:28 +0000 (05:42 -0000)]
Repoman only checks IUSE for USE deps, so don't evaluate conditional USE deps
in this case.
svn path=/main/trunk/; revision=10446
Zac Medico [Tue, 27 May 2008 04:50:37 +0000 (04:50 -0000)]
Fix dbapi._iter_match_use() to escape IUSE values when necessary.
svn path=/main/trunk/; revision=10445
Zac Medico [Tue, 27 May 2008 04:37:15 +0000 (04:37 -0000)]
Fix breakage in the BlockerDB constructor.
svn path=/main/trunk/; revision=10443
Zac Medico [Tue, 27 May 2008 04:10:11 +0000 (04:10 -0000)]
Define __slots__ for the _use_dep class.
svn path=/main/trunk/; revision=10441
Zac Medico [Tue, 27 May 2008 04:04:28 +0000 (04:04 -0000)]
Fix USE dep matching support in match_from_list() so that it checks
to make sure the package supports all specified IUSE. This involves
updating all Package, FakeVartree, and BlockerDB constructor
arguments to implement a Package.root_config attribute that's used
to access implicit IUSE.
svn path=/main/trunk/; revision=10440
Zac Medico [Tue, 27 May 2008 00:49:09 +0000 (00:49 -0000)]
Bug #223685 - Use the finally clause to collect elog messages just
before releasing the build dir lock, so they never get missed.
svn path=/main/trunk/; revision=10438
Zac Medico [Tue, 27 May 2008 00:10:12 +0000 (00:10 -0000)]
Add some debug output for arguments and their associated atoms, to help in
debugging problems similar to bug #223735.
svn path=/main/trunk/; revision=10436
Zac Medico [Mon, 26 May 2008 23:22:15 +0000 (23:22 -0000)]
Don't silently swallow instances of UnpicklingError since they are easily
triggered by storing instances of custom classes in a pickle.
svn path=/main/trunk/; revision=10434
Zac Medico [Mon, 26 May 2008 23:16:13 +0000 (23:16 -0000)]
Don't silently swallow instances of UnpicklingError since they are easily
triggered by storing instances of custom classes in a pickle.
svn path=/main/trunk/; revision=10433
Zac Medico [Mon, 26 May 2008 23:03:35 +0000 (23:03 -0000)]
Avoid triggering "cPickle.UnpicklingError: Global and instance pickles
are not supported." errors that are triggered when the pickle contains
custom classes.
svn path=/main/trunk/; revision=10431
Zac Medico [Mon, 26 May 2008 20:12:18 +0000 (20:12 -0000)]
Skip source_all_bashrcs() when $EBUILD_PHASE is not set.
svn path=/main/trunk/; revision=10429
Zac Medico [Mon, 26 May 2008 08:02:40 +0000 (08:02 -0000)]
* Enable config.setcpv() to use a Package instance in place of a cpv.
* Make depgraph._select_package() pass Package instances into setcpv() calls.
* Enable the Package constructor to use an iterable for metadata items.
svn path=/main/trunk/; revision=10427
Zac Medico [Mon, 26 May 2008 00:34:40 +0000 (00:34 -0000)]
Fix a broken reference to the Package.cpv_slot attribute.
svn path=/main/trunk/; revision=10425
Zac Medico [Sun, 25 May 2008 22:49:16 +0000 (22:49 -0000)]
Fix breakage in Package constructor attribute initialization.
svn path=/main/trunk/; revision=10423
Zac Medico [Sun, 25 May 2008 22:33:09 +0000 (22:33 -0000)]
Remove unused code.
svn path=/main/trunk/; revision=10422
Zac Medico [Sun, 25 May 2008 21:57:14 +0000 (21:57 -0000)]
Use the metadata wrapper to initialize Package slot and use attributes.
svn path=/main/trunk/; revision=10421
Zac Medico [Sun, 25 May 2008 21:45:41 +0000 (21:45 -0000)]
Remove the Package.cpv_slot attribute.
svn path=/main/trunk/; revision=10420
Zac Medico [Sun, 25 May 2008 21:34:21 +0000 (21:34 -0000)]
* Add support for Package instances and USE deps in match_from_list().
* Add USE dep matching support to depgraph._iter_atoms_for_pkg().
svn path=/main/trunk/; revision=10419
Zac Medico [Sun, 25 May 2008 08:45:34 +0000 (08:45 -0000)]
* Fix PackageSet.findAtomForPackage() to take a Package instance as
an argument.
* Simplify PackageSet.findAtomForPackage() by implementing it on top
of iterAtomsForPackage().
svn path=/main/trunk/; revision=10415
Zac Medico [Sun, 25 May 2008 08:04:21 +0000 (08:04 -0000)]
Facilitate creation of Atom instances in a few obvious places:
* PackageSet._setAtoms()
* AtomArg and PackageArg constructors.
svn path=/main/trunk/; revision=10413
Zac Medico [Sun, 25 May 2008 04:37:55 +0000 (04:37 -0000)]
Remove redundant SLOT dep code in portdbapi.xmatch() since it's now
handled by dbapi._iter_match().
svn path=/main/trunk/; revision=10410
Zac Medico [Sun, 25 May 2008 03:05:30 +0000 (03:05 -0000)]
Remove category validation cruft from catpkgsplit().
svn path=/main/trunk/; revision=10400
Zac Medico [Sun, 25 May 2008 02:56:41 +0000 (02:56 -0000)]
Fix isvalidatom() so tests pass, and add a USE deps case to the tests.
svn path=/main/trunk/; revision=10399
Zac Medico [Sun, 25 May 2008 02:20:45 +0000 (02:20 -0000)]
* Fix dep_getusedeps() test to work with tuples.
* Add test cases for conditional USE deps.
svn path=/main/trunk/; revision=10398
Zac Medico [Sun, 25 May 2008 01:44:03 +0000 (01:44 -0000)]
Add support for conditionals inside USE dependencies. This is useful
for cases in which the package satisfying a dependency should have
identical or opposite flag state relative to the parent package.
Conditionals are evaluated as follows:
parent state conditional result
x [x?] [x]
-x [x?] [-x]
x [-x?] [-x]
-x [-x?] [x]
svn path=/main/trunk/; revision=10396
Zac Medico [Sat, 24 May 2008 22:24:58 +0000 (22:24 -0000)]
Fix broken dep_getusedeps() cache behavior so that it returns the
correct type.
svn path=/main/trunk/; revision=10395
Zac Medico [Sat, 24 May 2008 22:03:27 +0000 (22:03 -0000)]
For dep_expand() backward compatibility, handle atoms with missing '='
prefix which did not raise an error here before the portage.dep.Atom
class was introduced.
svn path=/main/trunk/; revision=10394
Zac Medico [Sat, 24 May 2008 21:33:12 +0000 (21:33 -0000)]
Fix paren_reduce() so that it appropriately raises an InvalidDependString()
in some cases, instead of a nonsense ValueError.
svn path=/main/trunk/; revision=10393
Zac Medico [Sat, 24 May 2008 21:23:39 +0000 (21:23 -0000)]
Fix paren_reduce() so that it appropriately raises an InvalidDependString()
in some cases, instead of a nonsense AttributeError.
svn path=/main/trunk/; revision=10392
Zac Medico [Sat, 24 May 2008 21:00:07 +0000 (21:00 -0000)]
Fix use_reduce() so that it appropriately raises an InvalidDependString
instead of an IndexError in some cases (avoid IndexError by using slice
notation).
svn path=/main/trunk/; revision=10391
Zac Medico [Sat, 24 May 2008 20:35:30 +0000 (20:35 -0000)]
Bug #223417 - Make the vardbapi.cpv_all() use_cache parameter useful
for forcing direct os.listdir() calls. This is more of an issue now
that these listdir() calls are frequently triggered when merging
packages (due to things like blocker and preserve-libs handling).
svn path=/main/trunk/; revision=10390
Zac Medico [Sat, 24 May 2008 19:22:00 +0000 (19:22 -0000)]
Bug #223417 - use floating point mtime for finer grained validation in
cachedir().
svn path=/main/trunk/; revision=10389
Zac Medico [Fri, 23 May 2008 18:51:58 +0000 (18:51 -0000)]
Bug #220671 - Fix 'RuntimeError: Set changed size during iteration' error.
svn path=/main/trunk/; revision=10388
Zac Medico [Fri, 23 May 2008 08:42:35 +0000 (08:42 -0000)]
Bug #2272 - Extend dependency atom sytax to specify enabled or disabled
states of USE flags. Matching with the new syntax is currently only
supported in the dbapi classes and dependency resolver (use matching
does not work yet in config files such as package.mask).
svn path=/main/trunk/; revision=10387
Marius Mauch [Wed, 21 May 2008 16:05:03 +0000 (16:05 -0000)]
Raise an error if the named repository doesn't exist
svn path=/main/trunk/; revision=10383
Zac Medico [Tue, 20 May 2008 19:42:39 +0000 (19:42 -0000)]
When using vecho or eqawarn it comes in handy when isolated-functions
have been sourced. (branches/prefix r10380)
svn path=/main/trunk/; revision=10381
Zac Medico [Tue, 20 May 2008 03:06:32 +0000 (03:06 -0000)]
Simplify cache code in vardbapi.aux_get().
svn path=/main/trunk/; revision=10377