diff --git a/examples/MODULE.bazel b/examples/MODULE.bazel new file mode 100644 index 00000000..6d596741 --- /dev/null +++ b/examples/MODULE.bazel @@ -0,0 +1,22 @@ +module( + name = "rules_pkg_examples", + version = "0.0.0", # never ships + compatibility_level = 1, +) + +local_path_override( + module_name = "rules_pkg", + path = "..", +) + +bazel_dep(name = "rules_python", version = "0.24.0") +bazel_dep(name = "rules_cc", version = "0.0.2") + +# Find the system rpmbuild if one is available. +find_rpm = use_extension( + "//toolchains/rpm:rpmbuild_configure.bzl", + "find_system_rpmbuild_bzlmod", + dev_dependency = True +) +use_repo(find_rpm, "rules_pkg_rpmbuild") +register_toolchains("@rules_pkg_rpmbuild//:all", dev_dependency = True) diff --git a/examples/WORKSPACE b/examples/WORKSPACE new file mode 100644 index 00000000..d1666e03 --- /dev/null +++ b/examples/WORKSPACE @@ -0,0 +1,17 @@ +workspace(name = "rules_pkg_examples") + +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +local_repository( + name = "rules_pkg", + path = "..", +) + +load("@rules_pkg//pkg:deps.bzl", "rules_pkg_dependencies") + +rules_pkg_dependencies() + +# Find rpmbuild if it exists. +load("@rules_pkg//toolchains/rpm:rpmbuild_configure.bzl", "find_system_rpmbuild") + +find_system_rpmbuild(name = "rules_pkg_rpmbuild") diff --git a/examples/rpm/BUILD b/examples/rpm/BUILD new file mode 100644 index 00000000..2900064c --- /dev/null +++ b/examples/rpm/BUILD @@ -0,0 +1,23 @@ +load("@rules_pkg//pkg:mappings.bzl", "pkg_filegroup") +load("@rules_pkg//pkg:rpm.bzl", "pkg_rpm") + +pkg_filegroup( + name = "rpm_filegroup", + srcs = [ + "//rpm/main:exe", + ], + prefix = "/usr/bin", +) + +pkg_rpm( + name = "rpm", + package_name = "example", + license = "example", + summary = "example", + version = "1.0.0", + release = "1", + description = "example", + srcs = [ + ":rpm_filegroup", + ], +) diff --git a/examples/rpm/main/BUILD b/examples/rpm/main/BUILD new file mode 100644 index 00000000..7d9e11b1 --- /dev/null +++ b/examples/rpm/main/BUILD @@ -0,0 +1,29 @@ +# Package an executable up for distribution +# +load("@rules_pkg//pkg:mappings.bzl", "pkg_files", "pkg_attributes") +load("@rules_python//python:defs.bzl", "py_binary") + +cc_binary( + name = "hello_world", + srcs = ["hello_world.cc"], +) + +py_binary( + name = "hello_world_py", + main = "hello_world.py", + srcs = ["hello_world.py"], +) + +pkg_files( + name = "exe", + srcs = [ + ":hello_world", + ":hello_world_py", + ], + visibility = ["//visibility:public"], + attributes = pkg_attributes( + mode = "0755", + user = "root", + group = "root", + ), +) diff --git a/examples/rpm/main/hello_world.cc b/examples/rpm/main/hello_world.cc new file mode 100644 index 00000000..cf3e84aa --- /dev/null +++ b/examples/rpm/main/hello_world.cc @@ -0,0 +1,5 @@ +#include + +int main(int argc, char *argv[]) { + std::cout << "hello world" << std::endl; +} diff --git a/examples/rpm/main/hello_world.py b/examples/rpm/main/hello_world.py new file mode 100644 index 00000000..27c708d6 --- /dev/null +++ b/examples/rpm/main/hello_world.py @@ -0,0 +1,2 @@ +if __name__ == "__main__": + print("hello world") diff --git a/pkg/rpm_pfg.bzl b/pkg/rpm_pfg.bzl index 28c5b2d1..f36177d8 100644 --- a/pkg/rpm_pfg.bzl +++ b/pkg/rpm_pfg.bzl @@ -45,7 +45,8 @@ spec_filetype = [".spec", ".spec.in", ".spec.tpl"] # TODO(nacl, #292): cp -r does not do the right thing with TreeArtifacts _INSTALL_FILE_STANZA_FMT = """ install -d "%{{buildroot}}/$(dirname '{1}')" -cp '{0}' '%{{buildroot}}/{1}' +ls -ld '{0}' '%{{_topdir}}/BUILD/{0}' +cp '%{{_topdir}}/BUILD/{0}' '%{{buildroot}}/{1}' """.strip() # TODO(nacl): __install