diff options
author | Mike Kelly <mkelly@arista.com> | 2024-04-29 07:22:14 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-29 10:22:14 -0400 |
commit | c8d6a0294d6d507e9dbf5836a12b91e2fb70fdaa (patch) | |
tree | f55cfb702cef51364b943e27c9d0a5111fb0b161 | |
parent | 9616a33e43e1522b40f8df2c27e292ae5181b04f (diff) | |
download | bazelbuild-rules_pkg-c8d6a0294d6d507e9dbf5836a12b91e2fb70fdaa.tar.gz |
Exclude release from filename when using release_file (#863)
* Exclude release from filename when using release_file
When we're using `release_file` in lieu of `release` we're just
pointing rpmbuild at the file containing the `Release` string and we
don't have it available to inject into the filename resulting in a
strange looking filename of the form `Foo-version-.arch.rpm`.
This change extracts the RPM name generation to a single helper,
`_make_rpm_filename` and tweaks it s.t. if we're missing the value for
`release` we'll just exclude it from the filename format instead.
* Fix test broken test
The test had was using the odd RPM name structure and this change
tweaks it so that the test passes.
-rw-r--r-- | pkg/rpm_pfg.bzl | 38 | ||||
-rw-r--r-- | tests/rpm/pkg_rpm_basic_test.py | 2 |
2 files changed, 28 insertions, 12 deletions
diff --git a/pkg/rpm_pfg.bzl b/pkg/rpm_pfg.bzl index 99b84bc..cf6cb6b 100644 --- a/pkg/rpm_pfg.bzl +++ b/pkg/rpm_pfg.bzl @@ -175,6 +175,22 @@ def _make_absolute_if_not_already_or_is_macro(path): # this can be inlined easily. return path if path.startswith(("/", "%")) else "/" + path +def _make_rpm_filename(rpm_name, version, architecture, package_name=None, release=None): + prefix = "%s-%s" + items = [rpm_name, version] + + if package_name: + prefix += "-%s" + items = [rpm_name, package_name, version] + + if release: + prefix += "-%s" + items += [release] + + fmt = prefix + ".%s.rpm" + + return fmt % tuple(items + [architecture]) + #### Input processing helper functions. # TODO(nacl, #459): These are redundant with functions and structures in @@ -386,12 +402,12 @@ def _process_subrpm(ctx, rpm_name, rpm_info, rpm_ctx, debuginfo_type): rpm_ctx.install_script_pieces.extend(sub_rpm_ctx.install_script_pieces) rpm_ctx.packaged_directories.extend(sub_rpm_ctx.packaged_directories) - package_file_name = "%s-%s-%s-%s.%s.rpm" % ( - rpm_name, - rpm_info.package_name, - rpm_info.version or ctx.attr.version, - ctx.attr.release, - rpm_info.architecture or ctx.attr.architecture, + package_file_name = _make_rpm_filename( + rpm_name = rpm_name, + version = rpm_info.version or ctx.attr.version, + architecture = rpm_info.architecture or ctx.attr.architecture, + package_name = rpm_info.package_name, + release = ctx.attr.release, ) default_file = ctx.actions.declare_file("{}-{}.rpm".format(rpm_name, rpm_info.package_name)) @@ -482,11 +498,11 @@ def _pkg_rpm_impl(ctx): package_file_name = ctx.attr.package_file_name if not package_file_name: - package_file_name = "%s-%s-%s.%s.rpm" % ( + package_file_name = _make_rpm_filename( rpm_name, ctx.attr.version, - ctx.attr.release, ctx.attr.architecture, + release = ctx.attr.release, ) #### rpm spec "preamble" @@ -725,12 +741,12 @@ def _pkg_rpm_impl(ctx): if debuginfo_type != "none": debuginfo_default_file = ctx.actions.declare_file( "{}-debuginfo.rpm".format(rpm_name)) - debuginfo_package_file_name = "%s-%s-%s-%s.%s.rpm" % ( + debuginfo_package_file_name = _make_rpm_filename( rpm_name, - "debuginfo", ctx.attr.version, - ctx.attr.release, ctx.attr.architecture, + package_name = "debuginfo", + release = ctx.attr.release, ) _, debuginfo_output_file, _ = setup_output_files( diff --git a/tests/rpm/pkg_rpm_basic_test.py b/tests/rpm/pkg_rpm_basic_test.py index ab5c49e..8e4dff2 100644 --- a/tests/rpm/pkg_rpm_basic_test.py +++ b/tests/rpm/pkg_rpm_basic_test.py @@ -51,7 +51,7 @@ class PkgRpmBasicTest(unittest.TestCase): self.test_rpm_scriptlets_files_path = self.runfiles.Rlocation( "rules_pkg/tests/rpm/test_rpm_scriptlets_files-1.1.1-2222.noarch.rpm") self.test_rpm_release_version_files = self.runfiles.Rlocation( - "rules_pkg/tests/rpm/test_rpm_release_version_files--.noarch.rpm") + "rules_pkg/tests/rpm/test_rpm_release_version_files-.noarch.rpm") self.test_rpm_epoch = self.runfiles.Rlocation( "rules_pkg/tests/rpm/test_rpm_epoch-1.1.1-2222.noarch.rpm") self.maxDiff = None |