Skip to content

Add dynamic dependency infrastructure for RPM packages#759

Open
cottsay wants to merge 1 commit intomasterfrom
cottsay/rpm-dep-generator
Open

Add dynamic dependency infrastructure for RPM packages#759
cottsay wants to merge 1 commit intomasterfrom
cottsay/rpm-dep-generator

Conversation

@cottsay
Copy link
Member

@cottsay cottsay commented Mar 12, 2026

These files build the infrastructure necessary to enable RPM packages to enumerate their dependencies at build time, rather than resolving and hard-coding them when Bloom is run.

While the RPM dependency generator has existed for some time, the %generate_buildrequires feature added in RPM 4.15 allows builds to generate not only the install-time dependencies, but also the dependencies needed to build the package at all.

These packages should be installed to the /etc/rpm directory for the RPM build process to find them. On platforms which don't build RPM packages, they serve no purpose and should not be installed.


Long term, I'd like to move this functionality to rosdep itself in as platform-independent dependency enumeration. If/when that happens, the script invocations from these RPM macros will change, but we won't need to re-generate RPM metadata with Bloom, so I don't consider the script's API, arguments, or location to be part of Bloom's public API.

This is the first of two (I think?) PRs that will enable the dynamic RPM generator in Bloom. The next step will include a new Bloom generator which generates spec files that call these RPM macros.

https://rpm.org/docs/4.19.x/manual/dependency_generators.html

These files build the infrastructure necessary to enable RPM packages to
enumerate their dependencies at build time, rather than resolving and
hard-coding them when Bloom is run.

While the RPM dependency generator has existed for some time, the
%generate_buildrequires feature added in RPM 4.15 allows builds to
generate not only the install-time dependencies, but also the
dependencies needed to build the package at all.

These packages should be installed to the /etc/rpm directory for the RPM
build process to find them. On platforms which don't build RPM packages,
they serve no purpose and should not be installed.
@cottsay cottsay requested a review from claraberendsen March 12, 2026 20:25
@cottsay cottsay self-assigned this Mar 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant