From 412520c18217e0c781658965f2711aaeda6fd75f Mon Sep 17 00:00:00 2001 From: "Daniel P. Purkhus" Date: Wed, 28 Jun 2023 13:05:15 +0000 Subject: [PATCH] WIP --- BUILD.bazel | 24 ++++++++++++++++++++++-- WORKSPACE | 35 ++++++++++++++++++++++++----------- dotnet/gazelle_setup.bzl | 4 ++++ dotnet/repositories.bzl | 19 +++++++++++++++++++ gazelle/dotnet/BUILD.bazel | 0 go.mod | 3 +++ go_deps.bzl | 2 ++ internal_deps.bzl | 18 ------------------ tidy.sh | 12 ++++++++++++ 9 files changed, 86 insertions(+), 31 deletions(-) create mode 100644 dotnet/gazelle_setup.bzl create mode 100644 gazelle/dotnet/BUILD.bazel create mode 100644 go.mod create mode 100644 go_deps.bzl create mode 100755 tidy.sh diff --git a/BUILD.bazel b/BUILD.bazel index 43cb295b..de40788d 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -1,5 +1,5 @@ load("@bazel_skylib//:bzl_library.bzl", "bzl_library") -load("@bazel_gazelle//:def.bzl", "gazelle", "gazelle_binary") +load("@bazel_gazelle//:def.bzl", "DEFAULT_LANGUAGES", "gazelle", "gazelle_binary") package(default_visibility = ["//visibility:public"]) @@ -7,7 +7,7 @@ exports_files(["AUTHORS"]) gazelle_binary( name = "gazelle_bin", - languages = ["@bazel_skylib_gazelle_plugin//bzl"], + languages = ["@bazel_skylib_gazelle_plugin//bzl"] + DEFAULT_LANGUAGES, ) # gazelle:exclude examples @@ -16,6 +16,21 @@ gazelle( gazelle = "gazelle_bin", ) +gazelle( + name = "gazelle_update_repos", + args = [ + "-from_file=go.mod", + "-to_macro=go_deps.bzl%go_deps", + "-prune", + ], + command = "update-repos", +) + +sh_binary( + name = "tidy", + srcs = ["tidy.sh"], +) + bzl_library( name = "internal_deps", srcs = ["internal_deps.bzl"], @@ -24,3 +39,8 @@ bzl_library( "@bazel_tools//tools/build_defs/repo:utils.bzl", ], ) + +bzl_library( + name = "go_deps", + srcs = ["go_deps.bzl"], +) diff --git a/WORKSPACE b/WORKSPACE index 8ad86460..a4f1326f 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -3,6 +3,8 @@ workspace(name = "rules_dotnet") load(":internal_deps.bzl", "rules_dotnet_internal_deps") load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") +# gazelle:repo bazel_gazelle + # Fetch deps needed only locally for development rules_dotnet_internal_deps() @@ -11,12 +13,34 @@ load( "//dotnet:repositories.bzl", "dotnet_register_toolchains", "rules_dotnet_dependencies", + "rules_dotnet_gazelle_dependencies", ) rules_dotnet_dependencies() dotnet_register_toolchains("dotnet", "7.0.101") +rules_dotnet_gazelle_dependencies() + +# Gazelle, for generating bzl_library targets, go targets and test the dotnet gazelle plugin +load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") +load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies") +load("//:go_deps.bzl", "go_deps") + +# gazelle:repository_macro go_deps.bzl%go_deps +go_deps() + +go_rules_dependencies() + +go_register_toolchains(version = "1.20.4") + +gazelle_dependencies() + +load("//dotnet:gazelle_setup.bzl", "rules_dotnet_gazelle_setup") + +# gazelle:repo bazel_gazelle +rules_dotnet_gazelle_setup() + # Fetch NuGet packages needed by end-users load("//dotnet:rules_dotnet_nuget_packages.bzl", "rules_dotnet_nuget_packages") @@ -40,17 +64,6 @@ load("@rules_pkg//:deps.bzl", "rules_pkg_dependencies") rules_pkg_dependencies() -############################################ -# Gazelle, for generating bzl_library targets -load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") -load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies") - -go_rules_dependencies() - -go_register_toolchains(version = "1.19.5") - -gazelle_dependencies() - # Used for Bazel CI http_archive( name = "bazelci_rules", diff --git a/dotnet/gazelle_setup.bzl b/dotnet/gazelle_setup.bzl new file mode 100644 index 00000000..6b6b8485 --- /dev/null +++ b/dotnet/gazelle_setup.bzl @@ -0,0 +1,4 @@ +load("@rules_dotnet//:go_deps.bzl", "go_deps") + +def rules_dotnet_gazelle_setup(): + go_deps() diff --git a/dotnet/repositories.bzl b/dotnet/repositories.bzl index ce4b8d2f..00c6f342 100644 --- a/dotnet/repositories.bzl +++ b/dotnet/repositories.bzl @@ -35,6 +35,25 @@ def rules_dotnet_dependencies(): url = "https://github.com/aspect-build/bazel-lib/releases/download/v1.29.2/bazel-lib-v1.29.2.tar.gz", ) +def rules_dotnet_gazelle_dependencies(): + http_archive( + name = "io_bazel_rules_go", + sha256 = "6dc2da7ab4cf5d7bfc7c949776b1b7c733f05e56edc4bcd9022bb249d2e2a996", + urls = [ + "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.39.1/rules_go-v0.39.1.zip", + "https://github.com/bazelbuild/rules_go/releases/download/v0.39.1/rules_go-v0.39.1.zip", + ], + ) + + http_archive( + name = "bazel_gazelle", + sha256 = "727f3e4edd96ea20c29e8c2ca9e8d2af724d8c7778e7923a854b2c80952bc405", + urls = [ + "https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.30.0/bazel-gazelle-v0.30.0.tar.gz", + "https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.30.0/bazel-gazelle-v0.30.0.tar.gz", + ], + ) + ######## # Remaining content of the file is only used to support toolchains. ######## diff --git a/gazelle/dotnet/BUILD.bazel b/gazelle/dotnet/BUILD.bazel new file mode 100644 index 00000000..e69de29b diff --git a/go.mod b/go.mod new file mode 100644 index 00000000..5759c841 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module github.com/bazelbuild/rules_dotnet + +go 1.20 diff --git a/go_deps.bzl b/go_deps.bzl new file mode 100644 index 00000000..b64c64c2 --- /dev/null +++ b/go_deps.bzl @@ -0,0 +1,2 @@ +def go_deps(): + pass diff --git a/internal_deps.bzl b/internal_deps.bzl index 7d49d702..731cd2fc 100644 --- a/internal_deps.bzl +++ b/internal_deps.bzl @@ -20,24 +20,6 @@ def rules_dotnet_internal_deps(): sha256 = "2401b1369ef44cc42f91dc94443ef491208dbd06da1e1e10b702d8c189f098e3", ) - http_archive( - name = "io_bazel_rules_go", - sha256 = "dd926a88a564a9246713a9c00b35315f54cbd46b31a26d5d8fb264c07045f05d", - urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.38.1/rules_go-v0.38.1.zip", - "https://github.com/bazelbuild/rules_go/releases/download/v0.38.1/rules_go-v0.38.1.zip", - ], - ) - - http_archive( - name = "bazel_gazelle", - sha256 = "ecba0f04f96b4960a5b250c8e8eeec42281035970aa8852dda73098274d14a1d", - urls = [ - "https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.29.0/bazel-gazelle-v0.29.0.tar.gz", - "https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.29.0/bazel-gazelle-v0.29.0.tar.gz", - ], - ) - http_archive( name = "bazel_skylib", sha256 = "f24ab666394232f834f74d19e2ff142b0af17466ea0c69a3f4c276ee75f6efce", diff --git a/tidy.sh b/tidy.sh new file mode 100755 index 00000000..94759f3d --- /dev/null +++ b/tidy.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +set -eou pipefail + +# To add a new go dependency, make the required changes to the go files (import and use) and then +# run this file. + +cd "${BUILD_WORKSPACE_DIRECTORY}" + +bazel run @go_sdk//:bin/go -- mod tidy +bazel run //:gazelle_update_repos +bazel run //:gazelle