From 047dc865bc436a1ee7751c08196d144d4d130fa4 Mon Sep 17 00:00:00 2001 From: thesayyn Date: Wed, 1 May 2024 13:11:05 -0700 Subject: [PATCH] fix: remove pkg_tar workaround from temurin archive --- private/remote/temurin_archive.bzl | 84 ++++++++++++++---------------- 1 file changed, 39 insertions(+), 45 deletions(-) diff --git a/private/remote/temurin_archive.bzl b/private/remote/temurin_archive.bzl index a13c5e40a..ec2bf3f0a 100644 --- a/private/remote/temurin_archive.bzl +++ b/private/remote/temurin_archive.bzl @@ -1,59 +1,51 @@ +"temurin archive repository rule" + +STATIC_MTREE = """\ +./etc time=946684800.0 mode=755 gid=0 uid=0 type=dir +./etc/ssl time=946684800.0 mode=755 gid=0 uid=0 type=dir +./etc/ssl/certs time=946684800.0 mode=755 gid=0 uid=0 type=dir +./etc/ssl/certs/java time=946684800.0 mode=755 gid=0 uid=0 type=dir +./usr time=946684800.0 mode=755 gid=0 uid=0 type=dir +./usr/lib time=946684800.0 mode=755 gid=0 uid=0 type=dir +./usr/lib/jvm time=946684800.0 mode=755 gid=0 uid=0 type=dir +./usr/lib/jvm/%s/lib/security/cacerts nlink=0 time=946684800.0 mode=777 gid=0 uid=0 type=link link=/etc/ssl/certs/java/cacerts +""" + +AWK = """\ +{ + sub("^" "output/lib/security/cacerts", "./etc/ssl/certs/java/cacerts") + sub("^" "output", "./usr/lib/jvm/%s") + sub(/time=[0-9\\.]+/, "time=946684800.0"); + sub("mode=0755", "") + print +} +""" + BUILD_TMPL = """\ # GENERATED BY temurin_archive.bzl load("@distroless//private/pkg:debian_spdx.bzl", "debian_spdx") load("@distroless//private/util:merge_providers.bzl", "merge_providers") +load("@aspect_bazel_lib//lib:tar.bzl", "tar", "mtree_spec") load("@rules_pkg//:pkg.bzl", "pkg_tar") -load("@rules_pkg//pkg:mappings.bzl", "pkg_filegroup", "pkg_files", "pkg_attributes", "pkg_mklink_impl") - -# all files except bin and cacerts -pkg_files( - name = "_most_files", - srcs = glob( - ["output/**/*"], - ), - excludes = ["_executables", "_cacerts"], - strip_prefix = "output", -) - -# special rules for bin files to make them executable and other executables -pkg_files( - name = "_executables", - srcs = glob(["output/bin/*"]) + ["output/lib/jexec", "output/lib/jspawnhelper"], - attributes = pkg_attributes( - mode = "0755", - user = "root", - group = "root", - ), - strip_prefix = "output", -) -# everything that needs to go into the jvm install dir -pkg_filegroup( - name = "_jvm_dir", - srcs = ["_executables", "_most_files"], - prefix = "/usr/lib/jvm/{name}", +SRCS = glob(["output/**/*"]) +mtree_spec( + name = "mtree", + srcs = SRCS, ) -# cacerts rules -pkg_files( - name = "_cacerts", - srcs = glob( - ["output/lib/security/cacerts"], - ), - renames = {{ - "output/lib/security/cacerts": "/etc/ssl/certs/java/cacerts", - }}, +genrule( + name = "mutate_mtree", + srcs = [":mtree"], + tools = ["static.mtree", "mutate.awk"], + outs = ["out.mtree"], + cmd = "cat $(execpath :static.mtree) >$@ && awk -f $(execpath :mutate.awk) <$< >>$@ && sort -o $@ $@" ) -pkg_mklink_impl( - name = "_cacerts_link", - link_name = "/usr/lib/jvm/{name}/lib/security/cacerts", - target = "/etc/ssl/certs/java/cacerts", -) - -pkg_tar( +tar( name = "data", - srcs = ["_jvm_dir", "_cacerts", "_cacerts_link"], + srcs = SRCS, + mtree = "out.mtree" ) pkg_tar( @@ -87,6 +79,8 @@ def _impl(rctx): stripPrefix = rctx.attr.strip_prefix, output = "output", ) + rctx.file("static.mtree", STATIC_MTREE % rctx.attr.name) + rctx.file("mutate.awk", AWK % rctx.attr.name) rctx.template( "control", rctx.attr.control,