Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
7cef7b9
Add MODULE.bazel for bzlmod support
cholgateSC Apr 30, 2026
1f50351
Fix MODULE.bazel to use same Valdi commit as WORKSPACE
cholgateSC Apr 30, 2026
d326afb
Fix CI: clone Valdi locally instead of downloading per sub-module
cholgateSC Apr 30, 2026
bfd59d8
Add toolchains_llvm extension (root-module-only)
cholgateSC Apr 30, 2026
70aef69
Patch Valdi MODULE.bazel to remove root-module-only llvm extension
cholgateSC Apr 30, 2026
b20f8f8
Fix CI: patch Valdi checkout to remove root-module-only llvm extension
cholgateSC Apr 30, 2026
eeb2ab8
Remove duplicate rules_ts extension declaration
cholgateSC Apr 30, 2026
2a32294
fix: add missing bazel_dep entries to Valdi sub-modules in CI
cholgateSC Apr 30, 2026
47c7f94
fix: use printf with leading newline for MODULE.bazel appends
cholgateSC Apr 30, 2026
0e57f00
fix: remove duplicate rules_android dep from CI patches
cholgateSC Apr 30, 2026
cce88dc
fix: register Apple CC toolchain before LLVM in root module
cholgateSC Apr 30, 2026
995eb7d
Add version-only single_version_override pins
cholgateSC Apr 30, 2026
5d0b9ad
Add missing -Wno-nullability-extension compiler flags
cholgateSC Apr 30, 2026
8626ff0
Migrate to release tags, valdi_toolchains, and Bazel registry
cholgateSC May 6, 2026
56f20f2
Remove unused patch files, support any git ref in archive URLs
cholgateSC May 6, 2026
3837251
Merge main, resolve WORKSPACE conflict (keep deletion)
cholgateSC May 6, 2026
da300a9
Fix CI: use Valdi HEAD with registry instead of pinned old commit
cholgateSC May 6, 2026
8bd61bb
Fix CI: patch .bazelrc registry to use local Valdi checkout
cholgateSC May 6, 2026
bb34cbe
Add rules_ts extension for npm_typescript visibility
cholgateSC May 6, 2026
984bbad
Fix rules_ts: import npm_typescript without redeclaring deps
cholgateSC May 6, 2026
45d99b0
Fix CI: stub open_source_archives.bzl (stripped by Copybara)
cholgateSC May 6, 2026
5f307de
Fix CI: enable git-lfs for Valdi checkout (resvg binary libs)
cholgateSC May 6, 2026
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
23 changes: 11 additions & 12 deletions .bazelrc
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# No bzlmod yet
common --noenable_bzlmod
# Valdi custom Bazel registry (patched rules_swift, rules_kotlin, etc.)
common --registry=https://raw.githubusercontent.com/Snapchat/Valdi/beta-0.1.0/registry
common --registry=https://bcr.bazel.build

common --bes_instance_name=client
common --enable_platform_specific_config
Expand All @@ -20,8 +21,11 @@ build:linux --sandbox_writable_path=/var/tmp
# common cc configuration
build --cxxopt=-std=c++20
build --cxxopt=-Wno-ambiguous-reversed-operator
build --cxxopt=-Wno-gcc-compat
build --cxxopt=-Wno-nullability-extension
build --cxxopt=-D_LIBCPP_ENABLE_CXX20_REMOVED_TYPE_TRAITS
build --host_cxxopt=-std=c++20
build --host_cxxopt=-Wno-nullability-extension

## we need to disable this due to a bug in bazel
## see https://github.com/bazelbuild/bazel/issues/12381
Expand Down Expand Up @@ -57,19 +61,15 @@ build --define=android_incremental_dexing_tool=d8_dexbuilder
build --define=android_standalone_dexing_tool=d8_compat_dx
build --incremental_dexing

