blob: edbc94c05752ea0b64e009a2cad226605e5eeb17 [file] [log] [blame]
Copyright 2020 The Monogon Project Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
From db55421f284253c06561a4df18bca262999962ce Mon Sep 17 00:00:00 2001
From: Lorenz Brun <lorenz@nexantic.com>
Date: Wed, 22 Jul 2020 09:46:56 +0200
Subject: [PATCH] Add support for prepatching
---
internal/go_repository.bzl | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/internal/go_repository.bzl b/internal/go_repository.bzl
index 51a7317..86899bd 100644
--- a/internal/go_repository.bzl
+++ b/internal/go_repository.bzl
@@ -127,6 +127,8 @@ def _go_repository_impl(ctx):
if result.stderr:
print("fetch_repo: " + result.stderr)
+ patch(ctx, True)
+
# Repositories are fetched. Determine if build file generation is needed.
build_file_names = ctx.attr.build_file_name.split(",")
existing_build_file = ""
@@ -160,7 +162,7 @@ def _go_repository_impl(ctx):
"-repo_root",
ctx.path(""),
"-repo_config",
- ctx.path(ctx.attr.build_config)
+ ctx.path(ctx.attr.build_config),
]
if ctx.attr.version:
cmd.append("-go_repository_module_mode")
@@ -247,9 +249,13 @@ go_repository = repository_rule(
],
),
"build_extra_args": attr.string_list(),
- "build_config": attr.label(default= "@bazel_gazelle_go_repository_config//:WORKSPACE"),
+ "build_config": attr.label(default = "@bazel_gazelle_go_repository_config//:WORKSPACE"),
"build_directives": attr.string_list(default = []),
+ # Patches to apply before running gazelle.
+ "pre_patches": attr.label_list(),
+ "pre_patch_cmds": attr.string_list(default = []),
+
# Patches to apply after running gazelle.
"patches": attr.label_list(),
"patch_tool": attr.string(default = "patch"),
@@ -260,10 +266,11 @@ go_repository = repository_rule(
"""See repository.rst#go-repository for full documentation."""
# Copied from @bazel_tools//tools/build_defs/repo:utils.bzl
-def patch(ctx):
+def patch(ctx, pre_mode = False):
"""Implementation of patching an already extracted repository"""
bash_exe = ctx.os.environ["BAZEL_SH"] if "BAZEL_SH" in ctx.os.environ else "bash"
- for patchfile in ctx.attr.patches:
+ patches = ctx.attr.patches if not pre_mode else ctx.attr.pre_patches
+ for patchfile in patches:
command = "{patchtool} {patch_args} < {patchfile}".format(
patchtool = ctx.attr.patch_tool,
patchfile = ctx.path(patchfile),
@@ -276,7 +283,8 @@ def patch(ctx):
if st.return_code:
fail("Error applying patch %s:\n%s%s" %
(str(patchfile), st.stderr, st.stdout))
- for cmd in ctx.attr.patch_cmds:
+ patch_cmds = ctx.attr.patch_cmds if not pre_mode else ctx.attr.pre_patch_cmds
+ for cmd in patch_cmds:
st = ctx.execute([bash_exe, "-c", cmd])
if st.return_code:
fail("Error applying patch command %s:\n%s%s" %
--
2.25.1