| workspace(name = "examples") |
| |
| # Users of `rules_rust` will commonly be unable to load it |
| # using a `local_repository`. Instead, to setup the rules, |
| # please see https://bazelbuild.github.io/rules_rust/#setup |
| local_repository( |
| name = "rules_rust", |
| path = "..", |
| ) |
| |
| load("@rules_rust//rust:repositories.bzl", "rules_rust_dependencies", "rust_register_toolchains") |
| |
| rules_rust_dependencies() |
| |
| rust_register_toolchains( |
| edition = "2018", |
| ) |
| |
| load("@rules_rust//crate_universe:repositories.bzl", "crate_universe_dependencies") |
| |
| crate_universe_dependencies(bootstrap = True) |
| |
| load("@rules_rust//tools/rust_analyzer:deps.bzl", "rust_analyzer_dependencies") |
| |
| rust_analyzer_dependencies() |
| |
| load("@rules_rust//bindgen:repositories.bzl", "rust_bindgen_dependencies", "rust_bindgen_register_toolchains") |
| |
| rust_bindgen_dependencies() |
| |
| rust_bindgen_register_toolchains() |
| |
| load("@rules_rust//bindgen:transitive_repositories.bzl", "rust_bindgen_transitive_dependencies") |
| |
| rust_bindgen_transitive_dependencies() |
| |
| load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") |
| |
| # We need to load rules_java before anything proto-related happens because otherwise it will pull in its own rules_java which isn't compatible with rules_jvm_external. |
| http_archive( |
| name = "rules_java", |
| sha256 = "f8ae9ed3887df02f40de9f4f7ac3873e6dd7a471f9cddf63952538b94b59aeb3", |
| urls = [ |
| "https://github.com/bazelbuild/rules_java/releases/download/7.6.1/rules_java-7.6.1.tar.gz", |
| ], |
| ) |
| |
| load("@rules_rust//proto/protobuf:repositories.bzl", "rust_proto_protobuf_dependencies", "rust_proto_protobuf_register_toolchains") |
| |
| rust_proto_protobuf_dependencies() |
| |
| rust_proto_protobuf_register_toolchains() |
| |
| load("@rules_rust//proto/protobuf:transitive_repositories.bzl", "rust_proto_protobuf_transitive_repositories") |
| |
| rust_proto_protobuf_transitive_repositories() |
| |
| load("@rules_rust//wasm_bindgen:repositories.bzl", "rust_wasm_bindgen_dependencies", "rust_wasm_bindgen_register_toolchains") |
| |
| rust_wasm_bindgen_dependencies() |
| |
| rust_wasm_bindgen_register_toolchains() |
| |
| load("@rules_rust//wasm_bindgen/rules_nodejs:repositories.bzl", "nodejs_rust_wasm_bindgen_dependencies") |
| |
| nodejs_rust_wasm_bindgen_dependencies() |
| |
| load("@rules_rust//wasm_bindgen/rules_js:repositories.bzl", "js_rust_wasm_bindgen_dependencies") |
| |
| js_rust_wasm_bindgen_dependencies() |
| |
| load("@aspect_rules_js//js:repositories.bzl", "rules_js_dependencies") |
| |
| rules_js_dependencies() |
| |
| load("@aspect_rules_js//js:toolchains.bzl", "DEFAULT_NODE_VERSION", "rules_js_register_toolchains") |
| |
| rules_js_register_toolchains(node_version = DEFAULT_NODE_VERSION) |
| |
| ############################################################################### |
| # Workspace examples |
| ############################################################################### |
| |
| # buildifier: disable=same-origin-load |
| load("@rules_rust//rust:repositories.bzl", "rust_repository_set") |
| |
| # `rust_repository_set` is the core repository rule for downloading and defining |
| # a rust_toolchain. Should there be a need for a customized toolchain, this macro can |
| # be used to define and register one. |
| rust_repository_set( |
| name = "fake_toolchain_for_test_of_sha256", |
| edition = "2018", |
| exec_triple = "x86_64-unknown-linux-gnu", |
| extra_target_triples = [], |
| sha256s = { |
| "rust-1.46.0-x86_64-unknown-linux-gnu": "e3b98bc3440fe92817881933f9564389eccb396f5f431f33d48b979fa2fbdcf5", |
| "rust-std-1.46.0-x86_64-unknown-linux-gnu": "ac04aef80423f612c0079829b504902de27a6997214eb58ab0765d02f7ec1dbc", |
| "rustfmt-1.4.12-x86_64-unknown-linux-gnu": "1894e76913303d66bf40885a601462844eec15fca9e76a6d13c390d7000d64b0", |
| }, |
| versions = ["1.46.0"], |
| ) |
| |
| ############################################################################### |
| # Examples dependencies |
| ############################################################################### |
| |
| http_archive( |
| name = "build_bazel_rules_nodejs", |
| sha256 = "709cc0dcb51cf9028dd57c268066e5bc8f03a119ded410a13b5c3925d6e43c48", |
| urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/5.8.4/rules_nodejs-5.8.4.tar.gz"], |
| ) |
| |
| load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories") |
| |
| node_repositories() |
| |
| load("@bazel_features//:deps.bzl", "bazel_features_deps") |
| |
| bazel_features_deps() |
| |
| http_archive( |
| name = "rules_foreign_cc", |
| sha256 = "69023642d5781c68911beda769f91fcbc8ca48711db935a75da7f6536b65047f", |
| strip_prefix = "rules_foreign_cc-0.6.0", |
| url = "https://github.com/bazelbuild/rules_foreign_cc/archive/0.6.0.tar.gz", |
| ) |
| |
| load("@rules_foreign_cc//foreign_cc:repositories.bzl", "rules_foreign_cc_dependencies") |
| |
| rules_foreign_cc_dependencies() |
| |
| load("//sys:sys_deps.bzl", "sys_deps") |
| |
| sys_deps() |
| |
| local_repository( |
| name = "rules_rust_example_cargo_manifest_dir", |
| path = "cargo_manifest_dir/external_crate", |
| ) |
| |
| _LIBC_BUILD_FILE_CONTENT = """\ |
| load("@rules_rust//rust:defs.bzl", "rust_library") |
| |
| rust_library( |
| name = "libc", |
| srcs = glob(["src/**/*.rs"]), |
| edition = "2015", |
| rustc_flags = [ |
| # In most cases, warnings in 3rd party crates are not interesting as |
| # they're out of the control of consumers. The flag here silences |
| # warnings. For more details see: |
| # https://doc.rust-lang.org/rustc/lints/levels.html |
| "--cap-lints=allow", |
| ], |
| visibility = ["//visibility:public"], |
| ) |
| """ |
| |
| http_archive( |
| name = "libc", |
| build_file_content = _LIBC_BUILD_FILE_CONTENT, |
| sha256 = "1ac4c2ac6ed5a8fb9020c166bc63316205f1dc78d4b964ad31f4f21eb73f0c6d", |
| strip_prefix = "libc-0.2.20", |
| urls = [ |
| "https://mirror.bazel.build/github.com/rust-lang/libc/archive/0.2.20.zip", |
| "https://github.com/rust-lang/libc/archive/0.2.20.zip", |
| ], |
| ) |
| |
| http_archive( |
| name = "rules_jvm_external", |
| sha256 = "08ea921df02ffe9924123b0686dc04fd0ff875710bfadb7ad42badb931b0fd50", |
| strip_prefix = "rules_jvm_external-6.1", |
| url = "https://github.com/bazelbuild/rules_jvm_external/releases/download/6.1/rules_jvm_external-6.1.tar.gz", |
| ) |
| |
| load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps") |
| |
| rules_jvm_external_deps() |
| |
| load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup") |
| |
| rules_jvm_external_setup() |
| |
| load("@rules_jvm_external//:defs.bzl", "maven_install") |
| |
| maven_install( |
| name = "maven", |
| artifacts = [ |
| "net.java.dev.jna:jna:5.14.0", |
| "org.hamcrest:hamcrest:2.2", |
| ], |
| maven_install_json = "@//:maven_install.json", |
| repositories = [ |
| "https://repo1.maven.org/maven2", |
| ], |
| ) |
| |
| load("@maven//:defs.bzl", "pinned_maven_install") |
| |
| pinned_maven_install() |
| |
| ############################################################################### |
| |
| http_archive( |
| name = "bazel_ci_rules", |
| sha256 = "eca21884e6f66a88c358e580fd67a6b148d30ab57b1680f62a96c00f9bc6a07e", |
| strip_prefix = "bazelci_rules-1.0.0", |
| url = "https://github.com/bazelbuild/continuous-integration/releases/download/rules-1.0.0/bazelci_rules-1.0.0.tar.gz", |
| ) |
| |
| load("@bazel_ci_rules//:rbe_repo.bzl", "rbe_preconfig") |
| |
| # Creates a default toolchain config for RBE. |
| # Use this as is if you are using the rbe_ubuntu16_04 container, |
| # otherwise refer to RBE docs. |
| rbe_preconfig( |
| name = "buildkite_config", |
| toolchain = "ubuntu1804-bazel-java11", |
| ) |
| |
| load("@build_bazel_apple_support//crosstool:setup.bzl", "apple_cc_configure") |
| |
| # As of Bazel 7, Bazel's bundled cc_toolchain only supports using CommandLineTools and not a full Xcode. |
| # This manifests itself if you try to use anything which requires access to $DEVELOPER_DIR, such as our bindgen example which non-hermetically tries to read libc++ headers from the system. |
| # On CI (and for some of our contributors), we have a full Xcode install, so this fails. |
| # We register the apple_support cc_toolchain here because it supports both CommandLineTools and full Xcodes. |
| # See https://github.com/bazelbuild/rules_rust/issues/2207 and https://github.com/bazelbuild/bazel/issues/20638 |
| apple_cc_configure() |