mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-07 22:54:17 -05:00
blst: Change from blst from http_archive to go_repository (#15709)
This commit is contained in:
3
changelog/pvl-blst-go-repo.md
Normal file
3
changelog/pvl-blst-go-repo.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
### Changed
|
||||||
|
|
||||||
|
- Changed blst dependency from `http_archive` to `go_repository` so that gazelle can keep it in sync with go.mod.
|
||||||
19
deps.bzl
19
deps.bzl
@@ -3312,6 +3312,15 @@ def prysm_deps():
|
|||||||
sum = "h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=",
|
sum = "h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=",
|
||||||
version = "v1.10.0",
|
version = "v1.10.0",
|
||||||
)
|
)
|
||||||
|
go_repository(
|
||||||
|
name = "com_github_supranational_blst",
|
||||||
|
build_file_generation = "off",
|
||||||
|
importpath = "github.com/supranational/blst",
|
||||||
|
patch_args = ["-p1"],
|
||||||
|
patches = ["//third_party:com_github_supranational_blst.patch"],
|
||||||
|
sum = "h1:xNMoHRJOTwMn63ip6qoWJ2Ymgvj7E2b9jY2FAwY+qRo=",
|
||||||
|
version = "v0.3.14",
|
||||||
|
)
|
||||||
go_repository(
|
go_repository(
|
||||||
name = "com_github_syndtr_goleveldb",
|
name = "com_github_syndtr_goleveldb",
|
||||||
importpath = "github.com/syndtr/goleveldb",
|
importpath = "github.com/syndtr/goleveldb",
|
||||||
@@ -4939,13 +4948,3 @@ def prysm_deps():
|
|||||||
sum = "h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=",
|
sum = "h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=",
|
||||||
version = "v1.27.0",
|
version = "v1.27.0",
|
||||||
)
|
)
|
||||||
|
|
||||||
http_archive(
|
|
||||||
name = "com_github_supranational_blst",
|
|
||||||
urls = [
|
|
||||||
"https://github.com/supranational/blst/archive/8c7db7fe8d2ce6e76dc398ebd4d475c0ec564355.tar.gz",
|
|
||||||
],
|
|
||||||
strip_prefix = "blst-8c7db7fe8d2ce6e76dc398ebd4d475c0ec564355",
|
|
||||||
build_file = "//third_party:blst/blst.BUILD",
|
|
||||||
sha256 = "e9041d03594271c9739d22d9f013ea8b5c28403285a2e8938f6e41a2437c6ff8",
|
|
||||||
)
|
|
||||||
|
|||||||
25
third_party/blst/README.md
vendored
Normal file
25
third_party/blst/README.md
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# blst BUILD file
|
||||||
|
|
||||||
|
Due to the project structure of [blst](https://github.com/supranational/blst) having go bindings
|
||||||
|
and cdeps in different directories, [gazelle](https://github.com/bazel-contrib/bazel-gazelle)
|
||||||
|
is unable to appropriately generate the BUILD.bazel files for this repository. We have hand written
|
||||||
|
the BUILD.bazel file here by the name `blst.BUILD`. PR [#6539](https://github.com/OffchainLabs/prysm/pull/6539)
|
||||||
|
added build support for blst, but relied on an [http_archive](https://bazel.build/rules/lib/repo/http#http_archive)
|
||||||
|
repository rule to provide blst as a dependency. This pattern worked, but gazelle would not keep the
|
||||||
|
dependency in sync with go.mod. There was a risk that go and bazel builds would include different versions
|
||||||
|
of blst.
|
||||||
|
|
||||||
|
Now, we can switch to a [go_repository](https://github.com/bazel-contrib/bazel-gazelle/blob/master/reference.md#go_repository)
|
||||||
|
model which gazelle understand how to sync with go.mod. However, we still have to tell gazelle how generate a BUILD.bazel file.
|
||||||
|
Our solution is to tell gazelle not to generate any build file, then we provide blst.BUILD as a patch.
|
||||||
|
|
||||||
|
Generating the patch is relatively straight forward:
|
||||||
|
|
||||||
|
```
|
||||||
|
mkdir /tmp/a
|
||||||
|
mkdir /tmp/b
|
||||||
|
cp ./third_party/blst/blst.BUILD /tmp/b/BUILD.bazel
|
||||||
|
(cd /tmp && diff -urN a b) > ./third_party/com_github_supranational_blst.patch
|
||||||
|
```
|
||||||
|
|
||||||
|
If future edits are needed, edit the ./third_party/blst/blst.BUILD and regenerate the patch.
|
||||||
132
third_party/com_github_supranational_blst.patch
vendored
Normal file
132
third_party/com_github_supranational_blst.patch
vendored
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
diff --color -urN a/BUILD.bazel b/BUILD.bazel
|
||||||
|
--- a/BUILD.bazel 1969-12-31 18:00:00.000000000 -0600
|
||||||
|
+++ b/BUILD.bazel 2025-09-17 10:29:51.159884226 -0500
|
||||||
|
@@ -0,0 +1,128 @@
|
||||||
|
+load("@prysm//tools/go:def.bzl", "go_library")
|
||||||
|
+load("@io_bazel_rules_go//go:def.bzl", "go_test")
|
||||||
|
+
|
||||||
|
+config_setting(
|
||||||
|
+ name = "blst_modern",
|
||||||
|
+ constraint_values = [
|
||||||
|
+ "@platforms//os:linux",
|
||||||
|
+ "@platforms//cpu:x86_64",
|
||||||
|
+ ],
|
||||||
|
+ values = {
|
||||||
|
+ "define": "blst_modern=true",
|
||||||
|
+ },
|
||||||
|
+)
|
||||||
|
+
|
||||||
|
+go_library(
|
||||||
|
+ name = "go_default_library",
|
||||||
|
+ srcs = [
|
||||||
|
+ "bindings/go/blst.go",
|
||||||
|
+ "bindings/go/cgo_server.c",
|
||||||
|
+ ],
|
||||||
|
+ cgo = True,
|
||||||
|
+ copts = [
|
||||||
|
+ "-D__BLST_CGO__",
|
||||||
|
+ "-Ibindings",
|
||||||
|
+ "-Isrc",
|
||||||
|
+ "-O2",
|
||||||
|
+ ] + select({
|
||||||
|
+ "@io_bazel_rules_go//go/platform:amd64": [
|
||||||
|
+ "-mno-avx",
|
||||||
|
+ "-D__ADX__",
|
||||||
|
+ ],
|
||||||
|
+ "//conditions:default": [],
|
||||||
|
+ }) + select({
|
||||||
|
+ "//conditions:default": [
|
||||||
|
+ "-D__BLST_PORTABLE__",
|
||||||
|
+ ],
|
||||||
|
+ ":blst_modern": [],
|
||||||
|
+ }),
|
||||||
|
+ cdeps = [":blst"],
|
||||||
|
+ importpath = "github.com/supranational/blst/bindings/go",
|
||||||
|
+ visibility = ["//visibility:public"],
|
||||||
|
+)
|
||||||
|
+
|
||||||
|
+go_test(
|
||||||
|
+ name = "go_default_test",
|
||||||
|
+ srcs = [
|
||||||
|
+ "bindings/go/blst_htoc_test.go",
|
||||||
|
+ "bindings/go/blst_minpk_test.go",
|
||||||
|
+ "bindings/go/blst_minsig_test.go",
|
||||||
|
+ ],
|
||||||
|
+ embed = [":go_default_library"],
|
||||||
|
+ data = glob([
|
||||||
|
+ "bindings/go/hash_to_curve/*.json",
|
||||||
|
+ ]),
|
||||||
|
+)
|
||||||
|
+
|
||||||
|
+cc_library(
|
||||||
|
+ name = "blst",
|
||||||
|
+ srcs = [
|
||||||
|
+ "bindings/blst.h",
|
||||||
|
+ "bindings/blst_aux.h",
|
||||||
|
+ ],
|
||||||
|
+ hdrs = [
|
||||||
|
+ "bindings/blst.h",
|
||||||
|
+ "bindings/blst_aux.h",
|
||||||
|
+ ],
|
||||||
|
+ deps = [
|
||||||
|
+ ":src",
|
||||||
|
+ ":asm",
|
||||||
|
+ ],
|
||||||
|
+ strip_include_prefix = "bindings",
|
||||||
|
+ visibility = ["//visibility:public"],
|
||||||
|
+)
|
||||||
|
+
|
||||||
|
+cc_library(
|
||||||
|
+ name = "asm_hdrs",
|
||||||
|
+ hdrs = glob([
|
||||||
|
+ "build/**/*.s",
|
||||||
|
+ "build/**/*.S",
|
||||||
|
+ ], exclude = ["build/assembly.s"]),
|
||||||
|
+)
|
||||||
|
+
|
||||||
|
+cc_library(
|
||||||
|
+ name = "asm",
|
||||||
|
+ srcs = [
|
||||||
|
+ "build/assembly.S",
|
||||||
|
+ ],
|
||||||
|
+ copts = [
|
||||||
|
+ "-O2",
|
||||||
|
+ ] + select({
|
||||||
|
+ "@io_bazel_rules_go//go/platform:amd64": [
|
||||||
|
+ "-mno-avx",
|
||||||
|
+ "-D__ADX__",
|
||||||
|
+ ],
|
||||||
|
+ "//conditions:default": [],
|
||||||
|
+ }) + select({
|
||||||
|
+ "//conditions:default": [
|
||||||
|
+ "-D__BLST_PORTABLE__",
|
||||||
|
+ ],
|
||||||
|
+ ":blst_modern": [],
|
||||||
|
+ }),
|
||||||
|
+ deps = [":asm_hdrs"],
|
||||||
|
+ linkstatic = True,
|
||||||
|
+)
|
||||||
|
+
|
||||||
|
+cc_library(
|
||||||
|
+ name = "hdrs",
|
||||||
|
+ hdrs = glob(
|
||||||
|
+ [
|
||||||
|
+ "src/*.c",
|
||||||
|
+ "src/*.h",
|
||||||
|
+ ],
|
||||||
|
+ exclude = [
|
||||||
|
+ "src/client_*.c",
|
||||||
|
+ ],
|
||||||
|
+ ),
|
||||||
|
+ strip_include_prefix = "src",
|
||||||
|
+)
|
||||||
|
+
|
||||||
|
+cc_library(
|
||||||
|
+ name = "src",
|
||||||
|
+ srcs = [
|
||||||
|
+ "src/server.c",
|
||||||
|
+ ],
|
||||||
|
+ deps = [
|
||||||
|
+ ":hdrs",
|
||||||
|
+ ],
|
||||||
|
+)
|
||||||
Reference in New Issue
Block a user