Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
build --@rules_rs//rs/private/prost:compile_well_known_types=false
test --test_env=PATH

build:release --compilation_mode=opt
build:release --@rules_rust//rust/settings:codegen_units=1
build:release --@rules_rust//rust/settings:extra_rustc_flag=-Cstrip=symbols
1 change: 1 addition & 0 deletions .bazelversion
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
9.1.1
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -230,3 +230,6 @@ scripts/lint-mermaid/node_modules/
# Nix
/result
/result-*

# Bazel
bazel-*
1 change: 1 addition & 0 deletions BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
exports_files(["deploy/rpm/gateway.toml.default"])
75 changes: 75 additions & 0 deletions MODULE.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
bazel_dep(name = "rules_rs", version = "0.0.96")
bazel_dep(name = "bazel_lib", version = "3.2.2")
bazel_dep(name = "llvm", version = "0.8.11")
bazel_dep(name = "platforms", version = "1.1.0")
bazel_dep(name = "rules_cc", version = "0.2.20")
bazel_dep(name = "rules_proto", version = "7.1.0")
bazel_dep(name = "protobuf", version = "34.0.bcr.1")

include("//bazel/annotations:aws-lc-sys.MODULE.bazel")
include("//bazel/annotations:z3-sys.MODULE.bazel")
include("//bazel/annotations:zstd-sys.MODULE.bazel")

z3_repository = use_repo_rule("//third_party/z3:repositories.bzl", "z3_repository")

z3_repository(
name = "z3",
build_file = "//third_party/z3:BUILD.z3.bazel",
integrity = "sha256-YGAaZ0II/2EDgM8NVhIayGeMRcXE6sOtFNv+kZmOzIo=",
strip_prefix = "z3-z3-4.15.2",
urls = ["https://github.com/Z3Prover/z3/archive/refs/tags/z3-4.15.2.zip"],
)

osx = use_extension("@llvm//extensions:osx.bzl", "osx")
osx.frameworks(
names = [
"CFNetwork",
"CoreFoundation",
"CoreServices",
"DiskArbitration",
"Foundation",
"IOKit",
"Kernel",
"OSLog",
"Security",
"SystemConfiguration",
],
)

workspace_version_repository = use_repo_rule("//bazel:cargo_version.bzl", "workspace_version_repository")

workspace_version_repository(
name = "workspace_version",
manifest = "//:Cargo.toml",
)

toolchains = use_extension("@rules_rs//rs/toolchains:module_extension.bzl", "toolchains")
toolchains.toolchain(
edition = "2024",
version = "1.95.0",
)
use_repo(toolchains, "default_rust_toolchains")

rules_rust = use_extension("@rules_rs//rs:rules_rust.bzl", "rules_rust")
use_repo(rules_rust, "rules_rust")

register_toolchains(
"@default_rust_toolchains//:all",
"@llvm//toolchain:all",
"@rules_rust//extensions/prost:default_prost_toolchain",
)

crate = use_extension("@rules_rs//rs:extensions.bzl", "crate")
crate.from_cargo(
name = "crates",
cargo_lock = "//:Cargo.lock",
cargo_toml = "//:Cargo.toml",
platform_triples = [
"aarch64-apple-darwin",
"aarch64-unknown-linux-gnu",
"aarch64-unknown-linux-musl",
"x86_64-unknown-linux-gnu",
"x86_64-unknown-linux-musl",
],
)
use_repo(crate, "crates")
1,499 changes: 1,499 additions & 0 deletions MODULE.bazel.lock

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions bazel/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
exports_files(["cargo_version.bzl"])
5 changes: 5 additions & 0 deletions bazel/annotations/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
exports_files([
"aws-lc-sys.MODULE.bazel",
"z3-sys.MODULE.bazel",
"zstd-sys.MODULE.bazel",
])
22 changes: 22 additions & 0 deletions bazel/annotations/aws-lc-sys.MODULE.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
bazel_dep(name = "aws-lc", version = "5.1.0")

rules_rust_bindgen = use_extension("@rules_rs//rs:rules_rust_bindgen.bzl", "rules_rust_bindgen")
use_repo(rules_rust_bindgen, "rules_rust_bindgen")

register_toolchains("@rules_rust_bindgen//:all")

