1 |
This patch series implements soname dependencies, in order to make |
2 |
binary package support more competitive with binary distros. Note that |
3 |
slot-operator dependencies will not be able to serve as a substitute |
4 |
for soname dependencies for the forseeable future, because system |
5 |
dependencies are frequently unspecified (according to Gentoo policy). |
6 |
|
7 |
The soname dependencies are automatically generated from the ELF files |
8 |
that a package installs. New PROVIDES_EXCLUDE and REQUIRES_EXCLUDE |
9 |
ebuild variables allow filtering of the automatically generated |
10 |
dependencies, which is useful for packages with internal or bundled |
11 |
libraries. For testing purposes, I've been using package.bashrc to set |
12 |
PROVIDES_EXCLUDE and REQUIRES_EXCLUDE for the ebuilds that need it, so |
13 |
that I don't have to modify the ebuilds. I've put my package.bashrc |
14 |
settings in a git repo [1], so that people can see some examples of how |
15 |
PROVIDES_EXCLUDE and REQUIRES_EXCLUDE are useful in practice. With |
16 |
these settings, all soname dependencies on my desktop multilib system |
17 |
are resolvable (2283 packages, including KDE 4.14.3). |
18 |
|
19 |
[1] https://github.com/zmedico/portage-soname-bashrc |
20 |
|
21 |
Zac Medico (2): |
22 |
Generate soname dependency metadata (282639) |
23 |
depgraph: soname dependency resolution (282639) |
24 |
|
25 |
bin/ebuild.sh | 2 +- |
26 |
bin/phase-functions.sh | 2 +- |
27 |
man/ebuild.5 | 12 + |
28 |
man/emerge.1 | 13 + |
29 |
man/portage.5 | 48 +++ |
30 |
pym/_emerge/FakeVartree.py | 16 +- |
31 |
pym/_emerge/Package.py | 58 +++- |
32 |
pym/_emerge/actions.py | 9 +- |
33 |
pym/_emerge/create_depgraph_params.py | 6 + |
34 |
pym/_emerge/create_world_atom.py | 6 +- |
35 |
pym/_emerge/depgraph.py | 346 +++++++++++++++------ |
36 |
pym/_emerge/main.py | 10 + |
37 |
pym/_emerge/resolver/DbapiProvidesIndex.py | 101 ++++++ |
38 |
pym/_emerge/resolver/output.py | 10 +- |
39 |
pym/_emerge/resolver/package_tracker.py | 42 ++- |
40 |
pym/_emerge/resolver/slot_collision.py | 35 ++- |
41 |
pym/portage/dbapi/DummyTree.py | 16 + |
42 |
pym/portage/dbapi/bintree.py | 5 +- |
43 |
pym/portage/dbapi/vartree.py | 1 + |
44 |
pym/portage/dep/__init__.py | 25 ++ |
45 |
pym/portage/dep/soname/SonameAtom.py | 72 +++++ |
46 |
pym/portage/dep/soname/__init__.py | 2 + |
47 |
pym/portage/dep/soname/multilib_category.py | 114 +++++++ |
48 |
pym/portage/dep/soname/parse.py | 47 +++ |
49 |
pym/portage/package/ebuild/config.py | 13 + |
50 |
pym/portage/package/ebuild/doebuild.py | 86 ++++- |
51 |
pym/portage/tests/resolver/ResolverPlayground.py | 3 + |
52 |
pym/portage/tests/resolver/soname/__init__.py | 2 + |
53 |
pym/portage/tests/resolver/soname/__test__.py | 2 + |
54 |
.../tests/resolver/soname/test_autounmask.py | 103 ++++++ |
55 |
pym/portage/tests/resolver/soname/test_depclean.py | 61 ++++ |
56 |
.../tests/resolver/soname/test_downgrade.py | 240 ++++++++++++++ |
57 |
.../tests/resolver/soname/test_or_choices.py | 92 ++++++ |
58 |
.../tests/resolver/soname/test_reinstall.py | 87 ++++++ |
59 |
.../tests/resolver/soname/test_skip_update.py | 86 +++++ |
60 |
.../soname/test_slot_conflict_reinstall.py | 342 ++++++++++++++++++++ |
61 |
.../resolver/soname/test_slot_conflict_update.py | 117 +++++++ |
62 |
.../tests/resolver/soname/test_soname_provided.py | 78 +++++ |
63 |
.../tests/resolver/soname/test_unsatisfiable.py | 71 +++++ |
64 |
.../tests/resolver/soname/test_unsatisfied.py | 87 ++++++ |
65 |
pym/portage/tests/resolver/test_package_tracker.py | 4 +- |
66 |
pym/portage/util/_dyn_libs/LinkageMapELF.py | 61 +++- |
67 |
pym/portage/util/_dyn_libs/NeededEntry.py | 82 +++++ |
68 |
pym/portage/util/_dyn_libs/soname_deps.py | 138 ++++++++ |
69 |
pym/portage/util/elf/__init__.py | 2 + |
70 |
pym/portage/util/elf/constants.py | 45 +++ |
71 |
pym/portage/util/elf/header.py | 65 ++++ |
72 |
pym/portage/util/endian/__init__.py | 2 + |
73 |
pym/portage/util/endian/decode.py | 48 +++ |
74 |
49 files changed, 2766 insertions(+), 149 deletions(-) |
75 |
create mode 100644 pym/_emerge/resolver/DbapiProvidesIndex.py |
76 |
create mode 100644 pym/portage/dbapi/DummyTree.py |
77 |
create mode 100644 pym/portage/dep/soname/SonameAtom.py |
78 |
create mode 100644 pym/portage/dep/soname/__init__.py |
79 |
create mode 100644 pym/portage/dep/soname/multilib_category.py |
80 |
create mode 100644 pym/portage/dep/soname/parse.py |
81 |
create mode 100644 pym/portage/tests/resolver/soname/__init__.py |
82 |
create mode 100644 pym/portage/tests/resolver/soname/__test__.py |
83 |
create mode 100644 pym/portage/tests/resolver/soname/test_autounmask.py |
84 |
create mode 100644 pym/portage/tests/resolver/soname/test_depclean.py |
85 |
create mode 100644 pym/portage/tests/resolver/soname/test_downgrade.py |
86 |
create mode 100644 pym/portage/tests/resolver/soname/test_or_choices.py |
87 |
create mode 100644 pym/portage/tests/resolver/soname/test_reinstall.py |
88 |
create mode 100644 pym/portage/tests/resolver/soname/test_skip_update.py |
89 |
create mode 100644 pym/portage/tests/resolver/soname/test_slot_conflict_reinstall.py |
90 |
create mode 100644 pym/portage/tests/resolver/soname/test_slot_conflict_update.py |
91 |
create mode 100644 pym/portage/tests/resolver/soname/test_soname_provided.py |
92 |
create mode 100644 pym/portage/tests/resolver/soname/test_unsatisfiable.py |
93 |
create mode 100644 pym/portage/tests/resolver/soname/test_unsatisfied.py |
94 |
create mode 100644 pym/portage/util/_dyn_libs/NeededEntry.py |
95 |
create mode 100644 pym/portage/util/_dyn_libs/soname_deps.py |
96 |
create mode 100644 pym/portage/util/elf/__init__.py |
97 |
create mode 100644 pym/portage/util/elf/constants.py |
98 |
create mode 100644 pym/portage/util/elf/header.py |
99 |
create mode 100644 pym/portage/util/endian/__init__.py |
100 |
create mode 100644 pym/portage/util/endian/decode.py |
101 |
|
102 |
-- |
103 |
2.0.5 |