Gentoo Archives: gentoo-portage-dev

From: Zac Medico <zmedico@g.o>
To: gentoo-portage-dev@l.g.o
Cc: Zac Medico <zmedico@g.o>
Subject: [gentoo-portage-dev] [PATCH 0/2] Implement soname dependencies
Date: Mon, 09 Feb 2015 05:42:44
Message-Id: 1423460519-10610-1-git-send-email-zmedico@gentoo.org
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

Replies