Skip to content

CI/Packaging: Want packaging recipes and integration with OpenSUSE Build Service (OBS) for master branch #1209

Closed

Description

@jimklimov

Numerous projects, including components under zeromq that served as role models for NUT CI with cross-pollination over time, benefit from integration with https://build.opensuse.org/ and both having recent iterations available in package repositories made for multiple (Linux) distributions, and checking (github statuses and all) that the packages are buildable for those distributions.

I suppose this would need bringing NUT-provided "reference" packaging into shape (like make package already implemented for some OSes), possibly drawing inspiration from DEB and SPEC files for those target distributions as shipped by them already, or from 42ITy fork which developed a means to build on a private OBS instance: https://github.com/42ity/nut/tree/FTY/obs

Note that special recipe file naming may be involved to ship numerous SPEC files that would be used by OBS for this or that distribution.

I am not sure that NUT as a project should "insist" on replacing distro-specific packages: after all, tight and "correct" integration with the OS lifecycle is better done by domain experts, but providing a way for users and testers to easily install a standardly-built replacement without guessing configure parameters every time would be cool. And it might help co-ordinate the sprawl of NUT packages (names, content) across the board - letting each distro shine where it is best, and letting NUT seem the same everywhere :)

In a way this follows up from #869 as addition of CI platform and practical use/test-case - yet another environment to weed out failures. Notably, OBS can be used to further trigger dependency builds, to check that NUT public API is not broken (as found in #1638 for example).

Activity

  1. added
    CIEntries related to continuous integration infrastructure (here CI = tools + scripts + recipes)
    on Nov 28, 2021
  2. changed the title [-]CI/Packaging: Want integration with OpenSUSE Build Service for master branch[/-] [+]CI/Packaging: Want packaging recipes and integration with OpenSUSE Build Service for master branch[/+] on Nov 28, 2021
  3. changed the title [-]CI/Packaging: Want packaging recipes and integration with OpenSUSE Build Service for master branch[/-] [+]CI/Packaging: Want packaging recipes and integration with OpenSUSE Build Service (OBS) for master branch[/+] on Sep 28, 2022
  4. jimklimov commented on Oct 7, 2025

    @jimklimov
    MemberAuthor

    Finally got some progress about this, sufficient to iterate the old DSC and SPEC recipes into something useful for today's set of deliverable files. Thanks to @bluca @adrians and others for hints. Some highlights:

    • A parent project must be used to define OBS Repositories we build for, which should usually include a layer with openSUSE:Tools to have OBS helper scripts in the build area: https://build.opensuse.org/projects/home:jimklimov/meta
    • Some distros disagreed on package naming or even availability, in most cases this was worked around by conditionals in Requires, and Prefer in osc meta prjconf --edit for cases where several hits were served by same distro (can't find it in Web-UI):
    Prefer: libusbx-devel
    Prefer: libusb-1.0-dev
    Prefer: neon-devel
    
    • This solution failed for a few antique distros with older RPM that does not support conditionals
    • Some RHELish repos lack both httpd-devel and apache2-devel, gd-devel etc., skipped for now
    • Some Debianish repos lack libmodbus, skipped for now
    • These tweaks are seen in https://build.opensuse.org/projects/home:jimklimov/packages/nut/meta
    • Beside packaging in Git, the _service file was all that's needed (and triggering the service to pull new revisions from the branch): https://build.opensuse.org/projects/home:jimklimov/packages/nut/files/_service?expand=0
    • Maybe some way of pre-making a dist tarball and using that would be better, to be explored (if we can do this within OBS)
      • One idea about this was to use better NUT SEMVER values, but for master-branch builds the combo offered by OBS suffices (last tag + amount of commits since) for most cases.
      • Another idea was about optimizing the time spent on man pages, but maybe we do want them regenerated on every platform - with its common settings of whatever (distro name footer and so on)
  5. jimklimov commented on Oct 8, 2025

    @jimklimov
    MemberAuthor

    Oooh SLE workers are nit-picky with "badness" evaluations. I guess recipe quality will go sky high before those builds pass. That's good.

  6. 113 remaining items

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    CIEntries related to continuous integration infrastructure (here CI = tools + scripts + recipes)packaging

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions