Fedora 33 System-Wide Change proposal: ELN Buildroot and Compose

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



As Ben is on PTO, I'd like to present the System-Wide Change

https://fedoraproject.org/wiki/Changes/ELN_Buildroot_and_Compose

== Summary ==

The goal of the ELN project is to continuously build Fedora Rawhide
packages and composes in the way which resembles the CentOS and RHEL
build process and to provide a feedback loop for Fedora maintainers on
the status of those builds.

== Owner ==

* Name: [[User:Bookwar| Aleksandra Fedorova]]
* Email: alpha@xxxxxxxxxxxx
* Name: [[User:Sgallagh | Stephen Gallagher]]
* Email: sgallagh@xxxxxxxxxx

== Detailed Description ==

This Change supersedes the previously-approved [[Changes/Additional
buildroot to test x86-64 micro-architecture update|Change]] to enable
an additional buildroot. During development, its scope has expanded to
include the entire process of how the Fedora sources are built and
composed into shippable artifacts.

ELN is an evolution of the request for an alternate buildroot for
newer x86_64 processors. The reasoning behind that new buildroot was
that we expected that the next major release of RHEL would likely drop
support for older hardware and therefore could take advantage of
enhancements and processor extensions available for newer hardware. As
plans for this proceeded, they expanded into a desire to do more than
just test out the processor architecture. Instead, we want to have a
complete alternative compose of Fedora Rawhide that resembles the way
that Red Hat and CentOS builds their packages. The idea being that
Fedora developers and third-party vendors who rely on Red Hat
Enterprise Linux have a place where they can directly contribute to
what will eventually become the next RHEL.

ELN (Enterprise Linux Next) is going to be that place. What we want to
do is establish a set of RPM conditionals that can be used for the set
of packages that may need to be built differently for a RHEL-like
target as compared to a Fedora one. (For example, we may want to skip
regenerating documentation during package-build and instead use
pre-built docs from the tarball or SRPM.)

This includes:

* buildroot configuration, rpm macro and compile flags,
* comps files and the compose content,
* compose itself and the pipeline which builds it.

Under this umbrella we are going to have:
* RPM variables for conditionals to allow tweaking rpm spec files
* A new Koji tag which allows control of the buildroot,
* A fork of the pungi configuration which describes the compose configuration,
* A pipeline which builds a periodic compose based on that configuration,
* Storage for such composes and additional pipelines which will verify
the quality of the compose and test additional scenarios on top of it.

The RPM variables:

* `%{dist}` will return `.eln` (no numerical suffix)
* `%{fedora}` will return `.fcXX` (where XX is the Fedora version
represented by Rawhide).
* `%{rhel}` will be set and will return a number one higher than the
most recent major release of Red Hat Enterprise Linux (at present,
that will be `9`).
* `%{eln}` will be set and will expand to `%{rhel}`

The reasoning behind this approach is so that we break as little as
possible when we implement this new build and compose. Existing
packages that are using conditionals such as `if 0%{?rhel} > 7` will
transition over to building "like RHEL" automatically. Any packages
that do not have a shared Fedora/RHEL specfile will continue to build
as normal. Some unknown number of packages that rely on `if !
0%{?fedora}` will require manual intervention.

The `%{eln}` variable will be set primarily to allow for the
possibility of needing conditionals that apply to ELN only and should
not carry over to RHEL, but we expect its use to be exceptionally
rare.

== Benefit to Fedora ==

Who benefits from the implementation of this feature:
* Fedora Infrastructure
** As we are going to try and test new, more easily maintainable
infrastructure for composes.
* Fedora Minimization
** As we are going to modify the compose content according to
minimization goals and provide feedback to Fedora maintainers on the
results
* CentOS Stream, EPEL and RHEL
** We are going to build Fedora packages into a compose similar to the
multi-repo structure of CentOS and RHEL.
* Fedora Community
** The feedback pipelines built for the project will allow downstream
developers to open up their work and bring it closer to Fedora. In
particular, it will enable projects like OpenShift to do their work in
Fedora.
** Making Fedora friendlier to its downstream will justify bringing
more resources and more contributions to Fedora Rawhide. So that
downstream not only tries to catch up with Fedora going forward, but
actively participates in Fedora development and testing.
** The tooling developed for this project will allow further
development of changes in Fedora Infrastructure without blocking the
regular Fedora packaging and release process.

== Scope ==
* Proposal owners:
** Setup build environment for a new disttag (`eln`).
** Setup automation to trigger new ELN build every time there is a new
update submitted to Fedora Rawhide.
** Post build result to Fedora Messaging, so that it appears in Bodhi
and can be used as a
[https://docs.fedoraproject.org/en-US/rawhide-gating/ gating test].
** Setup automation to run periodic partial composes (via ODCS)
without installation media to generate repositories with these
packages.
** Update packaging documentation to mention new disttag and how it can be used.

* Other developers:
*: Anyone who wants to produce different content for the ELN compose
will need to implement the new macros in their specfile. The
overwhelming majority of packages will require no modification.

* Release engineering: [https://pagure.io/releng/issue/9154 #9154]

* Policies and guidelines:
[https://pagure.io/packaging-committee/issue/955 #955]

* Trademark approval: not needed. There is no new shippable artifact.

== Upgrade/compatibility impact ==

N/A

Though it is a System Wide change it doesn’t impact Fedora upgrades,
as it is a development environment tracking Fedora Rawhide.

== How To Test ==

There is going to be a development snapshot of the state of the ELN
repositories.

It is under discussion whether this snapshot will have its own
installation media. For now the preferred way to test ELN composes
would be to use standard Fedora Rawhide images and then include ELN as
an additional repository.

== User Experience ==

There is no user-facing part in this change. No ELN artifacts are
going to be shipped to the end-user.

== Dependencies ==

There is no dependency on other changes, though some of the
infrastructure services like ODCS composes and Fedora CI will be
involved.

== Contingency Plan ==

* Contingency mechanism: If this effort doesn’t land in Fedora 33 we
review it and decide whether it needs to be moved further to Fedora 34
or cancelled.
* Contingency deadline: N/A as it is a continuous process in Fedora
Rawhide and it is not pinned to a specific release.
* Blocks release? No
* Blocks product? No

Additional risk: Infrastructure resources taken by ELN builds can
create load on Fedora build system

Mitigation: In case of such load we cancel or reschedule ELN tasks
(package and compose builds and tests) on request from the Fedora
Infrastructure team. At least initially, we will also set ELN tasks to
low-priority, similar to how COPR does it.

== Documentation ==

https://fedoraproject.org/wiki/ELN

See also previous discussions:
*  "Alternative buildroot as a development tool" @ devel
https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx/thread/3Z5SMF6CPL3MK2CNYPUW4OZYMA6TZJBN/#MKXPMQOZNLECPPWRM6UBUMR2WHVG5DL6

== Release Notes ==

N/A

Though it is a System-Wide Change it has no user-facing component. We
may announce it through other channels.

-- 
Aleksandra Fedorova
bookwar
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux