Revitalize Forge Macros
Summary
Up until now, the
forge macros
have been part of
.
We will split them out into a new redhat-rpm-config
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
- Name: Maxwell G
- Email: maxwell@gtmx.me
Current status
- Targeted release: Fedora Linux 40
- Last updated: 2023-10-03
- devel thread
- FESCo issue: https://pagure.io/fesco/issue/3061
- Tracker bug: #2238452
- Release notes tracker: N/A
Detailed Description
The forge macros will be removed from
in favor of a standalone redhat-rpm-config
forge-srpm-macros
package.
will gain a dependency on redhat-rpm-config
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
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.
go-rpm-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
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/260redhat-rpm-config
- Submit the
forge-srpm-macros
package for review - Build
forge-srpm-macros
and the updated
package in a side tag using provenpackager privilegesredhat-rpm-config
- Close existing PRs open against the forge macros and direct authors to the new project
- Other developers:
- Review the
PRredhat-rpm-config
- Preform test builds of packages that use the forge macros
- Review the
- Policies and guidelines:
- ✅ Adjust the SourceURL Packaging Guidelines to recommend the new
%forgeversion
macro: https://pagure.io/packaging-committee/pull-request/1295
- ✅ Adjust the SourceURL Packaging Guidelines to recommend the new
- 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
will Require the new package.
redhat-rpm-config
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
change and retireredhat-rpm-config
forge-srpm-macros
- Contingency deadline: N/A (not a System Wide Change)
- Blocks release? No
Documentation
N/A (not a System Wide Change)