Gentoo Archives: gentoo-portage-dev

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