Gentoo Archives: gentoo-dev

From: Rich Freeman <rich0@g.o>
To: gentoo-dev <gentoo-dev@l.g.o>
Subject: Re: [gentoo-dev] [RFC] multiversion ebuilds
Date: Thu, 17 May 2018 16:16:50
Message-Id: CAGfcS_k0D3=xvUiDj_ErHuTqEKv=ERg-BDC+GkLkBfL68Q86QQ@mail.gmail.com
In Reply to: Re: [gentoo-dev] [RFC] multiversion ebuilds by Gerion Entrup
1 On Thu, May 17, 2018 at 11:44 AM Gerion Entrup <gerion.entrup@×××××.de>
2 wrote:
3
4 > The VERSIONS approach does not break the old mechanism. So if a patch
5 > needs to be applied, the multiversion ebuild (that contains other versions
6 > as well, say foobar.ebuild with VERSIONS="1.0 1.1 1.2") can just be
7 copied,
8 > renamed with the revbump number (to foobar-1.0-r1.ebuild) and completed
9 > with the apply line. Once the old versions should be deleted the VERSIONS
10 > variable can be adjusted (to VERSIONS="1.1 1.2").
11
12
13 Sure, but now you're back to single-version ebuilds except that you have to
14 stick the version inside the ebuild instead of just in the filename.
15
16 When would you actually get any of the code-sharing benefits of
17 multi-version ebuilds? If you fork them anytime there is a revbump then to
18 actually share code you'd need the ebuilds for both versions to be issued
19 at the same time and have near-identical code. How often does that happen?
20
21 I think in practice this just makes things more complicated.
22
23 And this problem isn't just limited to keywording. If you don't want to
24 make retroactive changes to released packages then you need to make all
25 code changes conditional on version, which makes the ebuild a rat's nest of
26 conditionals.
27
28 I could really only see something like this working if the entire Gentoo
29 repo were release-based, because then you'd tag a release, and then you can
30 modify all the code you want in-place because it wouldn't affect anything
31 in production. Then you do a round of QA and issue a new release. Since
32 Gentoo's QA operates at the package-version level you really need to make
33 your changes in new package-versions (including ebuild revision numbers).
34
35 --
36 Rich