Provide more examples for pkg_rpm() (#823)

* Move prebuilt_rpmbuild example into rpm subdirectory

This will help us be a bit more organized as we add a few more
RPM-based examples for rules_pkg.

* Fix WORKSPACE file to account for subdirectory move

One we moved this into a subdirectory it was broke because of how it
uses rules_pkg as a local repository.

* s/readme.md/README.md/

The latter seems to be more the norm, so renaming for consistency and
visibility.

* Add more detail to README.md for prebuilt_rpmbuild example

This adds a bit more detail the description of the `prebuilt_rpmbuild`
example so that someone can understand it a bit more.

* Add an example of using system rpmbuild for pkg_rpm()

This example is essentially the same as the prebuilt_rpmbuild example
except that it uses find_system_rpmbuild() to register the local
version of `rpmbuild` as the toolchain to use.

* Add an example with bzlmod using system rpmbuild

This is very similar to the non-bzlmod version except we've replaced
the WORKSPACE file with a MODULE.bazel file.

* Add an example that doesn't use a specfile for pkg_rpm()

This example uses pkg_rpm() to generate the full rpm in lieu of using
a standalone specfile.
19 files changed
tree: 902c53dccc167b238fb86beba978f48ebb08b9ff
  1. .bazelci/
  2. .bcr/
  3. .github/
  4. deb_packages/
  5. distro/
  6. doc_build/
  7. docs/
  8. examples/
  9. pkg/
  10. tests/
  11. toolchains/
  12. .bazelignore
  13. .gitignore
  14. .pre-commit-config.yaml
  15. AUTHORS
  16. BUILD
  17. CHANGELOG.md
  18. CODEOWNERS
  19. CONTRIBUTING.md
  20. CONTRIBUTORS
  21. deps.bzl
  22. developers.md
  23. LICENSE
  24. mappings.bzl
  25. MODULE.bazel
  26. patching.md
  27. pkg.bzl
  28. README.md
  29. version.bzl
  30. WORKSPACE
  31. 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