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/7] Add FEATURES=binpkg-multi-instance (bug 150031)
Date: Wed, 18 Feb 2015 03:06:19
Message-Id: 1424228745-7794-1-git-send-email-zmedico@gentoo.org
In Reply to: Re: [gentoo-portage-dev] [PATCH 1/2] Add FEATURES=binpkg-multi-instance (bug 150031) by Brian Dolbec
1 FEATURES=binpkg-multi-instance causes an integer build-id to be
2 associated with each binary package instance. Inclusion of the build-id
3 in the file name of the binary package file makes it possible to store
4 an arbitrary number of binary packages built from the same ebuild.
5
6 Having multiple instances is useful for a number of purposes, such as
7 retaining builds that were built with different USE flags or linked
8 against different versions of libraries. The location of any particular
9 package within PKGDIR can be expressed as follows:
10
11 ${PKGDIR}/${CATEGORY}/${PN}/${PF}-${BUILD_ID}.xpak
12
13 The build-id starts at 1 for the first build of a particular ebuild,
14 and is incremented by 1 for each new build. It is possible to share a
15 writable PKGDIR over NFS, and locking ensures that each package added
16 to PKGDIR will have a unique build-id. It is not necessary to migrate
17 an existing PKGDIR to the new layout, since portage is capable of
18 working with a mixed PKGDIR layout, where packages using the old layout
19 are allowed to remain in place.
20
21 The new PKGDIR layout is backward-compatible with binhost clients
22 running older portage, since the file format is identical, the
23 per-package PATH attribute in the 'Packages' index directs them to
24 download the file from the correct URI, and they automatically use
25 BUILD_TIME metadata to select the latest builds.
26
27 There is currently no automated way to prune old builds from PKGDIR,
28 although it is possible to remove packages manually, and then run
29 'emaint --fix binhost' to update the ${PKGDIR}/Packages index. Support
30 for FEATURES=binpkg-multi-instance is planned for eclean-pkg.
31
32 X-Gentoo-Bug: 150031
33 X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=150031
34
35 Zac Medico (7):
36 binpkg-multi-instance 1 of 7
37 binpkg-multi-instance 2 of 7
38 binpkg-multi-instance 3 of 7
39 binpkg-multi-instance 4 of 7
40 binpkg-multi-instance 5 of 7
41 binpkg-multi-instance 6 of 7
42 binpkg-multi-instance 7 of 7
43
44 bin/quickpkg | 1 -
45 man/make.conf.5 | 27 +
46 man/portage.5 | 8 +-
47 pym/_emerge/Binpkg.py | 33 +-
48 pym/_emerge/BinpkgFetcher.py | 13 +-
49 pym/_emerge/BinpkgVerifier.py | 6 +-
50 pym/_emerge/EbuildBinpkg.py | 9 +-
51 pym/_emerge/EbuildBuild.py | 36 +-
52 pym/_emerge/Package.py | 67 +-
53 pym/_emerge/Scheduler.py | 6 +-
54 pym/_emerge/clear_caches.py | 1 -
55 pym/_emerge/is_valid_package_atom.py | 5 +-
56 pym/_emerge/resolver/output.py | 21 +-
57 pym/portage/_sets/ProfilePackageSet.py | 3 +-
58 pym/portage/_sets/profiles.py | 3 +-
59 pym/portage/const.py | 2 +
60 pym/portage/dbapi/__init__.py | 10 +-
61 pym/portage/dbapi/bintree.py | 843 +++++++++++----------
62 pym/portage/dbapi/vartree.py | 8 +-
63 pym/portage/dbapi/virtual.py | 113 ++-
64 pym/portage/dep/__init__.py | 35 +-
65 pym/portage/emaint/modules/binhost/binhost.py | 47 +-
66 .../package/ebuild/_config/KeywordsManager.py | 3 +-
67 .../package/ebuild/_config/LocationsManager.py | 8 +-
68 pym/portage/package/ebuild/_config/MaskManager.py | 21 +-
69 pym/portage/package/ebuild/_config/UseManager.py | 14 +-
70 pym/portage/package/ebuild/config.py | 15 +-
71 pym/portage/repository/config.py | 2 +-
72 pym/portage/tests/dep/test_isvalidatom.py | 8 +-
73 pym/portage/tests/resolver/ResolverPlayground.py | 25 +-
74 .../resolver/binpkg_multi_instance/__init__.py | 2 +
75 .../resolver/binpkg_multi_instance/__test__.py | 2 +
76 .../test_build_id_profile_format.py | 134 ++++
77 .../binpkg_multi_instance/test_rebuilt_binaries.py | 101 +++
78 pym/portage/util/__init__.py | 13 +-
79 pym/portage/versions.py | 28 +-
80 36 files changed, 1144 insertions(+), 529 deletions(-)
81 create mode 100644 pym/portage/tests/resolver/binpkg_multi_instance/__init__.py
82 create mode 100644 pym/portage/tests/resolver/binpkg_multi_instance/__test__.py
83 create mode 100644 pym/portage/tests/resolver/binpkg_multi_instance/test_build_id_profile_format.py
84 create mode 100644 pym/portage/tests/resolver/binpkg_multi_instance/test_rebuilt_binaries.py
85
86 --
87 2.0.5

Replies