"enso-org/enso" ############################ ### JavaScript ecosystem ### ############################ bazel_dep(name = "aspect_rules_js", version = "2.1.0") bazel_dep(name = "aspect_rules_ts", version = "3.2.1") bazel_dep(name = "rules_nodejs", version = "6.3.1") bazel_dep(name = "aspect_bazel_lib", version = "2.9.3") ## Node.js node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node") node.toolchain(node_version = "20.11.1") # bazel_dep(name = "//toolchains/tar") tar_toolchain = use_extension("//toolchains:tar/extensions.bzl", "tar_toolchain") use_repo(tar_toolchain, "tar_toolchain") register_toolchains("//toolchains:windows_builtin_tar_toolchain") ## Npm npm = use_extension("@aspect_rules_js//npm:extensions.bzl", "npm", dev_dependency = True) npm.npm_translate_lock( name = "npm", npmrc = "//:.npmrc", pnpm_lock = "//:pnpm-lock.yaml", verify_node_modules_ignored = "//:.bazelignore", ) use_repo(npm, "npm") ## TypeScript rules_ts_ext = use_extension("@aspect_rules_ts//ts:extensions.bzl", "ext", dev_dependency = True) rules_ts_ext.deps() use_repo(rules_ts_ext, "npm_typescript") ############ ### RUST ### ############ bazel_dep(name = "rules_rust", version = "0.48.0") single_version_override( module_name = "rules_rust", patches = ["patches/rules_rust_msvc_maxpath.patch"], ) rust = use_extension("@rules_rust//rust:extensions.bzl", "rust") rust.toolchain( edition = "2021", extra_target_triples = ["wasm32-unknown-unknown"], versions = ["nightly/2024-08-08"], ) use_repo(rust, "rust_toolchains") register_toolchains("@rust_toolchains//:all") # print( manifests.MANIFESTS ) crate = use_extension("@rules_rust//crate_universe:extension.bzl", "crate") crate.from_cargo( name = "crates", cargo_config = "//:.cargo/config.toml", cargo_lockfile = "//:Cargo.lock", manifests = [ "//:build_tools/ci-gen/Cargo.toml", "//:build_tools/cli/Cargo.toml", "//:build_tools/install/Cargo.toml", "//:build_tools/install/config/Cargo.toml", "//:build_tools/install/installer/Cargo.toml", "//:build_tools/install/uninstaller/Cargo.toml", "//:build_tools/macros/lib/Cargo.toml", "//:Cargo.toml", "//:lib/rust/launcher-shims/Cargo.toml", "//:lib/rust/macro-utils/Cargo.toml", "//:lib/rust/metamodel/Cargo.toml", "//:lib/rust/parser/debug/Cargo.toml", "//:lib/rust/parser/doc-parser/Cargo.toml", "//:lib/rust/parser/generate-java/Cargo.toml", "//:lib/rust/parser/jni/Cargo.toml", "//:lib/rust/parser/schema/Cargo.toml", "//:lib/rust/parser/src/syntax/tree/visitor/Cargo.toml", "//:lib/rust/prelude/Cargo.toml", "//:lib/rust/prelude/macros/Cargo.toml", "//:lib/rust/reflect/Cargo.toml", "//:lib/rust/zst/Cargo.toml", "//:lib/rust/parser/debug/fuzz/Cargo.toml", "//:tools/language-server/logstat/Cargo.toml", "//:tools/language-server/wstest/Cargo.toml", "//app/rust-ffi:Cargo.toml", ], ) use_repo(crate, "crates") wb_crates = use_extension("@rules_rust//crate_universe:extension.bzl", "crate") wb_crates.from_cargo( name = "wb_crates", cargo_config = "//:.cargo/config.toml", cargo_lockfile = "@wasm_bindgen_cli_crate//:Cargo.lock", manifests = [ "@wasm_bindgen_cli_crate//:Cargo.toml", ], ) use_repo(wb_crates, "wb_crates") http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") WASM_BINDGEN_VERSION = "0.2.93" http_archive( name = "wasm_bindgen_cli_crate", build_file = "//toolchains/wasm_bindgen:BUILD.wasm-bindgen-cli.bazel", integrity = "sha256-uwX54YM2X1zzrATWC1Sw4z9JTpNzAme1r4JjNEPugDU=", strip_prefix = "wasm-bindgen-cli-{}".format(WASM_BINDGEN_VERSION), type = "tar.gz", # sha256 = "08f61e21873f51e3059a8c7c3eef81ede7513d161cfc60751c7b2ffa6ed28270", urls = ["https://static.crates.io/crates/wasm-bindgen-cli/wasm-bindgen-cli-{}.crate".format(WASM_BINDGEN_VERSION)], ) register_toolchains("//toolchains/wasm_bindgen:cli") register_toolchains("//toolchains/dummy_cc:dummy_cc_wasm32_toolchain") ########### ### JVM ### ########### bazel_dep(name = "rules_java", version = "7.6.1") bazel_dep(name = "rules_graalvm", version = "0.11.1") ## upgrade to 0.11.2 once available in bazel central gvm = use_extension("@rules_graalvm//:extensions.bzl", "graalvm") gvm.graalvm( name = "graalvm", distribution = "ce", # `oracle`, `ce`, or `community` java_version = "21", # `17`, `20`, `21`, or `22` as supported by the version provided version = "23.1.0", # gvm sdk version format like `24.x.x` also supported ) use_repo(gvm, "graalvm") register_toolchains("@graalvm//:jvm") register_toolchains("@graalvm//:sdk") ## Native-image register_toolchains("@graalvm//:toolchain") bazel_dep(name = "rules_jvm_external", version = "6.0") scala_logging_version = "3.9.4" scalatest_version = "3.3.0-SNAP4" cats_version = "2.9.0" circe_version = "0.14.5" circe_libs = [ "circe-core", "circe-generic", "circe-parser", ] circe = ["io.circe:%s_2.13:%s" % (x, circe_version) for x in circe_libs] commons_text_version = "1.10.0" http_components_version = "4.4.1" jackson_version = "2.15.2" commons_io_version = "2.12.0" commons_compress_version = "1.23.0" commons_lang_version = "3.12.0" junit_version = "4.13.2" hamcrest_version = "1.3" picocli_version = "4.6.1" minimal_json_version = "0.9.5" ## TODO: Consider replacing maven extension with ## https://github.com/bazeltools/bazel-deps ## The downside of the approach is that a number of other rules rely on it. maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven") ## After updating a list of artifacts run ## > bazel run @unpinned_maven//:pin maven.install( artifacts = [ "com.typesafe.scala-logging:scala-logging_2.13:%s" % scala_logging_version, "org.scalatest:scalatest_2.13:%s" % scalatest_version, "org.typelevel:cats-core_2.13:%s" % cats_version, "org.apache.commons:commons-text:%s" % commons_text_version, "org.apache.httpcomponents:httpclient:%s" % http_components_version, "com.fasterxml.jackson.core:jackson-databind:%s" % jackson_version, "commons-io:commons-io:%s" % commons_io_version, "org.apache.commons:commons-compress:%s" % commons_compress_version, "org.apache.commons:commons-lang3:%s" % commons_lang_version, "junit:junit:%s" % junit_version, "org.hamcrest:hamcrest-all:%s" % hamcrest_version, ## bazel-distribution dependencies "info.picocli:picocli:%s" % picocli_version, "com.eclipsesource.minimal-json:minimal-json:%s" % minimal_json_version, ] + circe, fail_if_repin_required = True, lock_file = "//:maven_install.json", repositories = [ "https://repo.maven.apache.org/maven2", "https://repo1.maven.org/maven2", ], ) use_repo( maven, "maven", "unpinned_maven", ) ################### ### ENVIRONMENT ### ################### secrets = use_extension("//:bazel_scripts/secrets.bzl", "secrets") secrets.environment_repo( name = "env", entries = { "NODE_ENV": "production", }, ) use_repo(secrets, "env")