| From f784d39b50b36ca06fbe844e2b09cbd996747577 Mon Sep 17 00:00:00 2001 |
| From: Lorenz Brun <lorenz@monogon.tech> |
| Date: Thu, 31 Aug 2023 15:52:06 +0200 |
| Subject: [PATCH] Add support for prepatching |
| |
| --- |
| internal/bzlmod/go_deps.bzl | 8 ++++++++ |
| internal/go_repository.bzl | 10 ++++++++++ |
| 2 files changed, 18 insertions(+) |
| |
| diff --git a/internal/bzlmod/go_deps.bzl b/internal/bzlmod/go_deps.bzl |
| index e304ec5..7684243 100644 |
| --- a/internal/bzlmod/go_deps.bzl |
| +++ b/internal/bzlmod/go_deps.bzl |
| @@ -156,6 +156,9 @@ def _get_build_extra_args(path, gazelle_overrides, gazelle_default_attributes): |
| def _get_patches(path, module_overrides): |
| return _get_override_or_default(module_overrides, struct(), {}, path, [], "patches") |
| |
| +def _get_pre_patches(path, module_overrides): |
| + return _get_override_or_default(module_overrides, struct(), {}, path, [], "pre_patches") |
| + |
| def _get_patch_args(path, module_overrides): |
| override = _get_override_or_default(module_overrides, struct(), {}, path, None, "patch_strip") |
| return ["-p{}".format(override)] if override else [] |
| @@ -605,6 +608,7 @@ def _go_deps_impl(module_ctx): |
| "build_directives": _get_directives(path, gazelle_overrides, gazelle_default_attributes), |
| "build_file_generation": _get_build_file_generation(path, gazelle_overrides, gazelle_default_attributes), |
| "build_extra_args": _get_build_extra_args(path, gazelle_overrides, gazelle_default_attributes), |
| + "pre_patches": _get_pre_patches(path, module_overrides), |
| "patches": _get_patches(path, module_overrides), |
| "patch_args": _get_patch_args(path, module_overrides), |
| "debug_mode": debug_mode, |
| @@ -616,6 +620,7 @@ def _go_deps_impl(module_ctx): |
| "urls": archive_override.urls, |
| "strip_prefix": archive_override.strip_prefix, |
| "sha256": archive_override.sha256, |
| + "pre_patches": _get_pre_patches(path, archive_overrides), |
| "patches": _get_patches(path, archive_overrides), |
| "patch_args": _get_patch_args(path, archive_overrides), |
| }) |
| @@ -799,6 +804,9 @@ _module_override_tag = tag_class( |
| extension within this Bazel module.""", |
| mandatory = True, |
| ), |
| + "pre_patches": attr.label_list( |
| + doc = "A list of patches to apply to the repository before gazelle runs.", |
| + ), |
| "patches": attr.label_list( |
| doc = "A list of patches to apply to the repository *after* gazelle runs.", |
| ), |
| diff --git a/internal/go_repository.bzl b/internal/go_repository.bzl |
| index 627a1f9..4da270f 100644 |
| --- a/internal/go_repository.bzl |
| +++ b/internal/go_repository.bzl |
| @@ -296,6 +296,11 @@ def _go_repository_impl(ctx): |
| if result.return_code: |
| fail("%s: %s" % (ctx.name, result.stderr)) |
| |
| + # TODO(lorenz): Replace this with patch() once the patches argument no longer gets merged with |
| + # the attribute pulled from ctx. |
| + for p in ctx.attr.pre_patches: |
| + ctx.patch(p, 1) |
| + |
| # Repositories are fetched. Determine if build file generation is needed. |
| build_file_names = ctx.attr.build_file_name.split(",") |
| existing_build_file = "" |
| @@ -583,6 +588,11 @@ go_repository = repository_rule( |
| Gazelle directives.""", |
| ), |
| |
| + # Patches to apply before running gazelle. |
| + "pre_patches": attr.label_list( |
| + doc = "A list of patches to apply to the repository before gazelle runs.", |
| + ), |
| + |
| # Patches to apply after running gazelle. |
| "patches": attr.label_list( |
| doc = "A list of patches to apply to the repository after gazelle runs.", |
| -- |
| 2.44.1 |
| |