Add pkg_rpm() "data" attribute to provide files for rpmbuild

When building debuginfo packages, find-debuginfo is called by
rpmbuild. To include the relevant source files, they will need to be
accessible to find-debuginfo via rpmbuild.

There are a number of other pieces required for an end-to-end solution
with debuginfo, but they're outside the scope of rules_pkg, e.g.

  - customized find-debuginfo that can run inside bazel
  - special _find_debuginfo_opts used to locate source files
  - figuring out which source files to pass to pkg_rpm() in the first
    place.

The key, though, is that pkg_rpm() accepts extra data in the first
place.

Fixes: #965
1 file changed
tree: 605bb6f293f3c1feb448968e8f8e3a0a63425161
  1. .bazelci/
  2. .bcr/
  3. .github/
  4. distro/
  5. doc_build/
  6. docs/
  7. examples/
  8. pkg/
  9. tests/
  10. toolchains/
  11. .bazelignore
  12. .bazelrc
  13. .gitignore
  14. .pre-commit-config.yaml
  15. .typos.toml
  16. AUTHORS
  17. BUILD
  18. CHANGELOG.md
  19. CODEOWNERS
  20. CONTRIBUTING.md
  21. CONTRIBUTORS
  22. deps.bzl
  23. developers.md
  24. LICENSE
  25. mappings.bzl
  26. MODULE.bazel
  27. patching.md
  28. pkg.bzl
  29. README.md
  30. version.bzl
  31. WORKSPACE
  32. WORKSPACE.bzlmod
README.md

Bazel package building

Bazel rules for building tar, zip, deb, and rpm for packages.

For the latest version, see Releases (with WORKSPACE setup) / Documentation

Use rules-pkg-discuss@googlegroups.com for discussion.

CI: Build status

Basic rules

Package building rules

  • pkg - Rules for building packages of various types.
  • examples - Cookbook examples for using the rules.

As of Bazel 4.x, Bazel uses this rule set for packaging its distribution. Bazel still contains a limited version of pkg_tar but its feature set is frozen. Any new capabilities will be added here.

WORKSPACE setup

Sample, but see releases for the current release.

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
    name = "rules_pkg",
    urls = [
        "https://mirror.bazel.build/github.com/bazelbuild/rules_pkg/releases/download/0.9.1/rules_pkg-0.9.1.tar.gz",
        "https://github.com/bazelbuild/rules_pkg/releases/download/0.9.1/rules_pkg-0.9.1.tar.gz",
    ],
    sha256 = "8f9ee2dc10c1ae514ee599a8b42ed99fa262b757058f65ad3c384289ff70c4b8",
)
load("@rules_pkg//:deps.bzl", "rules_pkg_dependencies")
rules_pkg_dependencies()

To use pkg_rpm(), you must provide a copy of rpmbuild. You can use the system installed rpmbuild with this stanza.

load("@rules_pkg//toolchains/rpm:rpmbuild_configure.bzl", "find_system_rpmbuild")

find_system_rpmbuild(
    name = "rules_pkg_rpmbuild",
    verbose = False,
)

MODULE.bazel setup

bazel_dep(name = "rules_pkg", version = "0.0.10")

To use pkg_rpm(), you must provide a copy of rpmbuild. You can use the system installed rpmbuild with this stanza.

find_rpm = use_extension("//toolchains/rpm:rpmbuild_configure.bzl", "find_system_rpmbuild_bzlmod")
use_repo(find_rpm, "rules_pkg_rpmbuild")
register_toolchains("@rules_pkg_rpmbuild//:all")

For developers

We hold an engineering status meeting on the first Monday of every month at 10am USA East coast time. Add to calendar / meeting notes