| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
JSON read support has been available since portage-2.2.0_alpha89.
|
|
|
|
|
|
|
|
|
|
|
| |
Only count symlinks as preserved if they still point to a hardink
in the same directory, in order to handle cases where a tool such
as eselect-opengl has updated the symlink to point to a hardlink
in a different directory (see bug #406837). The unused hardlink is
automatically found by _find_unused_preserved_libs, since the soname
symlink no longer points to it. After the hardlink is removed by
_remove_preserved_libs, it calls pruneNonExisting which eliminates
the irrelevant symlink from the registry here.
|
|
|
|
|
|
|
|
| |
Support serialization as JSON instead of pickle, so that
/var/lib/portage/preserved_libs_registry is human readable/writable,
for those rare cases where it may be useful. Currently, pickle is still
used for writes. The plan is to migrate to JSON after JSON read has
been supported for some time.
|
|
|
|
|
| |
This avoids an error from os.stat:
TypeError: must be encoded string without NULL bytes, not str
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
For preserved libraries, the owner(s) may have been been previously
uninstalled, but these uninstalled owners can be returned by this
method since they are registered in the PreservedLibsRegistry.
|
|
|
|
| |
This was an error in commit f393413c3f823ef4a60acfcc41c3920933510fc1.
|
| |
|
|
|
|
|
|
| |
This preserves the owner information inside LinkageMap.rebuild() and
uses it to implement a getOwners() method, which makes it possible to
efficiently lookup owners of library providers and consumers.
|
|
|
|
|
| |
This simplifies the interface, avoiding the need for hardcoded indexes
and making it easy to add new attributes.
|
|
|
|
|
|
|
| |
This reduces memory consumption by approximately 30%, by replacing
mutable set instances with arrays, tuples, and frozensets where
appropriate. Also, identical frozenset instances are shared when
available.
|
|
|
|
|
| |
If there are no non-excluded providers then there's no need to search
for satisfied consumers.
|
|
|
|
|
|
| |
Currently, we never pass in more that one package via the
exclude_providers argument, so we never trigger the flaw in the logic
that this fixes.
|
|
|
|
|
|
| |
This will fix bug #289180 by making LinkageMapELF.findconsumers()
exclude consumers from the results in cases when they are satisfied by
an alternative provider of the required soname.
|
|
|
|
|
| |
The code which checks the soname symlink was missing a join with
$ROOT.
|
|
|
|
|
|
| |
Here it referred to an soname symlink as a "master" link, which was
inconsistent with the meaning of "master" link used in the
isMasterLink() method.
|
|
|
|
|
| |
The version component of the libproc-3.2.8.so soname is formed
slightly differently than most other libraries.
|
| |
|
|
|
|
|
|
| |
Comparing the lengths of the names alone seems like too much of an
assumption, so literally compare the beginning of the soname to the
basename of the given file.
|
|
|
|
|
| |
This prevents false positives for private libraries installed by
pre-built packages under /opt.
|
|
|
|
|
|
| |
This allows us to avoid repeating any previous stat calls, which helps
to avoid potential race conditions due to inconsistent stat results
when the file system is being modified concurrently.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Narrow scope of merge locks to improve performance.
Instead of locking the DB for the entire package merge, just lock it
when we actually need to do so. Also add locks around conf_mem_file
updating and pkg_* phases.
Locking in pkg_* phases can be turned off with
FEATURES="no-ebuild-locks" if you use ebuilds that are careful not
to mess with each other during theses phases. The default is to leave
this locking enabled.
Given this new locking, I've improved the scheduler to run merge jobs
in parallel.
Time required for merging 348 packages with --usepkgonly:
- Before patch: 29m50s
- After patch: 10m2s
- After patch w/o locks: 7m9s
Change-Id: I63588c4cc59fa6fe2f8327ea1e4a9e71b241d4fe
Review URL: http://gerrit.chromium.org/gerrit/498
|
|
|
|
|
| |
Also, add comments to store() about unobvious interaction with
locking due to atomic replacement of the inode.
|
|
|
|
|
| |
Together with commit f36b9fa38b5268c2a5579db62acec026625f84a9,
hopefully this solves bug #366061.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change makes preserved lib modification atomic, and
prepares us for narrowing the scope of the merge lock.
BUG=chromium-os:14983
TEST=Ran test suite and some example emerges.
Change-Id: I39abb6a5ec72be3274e508ef807ac1d9e69db1a8
Review URL: http://gerrit.chromium.org/gerrit/417
|
| |
|
| |
|
|
|
|
| |
have EPREFIX
|
|
|
|
|
|
| |
trying to minimize the diff between the master branch and upcoming
2.1.9 branch which will not have preserve-libs support but will
still have the code in private and disabled form.
|
| |
|
|
portage.util._dyn_libs.PreservedLibsRegistry module.
|