# Disable 3rd party libs warnings
build --per_file_copt=external/com_github_grpc_grpc/.*\$@-Wno-everything
build --per_file_copt=external/snap_protobuf/.*\$@-Wno-everything
build --per_file_copt=external/boringssl/.*\$@-Wno-everything
build --per_file_copt=external/com_github_google_flatbuffers/.*\$@-Wno-everything
# Disable 3rd party libs warnings (bzlmod-compatible patterns)
build --per_file_copt=external/protobuf[^/]*/.*\$@-Wno-everything
build --per_file_copt=external/boringssl[^/]*/.*\$@-Wno-everything
build --per_file_copt=external/grpc[^/]*/.*\$@-Wno-everything
build --per_file_copt=external/flatbuffers[^/]*/.*\$@-Wno-everything

# Enable persistent worker for Valdi compilation
build --strategy=ValdiCompile=worker

## Disable sandboxing for macs, both laptops and in CI; the performance hit is much too high.
build:macos --spawn_strategy=local
build:linux --sandbox_writable_path=/var/tmp

# Disable disk cache to save disk space
build --disk_cache=""

Expand All @@ -86,7 +86,6 @@ build --flag_alias=valdi_js_engine=@valdi//bzl/valdi:js_engine
# Enable web compilation (generates JS outputs from Valdi compiler for web targets)
common --define=enable_web=true

build --android_crosstool_top="@snap_client_toolchains//:android_crosstool"
# Web build configuration (used by scripts/bazel_web_serve.sh)
build:web --build_tag_filters=web
build:ios --repo_env=VALDI_PLATFORM_DEPENDENCIES=ios
Expand Down
35 changes: 34 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,23 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4

- name: Checkout Valdi
uses: actions/checkout@v4
with:
repository: Snapchat/Valdi
lfs: true
path: .valdi

- name: Patch for CI (local Valdi checkout)
run: |
VALDI=${{ github.workspace }}/.valdi
# Remove root-module-only llvm extension from Valdi's MODULE.bazel
sed -i '' '/^llvm = use_extension/d; /^llvm\.toolchain/d; /^use_repo(llvm/d; /^register_toolchains("@llvm_toolchain/d' .valdi/MODULE.bazel
# Point .bazelrc registry at local Valdi checkout (release tag may not exist yet)
sed -i '' "s|--registry=https://raw.githubusercontent.com/Snapchat/Valdi/.*/registry|--registry=file://$VALDI/registry|" .bazelrc
# Stub out open_source_archives.bzl (stripped by Copybara, not on public repo)
echo 'ARCHIVES = {}' > .valdi/bzl/open_source_archives.bzl

- name: Setup Bazel
uses: bazel-contrib/setup-bazel@0.8.5
with:
Expand All @@ -24,7 +41,23 @@ jobs:
repository-cache: true

- name: Run all tests
run: bazel test --test_output=all //valdi_modules/widgets:test //valdi_modules/navigation:test //valdi_modules/valdi_standalone_ui:test //valdi_modules/navigation_internal:test //valdi_modules/playground:test
run: |
VALDI=${{ github.workspace }}/.valdi
bazel test --test_output=all \
--override_module=valdi=$VALDI \
--override_module=android_macros=$VALDI/bzl/macros \
--override_module=snap_macros=$VALDI/bzl/valdi/snap_macros \
--override_module=snap_client_toolchains=$VALDI/bzl/toolchains \
--override_module=snap_platforms=$VALDI/bzl/platforms \
--override_module=skia_user_config=$VALDI/third-party/skia_user_config \
--override_module=rules_hdrs=$VALDI/third-party/rules_hdrs \
--override_module=valdi_toolchain=$VALDI/bin \
--override_module=resvg_libs=$VALDI/third-party/resvg/resvg_libs \
//valdi_modules/widgets:test \
//valdi_modules/navigation:test \
//valdi_modules/valdi_standalone_ui:test \
//valdi_modules/navigation_internal:test \
//valdi_modules/playground:test

- name: Upload test results
if: always()
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
*.DS_Store

bazel-*
MODULE.bazel.lock
.cursor/rules/remote

# Web playground dev server dependencies
Expand Down
98 changes: 98 additions & 0 deletions MODULE.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
module(name = "valdi_widgets", version = "0.1")

# Valdi framework (https://github.com/Snapchat/Valdi)
# For development against a local checkout, replace archive_override with
# local_path_override entries (see CONTRIBUTING.md).
VALDI_TAG = "beta-0.1.0"
VALDI_URL = "https://github.com/Snapchat/Valdi/archive/{}.tar.gz".format(VALDI_TAG)
VALDI_STRIP_PREFIX = "Valdi-{}".format(VALDI_TAG)

