On Thu, May 30, 2019 at 12:18 PM Kevin Fenzi <ke...@scrye.com> wrote:
>
> > As discussed in the EPEL SIG meeting yesterday, I've written up my
> > thoughts on how to handle epel8 branches.
>
> TLDR: I like it. ;)
>
> > # Considerations
> > * The process must be simple for a Fedora packager to adapt to
> > * It must be possible to stage big (possibly backwards-incompatible) changes
> > * Where possible, the packager experience should be the same as EPEL 7
> >
> > # Proposal
> > There will be two branches created for EPEL 8 in dist-git for each 
> > component:
> >
> > ## epel8:
> > Most packagers will do their work here. This branch will be set up by
> > default with a package.cfg file containing:
> > ```
> > [koji]
> > targets = epel8 epel8-rawhide
> > ```
> > Recent fedpkg supports using package.cfg files in the root of the
> > dist-git repository to trigger builds for multiple releases at the
> > same time.
> >
> >
> > ## epel8-rawhide:
> > This branch will be left alone until and unless the packager decides
> > that they want to stage a major (possibly incompatible) change for the
> > next RHEL 8.Y minor release. At that time, they will need to remove
> > the package.cfg file from the epel8 branch and manually merge the
> > proposed changes desired into the epel8-rawhide branch and build
> > there.
>
> Also might there be people who want to always keep something in rawhide
> and never push it to the stable stream? Or do we want to encourage only
> things destined for the next minor change land in epel8-rawhide?
>

Yes.  We need to keep that in consideration.
When cleaning up the -testing branches of EPEL6 and EPEL7 we found
there were people who had versions in -testing that they never
intended to push to stable.
Once EPEL8/7 has modularity, there will be an official way to do that,
but until that happens, we need to assume that some people will use
rawhide as a way to have a second version of their package.

> > The package.cfg setup will mean that running `fedpkg build` in the
> > epel8 branch will cause it to be built both for the
> > epel8-rawhide-candidate and epel8-stable-candidate tags in Koji.
>
> How about we just call the stable tag 'epel8-candidate' ?
>
> > Packages built for epel8-rawhide-candidate will behave similarly to
> > Rawhide in Fedora and be signed and tagged into an epel8-rawhide
> > compose.
> >
> > Packages built for epel8-stable-candidate will behave similarly to
> > Fedora stable releases and be required to go through Bodhi to get to
> > an epel8 compose (and associated epel8-testing compose).
> >
> > For packages operating in the default configuration, the packager will
> > need to build in the epel8 branch and then submit the built package to
> > Bodhi, just as they would have done for EPEL 7. The side-effect here
> > is that the build will also produce a build that goes to the
> > epel8-rawhide repository without Bodhi intervention.
>
> Or we could at some point hook in gating, just like fedora rawhide.
> Sorry, just had a dream of a pleasant future. ;)
>
> >
> > When the time comes where an incompatible change needs to land, they
> > must be coordinated to land on an approved schedule. The exact
> > mechanism of scheduling and coordinating this is out of scope for this
> > document and will be decided on by the EPEL Steering Committee.
>
> Yeah, but we should probibly try and figure it out.
>
> I guess there is:
> A. Right after the new minor release comes out
> B. Right after the new minor release comes out for CentOS
> C. Some arbitrary time after the new minor release comes out.
>
> >
> > At this time, the packager must remove the package.cfg file from the
> > epel8 branch and package the new version in the epel8-rawhide branch.
> > With the package.cfg file removed from the epel8 branch, builds in
> > that branch will be built only for the epel8-stable-candidate tag. As
> > before, composes including these builds will be managed by Bodhi
> > updates. Building from the epel8 branch will therefore not be
> > automatically built for epel8-rawhide any longer.
> >
> > Builds intended for the epel8-rawhide repository will need to be built
> > instead from the epel8-rawhide branch, which will build against the
> > epel8-rawhide-candidate target, which will then be signed and pushed
> > to the epel8-rawhide repository like before.
> >
> > Once the package is approved to be promoted from the epel8-rawhide
> > compose to the stable compose, the package.cfg should be recreated in
> > the epel8 branch (this can be automated to make it easier) and a new
> > build will be made in the epel8 branch that will produce builds in the
> > epel8-stable-candidate and epel8-rawhide-candidate tags, with the
> > former then being submitted to Bodhi. This new build must naturally
> > have a higher ENVR to preserve the upgrade path.
> >
> > ## %dist tag
> > Packages built against epel8-rawhide-candidate will be built with a
> > %dist tag of .epel8_rawhide
> > Packages built against epel8-rawhide-candidate will be built with a
> > %dist tag of .epel8_Y where “Y” is the latest stable release of RHEL
> > 8.
> >
> > This dist tag structure ensures that the version of the package in the
> > stable epel8 repository will win out over the one in the epel8-rawhide
> > repository if all other aspects of the EVR are the same. (So one would
> > only pick up a newer version from epel8-rawhide if it was indeed a
> > higher version number.)
>
> It does also mean you have to do another build of anything to get it
> stable. The rawhide build never goes stable, just a rebuilt version of
> it does... thats a bit more work, but not too bad.
>
> > # Historical Composes
> > Since major changes may occur at RHEL 8.Y releases, we want to support
> > allowing our users to lock onto a repository that matches that
> > release. For this, we will generate historical composes, which will
> > match the stable package set of the prior minor release once the new
> > minor release comes out.
> >
> > At 00:00 UTC of the day following a new RHEL 8.Y release, an updated
> > epel-release package will be pushed, updating the %dist tag to the new
> > .epel8_Y value. All new builds will thus have the new dist tag. A
> > script will be run at this time to apply a new Koji tag (epel8-8.Y) to
> > the latest build of a package with one of the following tags: [
> > epel8-stable, epel8-stable-pending ]. A compose of the epel8.Y
> > repository will be created at this time from all packages currently
> > tagged as epel8-8.Y.
>
> So, we will also have to unpush/obsolete/close all pending bodhi updates
> right? Since things will need rebuilding with the new dist tag for the
> new minor.
> >
> > Historical composes are intended to be frozen and unchanging, but this
> > approach leaves open the possibility of tagging other builds into
> > epel8-8.Y and regenerating the compose if the need arises. It will
> > need to be communicated that these repositories will not receive
> > updates and are intended to be only a snapshot of the past that is
> > known to work with a particular RHEL 8.Y base.
>
> Yeah, I really hope we can avoid that since it will be a lot more work.
>
> Thanks very much for writing this up!
>
> kevin
>
>
> _______________________________________________
> epel-devel mailing list -- epel-devel@lists.fedoraproject.org
> To unsubscribe send an email to epel-devel-le...@lists.fedoraproject.org
> Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
> List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
> List Archives: 
> https://lists.fedoraproject.org/archives/list/epel-devel@lists.fedoraproject.org
_______________________________________________
epel-devel mailing list -- epel-devel@lists.fedoraproject.org
To unsubscribe send an email to epel-devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/epel-devel@lists.fedoraproject.org

Reply via email to