crate = use_extension("@rules_rs//rs:extensions.bzl", "crate")
crate.annotation(
crate = "aws-lc-rs",
gen_build_script = "off",
)
crate.annotation(
additive_build_file = "@rules_rs//3rd_party/aws-lc-sys:additive.BUILD.bazel",
crate = "aws-lc-sys",
extra_aliased_targets = {"aws_lc_sys_build_info": "aws_lc_sys_build_info"},
gen_build_script = "off",
rustc_flags = ["--cfg=use_bindgen_pregenerated"],
deps = ["@crates//:aws_lc_sys_build_info"],
)

inject_repo(crate, "aws-lc")
10 changes: 10 additions & 0 deletions bazel/annotations/z3-sys.MODULE.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
crate = use_extension("@rules_rs//rs:extensions.bzl", "crate")
crate.annotation(
additive_build_file = "//bazel/annotations/z3-sys:additive.BUILD.bazel",
crate = "z3-sys",
extra_aliased_targets = {"z3_sys_build_info": "z3_sys_build_info"},
gen_build_script = "off",
deps = ["@crates//:z3_sys_build_info"],
)

inject_repo(crate, "z3")
1 change: 1 addition & 0 deletions bazel/annotations/z3-sys/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
exports_files(["additive.BUILD.bazel"])
6 changes: 6 additions & 0 deletions bazel/annotations/z3-sys/additive.BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
load("@@//bazel/annotations/z3-sys:defs.bzl", "z3_sys")

z3_sys(
name = "z3_sys_build_info",
z3 = "@z3//:z3",
)
81 changes: 81 additions & 0 deletions bazel/annotations/z3-sys/defs.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
"""z3-sys build-script replacement."""

load("@bazel_lib//lib:copy_to_directory.bzl", "copy_to_directory")
load("@rules_cc//cc:defs.bzl", "CcInfo", "cc_library")
load("@rules_rs//rs:rules_rust_bindgen.bzl", "rust_bindgen")
load("@rules_rust//rust:rust_common.bzl", "BuildInfo")

_ENUMS = [
"ast_kind",
"ast_print_mode",
"decl_kind",
"error_code",
"goal_prec",
"param_kind",
"parameter_kind",
"sort_kind",
"symbol_kind",
]

def _z3_sys_build_info_impl(ctx):
out_dir = ctx.file.out_dir
if not out_dir.is_directory:
fail("out_dir must be a directory")

return [
BuildInfo(
compile_data = depset(),
dep_env = None,
flags = None,
linker_flags = None,
link_search_paths = None,
out_dir = out_dir,
rustc_env = None,
),
ctx.attr.cc_lib[CcInfo],
]

_z3_sys_build_info = rule(
implementation = _z3_sys_build_info_impl,
attrs = {
"cc_lib": attr.label(mandatory = True, providers = [CcInfo]),
"out_dir": attr.label(allow_single_file = True, mandatory = True),
},
)

def z3_sys(name, z3):
"""Injects generated enum bindings and native Z3 into z3-sys."""
wrapper = name + "_wrapper"
out_dir = name + "_out_dir"

cc_library(
name = wrapper,
hdrs = ["wrapper.h"],
deps = [z3],
)

bindings = []
for enum in _ENUMS:
rust_bindgen(
name = enum,
bindgen_flags = [
"--allowlist-type=Z3_" + enum,
"--no-doc-comments",
"--rustified-enum=Z3_" + enum,
],
cc_lib = wrapper,
header = "wrapper.h",
)
bindings.append(enum)

copy_to_directory(
name = out_dir,
srcs = bindings,
)

_z3_sys_build_info(
name = name,
cc_lib = wrapper,
out_dir = out_dir,
visibility = ["//visibility:public"],
)
8 changes: 8 additions & 0 deletions bazel/annotations/zstd-sys.MODULE.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
bazel_dep(name = "zstd", version = "1.5.7.bcr.1")

crate = use_extension("@rules_rs//rs:extensions.bzl", "crate")
crate.annotation(
crate = "zstd-sys",
gen_build_script = "off",
deps = ["@zstd"],
)
33 changes: 33 additions & 0 deletions bazel/cargo_version.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
def _workspace_version_repository_impl(repository_ctx):
in_workspace_package = False

for raw_line in repository_ctx.read(repository_ctx.attr.manifest).splitlines():
line = raw_line.strip()

if line.startswith("["):
in_workspace_package = line == "[workspace.package]"
continue

if not in_workspace_package or not line.startswith("version"):
continue

value = line.split("=", 1)[1].strip()
if not value.startswith('"') or value.find('"', 1) == -1:
fail("workspace package version must be a quoted string")