bazel_dep(name = "valdi", version = "0.1")
archive_override(
module_name = "valdi",
urls = [VALDI_URL],
strip_prefix = VALDI_STRIP_PREFIX,
)

bazel_dep(name = "android_macros")
archive_override(
module_name = "android_macros",
urls = [VALDI_URL],
strip_prefix = VALDI_STRIP_PREFIX + "/bzl/macros",
)

bazel_dep(name = "snap_macros")
archive_override(
module_name = "snap_macros",
urls = [VALDI_URL],
strip_prefix = VALDI_STRIP_PREFIX + "/bzl/valdi/snap_macros",
)

bazel_dep(name = "snap_client_toolchains")
archive_override(
module_name = "snap_client_toolchains",
urls = [VALDI_URL],
strip_prefix = VALDI_STRIP_PREFIX + "/bzl/toolchains",
)

bazel_dep(name = "snap_platforms")
archive_override(
module_name = "snap_platforms",
urls = [VALDI_URL],
strip_prefix = VALDI_STRIP_PREFIX + "/bzl/platforms",
)

bazel_dep(name = "skia_user_config")
archive_override(
module_name = "skia_user_config",
urls = [VALDI_URL],
strip_prefix = VALDI_STRIP_PREFIX + "/third-party/skia_user_config",
)

bazel_dep(name = "rules_hdrs")
archive_override(
module_name = "rules_hdrs",
urls = [VALDI_URL],
strip_prefix = VALDI_STRIP_PREFIX + "/third-party/rules_hdrs",
)

bazel_dep(name = "valdi_toolchain")
archive_override(
module_name = "valdi_toolchain",
urls = [VALDI_URL],
strip_prefix = VALDI_STRIP_PREFIX + "/bin",
)

bazel_dep(name = "resvg_libs")
archive_override(
module_name = "resvg_libs",
urls = [VALDI_URL],
strip_prefix = VALDI_STRIP_PREFIX + "/third-party/resvg/resvg_libs",
)

# C++ toolchains via Valdi's unified extension (Apple CC before LLVM for ObjC priority).
valdi_toolchains = use_extension("@valdi//bzl:valdi_toolchains.bzl", "valdi_toolchains")
use_repo(valdi_toolchains, "local_config_apple_cc_toolchains", "local_config_apple_cc", "llvm_toolchain", "llvm_toolchain_llvm")
register_toolchains("@local_config_apple_cc_toolchains//:all")
register_toolchains("@llvm_toolchain//:all")

# Required for widgets/BUILD.bazel which uses ts_project directly.
bazel_dep(name = "aspect_rules_ts", version = "3.7.0")
rules_ts_ext = use_extension("@aspect_rules_ts//ts:extensions.bzl", "ext")
use_repo(rules_ts_ext, "npm_typescript")

# Third-party patches: Valdi's single_version_override entries only take
# effect when Valdi is the root module. The Valdi Bazel registry provides
# pre-patched versions of rules_swift, rules_kotlin, and rules_android_ndk.
# Websocketpp still needs a local patch.
single_version_override(
module_name = "websocketpp",
patches = ["//third-party/patches:websocketpp.patch"],
patch_strip = 1,
)

# Version pins (must match Valdi's MODULE.bazel).
single_version_override(module_name = "protobuf", version = "27.0")
single_version_override(module_name = "rules_apple", version = "4.0.0")
single_version_override(module_name = "rules_pkg", version = "0.9.1")
single_version_override(module_name = "zlib", version = "1.3.2")
74 changes: 0 additions & 74 deletions WORKSPACE

This file was deleted.

1 change: 1 addition & 0 deletions third-party/patches/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
exports_files(glob(["*.patch"]))
17 changes: 17 additions & 0 deletions third-party/patches/websocketpp.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -23,12 +23,12 @@
}),
includes = ["."],
linkopts = select({
- "@platforms//os:osx": [
+ "@platforms//os:linux": [
"-lpthread",
+ "-lrt",
],
"//conditions:default": [
"-lpthread",
- "-lrt",
],
}),
visibility = ["//visibility:public"],
Loading