| """Release notes generator""" | |
| def print_rel_notes(*, name, version, archive): | |
| native.genrule( | |
| name = name, | |
| outs = [name + ".txt"], | |
| cmd = """ | |
| [ "$$(/usr/bin/git rev-parse --is-shallow-repository)" == "true" ] && /usr/bin/git fetch --unshallow | |
| last_rel=$$(git describe --tags --abbrev=0 HEAD~1) | |
| changelog=$$(/usr/bin/git log tags/$$last_rel..HEAD --format=oneline --invert-grep --grep 'ignore-relnotes' --) | |
| sha=$$(/usr/bin/sha256sum $(SRCS) | cut -d ' ' -f1) | |
| cat > $@ <<EOF | |
| **Changes since $$last_rel** | |
| $$changelog | |
| **MODULE.bazel setup** | |
| ~~~ | |
| bazel_dep(name = "rules_java", version = "{VERSION}") | |
| ~~~ | |
| **WORKSPACE setup** | |
| With Bazel 8.0.0 and before 8.3.0, add the following to your `.bazelrc` file: | |
| ~~~ | |
| # https://github.com/bazelbuild/bazel/pull/26119 | |
| common --repositories_without_autoloads=bazel_features_version,bazel_features_globals | |
| ~~~ | |
| In all cases, add the following to your `WORKSPACE` file: | |
| ~~~ | |
| load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") | |
| http_archive( | |
| name = "rules_java", | |
| urls = [ | |
| "https://github.com/bazelbuild/rules_java/releases/download/{VERSION}/rules_java-{VERSION}.tar.gz", | |
| ], | |
| sha256 = "$$sha", | |
| ) | |
| http_archive( | |
| name = "bazel_features", | |
| sha256 = "a660027f5a87f13224ab54b8dc6e191693c554f2692fcca46e8e29ee7dabc43b", | |
| strip_prefix = "bazel_features-1.30.0", | |
| url = "https://github.com/bazel-contrib/bazel_features/releases/download/v1.30.0/bazel_features-v1.30.0.tar.gz", | |
| ) | |
| load("@bazel_features//:deps.bzl", "bazel_features_deps") | |
| bazel_features_deps() | |
| load("@rules_java//java:rules_java_deps.bzl", "rules_java_dependencies") | |
| rules_java_dependencies() | |
| # note that the following line is what is minimally required from protobuf for the java rules | |
| # consider using the protobuf_deps() public API from @com_google_protobuf//:protobuf_deps.bzl | |
| load("@com_google_protobuf//bazel/private:proto_bazel_features.bzl", "proto_bazel_features") # buildifier: disable=bzl-visibility | |
| proto_bazel_features(name = "proto_bazel_features") | |
| # register toolchains | |
| load("@rules_java//java:repositories.bzl", "rules_java_toolchains") | |
| rules_java_toolchains() | |
| ~~~ | |
| **Using the rules** | |
| See [the source](https://github.com/bazelbuild/rules_java/tree/{VERSION}). | |
| EOF | |
| """.format(ARCHIVE = archive, VERSION = version), | |
| srcs = [archive], | |
| tags = ["local", "manual"], | |
| visibility = ["//test:__pkg__"], | |
| ) |