version = value[1:value.find('"', 1)]
repository_ctx.file("BUILD.bazel", 'exports_files(["version.bzl"])\n')
repository_ctx.file("version.bzl", 'WORKSPACE_VERSION = "{}"\n'.format(version))
return

fail("workspace package version not found in {}".format(repository_ctx.attr.manifest))

workspace_version_repository = repository_rule(
implementation = _workspace_version_repository_impl,
attrs = {
"manifest": attr.label(
allow_single_file = True,
mandatory = True,
),
},
)
95 changes: 95 additions & 0 deletions bazel/releases/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
load("@bazel_lib//lib:transitions.bzl", "platform_transition_binary")

platform(
name = "linux_x86_64_gnu_2_28",
constraint_values = [
"@llvm//constraints/cxxstdlib:libcxx",
"@llvm//constraints/libc:gnu.2.28",
"@platforms//cpu:x86_64",
"@platforms//os:linux",
"@rules_rs//rs/platforms/constraints:glibc",
],
)

platform(
name = "linux_aarch64_gnu_2_28",
constraint_values = [
"@llvm//constraints/cxxstdlib:libcxx",
"@llvm//constraints/libc:gnu.2.28",
"@platforms//cpu:aarch64",
"@platforms//os:linux",
"@rules_rs//rs/platforms/constraints:glibc",
],
)

platform_transition_binary(
name = "openshell_linux_x86_64",
basename = "openshell",
binary = "//crates/openshell-cli:openshell",
tags = ["manual"],
target_platform = "@rules_rs//rs/platforms:x86_64-unknown-linux-musl",
)

platform_transition_binary(
name = "openshell_linux_aarch64",
basename = "openshell",
binary = "//crates/openshell-cli:openshell",
tags = ["manual"],
target_platform = "@rules_rs//rs/platforms:aarch64-unknown-linux-musl",
)

platform_transition_binary(
name = "openshell_sandbox_linux_x86_64",
basename = "openshell-sandbox",
binary = "//crates/openshell-sandbox:openshell-sandbox-bin",
tags = ["manual"],
target_platform = "@rules_rs//rs/platforms:x86_64-unknown-linux-musl",
)

platform_transition_binary(
name = "openshell_sandbox_linux_aarch64",
basename = "openshell-sandbox",
binary = "//crates/openshell-sandbox:openshell-sandbox-bin",
tags = ["manual"],
target_platform = "@rules_rs//rs/platforms:aarch64-unknown-linux-musl",
)

platform_transition_binary(
name = "openshell_gateway_linux_x86_64",
basename = "openshell-gateway",
binary = "//crates/openshell-server:openshell-gateway",
tags = ["manual"],
target_platform = ":linux_x86_64_gnu_2_28",
)

platform_transition_binary(
name = "openshell_gateway_linux_aarch64",
basename = "openshell-gateway",
binary = "//crates/openshell-server:openshell-gateway",
tags = ["manual"],
target_platform = ":linux_aarch64_gnu_2_28",
)

platform_transition_binary(
name = "openshell_macos_aarch64",
basename = "openshell",
binary = "//crates/openshell-cli:openshell",
tags = ["manual"],
target_platform = "@rules_rs//rs/platforms:aarch64-apple-darwin",
)

platform_transition_binary(
name = "openshell_sandbox_macos_aarch64",
basename = "openshell-sandbox",
binary = "//crates/openshell-sandbox:openshell-sandbox-bin",
tags = ["manual"],
target_platform = "@rules_rs//rs/platforms:aarch64-apple-darwin",
)

platform_transition_binary(
name = "openshell_gateway_macos_aarch64",
basename = "openshell-gateway",
binary = "//crates/openshell-server:openshell-gateway",
tags = ["manual"],
target_platform = "@rules_rs//rs/platforms:aarch64-apple-darwin",
)
17 changes: 17 additions & 0 deletions crates/openshell-bootstrap/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
load("@crates//:defs.bzl", "aliases", "all_crate_deps")
load("@rules_rs//rs:rust_library.bzl", "rust_library")
load("@rules_rs//rs:rust_test.bzl", "rust_test")

rust_library(
name = "openshell-bootstrap",
srcs = glob(["src/**/*.rs"]),
aliases = aliases(),
visibility = ["//visibility:public"],
deps = all_crate_deps(normal = True),
)

rust_test(
name = "openshell-bootstrap_test",
crate = ":openshell-bootstrap",
deps = all_crate_deps(normal_dev = True),
)
Loading
Loading