diff --git a/.bazelrc b/.bazelrc index cdc4a9f..5a940c3 100644 --- a/.bazelrc +++ b/.bazelrc @@ -1,4 +1,6 @@ try-import user.bazelrc +try-import .buildbuddy-auth.rc + import .bazelrc-cc import .bazelrc-java import .bazelrc-buildbuddy diff --git a/.bazelrc-buildbuddy b/.bazelrc-buildbuddy index 8407ec6..6f1cbe3 100644 --- a/.bazelrc-buildbuddy +++ b/.bazelrc-buildbuddy @@ -1,10 +1,19 @@ build:remote --bes_results_url=https://app.buildbuddy.io/invocation/ build:remote --bes_backend=grpcs://remote.buildbuddy.io build:remote --remote_cache=grpcs://remote.buildbuddy.io -build:remote --remote_download_toplevel # Helps remove network bottleneck if caching is enabled build:remote --remote_timeout=3600 +# Additional suggestions from buildbuddy for speed +build:remote --experimental_remote_cache_compression +build:remote --experimental_remote_cache_compression_threshold=100 +build:remote --noslim_profile +build:remote --experimental_profile_include_target_label +build:remote --experimental_profile_include_primary_output +build:remote --nolegacy_important_outputs + build --experimental_inmemory_jdeps_files build --experimental_inmemory_dotd_files +build:ci --config=remote build:ci --build_metadata=ROLE=CI +build:ci --remote_download_minimal diff --git a/.bazelrc-cc b/.bazelrc-cc index 12cbb14..7ca7094 100644 --- a/.bazelrc-cc +++ b/.bazelrc-cc @@ -7,6 +7,7 @@ build:windows --copt=/wd5105 build:windows --cxxopt=/wd4146 build:windows --cxxopt=/wd4267 build:windows --cxxopt=/wd4244 +build:windows --cxxopt=/utf-8 # Windows Arm build:windows_arm --copt=/W3 @@ -17,6 +18,7 @@ build:windows_arm --copt=/wd5105 build:windows_arm --cxxopt=/wd4146 build:windows_arm --cxxopt=/wd4267 build:windows_arm --cxxopt=/wd4244 +build:windows_arm --cxxopt=/utf-8 build:windows_arm --cpu=arm64_windows # Linux diff --git a/.bazelversion b/.bazelversion index 0ee843c..643916c 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1 +1 @@ -7.2.0 +7.3.1 diff --git a/.github/actions/setup-build-buddy/action.yml b/.github/actions/setup-build-buddy/action.yml new file mode 100644 index 0000000..e9bff9d --- /dev/null +++ b/.github/actions/setup-build-buddy/action.yml @@ -0,0 +1,36 @@ +name: 'Setup BuildBuddy acache' +description: 'Sets up the build buddy cache to be readonly / writing based on the presence of environment variables' + +inputs: + token: + description: 'Build Buddy API token' + readonly_token: + description: 'Build Buddy API readonly token' + required: true + +runs: + using: "composite" + steps: + - name: Setup without key + env: + API_KEY: ${{ inputs.token }} + READONLY_KEY: ${{ inputs.readonly_token }} + if: ${{ env.API_KEY == '' }} + shell: bash + run: | + echo "No API key secret detected, will setup readonly cache" + echo "build:ci --noremote_upload_local_results" > .buildbuddy-auth.rc + echo "build:ci --remote_header=x-buildbuddy-api-key=${{ env.READONLY_KEY }}" >> .buildbuddy-auth.rc + + echo "build:ci --noremote_upload_local_results" > tests/.buildbuddy-auth.rc + echo "build:ci --remote_header=x-buildbuddy-api-key=${{ env.READONLY_KEY }}" >> tests/.buildbuddy-auth.rc + + - name: Set with key + env: + API_KEY: ${{ inputs.token }} + if: ${{ env.API_KEY != '' }} + shell: bash + run: | + echo "API Key detected!" + echo "build:ci --remote_header=x-buildbuddy-api-key=${{ env.API_KEY }}" > .buildbuddy-auth.rc + echo "build:ci --remote_header=x-buildbuddy-api-key=${{ env.API_KEY }}" > tests/.buildbuddy-auth.rc diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 19ad407..31aa264 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -32,13 +32,18 @@ jobs: distribution: 'zulu' java-version: 17 architecture: ${{ matrix.java_arch }} - - run: bazel ${{ matrix.bazel_options }} build -k ${{ matrix.config }} --config=remote @bzlmodrio-pathplannerlib//... + - id: setup_build_buddy + uses: ./.github/actions/setup-build-buddy + with: + token: ${{ secrets.BUILDBUDDY_API_KEY }} + readonly_token: ${{ secrets.BUILDBUDDY_READONLY }} + - run: bazel ${{ matrix.bazel_options }} build -k ${{ matrix.config }} --config=ci @bzlmodrio-pathplannerlib//... working-directory: tests - name: Build and allow failure # TODO Sometimes symlinks don't get created correctly the first time around - run: bazel ${{ matrix.bazel_options }} build -k ${{ matrix.config }} --verbose_failures --config=remote //... || true + run: bazel ${{ matrix.bazel_options }} build -k ${{ matrix.config }} --verbose_failures --config=ci //... || true working-directory: tests - name: Build - run: bazel ${{ matrix.bazel_options }} ${{ matrix.command }} //... -k ${{ matrix.config }} --verbose_failures --config=remote + run: bazel ${{ matrix.bazel_options }} ${{ matrix.command }} //... -k ${{ matrix.config }} --verbose_failures --config=ci working-directory: tests @@ -67,11 +72,16 @@ jobs: distribution: 'zulu' java-version: 17 architecture: ${{ matrix.java_arch }} + - id: setup_build_buddy + uses: ./.github/actions/setup-build-buddy + with: + token: ${{ secrets.BUILDBUDDY_API_KEY }} + readonly_token: ${{ secrets.BUILDBUDDY_READONLY }} - name: Build and allow failure # TODO Sometimes symlinks don't get created correctly the first time around - run: bazel ${{ matrix.bazel_options }} ${{ matrix.command }} //... -k ${{ matrix.config }} --verbose_failures --config=remote || true + run: bazel ${{ matrix.bazel_options }} ${{ matrix.command }} //... -k ${{ matrix.config }} --verbose_failures --config=ci || true working-directory: tests - name: Build - run: bazel ${{ matrix.bazel_options }} ${{ matrix.command }} //... -k ${{ matrix.config }} --verbose_failures --config=remote + run: bazel ${{ matrix.bazel_options }} ${{ matrix.command }} //... -k ${{ matrix.config }} --verbose_failures --config=ci working-directory: tests build_bullseye32: @@ -99,11 +109,16 @@ jobs: distribution: 'zulu' java-version: 17 architecture: ${{ matrix.java_arch }} + - id: setup_build_buddy + uses: ./.github/actions/setup-build-buddy + with: + token: ${{ secrets.BUILDBUDDY_API_KEY }} + readonly_token: ${{ secrets.BUILDBUDDY_READONLY }} - name: Build and allow failure # TODO Sometimes symlinks don't get created correctly the first time around - run: bazel ${{ matrix.bazel_options }} ${{ matrix.command }} //... -k ${{ matrix.config }} --verbose_failures --config=remote || true + run: bazel ${{ matrix.bazel_options }} ${{ matrix.command }} //... -k ${{ matrix.config }} --verbose_failures --config=ci || true working-directory: tests - name: Build - run: bazel ${{ matrix.bazel_options }} ${{ matrix.command }} //... -k ${{ matrix.config }} --verbose_failures --config=remote + run: bazel ${{ matrix.bazel_options }} ${{ matrix.command }} //... -k ${{ matrix.config }} --verbose_failures --config=ci working-directory: tests @@ -132,9 +147,14 @@ jobs: distribution: 'zulu' java-version: 17 architecture: ${{ matrix.java_arch }} + - id: setup_build_buddy + uses: ./.github/actions/setup-build-buddy + with: + token: ${{ secrets.BUILDBUDDY_API_KEY }} + readonly_token: ${{ secrets.BUILDBUDDY_READONLY }} - name: Build and allow failure # TODO Sometimes symlinks don't get created correctly the first time around - run: bazel ${{ matrix.bazel_options }} ${{ matrix.command }} //... -k ${{ matrix.config }} --verbose_failures --config=remote || true + run: bazel ${{ matrix.bazel_options }} ${{ matrix.command }} //... -k ${{ matrix.config }} --verbose_failures --config=ci || true working-directory: tests - name: Build - run: bazel ${{ matrix.bazel_options }} ${{ matrix.command }} //... -k ${{ matrix.config }} --verbose_failures --config=remote + run: bazel ${{ matrix.bazel_options }} ${{ matrix.command }} //... -k ${{ matrix.config }} --verbose_failures --config=ci working-directory: tests diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index dc634cc..39eff4a 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -61,7 +61,7 @@ jobs: run: git diff HEAD > buildifier-fixes.patch if: ${{ failure() }} - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v4 with: name: buildifier fixes path: buildifier-fixes.patch diff --git a/.gitignore b/.gitignore index e4fab7d..8e41b2a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ bazel-* *.pyc user.bazelrc +.buildbuddy-auth.rc .DS_Store diff --git a/MODULE.bazel b/MODULE.bazel index b645e5e..b3e29d2 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -6,7 +6,7 @@ module( bazel_dep(name = "platforms", version = "0.0.9") bazel_dep(name = "rules_cc", version = "0.0.9") -bazel_dep(name = "rules_java", version = "7.6.1") +bazel_dep(name = "rules_java", version = "7.6.5") bazel_dep(name = "rules_bazelrio", version = "0.0.14") bazel_dep(name = "rules_bzlmodrio_toolchains", version = "2024-1") bazel_dep(name = "bzlmodrio-allwpilib", version = "2024.1.1") diff --git a/maven_cpp_deps.bzl b/maven_cpp_deps.bzl index 8c59698..ee82b69 100644 --- a/maven_cpp_deps.bzl +++ b/maven_cpp_deps.bzl @@ -7,6 +7,12 @@ cc_library_headers = """cc_library( includes = ["."], visibility = ["//visibility:public"], ) + +filegroup( + name = "header_files", + srcs = glob(["**"]), + visibility = ["//visibility:public"], +) """ cc_library_sources = """filegroup( diff --git a/private/cpp/PathplannerLib-cpp/BUILD.bazel b/private/cpp/PathplannerLib-cpp/BUILD.bazel index d63f68b..079e307 100644 --- a/private/cpp/PathplannerLib-cpp/BUILD.bazel +++ b/private/cpp/PathplannerLib-cpp/BUILD.bazel @@ -1,5 +1,11 @@ load("@rules_cc//cc:defs.bzl", "cc_library") +alias( + name = "header_files", + actual = "@bazelrio_com_pathplanner_lib_pathplannerlib-cpp_headers//:header_files", + visibility = ["@bzlmodrio-pathplannerlib//:__subpackages__"], +) + cc_library( name = "shared_interface", srcs = select({ @@ -15,8 +21,8 @@ cc_library( deps = ["@bazelrio_com_pathplanner_lib_pathplannerlib-cpp_headers//:headers"], ) -cc_library( - name = "shared", +filegroup( + name = "shared_raw", srcs = select({ "@rules_bazelrio//conditions:linux_x86_64": ["@bazelrio_com_pathplanner_lib_pathplannerlib-cpp_linuxx86-64//:shared"], "@rules_bazelrio//conditions:osx": ["@bazelrio_com_pathplanner_lib_pathplannerlib-cpp_osxuniversal//:shared"], @@ -24,7 +30,14 @@ cc_library( "@rules_bzlmodrio_toolchains//constraints/is_bullseye32:bullseye32": ["@bazelrio_com_pathplanner_lib_pathplannerlib-cpp_linuxarm32//:shared"], "@rules_bzlmodrio_toolchains//constraints/is_bullseye64:bullseye64": ["@bazelrio_com_pathplanner_lib_pathplannerlib-cpp_linuxarm64//:shared"], "@rules_bzlmodrio_toolchains//constraints/is_roborio:roborio": ["@bazelrio_com_pathplanner_lib_pathplannerlib-cpp_linuxathena//:shared"], + "//conditions:default": [], }), + visibility = ["@bzlmodrio-pathplannerlib//:__subpackages__"], +) + +cc_library( + name = "shared", + srcs = [":shared_raw"], target_compatible_with = select({ "@rules_bzlmodrio_toolchains//constraints/is_raspi32:raspi32": ["@platforms//:incompatible"], "//conditions:default": [], diff --git a/private/non_bzlmod_dependencies/download_dependencies.bzl b/private/non_bzlmod_dependencies/download_dependencies.bzl index 9557cb8..f583107 100644 --- a/private/non_bzlmod_dependencies/download_dependencies.bzl +++ b/private/non_bzlmod_dependencies/download_dependencies.bzl @@ -4,8 +4,8 @@ def download_dependencies(): # Rules Java http_archive( name = "rules_java", - sha256 = "f8ae9ed3887df02f40de9f4f7ac3873e6dd7a471f9cddf63952538b94b59aeb3", - url = "https://github.com/bazelbuild/rules_java/releases/download/7.6.1/rules_java-7.6.1.tar.gz", + sha256 = "8afd053dd2a7b85a4f033584f30a7f1666c5492c56c76e04eec4428bdb2a86cf", + url = "https://github.com/bazelbuild/rules_java/releases/download/7.6.5/rules_java-7.6.5.tar.gz", ) # JVM External diff --git a/tests/.bazelrc b/tests/.bazelrc index cdc4a9f..5a940c3 100644 --- a/tests/.bazelrc +++ b/tests/.bazelrc @@ -1,4 +1,6 @@ try-import user.bazelrc +try-import .buildbuddy-auth.rc + import .bazelrc-cc import .bazelrc-java import .bazelrc-buildbuddy diff --git a/tests/.bazelrc-buildbuddy b/tests/.bazelrc-buildbuddy index 8407ec6..6f1cbe3 100644 --- a/tests/.bazelrc-buildbuddy +++ b/tests/.bazelrc-buildbuddy @@ -1,10 +1,19 @@ build:remote --bes_results_url=https://app.buildbuddy.io/invocation/ build:remote --bes_backend=grpcs://remote.buildbuddy.io build:remote --remote_cache=grpcs://remote.buildbuddy.io -build:remote --remote_download_toplevel # Helps remove network bottleneck if caching is enabled build:remote --remote_timeout=3600 +# Additional suggestions from buildbuddy for speed +build:remote --experimental_remote_cache_compression +build:remote --experimental_remote_cache_compression_threshold=100 +build:remote --noslim_profile +build:remote --experimental_profile_include_target_label +build:remote --experimental_profile_include_primary_output +build:remote --nolegacy_important_outputs + build --experimental_inmemory_jdeps_files build --experimental_inmemory_dotd_files +build:ci --config=remote build:ci --build_metadata=ROLE=CI +build:ci --remote_download_minimal diff --git a/tests/.bazelrc-cc b/tests/.bazelrc-cc index 12cbb14..7ca7094 100644 --- a/tests/.bazelrc-cc +++ b/tests/.bazelrc-cc @@ -7,6 +7,7 @@ build:windows --copt=/wd5105 build:windows --cxxopt=/wd4146 build:windows --cxxopt=/wd4267 build:windows --cxxopt=/wd4244 +build:windows --cxxopt=/utf-8 # Windows Arm build:windows_arm --copt=/W3 @@ -17,6 +18,7 @@ build:windows_arm --copt=/wd5105 build:windows_arm --cxxopt=/wd4146 build:windows_arm --cxxopt=/wd4267 build:windows_arm --cxxopt=/wd4244 +build:windows_arm --cxxopt=/utf-8 build:windows_arm --cpu=arm64_windows # Linux diff --git a/tests/.bazelversion b/tests/.bazelversion index 0ee843c..643916c 100644 --- a/tests/.bazelversion +++ b/tests/.bazelversion @@ -1 +1 @@ -7.2.0 +7.3.1 diff --git a/tests/MODULE.bazel b/tests/MODULE.bazel index 697486c..30af0e8 100644 --- a/tests/MODULE.bazel +++ b/tests/MODULE.bazel @@ -6,7 +6,7 @@ local_path_override( bazel_dep(name = "googletest", version = "1.14.0") bazel_dep(name = "rules_cc", version = "0.0.9") -bazel_dep(name = "rules_java", version = "7.6.1") +bazel_dep(name = "rules_java", version = "7.6.5") bazel_dep(name = "rules_jvm_external", version = "6.1") bazel_dep(name = "rules_bazelrio", version = "0.0.14") bazel_dep(name = "rules_bzlmodrio_toolchains", version = "2024-1")