From c74696366fb1ab3f3400b6a98a384e8c2f1207ba Mon Sep 17 00:00:00 2001 From: vsuryaprasad-hcl Date: Tue, 30 Apr 2024 07:11:22 -0400 Subject: [PATCH] [sdn_tests]: Adding Build support for pins_ondatra --- sdn_tests/pins_ondatra/.gitignore | 4 + sdn_tests/pins_ondatra/BUILD | 4 + sdn_tests/pins_ondatra/README.md | 29 ++ sdn_tests/pins_ondatra/WORKSPACE.bazel | 135 ++++++ .../bazel/patches/ghodss_yaml.patch | 12 + .../gnmi-001-fix_virtual_proto_import.patch | 37 ++ .../pins_ondatra/bazel/patches/gnmi.patch | 392 ++++++++++++++++++ .../pins_ondatra/bazel/patches/gnoi.patch | 45 ++ .../pins_ondatra/bazel/patches/gnoigo.patch | 32 ++ .../pins_ondatra/bazel/patches/gnsi.patch | 59 +++ .../pins_ondatra/bazel/patches/gribi.patch | 48 +++ ...-001-fix_file_watcher_race_condition.patch | 12 + ...03-fix_go_gazelle_register_toolchain.patch | 12 + .../pins_ondatra/bazel/patches/ondatra.patch | 51 +++ .../pins_ondatra/bazel/patches/p4lang.patch | 24 ++ .../bazel/patches/rules_proto_grpc.patch | 39 ++ .../pins_ondatra/bazel/patches/snappi.patch | 53 +++ .../pins_ondatra/bazel/patches/ygnmi.patch | 13 + .../pins_ondatra/bazel/patches/ygot.patch | 85 ++++ sdn_tests/pins_ondatra/infra_deps.bzl | 324 +++++++++++++++ sdn_tests/pins_ondatra/pins_deps.bzl | 203 +++++++++ 21 files changed, 1613 insertions(+) create mode 100644 sdn_tests/pins_ondatra/.gitignore create mode 100644 sdn_tests/pins_ondatra/BUILD create mode 100644 sdn_tests/pins_ondatra/README.md create mode 100644 sdn_tests/pins_ondatra/WORKSPACE.bazel create mode 100644 sdn_tests/pins_ondatra/bazel/patches/ghodss_yaml.patch create mode 100644 sdn_tests/pins_ondatra/bazel/patches/gnmi-001-fix_virtual_proto_import.patch create mode 100644 sdn_tests/pins_ondatra/bazel/patches/gnmi.patch create mode 100644 sdn_tests/pins_ondatra/bazel/patches/gnoi.patch create mode 100644 sdn_tests/pins_ondatra/bazel/patches/gnoigo.patch create mode 100644 sdn_tests/pins_ondatra/bazel/patches/gnsi.patch create mode 100644 sdn_tests/pins_ondatra/bazel/patches/gribi.patch create mode 100644 sdn_tests/pins_ondatra/bazel/patches/grpc-001-fix_file_watcher_race_condition.patch create mode 100644 sdn_tests/pins_ondatra/bazel/patches/grpc-003-fix_go_gazelle_register_toolchain.patch create mode 100644 sdn_tests/pins_ondatra/bazel/patches/ondatra.patch create mode 100644 sdn_tests/pins_ondatra/bazel/patches/p4lang.patch create mode 100644 sdn_tests/pins_ondatra/bazel/patches/rules_proto_grpc.patch create mode 100644 sdn_tests/pins_ondatra/bazel/patches/snappi.patch create mode 100644 sdn_tests/pins_ondatra/bazel/patches/ygnmi.patch create mode 100644 sdn_tests/pins_ondatra/bazel/patches/ygot.patch create mode 100644 sdn_tests/pins_ondatra/infra_deps.bzl create mode 100644 sdn_tests/pins_ondatra/pins_deps.bzl diff --git a/sdn_tests/pins_ondatra/.gitignore b/sdn_tests/pins_ondatra/.gitignore new file mode 100644 index 00000000000..e923bbc11ab --- /dev/null +++ b/sdn_tests/pins_ondatra/.gitignore @@ -0,0 +1,4 @@ +bazel-* +*.pem +*.cnf +*.orig diff --git a/sdn_tests/pins_ondatra/BUILD b/sdn_tests/pins_ondatra/BUILD new file mode 100644 index 00000000000..565db34f194 --- /dev/null +++ b/sdn_tests/pins_ondatra/BUILD @@ -0,0 +1,4 @@ +load("@bazel_gazelle//:def.bzl", "gazelle") + +# gazelle:prefix github.com/sonic-net/sonic-mgmt/sdn_tests/pins_ondatra +gazelle(name = "gazelle") diff --git a/sdn_tests/pins_ondatra/README.md b/sdn_tests/pins_ondatra/README.md new file mode 100644 index 00000000000..b9f3a5b5cca --- /dev/null +++ b/sdn_tests/pins_ondatra/README.md @@ -0,0 +1,29 @@ +# Dependencies: +- Linux (tested on ubuntu) +- Go (https://go.dev/doc/install) +- Bazel-5.4.0+ (https://bazel.build/install) +- Rest of the dependencies should be auto-installed on bazel run. + +# Compilation: +``` +bazel build ... +``` + +# Compile and Run Test: +``` +bazel run //tests:test_name --test_strategy=exclusive --test_timeout=3600 +``` + + +# Debug code: +- Install Delve (https://github.com/go-delve/delve/tree/master/Documentation/installation) +- Compile repo in debug mode: +``` +bazel build ... --strip=never --compilation_mode=dbg +``` +- Run the test with dlv debugger: +``` +dlv --wd=$PWD/tests/ exec bazel-bin/tests/test_name_/test_name -- --testbed=$PWD/testbeds/testbed.textproto +// inside dlv; map path for debugging: +config substitute-path external bazel-pins_ondatra/external +``` diff --git a/sdn_tests/pins_ondatra/WORKSPACE.bazel b/sdn_tests/pins_ondatra/WORKSPACE.bazel new file mode 100644 index 00000000000..6b582fc6a3e --- /dev/null +++ b/sdn_tests/pins_ondatra/WORKSPACE.bazel @@ -0,0 +1,135 @@ +# Copyright 2024 Google LLC +# +# 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. + +workspace(name = "com_github_sonic_net_sonic_mgmt_sdn_tests_pins_ondatra") + +# -- Load buildifier ----------------------------------------------------------- +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +# Bazel toolchain to build go-lang. +http_archive( + name = "io_bazel_rules_go", + sha256 = "91585017debb61982f7054c9688857a2ad1fd823fc3f9cb05048b0025c47d023", + urls = [ + "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.42.0/rules_go-v0.42.0.zip", + "https://github.com/bazelbuild/rules_go/releases/download/v0.42.0/rules_go-v0.42.0.zip", + ], +) + +# Gazelle to auto generate go-lang BUILD rules. +http_archive( + name = "bazel_gazelle", + sha256 = "b7387f72efb59f876e4daae42f1d3912d0d45563eac7cb23d1de0b094ab588cf", + urls = [ + "https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.34.0/bazel-gazelle-v0.34.0.tar.gz", + "https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.34.0/bazel-gazelle-v0.34.0.tar.gz", + ], +) + +load("pins_deps.bzl", "pins_deps") + +pins_deps() + +# -- Load Rules Foreign CC ----------------------------------------------------- + +load("@rules_foreign_cc//foreign_cc:repositories.bzl", "rules_foreign_cc_dependencies") + +rules_foreign_cc_dependencies() + +# -- Load GoLang Rules ----------------------------------------------------- + +load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies") +load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") +load("//:infra_deps.bzl", "binding_deps") + +binding_deps() + +go_rules_dependencies() + +go_register_toolchains(version = "1.21.1") + +gazelle_dependencies(go_repository_default_config = "@//:WORKSPACE.bazel") + +# -- Load GRPC ------------------------------------------------------------- + +load("@com_google_googleapis//:repository_rules.bzl", "switched_rules_by_language") + +switched_rules_by_language( + name = "com_google_googleapis_imports", + cc = True, + go = True, + grpc = True, +) + +load("@com_github_grpc_grpc//bazel:grpc_deps.bzl", "grpc_deps") + +grpc_deps() + +load("@com_github_grpc_grpc//bazel:grpc_extra_deps.bzl", "grpc_extra_deps") + +grpc_extra_deps() + +# -- Load Protobuf ------------------------------------------------------------- + +load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps") + +protobuf_deps() + +load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains") + +rules_proto_dependencies() + +rules_proto_toolchains() + +### Bazel rules for many languages to compile PROTO into gRPC libraries +http_archive( + name = "rules_proto_grpc", + sha256 = "f87d885ebfd6a1bdf02b4c4ba5bf6fb333f90d54561e4d520a8413c8d1fb7beb", + strip_prefix = "rules_proto_grpc-4.5.0", + urls = ["https://github.com/rules-proto-grpc/rules_proto_grpc/archive/4.5.0.tar.gz"], + patch_args = ["-p1"], + patches = [ + "//:bazel/patches/rules_proto_grpc.patch", + ], +) + +load("@rules_proto_grpc//:repositories.bzl", "rules_proto_grpc_repos", "rules_proto_grpc_toolchains") + +rules_proto_grpc_toolchains() + +rules_proto_grpc_repos() + +# -- Load P4Runtime ------------------------------------------------------------ + +load("@com_github_p4lang_p4runtime//:p4runtime_deps.bzl", "p4runtime_deps") + +p4runtime_deps() + +# -- Load packaging rules ------------------------------------------------------ + +load("@rules_pkg//:deps.bzl", "rules_pkg_dependencies") + +rules_pkg_dependencies() + +# == Dependencies needed for testing and formatting only ======================= + +# -- Load p4c ------------------------------------------------------------------ + +load("@com_github_p4lang_p4c//:bazel/p4c_deps.bzl", "p4c_deps") + +p4c_deps() + +load("@com_github_nelhage_rules_boost//:boost/boost.bzl", "boost_deps") + +boost_deps() diff --git a/sdn_tests/pins_ondatra/bazel/patches/ghodss_yaml.patch b/sdn_tests/pins_ondatra/bazel/patches/ghodss_yaml.patch new file mode 100644 index 00000000000..011d484f3e8 --- /dev/null +++ b/sdn_tests/pins_ondatra/bazel/patches/ghodss_yaml.patch @@ -0,0 +1,12 @@ +diff --git a/BUILD.bazel b/BUILD.bazel +index 4f4ecec..ee196e8 100644 +--- a/BUILD.bazel ++++ b/BUILD.bazel +@@ -6,6 +6,7 @@ go_library( + "fields.go", + "yaml.go", + ], ++ deps = ["@in_gopkg_yaml_v2//:yaml_v2"], + importpath = "github.com/ghodss/yaml", + visibility = ["//visibility:public"], + ) diff --git a/sdn_tests/pins_ondatra/bazel/patches/gnmi-001-fix_virtual_proto_import.patch b/sdn_tests/pins_ondatra/bazel/patches/gnmi-001-fix_virtual_proto_import.patch new file mode 100644 index 00000000000..ca3deff5d2f --- /dev/null +++ b/sdn_tests/pins_ondatra/bazel/patches/gnmi-001-fix_virtual_proto_import.patch @@ -0,0 +1,37 @@ +diff --git a/proto/gnmi/BUILD.bazel b/proto/gnmi/BUILD.bazel +index f471488..14a242b 100755 +--- a/proto/gnmi/BUILD.bazel ++++ b/proto/gnmi/BUILD.bazel +@@ -22,6 +22,17 @@ package( + licenses = ["notice"], + ) + ++proto_library( ++ name = "gnmi_internal_proto", ++ srcs = ["gnmi.proto"], ++ deps = [ ++ "//proto/gnmi_ext:gnmi_ext_proto", ++ "@com_google_protobuf//:any_proto", ++ "@com_google_protobuf//:descriptor_proto", ++ ], ++ visibility = ["//visibility:private"], ++) ++ + proto_library( + name = "gnmi_proto", + srcs = ["gnmi.proto"], +@@ -35,12 +46,12 @@ proto_library( + + cc_proto_library( + name = "gnmi_cc_proto", +- deps = [":gnmi_proto"], ++ deps = [":gnmi_internal_proto"], + ) + + cc_grpc_library( + name = "gnmi_cc_grpc_proto", +- srcs = [":gnmi_proto"], ++ srcs = [":gnmi_internal_proto"], + generate_mocks = True, + grpc_only = True, + deps = [":gnmi_cc_proto"], diff --git a/sdn_tests/pins_ondatra/bazel/patches/gnmi.patch b/sdn_tests/pins_ondatra/bazel/patches/gnmi.patch new file mode 100644 index 00000000000..a07686d3ab9 --- /dev/null +++ b/sdn_tests/pins_ondatra/bazel/patches/gnmi.patch @@ -0,0 +1,392 @@ +diff --git a/BUILD.bazel b/BUILD.bazel +index ca5484e..238dde9 100644 +--- a/BUILD.bazel ++++ b/BUILD.bazel +@@ -13,6 +13,7 @@ + # limitations under the License. + # + # Supporting infrastructure for implementing and testing PINS. ++load("@bazel_gazelle//:def.bzl", "gazelle") + + package( + default_visibility = ["//visibility:public"], +@@ -20,3 +21,6 @@ package( + ) + + exports_files(["LICENSE"]) ++ ++# gazelle:prefix github.com/openconfig/gnmi ++gazelle(name = "gazelle") +diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel +deleted file mode 100644 +index 2f385f7..0000000 +--- a/WORKSPACE.bazel ++++ /dev/null +@@ -1,45 +0,0 @@ +-# Copyright 2021 Google LLC +-# +-# 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 +-# +-# https://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. +- +-workspace(name = "gnmi") +- +-load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") +- +-http_archive( +- name = "io_bazel_rules_go", +- sha256 = "d6b2513456fe2229811da7eb67a444be7785f5323c6708b38d851d2b51e54d83", +- urls = [ +- "https://github.com/bazelbuild/rules_go/releases/download/v0.30.0/rules_go-v0.30.0.zip", +- "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.30.0/rules_go-v0.30.0.zip", +- ], +-) +- +-load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") +- +-go_rules_dependencies() +- +-go_register_toolchains(version = "1.17") +- +-# -- Load Dependencies --------------------------------------------------------- +-load("gnmi_deps.bzl", "gnmi_deps") +- +-gnmi_deps() +- +-load("@com_github_grpc_grpc//bazel:grpc_deps.bzl", "grpc_deps") +- +-grpc_deps() +- +-load("@com_github_grpc_grpc//bazel:grpc_extra_deps.bzl", "grpc_extra_deps") +- +-grpc_extra_deps() +diff --git a/proto/gnmi/BUILD.bazel b/proto/gnmi/BUILD.bazel +index f471488..f6bd3bd 100644 +--- a/proto/gnmi/BUILD.bazel ++++ b/proto/gnmi/BUILD.bazel +@@ -16,6 +16,9 @@ + # + + load("@com_github_grpc_grpc//bazel:cc_grpc_library.bzl", "cc_grpc_library") ++load("@io_bazel_rules_go//go:def.bzl", "go_library") ++load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") ++load("@rules_proto//proto:defs.bzl", "proto_library") + + package( + default_visibility = ["//visibility:public"], +@@ -45,3 +48,13 @@ cc_grpc_library( + grpc_only = True, + deps = [":gnmi_cc_proto"], + ) ++ ++go_proto_library( ++ name = "gnmi_go_proto", ++ compilers = ["@io_bazel_rules_go//proto:go_grpc"], ++ importpath = "github.com/openconfig/gnmi/proto/gnmi", ++ proto = ":gnmi_proto", ++ deps = [ ++ "//proto/gnmi_ext:gnmi_ext_go_proto", ++ ], ++) +diff --git a/proto/gnmi_ext/BUILD.bazel b/proto/gnmi_ext/BUILD.bazel +index 2e0e9b4..5dcf6fb 100644 +--- a/proto/gnmi_ext/BUILD.bazel ++++ b/proto/gnmi_ext/BUILD.bazel +@@ -14,6 +14,7 @@ + # + # Supporting infrastructure for implementing and testing PINS. + # ++load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") + package( + default_visibility = ["//visibility:public"], + licenses = ["notice"], +@@ -29,3 +30,10 @@ cc_proto_library( + name = "gnmi_ext_cc_proto", + deps = [":gnmi_ext_proto"], + ) ++ ++go_proto_library( ++ name = "gnmi_ext_go_proto", ++ compilers = ["@io_bazel_rules_go//proto:go_grpc"], ++ importpath = "github.com/openconfig/gnmi/proto/gnmi_ext", ++ proto = ":gnmi_ext_proto", ++) +\ No newline at end of file +diff --git a/errlist/BUILD.bazel b/errlist/BUILD.bazel +new file mode 100644 +index 0000000..2b112a8 +--- /dev/null ++++ b/errlist/BUILD.bazel +@@ -0,0 +1,16 @@ ++load("@io_bazel_rules_go//go:def.bzl", "go_library") ++ ++go_library( ++ name = "errlist", ++ srcs = [ ++ "errlist.go", ++ ], ++ importpath = "github.com/openconfig/gnmi/errlist", ++ visibility = ["//visibility:public"], ++) ++ ++alias( ++ name = "go_default_library", ++ actual = ":errlist", ++ visibility = ["//visibility:public"], ++) + +diff --git a/value/BUILD.bazel b/value/BUILD.bazel +new file mode 100644 +index 0000000..1b5e851 +--- /dev/null ++++ b/value/BUILD.bazel +@@ -0,0 +1,19 @@ ++load("@io_bazel_rules_go//go:def.bzl", "go_library") ++ ++go_library( ++ name = "value", ++ srcs = [ ++ "value.go", ++ ], ++ importpath = "github.com/openconfig/gnmi/value", ++ visibility = ["//visibility:public"], ++ deps = [ ++ "@com_github_openconfig_gnmi//proto/gnmi:gnmi_go_proto", ++ ] ++) ++ ++alias( ++ name = "go_default_library", ++ actual = ":value", ++ visibility = ["//visibility:public"], ++) + +diff --git a/cache/BUILD.bazel b/cache/BUILD.bazel +new file mode 100644 +index 0000000..07971dd +--- /dev/null ++++ b/cache/BUILD.bazel +@@ -0,0 +1,33 @@ ++load("@io_bazel_rules_go//go:def.bzl", "go_library") ++ ++go_library( ++ name = "cache", ++ srcs = [ ++ "cache.go", ++ ], ++ deps = [ ++ "@com_github_openconfig_gnmi//proto/gnmi:gnmi_go_proto", ++ "@com_github_openconfig_gnmi//path", ++ "@com_github_openconfig_gnmi//ctree", ++ "@com_github_openconfig_gnmi//errlist", ++ "@com_github_openconfig_gnmi//value", ++ "@com_github_openconfig_gnmi//latency", ++ "@com_github_openconfig_gnmi//metadata", ++ "@org_golang_google_grpc//:go_default_library", ++ "@org_golang_google_grpc//codes:go_default_library", ++ "@org_golang_google_grpc//peer:go_default_library", ++ "@org_golang_google_grpc//status:go_default_library", ++ "@org_golang_x_net//context", ++ "@com_github_golang_glog//:glog", ++ "@org_golang_google_protobuf//encoding/prototext", ++ "@org_golang_google_protobuf//proto", ++ ], ++ importpath = "github.com/openconfig/gnmi/cache", ++ visibility = ["//visibility:public"], ++) ++ ++alias( ++ name = "go_default_library", ++ actual = ":cache", ++ visibility = ["//visibility:public"], ++) + +diff --git a/subscribe/BUILD.bazel b/subscribe/BUILD.bazel +new file mode 100644 +index 0000000..05b9be3 +--- /dev/null ++++ b/subscribe/BUILD.bazel +@@ -0,0 +1,35 @@ ++load("@io_bazel_rules_go//go:def.bzl", "go_library") ++ ++go_library( ++ name = "subscribe", ++ srcs = [ ++ "subscribe.go", ++ "stats.go" ++ ], ++ importpath = "github.com/openconfig/gnmi/subscribe", ++ deps = [ ++ "@com_github_openconfig_gnmi//proto/gnmi:gnmi_go_proto", ++ "@com_github_openconfig_gnmi//path", ++ "@com_github_openconfig_gnmi//ctree", ++ "@com_github_openconfig_gnmi//errlist", ++ "@com_github_openconfig_gnmi//value", ++ "@com_github_openconfig_gnmi//latency", ++ "@com_github_openconfig_gnmi//cache", ++ "@com_github_openconfig_gnmi//coalesce", ++ "@com_github_openconfig_gnmi//match", ++ "@org_golang_google_grpc//:go_default_library", ++ "@org_golang_google_grpc//codes:go_default_library", ++ "@org_golang_google_grpc//peer:go_default_library", ++ "@org_golang_google_grpc//status:go_default_library", ++ "@org_golang_x_net//context", ++ "@org_golang_google_protobuf//proto", ++ "@com_github_golang_glog//:glog", ++ ], ++ visibility = ["//visibility:public"], ++) ++ ++alias( ++ name = "go_default_library", ++ actual = ":subscribe", ++ visibility = ["//visibility:public"], ++) + +diff --git a/ctree/BUILD.bazel b/ctree/BUILD.bazel +new file mode 100644 +index 0000000..510cc34 +--- /dev/null ++++ b/ctree/BUILD.bazel +@@ -0,0 +1,16 @@ ++load("@io_bazel_rules_go//go:def.bzl", "go_library") ++ ++go_library( ++ name = "ctree", ++ srcs = [ ++ "tree.go", ++ ], ++ importpath = "github.com/openconfig/gnmi/ctree", ++ visibility = ["//visibility:public"], ++) ++ ++alias( ++ name = "go_default_library", ++ actual = ":ctree", ++ visibility = ["//visibility:public"], ++) +diff --git a/latency/BUILD.bazel b/latency/BUILD.bazel +new file mode 100644 +index 0000000..d110090 +--- /dev/null ++++ b/latency/BUILD.bazel +@@ -0,0 +1,16 @@ ++load("@io_bazel_rules_go//go:def.bzl", "go_library") ++ ++go_library( ++ name = "latency", ++ srcs = [ ++ "latency.go", ++ ], ++ importpath = "github.com/openconfig/gnmi/latency", ++ visibility = ["//visibility:public"], ++) ++ ++alias( ++ name = "go_default_library", ++ actual = ":latency", ++ visibility = ["//visibility:public"], ++) +diff --git a/metadata/BUILD.bazel b/metadata/BUILD.bazel +new file mode 100644 +index 0000000..aa715a9 +--- /dev/null ++++ b/metadata/BUILD.bazel +@@ -0,0 +1,19 @@ ++load("@io_bazel_rules_go//go:def.bzl", "go_library") ++ ++go_library( ++ name = "metadata", ++ srcs = [ ++ "metadata.go", ++ ], ++ deps = [ ++ "@com_github_openconfig_gnmi//latency", ++ ], ++ importpath = "github.com/openconfig/gnmi/metadata", ++ visibility = ["//visibility:public"], ++) ++ ++alias( ++ name = "go_default_library", ++ actual = ":metadata", ++ visibility = ["//visibility:public"], ++) +diff --git a/path/BUILD.bazel b/path/BUILD.bazel +new file mode 100644 +index 0000000..65a7efd +--- /dev/null ++++ b/path/BUILD.bazel +@@ -0,0 +1,19 @@ ++load("@io_bazel_rules_go//go:def.bzl", "go_library") ++ ++go_library( ++ name = "path", ++ srcs = [ ++ "path.go", ++ ], ++ deps = [ ++ "@com_github_openconfig_gnmi//proto/gnmi:gnmi_go_proto", ++ ], ++ importpath = "github.com/openconfig/gnmi/path", ++ visibility = ["//visibility:public"], ++) ++ ++alias( ++ name = "go_default_library", ++ actual = ":path", ++ visibility = ["//visibility:public"], ++) + +diff --git a/coalesce/BUILD.bazel b/coalesce/BUILD.bazel +new file mode 100644 +index 0000000..887440e +--- /dev/null ++++ b/coalesce/BUILD.bazel +@@ -0,0 +1,16 @@ ++load("@io_bazel_rules_go//go:def.bzl", "go_library") ++ ++go_library( ++ name = "coalesce", ++ srcs = [ ++ "coalesce.go", ++ ], ++ importpath = "github.com/openconfig/gnmi/coalesce", ++ visibility = ["//visibility:public"], ++) ++ ++alias( ++ name = "go_default_library", ++ actual = ":coalesce", ++ visibility = ["//visibility:public"], ++) +diff --git a/match/BUILD.bazel b/match/BUILD.bazel +new file mode 100644 +index 0000000..b09b9f3 +--- /dev/null ++++ b/match/BUILD.bazel +@@ -0,0 +1,16 @@ ++load("@io_bazel_rules_go//go:def.bzl", "go_library") ++ ++go_library( ++ name = "match", ++ srcs = [ ++ "match.go", ++ ], ++ importpath = "github.com/openconfig/gnmi/match", ++ visibility = ["//visibility:public"], ++) ++ ++alias( ++ name = "go_default_library", ++ actual = ":match", ++ visibility = ["//visibility:public"], ++) diff --git a/sdn_tests/pins_ondatra/bazel/patches/gnoi.patch b/sdn_tests/pins_ondatra/bazel/patches/gnoi.patch new file mode 100644 index 00000000000..4520fe9fc63 --- /dev/null +++ b/sdn_tests/pins_ondatra/bazel/patches/gnoi.patch @@ -0,0 +1,45 @@ +diff --git a/healthz/BUILD.bazel b/healthz/BUILD.bazel +index 039f3b5..7c9940b 100644 +--- a/healthz/BUILD.bazel ++++ b/healthz/BUILD.bazel +@@ -34,7 +34,7 @@ proto_library( + ], + ) + +-go_proto_library( ++go_grpc_library( + name = "healthz_go_proto", + compilers = ["@io_bazel_rules_go//proto:go_grpc"], + importpath = "github.com/openconfig/gnoi/healthz", + +diff --git a/types/BUILD.bazel b/types/BUILD.bazel +index 921d7c1..995dd1e 100644 +--- a/types/BUILD.bazel ++++ b/types/BUILD.bazel +@@ -32,6 +32,13 @@ proto_library( + deps = ["@com_google_protobuf//:descriptor_proto"], + ) + ++proto_library( ++ name = "gnoi_types_proto", ++ srcs = ["types.proto"], ++ import_prefix = "github.com/openconfig/gnoi", ++ deps = ["@com_google_protobuf//:descriptor_proto"], ++) ++ + cc_proto_library( + name = "types_cc_proto", + deps = [":types_proto"], + +diff --git a/packet_link_qualification/BUILD.bazel b/packet_link_qualification/BUILD.bazel +index 249bc3a..d215296 100644 +--- a/packet_link_qualification/BUILD.bazel ++++ b/packet_link_qualification/BUILD.bazel +@@ -22,6 +22,6 @@ go_proto_library( + visibility = ["//visibility:public"], + deps = [ + "//types:types_go_proto", +- "@go_googleapis//google/rpc:status_go_proto", ++ "@org_golang_google_genproto//googleapis/rpc/status", + ], + ) diff --git a/sdn_tests/pins_ondatra/bazel/patches/gnoigo.patch b/sdn_tests/pins_ondatra/bazel/patches/gnoigo.patch new file mode 100644 index 00000000000..7693d6416fa --- /dev/null +++ b/sdn_tests/pins_ondatra/bazel/patches/gnoigo.patch @@ -0,0 +1,32 @@ +diff --git a/gnoigo.go b/gnoigo.go +index cc1a3ec..f656e0e 100644 +--- a/gnoigo.go ++++ b/gnoigo.go +@@ -27,10 +27,10 @@ import ( + fpb "github.com/openconfig/gnoi/file" + hpb "github.com/openconfig/gnoi/healthz" + lpb "github.com/openconfig/gnoi/layer2" ++ plqpb "github.com/openconfig/gnoi/linkqual" + mpb "github.com/openconfig/gnoi/mpls" + ospb "github.com/openconfig/gnoi/os" + otpb "github.com/openconfig/gnoi/otdr" +- plqpb "github.com/openconfig/gnoi/packet_link_qualification" + spb "github.com/openconfig/gnoi/system" + wrpb "github.com/openconfig/gnoi/wavelength_router" + "github.com/openconfig/gnoigo/internal" +diff --git a/internal/clients.go b/internal/clients.go +index f49e470..b634ab3 100644 +--- a/internal/clients.go ++++ b/internal/clients.go +@@ -23,10 +23,10 @@ import ( + fpb "github.com/openconfig/gnoi/file" + hpb "github.com/openconfig/gnoi/healthz" + lpb "github.com/openconfig/gnoi/layer2" ++ plqpb "github.com/openconfig/gnoi/linkqual" + mpb "github.com/openconfig/gnoi/mpls" + ospb "github.com/openconfig/gnoi/os" + otpb "github.com/openconfig/gnoi/otdr" +- plqpb "github.com/openconfig/gnoi/packet_link_qualification" + spb "github.com/openconfig/gnoi/system" + wrpb "github.com/openconfig/gnoi/wavelength_router" + ) diff --git a/sdn_tests/pins_ondatra/bazel/patches/gnsi.patch b/sdn_tests/pins_ondatra/bazel/patches/gnsi.patch new file mode 100644 index 00000000000..c295d55a993 --- /dev/null +++ b/sdn_tests/pins_ondatra/bazel/patches/gnsi.patch @@ -0,0 +1,59 @@ +diff --git a/authz/authz.proto b/authz/authz.proto +index ecb3f3f..c6216b8 100644 +--- a/authz/authz.proto ++++ b/authz/authz.proto +@@ -132,6 +132,9 @@ service Authz { + // together with its version and created-on information. + // If no policy has been set, Get() returns FAILED_PRECONDITION. + rpc Get(GetRequest) returns (GetResponse); ++ ++ rpc Install(stream InstallAuthzRequest) ++ returns (stream InstallAuthzResponse); + } + + // Request messages to rotate existing gRPC-level Authorization Policy on +@@ -152,6 +155,16 @@ message RotateAuthzRequest { + bool force_overwrite = 3; + } + ++// Request messages to install a new Authz Policy on ++// the target. ++message InstallAuthzRequest { ++ // Request Messages. ++ oneof install_request { ++ UploadRequest upload_request = 1; ++ FinalizeRequest finalize_installation = 2; ++ } ++} ++ + // Response messages from the target. + message RotateAuthzResponse { + // Response messages. +@@ -160,6 +173,14 @@ message RotateAuthzResponse { + } + } + ++// Response messages from the target. ++message InstallAuthzResponse { ++ // Response messages. ++ oneof install_response { ++ UploadResponse upload_response = 1; ++ } ++} ++ + // A Finalize message is sent to the target to confirm the rotation of + // the gRPC-level Authorization Policy, indicating that it should not be + // rolled back when the stream concludes. +diff --git a/version/BUILD.bazel b/version/BUILD.bazel +index e047013..5dbb1c6 100644 +--- a/version/BUILD.bazel ++++ b/version/BUILD.bazel +@@ -11,7 +11,7 @@ proto_library( + srcs = [ + "version.proto", + ], +- deps = ["@com_github_openconfig_gnoi//types:types_proto"], ++ deps = ["@com_github_openconfig_gnoi//types:gnoi_types_proto"], + import_prefix = "github.com/openconfig/gnsi", + visibility = ["//visibility:public"], + ) diff --git a/sdn_tests/pins_ondatra/bazel/patches/gribi.patch b/sdn_tests/pins_ondatra/bazel/patches/gribi.patch new file mode 100644 index 00000000000..fc6cac07526 --- /dev/null +++ b/sdn_tests/pins_ondatra/bazel/patches/gribi.patch @@ -0,0 +1,48 @@ +diff --git a/v1/proto/gribi_aft/BUILD.bazel b/v1/proto/gribi_aft/BUILD.bazel +index fdb39a2..3ddfc19 100644 +--- a/v1/proto/gribi_aft/BUILD.bazel ++++ b/v1/proto/gribi_aft/BUILD.bazel +@@ -7,8 +7,8 @@ proto_library( + srcs = ["gribi_aft.proto"], + visibility = ["//visibility:public"], + deps = [ +- "//github.com/openconfig/ygot/proto/yext:yext_proto", +- "//github.com/openconfig/ygot/proto/ywrapper:ywrapper_proto", ++ "@com_github_openconfig_ygot//proto/yext:yext_proto", ++ "@com_github_openconfig_ygot//proto/ywrapper:ywrapper_proto", + "//v1/proto/gribi_aft/enums:enums_proto", + ], + ) +@@ -19,8 +19,8 @@ go_proto_library( + proto = ":gribi_aft_proto", + visibility = ["//visibility:public"], + deps = [ +- "//github.com/openconfig/ygot/proto/yext:yext_proto", +- "//github.com/openconfig/ygot/proto/ywrapper:ywrapper_proto", ++ "@com_github_openconfig_ygot//proto/yext:go_default_library", ++ "@com_github_openconfig_ygot//proto/ywrapper:go_default_library", + "//v1/proto/gribi_aft/enums", + ], + ) +diff --git a/v1/proto/gribi_aft/enums/BUILD.bazel b/v1/proto/gribi_aft/enums/BUILD.bazel +index 7ef4d9d..18f7324 100644 +--- a/v1/proto/gribi_aft/enums/BUILD.bazel ++++ b/v1/proto/gribi_aft/enums/BUILD.bazel +@@ -6,7 +6,7 @@ proto_library( + name = "enums_proto", + srcs = ["enums.proto"], + visibility = ["//visibility:public"], +- deps = ["//github.com/openconfig/ygot/proto/yext:yext_proto"], ++ deps = ["@com_github_openconfig_ygot//proto/yext:yext_proto"], + ) + + go_proto_library( +@@ -14,7 +14,7 @@ go_proto_library( + importpath = "github.com/openconfig/gribi/v1/proto/gribi_aft/enums", + proto = ":enums_proto", + visibility = ["//visibility:public"], +- deps = ["//github.com/openconfig/ygot/proto/yext:yext_proto"], ++ deps = ["@com_github_openconfig_ygot//proto/yext:go_default_library"], + ) + + go_library( diff --git a/sdn_tests/pins_ondatra/bazel/patches/grpc-001-fix_file_watcher_race_condition.patch b/sdn_tests/pins_ondatra/bazel/patches/grpc-001-fix_file_watcher_race_condition.patch new file mode 100644 index 00000000000..af5d1510f80 --- /dev/null +++ b/sdn_tests/pins_ondatra/bazel/patches/grpc-001-fix_file_watcher_race_condition.patch @@ -0,0 +1,12 @@ +diff --git a/src/core/lib/iomgr/load_file.cc b/src/core/lib/iomgr/load_file.cc +index 9068670118..a4d9bc95b2 100644 +--- a/src/core/lib/iomgr/load_file.cc ++++ b/src/core/lib/iomgr/load_file.cc +@@ -55,7 +55,6 @@ grpc_error_handle grpc_load_file(const char* filename, int add_null_terminator, + if (bytes_read < contents_size) { + gpr_free(contents); + error = GRPC_OS_ERROR(errno, "fread"); +- GPR_ASSERT(ferror(file)); + goto end; + } + if (add_null_terminator) { diff --git a/sdn_tests/pins_ondatra/bazel/patches/grpc-003-fix_go_gazelle_register_toolchain.patch b/sdn_tests/pins_ondatra/bazel/patches/grpc-003-fix_go_gazelle_register_toolchain.patch new file mode 100644 index 00000000000..bfed9023aca --- /dev/null +++ b/sdn_tests/pins_ondatra/bazel/patches/grpc-003-fix_go_gazelle_register_toolchain.patch @@ -0,0 +1,12 @@ +diff --git a/bazel/grpc_extra_deps.bzl b/bazel/grpc_extra_deps.bzl +index 4d8afa3..b090036 100755 +--- a/bazel/grpc_extra_deps.bzl ++++ b/bazel/grpc_extra_deps.bzl +@@ -53,7 +53,6 @@ def grpc_extra_deps(ignore_version_differences = False): + api_dependencies() + + go_rules_dependencies() +- go_register_toolchains(version = "1.18") + gazelle_dependencies() + + # Pull-in the go 3rd party dependencies for protoc_gen_validate, which is diff --git a/sdn_tests/pins_ondatra/bazel/patches/ondatra.patch b/sdn_tests/pins_ondatra/bazel/patches/ondatra.patch new file mode 100644 index 00000000000..9f3b83b6402 --- /dev/null +++ b/sdn_tests/pins_ondatra/bazel/patches/ondatra.patch @@ -0,0 +1,51 @@ +diff --git a/binding/abstract.go b/binding/abstract.go +index 4d431d1..0ff43a4 100644 +--- a/binding/abstract.go ++++ b/binding/abstract.go +@@ -33,7 +33,7 @@ import ( + credzpb "github.com/openconfig/gnsi/credentialz" + pathzpb "github.com/openconfig/gnsi/pathz" + +- grpb "github.com/openconfig/gribi/v1/proto/service" ++ grpb "github.com/openconfig/gribi/proto/service" + opb "github.com/openconfig/ondatra/proto" + p4pb "github.com/p4lang/p4runtime/go/p4/v1" + ) +diff --git a/binding/binding.go b/binding/binding.go +index 2a4d7ae..96229b5 100644 +--- a/binding/binding.go ++++ b/binding/binding.go +@@ -33,7 +33,7 @@ import ( + certzpb "github.com/openconfig/gnsi/certz" + credzpb "github.com/openconfig/gnsi/credentialz" + pathzpb "github.com/openconfig/gnsi/pathz" +- grpb "github.com/openconfig/gribi/v1/proto/service" ++ grpb "github.com/openconfig/gribi/proto/service" + opb "github.com/openconfig/ondatra/proto" + p4pb "github.com/p4lang/p4runtime/go/p4/v1" + ) +diff --git a/internal/rawapis/rawapis.go b/internal/rawapis/rawapis.go +index bef545c..98df921 100644 +--- a/internal/rawapis/rawapis.go ++++ b/internal/rawapis/rawapis.go +@@ -34,7 +34,7 @@ import ( + "google.golang.org/grpc" + + gpb "github.com/openconfig/gnmi/proto/gnmi" +- grpb "github.com/openconfig/gribi/v1/proto/service" ++ grpb "github.com/openconfig/gribi/proto/service" + p4pb "github.com/p4lang/p4runtime/go/p4/v1" + ) + +diff --git a/raw/raw.go b/raw/raw.go +index 780e978..1821141 100644 +--- a/raw/raw.go ++++ b/raw/raw.go +@@ -89,7 +89,7 @@ import ( + "github.com/openconfig/ondatra/internal/rawapis" + + gpb "github.com/openconfig/gnmi/proto/gnmi" +- grpb "github.com/openconfig/gribi/v1/proto/service" ++ grpb "github.com/openconfig/gribi/proto/service" + p4pb "github.com/p4lang/p4runtime/go/p4/v1" + ) diff --git a/sdn_tests/pins_ondatra/bazel/patches/p4lang.patch b/sdn_tests/pins_ondatra/bazel/patches/p4lang.patch new file mode 100644 index 00000000000..ee9f8dd17f0 --- /dev/null +++ b/sdn_tests/pins_ondatra/bazel/patches/p4lang.patch @@ -0,0 +1,24 @@ +diff --git a/proto/p4/config/v1/p4info.proto b/proto/p4/config/v1/p4info.proto +index badddd9..079f258 100644 +--- a/proto/p4/config/v1/p4info.proto ++++ b/proto/p4/config/v1/p4info.proto +@@ -15,7 +15,7 @@ + syntax = "proto3"; + + import "google/protobuf/any.proto"; +-import "p4/config/v1/p4types.proto"; ++import "proto/p4/config/v1/p4types.proto"; + + // This package and its contents are a work-in-progress. + +diff --git a/go/p4/v1/BUILD.bazel b/go/p4/v1/BUILD.bazel +index 6445fff..17a350c 100644 +--- a/go/p4/v1/BUILD.bazel ++++ b/go/p4/v1/BUILD.bazel +@@ -17,6 +17,7 @@ go_library( + "@org_golang_google_protobuf//reflect/protoreflect:go_default_library", + "@org_golang_google_protobuf//runtime/protoimpl:go_default_library", + "@org_golang_google_protobuf//types/known/anypb:go_default_library", ++ "@com_github_p4lang_p4runtime//go/p4/config/v1:go_default_library" + ], + ) diff --git a/sdn_tests/pins_ondatra/bazel/patches/rules_proto_grpc.patch b/sdn_tests/pins_ondatra/bazel/patches/rules_proto_grpc.patch new file mode 100644 index 00000000000..7d78ff80277 --- /dev/null +++ b/sdn_tests/pins_ondatra/bazel/patches/rules_proto_grpc.patch @@ -0,0 +1,39 @@ +diff --git a/c/c_proto_library.bzl b/c/c_proto_library.bzl +index ee33ebd..a35a8a5 100644 +--- a/c/c_proto_library.bzl ++++ b/c/c_proto_library.bzl +@@ -44,7 +44,7 @@ def c_proto_library(name, **kwargs): # buildifier: disable=function-docstring + linkopts = kwargs.get("linkopts"), + linkstatic = kwargs.get("linkstatic"), + local_defines = kwargs.get("local_defines"), +- nocopts = kwargs.get("nocopts"), ++ #nocopts = kwargs.get("nocopts"), + strip_include_prefix = kwargs.get("strip_include_prefix"), + **{ + k: v +diff --git a/cpp/cpp_grpc_library.bzl b/cpp/cpp_grpc_library.bzl +index 7064aa7..009a931 100644 +--- a/cpp/cpp_grpc_library.bzl ++++ b/cpp/cpp_grpc_library.bzl +@@ -44,7 +44,7 @@ def cpp_grpc_library(name, **kwargs): # buildifier: disable=function-docstring + linkopts = kwargs.get("linkopts"), + linkstatic = kwargs.get("linkstatic"), + local_defines = kwargs.get("local_defines"), +- nocopts = kwargs.get("nocopts"), ++ #nocopts = kwargs.get("nocopts"), + strip_include_prefix = kwargs.get("strip_include_prefix"), + **{ + k: v +diff --git a/cpp/cpp_proto_library.bzl b/cpp/cpp_proto_library.bzl +index 38e3999..556e8b1 100644 +--- a/cpp/cpp_proto_library.bzl ++++ b/cpp/cpp_proto_library.bzl +@@ -44,7 +44,7 @@ def cpp_proto_library(name, **kwargs): # buildifier: disable=function-docstring + linkopts = kwargs.get("linkopts"), + linkstatic = kwargs.get("linkstatic"), + local_defines = kwargs.get("local_defines"), +- nocopts = kwargs.get("nocopts"), ++ #nocopts = kwargs.get("nocopts"), + strip_include_prefix = kwargs.get("strip_include_prefix"), + **{ + k: v diff --git a/sdn_tests/pins_ondatra/bazel/patches/snappi.patch b/sdn_tests/pins_ondatra/bazel/patches/snappi.patch new file mode 100644 index 00000000000..fcae40d9004 --- /dev/null +++ b/sdn_tests/pins_ondatra/bazel/patches/snappi.patch @@ -0,0 +1,53 @@ +diff --git a/gosnappi/BUILD.bazel b/gosnappi/BUILD.bazel +index d72ce05..91b14e9 100644 +--- a/gosnappi/BUILD.bazel ++++ b/gosnappi/BUILD.bazel +@@ -10,7 +10,17 @@ go_library( + ], + importpath = "github.com/open-traffic-generator/snappi/gosnappi", + visibility = ["//visibility:public"], +- deps = ["@org_golang_google_grpc//:go_default_library"], ++ deps = [ ++ "@com_github_ghodss_yaml//:yaml", ++ "@com_github_masterminds_semver_v3//:semver", ++ "@com_github_open_traffic_generator_snappi//gosnappi/otg:go_default_library", ++ "@org_golang_google_grpc//:go_default_library", ++ "@org_golang_google_grpc//credentials/insecure", ++ "@org_golang_google_grpc//status", ++ "@org_golang_google_protobuf//encoding/protojson", ++ "@org_golang_google_protobuf//proto", ++ "@org_golang_google_protobuf//types/known/emptypb", ++ ], + ) + + alias( + +diff --git a/gosnappi/otg/BUILD.bazel b/gosnappi/otg/BUILD.bazel +index c0c81d6..5c4fc59 100644 +--- a/gosnappi/otg/BUILD.bazel ++++ b/gosnappi/otg/BUILD.bazel +@@ -5,6 +5,7 @@ load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") + proto_library( + name = "otg_proto", + srcs = ["otg.proto"], ++ import_prefix = "github.com/open-traffic-generator/snappi", + visibility = ["//visibility:public"], + deps = [ + "@com_google_protobuf//:descriptor_proto", +@@ -15,7 +16,7 @@ proto_library( + go_proto_library( + name = "otg_go_proto", + compilers = ["@io_bazel_rules_go//proto:go_grpc"], +- importpath = "./otg", ++ importpath = "github.com/open-traffic-generator/snappi/gosnappi/otg_go_proto", + proto = ":otg_proto", + visibility = ["//visibility:public"], + ) +@@ -23,7 +24,7 @@ go_proto_library( + go_library( + name = "otg", + embed = [":otg_go_proto"], +- importpath = "./otg", ++ importpath = "github.com/open-traffic-generator/snappi/gosnappi/otg", + visibility = ["//visibility:public"], + ) diff --git a/sdn_tests/pins_ondatra/bazel/patches/ygnmi.patch b/sdn_tests/pins_ondatra/bazel/patches/ygnmi.patch new file mode 100644 index 00000000000..38252ca93c5 --- /dev/null +++ b/sdn_tests/pins_ondatra/bazel/patches/ygnmi.patch @@ -0,0 +1,13 @@ +diff --git a/ygnmi/BUILD.bazel b/ygnmi/BUILD.bazel +index a152057..3a2ee21 100644 +--- a/ygnmi/BUILD.bazel ++++ b/ygnmi/BUILD.bazel +@@ -15,7 +15,7 @@ go_library( + "//internal/logutil", + "@com_github_golang_glog//:go_default_library", + "@com_github_openconfig_gnmi//errlist:go_default_library", +- "@com_github_openconfig_gnmi//proto/gnmi:go_default_library", ++ "@com_github_openconfig_gnmi//proto/gnmi:gnmi_go_proto", + "@com_github_openconfig_gocloser//:go_default_library", + "@com_github_openconfig_goyang//pkg/yang:go_default_library", + "@com_github_openconfig_ygot//util:go_default_library", diff --git a/sdn_tests/pins_ondatra/bazel/patches/ygot.patch b/sdn_tests/pins_ondatra/bazel/patches/ygot.patch new file mode 100644 index 00000000000..d90ae26c56c --- /dev/null +++ b/sdn_tests/pins_ondatra/bazel/patches/ygot.patch @@ -0,0 +1,85 @@ +diff --git a/proto/yext/BUILD.bazel b/proto/yext/BUILD.bazel +index 4ebd593..cd1f209 100644 +--- a/proto/yext/BUILD.bazel ++++ b/proto/yext/BUILD.bazel +@@ -1,5 +1,13 @@ + load("@io_bazel_rules_go//go:def.bzl", "go_library") + ++proto_library( ++ name = "yext_proto", ++ srcs = ["yext.proto"], ++ visibility = ["//visibility:public"], ++ import_prefix = "github.com/openconfig/ygot", ++ deps = ["@com_google_protobuf//:descriptor_proto"], ++) ++ + go_library( + name = "yext", + srcs = [ +@@ -20,3 +28,4 @@ alias( + actual = ":yext", + visibility = ["//visibility:public"], + ) ++ +diff --git a/proto/ywrapper/BUILD.bazel b/proto/ywrapper/BUILD.bazel +index 4537c63..51fb410 100644 +--- a/proto/ywrapper/BUILD.bazel ++++ b/proto/ywrapper/BUILD.bazel +@@ -1,5 +1,12 @@ + load("@io_bazel_rules_go//go:def.bzl", "go_library") + ++proto_library( ++ name = "ywrapper_proto", ++ srcs = ["ywrapper.proto"], ++ visibility = ["//visibility:public"], ++ import_prefix = "github.com/openconfig/ygot", ++) ++ + go_library( + name = "ywrapper", + srcs = [ +@@ -19,3 +26,4 @@ alias( + actual = ":ywrapper", + visibility = ["//visibility:public"], + ) ++ + +diff --git a/util/BUILD.bazel b/util/BUILD.bazel +index af907f2..8b45361 100644 +--- a/util/BUILD.bazel ++++ b/util/BUILD.bazel +@@ -18,7 +18,7 @@ go_library( + "//internal/yreflect", + "@com_github_golang_glog//:go_default_library", + "@com_github_kylelemons_godebug//pretty:go_default_library", +- "@com_github_openconfig_gnmi//proto/gnmi:go_default_library", ++ "@com_github_openconfig_gnmi//proto/gnmi:gnmi_go_proto", + "@com_github_openconfig_goyang//pkg/yang:go_default_library", + "@org_golang_google_protobuf//proto:go_default_library", + ], +diff --git a/ygot/BUILD.bazel b/ygot/BUILD.bazel +index 96d93c2..7023807 100644 +--- a/ygot/BUILD.bazel ++++ b/ygot/BUILD.bazel +@@ -20,7 +20,7 @@ go_library( + "//util", + "@com_github_kylelemons_godebug//pretty:go_default_library", + "@com_github_openconfig_gnmi//errlist:go_default_library", +- "@com_github_openconfig_gnmi//proto/gnmi:go_default_library", ++ "@com_github_openconfig_gnmi//proto/gnmi:gnmi_go_proto", + "@com_github_openconfig_gnmi//value:go_default_library", + "@com_github_openconfig_goyang//pkg/yang:go_default_library", + "@org_golang_google_protobuf//encoding/prototext:go_default_library", +diff --git a/ytypes/BUILD.bazel b/ytypes/BUILD.bazel +index d468783..99d604c 100644 +--- a/ytypes/BUILD.bazel ++++ b/ytypes/BUILD.bazel +@@ -35,7 +35,7 @@ go_library( + "//ygot", + "@com_github_golang_glog//:go_default_library", + "@com_github_kylelemons_godebug//pretty:go_default_library", +- "@com_github_openconfig_gnmi//proto/gnmi:go_default_library", ++ "@com_github_openconfig_gnmi//proto/gnmi:gnmi_go_proto", + "@com_github_openconfig_goyang//pkg/yang:go_default_library", + "@org_golang_google_grpc//codes:go_default_library", + "@org_golang_google_grpc//status:go_default_library", diff --git a/sdn_tests/pins_ondatra/infra_deps.bzl b/sdn_tests/pins_ondatra/infra_deps.bzl new file mode 100644 index 00000000000..0d5c1557ee3 --- /dev/null +++ b/sdn_tests/pins_ondatra/infra_deps.bzl @@ -0,0 +1,324 @@ +load("@bazel_gazelle//:deps.bzl", "go_repository") +load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") + +def binding_deps(): + """Sets up 3rd party workspaces needed to build ondatra infrastructure.""" + + # repo_map maps repo to alternate repo names. Add mapping to resolve gazelle repo name conflicts. + repo_map = { + "@com_github_p4lang_p4runtime": "@com_github_p4lang_golang_p4runtime", + "@go_googleapis": "@com_google_googleapis", + } + + build_directives = [ + "gazelle:resolve go github.com/openconfig/gnmi/proto/gnmi @com_github_openconfig_gnmi//proto/gnmi:gnmi_go_proto", + "gazelle:resolve go github.com/openconfig/gnoi/bgp @com_github_openconfig_gnoi//bgp:bgp_go_proto", + "gazelle:resolve go github.com/openconfig/gnoi/cert @com_github_openconfig_gnoi//cert:cert_go_proto", + "gazelle:resolve go github.com/openconfig/gnoi/diag @com_github_openconfig_gnoi//diag:diag_go_proto", + "gazelle:resolve go github.com/openconfig/gnoi/factory_reset @com_github_openconfig_gnoi//factory_reset:factory_reset_go_proto", + "gazelle:resolve go github.com/openconfig/gnoi/healthz @com_github_openconfig_gnoi//healthz:healthz_go_proto", + "gazelle:resolve go github.com/openconfig/gnoi/layer2 @com_github_openconfig_gnoi//layer2:layer2_go_proto", + "gazelle:resolve go github.com/openconfig/gnoi/os @com_github_openconfig_gnoi//os:os_go_proto", + "gazelle:resolve go github.com/openconfig/gnoi/file @com_github_openconfig_gnoi//file:file_go_proto", + "gazelle:resolve go github.com/openconfig/gnoi/mpls @com_github_openconfig_gnoi//mpls:mpls_go_proto", + "gazelle:resolve go github.com/openconfig/gnoi/otdr @com_github_openconfig_gnoi//otdr:otdr_go_proto", + "gazelle:resolve go github.com/openconfig/gnoi/system @com_github_openconfig_gnoi//system:system_go_proto", + "gazelle:resolve go github.com/openconfig/gnoi/wavelength_router @com_github_openconfig_gnoi//wavelength_router:wavelength_router_go_proto", + "gazelle:resolve go github.com/openconfig/gnoi/packet_link_qualification @com_github_openconfig_gnoi//packet_link_qualification:linkqual_go_proto", + "gazelle:resolve go github.com/openconfig/gnoi/linkqual @com_github_openconfig_gnoi//packet_link_qualification:linkqual_go_proto", + "gazelle:resolve go github.com/openconfig/gnsi/acctz @com_github_openconfig_gnsi//acctz:acctz_go_proto", + "gazelle:resolve go github.com/openconfig/gnsi/pathz @com_github_openconfig_gnsi//pathz:pathz_go_proto", + "gazelle:resolve go github.com/openconfig/gnsi/credentialz @com_github_openconfig_gnsi//credentialz:credentialz", + "gazelle:resolve go github.com/openconfig/gribi/v1/proto/service @com_github_openconfig_gribi//v1/proto/service:go_default_library", + "gazelle:resolve go github.com/p4lang/p4runtime/go/p4/v1 @com_github_p4lang_p4runtime//go/p4/v1:go_default_library", + "gazelle:resolve go github.com/openconfig/gnsi/authz @com_github_openconfig_gnsi//authz", + "gazelle:resolve go github.com/openconfig/gnsi/certz @com_github_openconfig_gnsi//certz", + "gazelle:resolve go github.com/open-traffic-generator/snappi/gosnappi @com_github_open_traffic_generator_snappi//gosnappi:go_default_library", + "gazelle:resolve go github.com/openconfig/gnoi/types @com_github_openconfig_gnoi//types:types_go_proto", + "gazelle:resolve go google.golang.org/genproto/googleapis/rpc/status @org_golang_google_genproto//googleapis/rpc/status:status", + ] + + go_repository( + name = "com_github_ghodss_yaml", + importpath = "github.com/ghodss/yaml", + repo_mapping = repo_map, + sum = "h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=", + version = "v1.0.0", + patches = ["//:bazel/patches/ghodss_yaml.patch"], + patch_args = ["-p1"], + ) + + go_repository( + name = "com_github_golang_glog", + importpath = "github.com/golang/glog", + repo_mapping = repo_map, + sum = "h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ=", + version = "v1.0.0", + ) + + go_repository( + name = "com_github_golang_groupcache", + importpath = "github.com/golang/groupcache", + repo_mapping = repo_map, + sum = "h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=", + version = "v0.0.0-20210331224755-41bb18bfe9da", + ) + + go_repository( + name = "com_github_golang_protobuf", + importpath = "github.com/golang/protobuf", + repo_mapping = repo_map, + sum = "h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=", + version = "v1.5.3", + ) + + go_repository( + name = "com_github_google_go_cmp", + importpath = "github.com/google/go-cmp", + repo_mapping = repo_map, + sum = "h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=", + version = "v0.5.9", + ) + + go_repository( + name = "com_github_google_gopacket", + importpath = "github.com/google/gopacket", + sum = "h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8=", + version = "v1.1.19", + ) + + go_repository( + name = "com_github_kylelemons_godebug", + importpath = "github.com/kylelemons/godebug", + repo_mapping = repo_map, + sum = "h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=", + version = "v1.1.0", + ) + + go_repository( + name = "com_github_masterminds_semver_v3", + importpath = "github.com/Masterminds/semver/v3", + repo_mapping = repo_map, + sum = "h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0=", + version = "v3.2.1", + ) + + go_repository( + name = "com_github_openconfig_ondatra", + importpath = "github.com/openconfig/ondatra", + repo_mapping = repo_map, + build_file_proto_mode = "disable", + build_directives = build_directives, + patches = ["//:bazel/patches/ondatra.patch"], + patch_args = ["-p1"], + commit = "c22622bbf6da04c44fe4bdc77c31c0001b8a5593", #main as of 12/18/2023 + ) + + go_repository( + name = "com_github_open_traffic_generator_snappi", + importpath = "github.com/open-traffic-generator/snappi", + repo_mapping = repo_map, + commit = "c39ebe4b4cc4a0f63f2ed14b27e14ac51ec32b5d", # v0.13.3 + patches = ["//:bazel/patches/snappi.patch"], + patch_args = ["-p1"], + ) + + go_repository( + name = "com_github_openconfig_gnmi", + build_file_proto_mode = "disable", + importpath = "github.com/openconfig/gnmi", + repo_mapping = repo_map, + commit = "5473f2ef722ee45c3f26eee3f4a44a7d827e3575", #v0.10.0 + patches = ["//:bazel/patches/gnmi.patch"], + patch_args = ["-p1"], + ) + + go_repository( + name = "com_github_openconfig_ygnmi", + importpath = "github.com/openconfig/ygnmi", + build_file_proto_mode = "disable", + commit = "c4957ab3f1a1c9ff0a6baacf94a1e25a595a9f79", # v0.11.0 + patches = ["//:bazel/patches/ygnmi.patch"], + patch_args = ["-p1"], + ) + + go_repository( + name = "com_github_openconfig_gnoi", + build_file_proto_mode = "disable", + importpath = "github.com/openconfig/gnoi", + repo_mapping = repo_map, + commit = "97f56280571337f6122b8c30c6bdd93368c57b54", # v0.3.0 + patches = ["//:bazel/patches/gnoi.patch"], + patch_args = ["-p1"], + ) + + go_repository( + name = "com_github_openconfig_gnoigo", + build_file_proto_mode = "disable", + importpath = "github.com/openconfig/gnoigo", + repo_mapping = repo_map, + build_directives = build_directives, + commit = "87413fdb22e732d9935c0b2de0567e3e09d5318b", #main as of 12/18/2023 + patches = ["//:bazel/patches/gnoigo.patch"], + patch_args = ["-p1"], + ) + + go_repository( + name = "com_github_openconfig_gnsi", + build_file_proto_mode = "disable", + importpath = "github.com/openconfig/gnsi", + repo_mapping = repo_map, + commit = "d5abc2e8fa51d7b57b49511655b71422638ce8cf", + patches = ["//:bazel/patches/gnsi.patch"], + patch_args = ["-p1"], + ) + + go_repository( + name = "com_github_openconfig_gocloser", + importpath = "github.com/openconfig/gocloser", + repo_mapping = repo_map, + sum = "h1:NSYuxdlOWLldNpid1dThR6Dci96juXioUguMho6aliI=", + version = "v0.0.0-20220310182203-c6c950ed3b0b", + ) + + go_repository( + name = "com_github_openconfig_goyang", + importpath = "github.com/openconfig/goyang", + repo_mapping = repo_map, + commit = "5ad0d2feb9ce655fb39e414bd4e3696356780cdb" # v1.4.4 + ) + + go_repository( + name = "com_github_openconfig_gribi", + importpath = "github.com/openconfig/gribi", + repo_mapping = repo_map, + commit = "635d8ce0fd7673c29ddba927c32b834e313d575c", # v1.0.0 + patches = ["//:bazel/patches/gribi.patch"], + patch_args = ["-p1"], + ) + + go_repository( + name = "com_github_openconfig_ygot", + importpath = "github.com/openconfig/ygot", + repo_mapping = repo_map, + build_file_proto_mode = "disable", + commit = "8efc81471e0fe679c453aa0e8c03d752721733bc", # v0.29.17 + patches = ["//:bazel/patches/ygot.patch"], + patch_args = ["-p1"], + ) + + go_repository( + name = "com_github_p4lang_golang_p4runtime", + importpath = "github.com/p4lang/p4runtime", + repo_mapping = repo_map, + build_file_proto_mode = "disable", + commit = "a6f035f8ddea4fb22b2244afb59e3223dc5c1f69", + patches = ["//:bazel/patches/p4lang.patch"], + patch_args = ["-p1"], + ) + + go_repository( + name = "com_github_openconfig_testt", + importpath = "github.com/openconfig/testt", + commit = "efbb1a32ec07fa7f0b6cf7cda977fa1c584154d6", + ) + + go_repository( + name = "in_gopkg_yaml_v2", + importpath = "gopkg.in/yaml.v2", + repo_mapping = repo_map, + sum = "h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=", + version = "v2.4.0", + ) + + go_repository( + name = "io_opencensus_go", + importpath = "go.opencensus.io", + repo_mapping = repo_map, + sum = "h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=", + version = "v0.24.0", + ) + + go_repository( + name = "org_golang_google_grpc", + importpath = "google.golang.org/grpc", + repo_mapping = repo_map, + sum = "h1:EhTqbhiYeixwWQtAEZAxmV9MGqcjEU2mFx52xCzNyag=", + version = "v1.54.0", + ) + + go_repository( + name = "org_golang_google_grpc_cmd_protoc_gen_go_grpc", + importpath = "google.golang.org/grpc/cmd/protoc-gen-go-grpc", + repo_mapping = repo_map, + sum = "h1:M1YKkFIboKNieVO5DLUEVzQfGwJD30Nv2jfUgzb5UcE=", + version = "v1.1.0", + ) + + go_repository( + name = "org_golang_google_protobuf", + importpath = "google.golang.org/protobuf", + repo_mapping = repo_map, + sum = "h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=", + version = "v1.30.0", + ) + + go_repository( + name = "org_golang_x_exp", + importpath = "golang.org/x/exp", + commit = "aacd6d4b4611949ff7dcca7a0118e9312168a5f8", + ) + + go_repository( + name = "org_golang_x_net", + importpath = "golang.org/x/net", + repo_mapping = repo_map, + sum = "h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM=", + version = "v0.9.0", + ) + + go_repository( + name = "org_golang_x_sync", + importpath = "golang.org/x/sync", + repo_mapping = repo_map, + tag = "v0.3.0", + ) + + go_repository( + name = "org_golang_x_sys", + importpath = "golang.org/x/sys", + repo_mapping = repo_map, + sum = "h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU=", + version = "v0.7.0", + ) + + go_repository( + name = "org_golang_x_text", + importpath = "golang.org/x/text", + repo_mapping = repo_map, + sum = "h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=", + version = "v0.9.0", + ) + + + git_repository( + name = "com_google_googleapis", + remote = "https://github.com/googleapis/googleapis", + commit = "c4915db59896a1da45b55507ece2ebc1d53ef6f5", + shallow_since = "1642638275 -0800", + ) + + + go_repository( + name = "com_github_pkg_errors", + importpath = "github.com/pkg/errors", + sum = "h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=", + version = "v0.9.1", + ) + + go_repository( + name = "com_github_pkg_sftp", + importpath = "github.com/pkg/sftp", + sum = "h1:I2qBYMChEhIjOgazfJmV3/mZM256btk6wkCDRmW7JYs=", + version = "v1.13.1", + ) diff --git a/sdn_tests/pins_ondatra/pins_deps.bzl b/sdn_tests/pins_ondatra/pins_deps.bzl new file mode 100644 index 00000000000..b80cb2e1a73 --- /dev/null +++ b/sdn_tests/pins_ondatra/pins_deps.bzl @@ -0,0 +1,203 @@ +load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +def pins_deps(): + if not native.existing_rule("com_github_grpc_grpc"): + http_archive( + name = "com_github_grpc_grpc", + url = "https://github.com/grpc/grpc/archive/v1.58.0.zip", + strip_prefix = "grpc-1.58.0", + sha256 = "aa329c7de707a03511c88206ef4483e9346ab6336b6be4378d294060aa7400b3", + patch_args = ["-p1"], + patches = [ + "//:bazel/patches/grpc-001-fix_file_watcher_race_condition.patch", + "//:bazel/patches/grpc-003-fix_go_gazelle_register_toolchain.patch", + ], + ) + if not native.existing_rule("com_google_absl"): + http_archive( + name = "com_google_absl", + url = "https://github.com/abseil/abseil-cpp/archive/20230802.0.tar.gz", + strip_prefix = "abseil-cpp-20230802.0", + sha256 = "59d2976af9d6ecf001a81a35749a6e551a335b949d34918cfade07737b9d93c5", + ) + if not native.existing_rule("com_google_googletest"): + http_archive( + name = "com_google_googletest", + urls = ["https://github.com/google/googletest/archive/release-1.11.0.tar.gz"], + strip_prefix = "googletest-release-1.11.0", + sha256 = "b4870bf121ff7795ba20d20bcdd8627b8e088f2d1dab299a031c1034eddc93d5", + ) + if not native.existing_rule("com_google_benchmark"): + http_archive( + name = "com_google_benchmark", + urls = ["https://github.com/google/benchmark/archive/v1.5.4.tar.gz"], + strip_prefix = "benchmark-1.5.4", + sha256 = "e3adf8c98bb38a198822725c0fc6c0ae4711f16fbbf6aeb311d5ad11e5a081b5", + ) + if not native.existing_rule("com_google_protobuf"): + http_archive( + name = "com_google_protobuf", + url = "https://github.com/protocolbuffers/protobuf/archive/refs/tags/v25.1.zip", + strip_prefix = "protobuf-25.1", + sha256 = "eaafa4e19a6619c15df4c30d7213efbfd0f33ad16021cc5f72bbc5d0877346b5", + ) + if not native.existing_rule("com_googlesource_code_re2"): + http_archive( + name = "com_googlesource_code_re2", + url = "https://github.com/google/re2/archive/refs/tags/2023-06-01.tar.gz", + strip_prefix = "re2-2023-06-01", + sha256 = "8b4a8175da7205df2ad02e405a950a02eaa3e3e0840947cd598e92dca453199b", + ) + if not native.existing_rule("com_google_googleapis"): + http_archive( + name = "com_google_googleapis", + url = "https://github.com/googleapis/googleapis/archive/f405c718d60484124808adb7fb5963974d654bb4.zip", + strip_prefix = "googleapis-f405c718d60484124808adb7fb5963974d654bb4", + sha256 = "406b64643eede84ce3e0821a1d01f66eaf6254e79cb9c4f53be9054551935e79", + ) + if not native.existing_rule("com_github_google_glog"): + http_archive( + name = "com_github_google_glog", + url = "https://github.com/google/glog/archive/v0.6.0.tar.gz", + strip_prefix = "glog-0.6.0", + sha256 = "8a83bf982f37bb70825df71a9709fa90ea9f4447fb3c099e1d720a439d88bad6", + ) + if not native.existing_rule("com_github_otg_models"): + http_archive( + name = "com_github_otg_models", + url = "https://github.com/open-traffic-generator/models/archive/refs/tags/v0.12.5.zip", + strip_prefix = "models-0.12.5", + build_file = "@//:bazel/BUILD.otg-models.bazel", + sha256 = "1a63e769f1d7f42c79bc1115babf54acbc44761849a77ac28f47a74567f10090", + ) + + # Needed to make glog happy. + if not native.existing_rule("com_github_gflags_gflags"): + http_archive( + name = "com_github_gflags_gflags", + url = "https://github.com/gflags/gflags/archive/v2.2.2.tar.gz", + strip_prefix = "gflags-2.2.2", + sha256 = "34af2f15cf7367513b352bdcd2493ab14ce43692d2dcd9dfc499492966c64dcf", + ) + if not native.existing_rule("com_github_gnmi"): + http_archive( + name = "com_github_gnmi", + # v0.10.0 release; commit-hash:5473f2ef722ee45c3f26eee3f4a44a7d827e3575. + url = "https://github.com/openconfig/gnmi/archive/refs/tags/v0.10.0.zip", + strip_prefix = "gnmi-0.10.0", + patch_args = ["-p1"], + patches = [ + "//:bazel/patches/gnmi-001-fix_virtual_proto_import.patch", + ], + sha256 = "2231e1cc398a523fa840810fa6fdb8960639f7b91b57bb8f12ed8681e0142a67", + ) + if not native.existing_rule("com_github_gnoi"): + http_archive( + name = "com_github_gnoi", + # Newest commit on main on 2021-11-08. + url = "https://github.com/openconfig/gnoi/archive/1ece8ed91a0d5d283219a99eb4dc6c7eadb8f287.zip", + strip_prefix = "gnoi-1ece8ed91a0d5d283219a99eb4dc6c7eadb8f287", + sha256 = "991ff13a0b28f2cdc2ccb123261e7554d9bcd95c00a127411939a3a8c8a9cc62", + ) + if not native.existing_rule("com_github_p4lang_p4c"): + http_archive( + name = "com_github_p4lang_p4c", + # Newest commit on main on 2023-10-09. + url = "https://github.com/p4lang/p4c/archive/d79e2e8bfa07c7797891d44b7d084910947bf0a7.zip", + strip_prefix = "p4c-d79e2e8bfa07c7797891d44b7d084910947bf0a7", + sha256 = "1fad9b8e96988da76e3ad01c90e99d70fe7db90b3acb7bddf78b603117e857f9", + ) + if not native.existing_rule("com_github_p4lang_p4runtime"): + # We frequently need bleeding-edge, unreleased version of P4Runtime, so we use a commit + # rather than a release. + http_archive( + name = "com_github_p4lang_p4runtime", + # 90553b9 is the newest commit on main as of 2023-10-09. + urls = ["https://github.com/p4lang/p4runtime/archive/f0e9f33818b74f0009daa44160926e568f1eaa4d.zip"], + strip_prefix = "p4runtime-f0e9f33818b74f0009daa44160926e568f1eaa4d/proto", + sha256 = "97b43996ada83484bfa3f9be205d6b6fd75b9ed6985839414ee72110d369cd53", + ) + if not native.existing_rule("com_github_p4lang_p4_constraints"): + http_archive( + name = "com_github_p4lang_p4_constraints", + urls = ["https://github.com/p4lang/p4-constraints/archive/3d5196a793f375ccbe1bf38ae6c49e2e65604f4b.zip"], + strip_prefix = "p4-constraints-3d5196a793f375ccbe1bf38ae6c49e2e65604f4b", + sha256 = "f87d885ebfd6a1bdf02b4c4ba5bf6fb333f90d54561e4d520a8413c8d1fb7beb", + ) + if not native.existing_rule("com_github_nlohmann_json"): + http_archive( + name = "com_github_nlohmann_json", + # JSON for Modern C++ + url = "https://github.com/nlohmann/json/archive/v3.7.3.zip", + strip_prefix = "json-3.7.3", + sha256 = "e109cd4a9d1d463a62f0a81d7c6719ecd780a52fb80a22b901ed5b6fe43fb45b", + build_file_content = """cc_library(name = "nlohmann_json", + visibility = ["//visibility:public"], + hdrs = glob([ + "include/nlohmann/*.hpp", + "include/nlohmann/**/*.hpp", + ]), + includes = ["include"], + )""", + ) + if not native.existing_rule("com_jsoncpp"): + http_archive( + name = "com_jsoncpp", + url = "https://github.com/open-source-parsers/jsoncpp/archive/1.9.4.zip", + strip_prefix = "jsoncpp-1.9.4", + build_file = "@//:bazel/BUILD.jsoncpp.bazel", + sha256 = "6da6cdc026fe042599d9fce7b06ff2c128e8dd6b8b751fca91eb022bce310880", + ) + if not native.existing_rule("com_github_ivmai_cudd"): + http_archive( + name = "com_github_ivmai_cudd", + build_file = "@//:bazel/BUILD.cudd.bazel", + strip_prefix = "cudd-cudd-3.0.0", + sha256 = "5fe145041c594689e6e7cf4cd623d5f2b7c36261708be8c9a72aed72cf67acce", + urls = ["https://github.com/ivmai/cudd/archive/cudd-3.0.0.tar.gz"], + ) + if not native.existing_rule("com_gnu_gmp"): + http_archive( + name = "com_gnu_gmp", + urls = [ + "https://gmplib.org/download/gmp/gmp-6.2.1.tar.xz", + "https://ftp.gnu.org/gnu/gmp/gmp-6.2.1.tar.xz", + ], + strip_prefix = "gmp-6.2.1", + sha256 = "fd4829912cddd12f84181c3451cc752be224643e87fac497b69edddadc49b4f2", + build_file = "@//:bazel/BUILD.gmp.bazel", + ) + if not native.existing_rule("com_github_z3prover_z3"): + http_archive( + name = "com_github_z3prover_z3", + url = "https://github.com/Z3Prover/z3/archive/z3-4.8.12.tar.gz", + strip_prefix = "z3-z3-4.8.12", + sha256 = "e3aaefde68b839299cbc988178529535e66048398f7d083b40c69fe0da55f8b7", + build_file = "@//:bazel/BUILD.z3.bazel", + ) + if not native.existing_rule("rules_foreign_cc"): + http_archive( + name = "rules_foreign_cc", + sha256 = "d54742ffbdc6924f222d2179f0e10e911c5c659c4ae74158e9fe827aad862ac6", + strip_prefix = "rules_foreign_cc-0.2.0", + url = "https://github.com/bazelbuild/rules_foreign_cc/archive/0.2.0.tar.gz", + ) + if not native.existing_rule("rules_proto"): + http_archive( + name = "rules_proto", + urls = [ + "https://github.com/bazelbuild/rules_proto/archive/3f1ab99b718e3e7dd86ebdc49c580aa6a126b1cd.tar.gz", + ], + strip_prefix = "rules_proto-3f1ab99b718e3e7dd86ebdc49c580aa6a126b1cd", + sha256 = "c9cc7f7be05e50ecd64f2b0dc2b9fd6eeb182c9cc55daf87014d605c31548818", + ) + if not native.existing_rule("rules_pkg"): + http_archive( + name = "rules_pkg", + urls = [ + "https://mirror.bazel.build/github.com/bazelbuild/rules_pkg/releases/download/0.5.1/rules_pkg-0.5.1.tar.gz", + "https://github.com/bazelbuild/rules_pkg/releases/download/0.5.1/rules_pkg-0.5.1.tar.gz", + ], + sha256 = "a89e203d3cf264e564fcb96b6e06dd70bc0557356eb48400ce4b5d97c2c3720d", + )