Add RPM packaging support#84
Conversation
|
There are several issues with the PR. The first one is a showstopper for me:
And then, other issues:
|
|
Thank you for your detailed and fast feedback, it's very helpful. First, I want to clarify the context of this PR: this is a very early draft. It’s my first time setting up CI and RPM packaging, so I expected quite a few issues. I did use two LLMs to help me get started (which explains some of the inconsistencies in the file lists and the overall roughness). Originally I was planning to create two packages (gobo-eiffel + gobo-eiffel-devel), inspired by Zig’s packaging model, but I’m perfectly open to shipping just one package if you think it makes more sense for Gobo (and that's exactly what I'm going to do). Regarding the installation layout, you are absolutely right about the critical issue: putting the binaries in /usr/bin while the rest stays in /usr/lib/gobo-eiffel breaks the very nice zero-configuration feature (automatic $GOBO detection). This is something I will rework to better respect Gobo’s philosophy ; most likely by installing everything under /usr/lib/gobo-eiffel and only creating symlinks in /usr/bin. In next days, I will also:
I also need to find out how to test the generation of RPMs from my forked repository I’m happy to follow your guidance on the best approach for the project. |
dd5ee6d to
2ef95ba
Compare
Add RPM packaging support
Summary
.cicd/package_rpm.ps1: PowerShell script that stages binaries and Eiffelclusters, substitutes spec template placeholders, and invokes
rpmbuildto produce the packages.
.cicd/rpm/gobo-eiffel.spec: RPM spec template for the main package(pre-compiled binaries, runtime config, Eiffel library clusters,
profile.dscript)..cicd/rpm/gobo-eiffel-devel.spec: RPM spec template for the devel package(Eiffel source code of the tools only).
.gitlab-ci.yml: add apackagestage with apackage_rpmjob that runson release tags matching
gobo-YY.MM(or on-demand viaGOBO_CUSTOM_PIPELINE=package_rpm).Produced packages
gobo-eiffel-<version>-1.<arch>.rpm/usr/bin, runtime config and Eiffel library clusters in/usr/lib/gobo-eiffel,GOBOprofile script in/etc/profile.dgobo-eiffel-devel-<version>-1.noarch.rpm/usr/lib/gobo-eiffel/toolCI trigger rules
gobo-YY.MM[.patch](e.g.gobo-26.05).GOBO_CUSTOM_PIPELINE=package_rpm.Test plan
GOBO_CUSTOM_PIPELINE=package_rpmon abranch that has a successful
linux_gcc_build_gejob..rpmfiles are produced and available in the pipelineartifacts.
gobo-eiffel-<version>.rpmon a Fedora/RHEL system and confirmgec --versionworks,$GOBOis set after opening a new shell, and thelibrary clusters are accessible under
/usr/lib/gobo-eiffel/library.gobo-eiffel-devel-<version>.rpmand confirm the tool Eiffel sourcesare present under
/usr/lib/gobo-eiffel/tool.