From Fedora Project Wiki

Revitalize Forge Macros

Summary

Up until now, the forge macros have been part of Package-x-generic-16.pngredhat-rpm-config. We will split them out into a new forge-srpm-macros package. We will add more test coverage and add a new %forgeversion macro to allow adding snapshot info to Version instead of Release.

Owner

Current status

Detailed Description

The forge macros will be removed from Package-x-generic-16.pngredhat-rpm-config in favor of a standalone forge-srpm-macros package. Package-x-generic-16.pngredhat-rpm-config will gain a dependency on forge-srpm-macros. This will ease maintenance and allow the forge macros to develop independently of redhat-rpm-config. This split will also allow us to address longstanding issues such as lack of test coverage and noncompliance with the new Versioning Guidelines that mandate putting snapshot info in Version instead of Release.

Development is under way in https://git.sr.ht/~gotmax23/forge-srpm-macros. Maintaining the macros in a separate upstream repository enables us to have proper CI and proper versioning and frees us from having to sync macro files across distgit branches.

The new forge-srpm-macros project now has support for Codeberg, nested Gitlab groups, and a new %forgeversion macro. There are also unit tests covering the core forge macros functionality to prevent future regressions. The tests have already uncovered a two year old bug in the Pagure forge functionality!

For now, we will limit this Change to rawhide, but we may backport the forge-srpm-macros package to stable Fedora releases depending on feedback from the redhat-rpm-config maintainers and other stakeholders. This is not a backwards incompatible Change, so it should be safe to backport after proper testing in Rawhide.

Feedback

The redhat-rpm-config maintainers have expressed that they'd prefer if the forge macros were split into a separate project. Other developers have expressed that the lack of regression tests makes them hesitant to propose or accept changes to the forge macros; this Change fixes that. The Go SIG who makes use of Package-x-generic-16.pnggo-rpm-macros that relies on the forge macros is happy to see more maintenance of these macros. The inability to get changes into the forge macros have blocked us from fixing bugs that affect the Go macros.

Benefit to Fedora

This split out will ease maintenance and allow us to address longstanding issues in the current codebase.

Scope

  • Proposal owners:
    • ✅ Create an upstream repository for the forge-srpm-macros project
    • ✅ Prepare a PR for Package-x-generic-16.pngredhat-rpm-config to remove the macros and associated forge.lua code and add a dependency on the new package: https://src.fedoraproject.org/rpms/redhat-rpm-config/pull-request/260
    • Submit the forge-srpm-macros package for review
    • Build forge-srpm-macros and the updated Package-x-generic-16.pngredhat-rpm-config package in a side tag using provenpackager privileges
    • Close existing PRs open against the forge macros and direct authors to the new project
  • Other developers:
    • Review the Package-x-generic-16.pngredhat-rpm-config PR
    • Preform test builds of packages that use the forge macros
  • Trademark approval: N/A (not needed for this Change)
  • Alignment with Community Initiatives: N/A

Upgrade/compatibility impact

There shouldn't be any. The forge macros will remain in the buildroot, and Package-x-generic-16.pngredhat-rpm-config will Require the new package.

How To Test

There is a test Copr available that contains builds of forge-srpm-macros' main branch. You can use it in mock like this:

copr mock-config gotmax23/forge-srpm-macros-dev fedora-rawhide-x86_64 > ~/.config/mock/forge.cfg
fedpkg sources
# To preform a full package build
mock --spec *.spec --source . -r forge
# To build a source package only
mock --buildsrpm --spec *.spec --source . -r forge

User Experience

This is a developer focussed Change. This Change does not propose any drastic changes to the macros themselves and does not mandate specfile changes, so it shouldn't be too visible.

Dependencies

This change requires coordination with the redhat-rpm-config developers to split out the macros.

Contingency Plan

  • Contingency mechanism: Revert the Package-x-generic-16.pngredhat-rpm-config change and retire forge-srpm-macros
  • Contingency deadline: N/A (not a System Wide Change)
  • Blocks release? No

Documentation

N/A (not a System Wide Change)

Release Notes