From Mageia wiki
Revision as of 11:54, 18 September 2017 by Ngompa (talk | contribs) (Documentation)
Jump to: navigation, search


Summary

Migrate our build system to Koji.

Owner

  • Name: Neal Gompa
  • Email: ngompa13@gmail.com

Resources

This will require efforts by the Mageia sysadmins to deploy Koji and configure it to work with our VCS. In addition, mgarepo needs to be adapted to work with Koji.

Current status

  • Targeted release: Mageia 7
  • Last updated: 2017/09/18
  • Percentage of completion: 0%

Detailed Description

Koji is a build system developed by the Fedora Project to support building a distribution.

The main distinguishing features:

  • Every build is captured
  • Build roots are easily changed by tagging/untagging builds
  • All historical and current packages are recorded

Why it would be good for Mageia to use it

Mageia's current build system has had issues as we've grown to support more architectures, and it is troublesome to move packages around across different targets, and can't handle packages with new RPM features.

Moving to Koji will make it much easier for packagers to build packages and sysadmins to manipulate the build roots used for builds without losing builds. Koji can also be extended to do things like build ISOs and install trees. Among other things, moving to Koji will make it possible for us to package Rust-based applications, following the practices set by Mageia and Fedora jointly under the Fedora Rust SIG, as Rust packaging uses the new RPM features introduced in RPM 4.14, and requires DNF to resolve rich build-dependencies (which Koji will use through the Mock build tool).

Koji also affords us a better way to control what goes into the build root, and makes it easy to move things from target to target without rebuilding multiple times. And packagers get live build logs as it is building!

Test case

To be determined...

Tasks

  • Deploy Koji
  • Configure for building Cauldron
  • Adjust packager tooling to interface with Koji
  • Switch off YOURI for building packages for Cauldron/Mageia 7

Software / Packages Dependencies

  • Koji
    • While this is in Mageia 6 now, it'll need to be updated to a newer version to offer the Python 3 client library for mgarepo
  • mgarepo
    • This needs to be adjusted to submit to Koji instead of YOURI
    • Alternatively, Fedora's fedpkg or RDO's rdopkg could be adapted/forked for Mageia. A frontend based on rpkg2 would work too.

What could disrupt development of this new feature

If the Koji deployment cannot be completed and mgarepo can't be modified to target Koji, then this feature cannot be fully implemented.

Planning

Early inclusion into Mageia 7 would allow for good appropriation of administrator resources to roll this out and make sure everything works.

Contingency

If this fails to be ready for Mageia 7, then we fall back to our current infrastructure.

Release Notes

Not applicable.

Documentation

Packager comments