From c66d550b448662f66a871ff7b6ca146149e40a9f Mon Sep 17 00:00:00 2001 From: Guillaume Lagrange Date: Wed, 19 Nov 2025 16:24:06 +0100 Subject: [PATCH 1/4] chore: use c++17 to build core library std::filesystem usage requires c++17 --- core/BUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/BUILD b/core/BUILD index a5a13fe..5ac56bf 100644 --- a/core/BUILD +++ b/core/BUILD @@ -76,7 +76,7 @@ cc_library( includes = ["include"], copts = select({ ":windows": ["/std:c++17"], - "//conditions:default": [], + "//conditions:default": ["-std=c++17"], }), defines = [ "CODSPEED_VERSION=\\\"{}\\\"".format(CODSPEED_VERSION), From 18f9286ba2f9abc0b20e0a31d83ea7310d47829e Mon Sep 17 00:00:00 2001 From: Guillaume Lagrange Date: Wed, 19 Nov 2025 11:30:10 +0100 Subject: [PATCH 2/4] feat: prepare repository for BCR release --- .bazelrc | 2 +- .github/workflows/ci.yml | 6 +- MODULE.bazel | 20 ++- MODULE.bazel.lock | 165 +++++--------------- core/BUILD | 2 +- core/CMakeLists.txt | 2 +- core/MODULE.bazel | 8 + examples/google_benchmark_bazel/BUILD.bazel | 2 +- google_benchmark/BUILD.bazel | 9 +- google_benchmark/MODULE.bazel | 5 +- 10 files changed, 77 insertions(+), 144 deletions(-) create mode 100644 core/MODULE.bazel diff --git a/.bazelrc b/.bazelrc index 6298f7c..d12a768 100644 --- a/.bazelrc +++ b/.bazelrc @@ -1,4 +1,4 @@ -build --//core:codspeed_mode=instrumentation +build --@codspeed_core//:codspeed_mode=simulation build --compilation_mode=dbg build --copt=-O2 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e708577..59813fb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -118,14 +118,14 @@ jobs: - name: Build benchmark example run: | - bazel build //examples/google_benchmark_bazel:my_benchmark --//core:codspeed_mode=${{ matrix.codspeed-mode }} --//core:strict_warnings=on + bazel build //examples/google_benchmark_bazel:my_benchmark --@codspeed_core//:codspeed_mode=${{ matrix.codspeed-mode }} --@codspeed_core//:strict_warnings=on - name: Run the benchmarks uses: CodSpeedHQ/action@main if: matrix.codspeed-mode != 'off' with: mode: ${{ matrix.codspeed-mode }} - run: bazel run //examples/google_benchmark_bazel:my_benchmark --//core:codspeed_mode=${{ matrix.codspeed-mode }} --//core:strict_warnings=on + run: bazel run //examples/google_benchmark_bazel:my_benchmark --@codspeed_core//:codspeed_mode=${{ matrix.codspeed-mode }} --@codspeed_core//:strict_warnings=on token: ${{ secrets.CODSPEED_TOKEN }} cmake-build: @@ -193,4 +193,4 @@ jobs: - name: Build benchmark example run: | - bazel build //examples/google_benchmark_bazel:my_benchmark --//core:codspeed_mode=${{ matrix.codspeed-mode }} --//core:strict_warnings=on + bazel build //examples/google_benchmark_bazel:my_benchmark --@codspeed_core//:codspeed_mode=${{ matrix.codspeed-mode }} --@codspeed_core//:strict_warnings=on diff --git a/MODULE.bazel b/MODULE.bazel index 0012c6c..daee94e 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -1,10 +1,20 @@ +# This MODULE.bazel is for local development in the monorepo. +# Individual modules have their own MODULE.bazel files. + bazel_dep(name = "rules_cc", version = "0.0.17") bazel_dep(name = "bazel_skylib", version = "1.7.1") bazel_dep(name = "platforms", version = "0.0.10") -bazel_dep(name = "instrument_hooks", version = "1.0.0") -git_override( - module_name = "instrument_hooks", - commit = "42ed74076c697c2f06c5ac81a84ccee983d7f140", - remote = "https://github.com/CodSpeedHQ/instrument-hooks", +# Local path overrides for development - these point to the subdirectories +# When published to BCR, users will get the published versions instead +bazel_dep(name = "codspeed_core") +local_path_override( + module_name = "codspeed_core", + path = "core", +) + +bazel_dep(name = "codspeed_google_benchmark_compat") +local_path_override( + module_name = "codspeed_google_benchmark_compat", + path = "google_benchmark", ) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 9c71074..f5f72fa 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -1,47 +1,34 @@ { - "lockFileVersion": 18, + "lockFileVersion": 13, "registryFileHashes": { "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497", "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2", "https://bcr.bazel.build/modules/abseil-cpp/20211102.0/MODULE.bazel": "70390338f7a5106231d20620712f7cccb659cd0e9d073d1991c038eb9fc57589", "https://bcr.bazel.build/modules/abseil-cpp/20230125.1/MODULE.bazel": "89047429cb0207707b2dface14ba7f8df85273d484c2572755be4bab7ce9c3a0", "https://bcr.bazel.build/modules/abseil-cpp/20230802.0.bcr.1/MODULE.bazel": "1c8cec495288dccd14fdae6e3f95f772c1c91857047a098fad772034264cc8cb", - "https://bcr.bazel.build/modules/abseil-cpp/20230802.0/MODULE.bazel": "d253ae36a8bd9ee3c5955384096ccb6baf16a1b1e93e858370da0a3b94f77c16", - "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915", - "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed", - "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/source.json": "9be551b8d4e3ef76875c0d744b5d6a504a27e3ae67bc6b28f46415fd2d2957da", - "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.0.bcr.1/source.json": "14892cc698e02ffedf4967546e6bedb7245015906888d3465fcf27c90a26da10", + "https://bcr.bazel.build/modules/apple_support/1.5.0/MODULE.bazel": "50341a62efbc483e8a2a6aec30994a58749bd7b885e18dd96aa8c33031e558ef", + "https://bcr.bazel.build/modules/apple_support/1.5.0/source.json": "eb98a7627c0bc486b57f598ad8da50f6625d974c8f723e9ea71bd39f709c9862", "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8", - "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d", - "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d", - "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a", "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", - "https://bcr.bazel.build/modules/bazel_features/1.30.0/MODULE.bazel": "a14b62d05969a293b80257e72e597c2da7f717e1e69fa8b339703ed6731bec87", - "https://bcr.bazel.build/modules/bazel_features/1.30.0/source.json": "b07e17f067fe4f69f90b03b36ef1e08fe0d1f3cac254c1241a1818773e3423bc", - "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", - "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a", + "https://bcr.bazel.build/modules/bazel_features/1.19.0/source.json": "d7bf14517c1b25b9d9c580b0f8795fceeae08a7590f507b76aace528e941375d", "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", - "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e", "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686", "https://bcr.bazel.build/modules/bazel_skylib/1.2.1/MODULE.bazel": "f35baf9da0efe45fa3da1696ae906eea3d615ad41e2e3def4aeb4e8bc0ef9a7a", "https://bcr.bazel.build/modules/bazel_skylib/1.3.0/MODULE.bazel": "20228b92868bf5cfc41bda7afc8a8ba2a543201851de39d990ec957b513579c5", "https://bcr.bazel.build/modules/bazel_skylib/1.4.1/MODULE.bazel": "a0dcb779424be33100dcae821e9e27e4f2901d9dfd5333efe5ac6a8d7ab75e1d", - "https://bcr.bazel.build/modules/bazel_skylib/1.4.2/MODULE.bazel": "3bd40978e7a1fac911d5989e6b09d8f64921865a45822d8b09e815eaa726a651", - "https://bcr.bazel.build/modules/bazel_skylib/1.5.0/MODULE.bazel": "32880f5e2945ce6a03d1fbd588e9198c0a959bb42297b2cfaf1685b7bc32e138", "https://bcr.bazel.build/modules/bazel_skylib/1.6.1/MODULE.bazel": "8fdee2dbaace6c252131c00e1de4b165dc65af02ea278476187765e1a617b917", - "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d", "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/source.json": "f121b43eeefc7c29efbd51b83d08631e2347297c95aac9764a701f2a6a2bb953", "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84", "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8", - "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb", "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4", - "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6", - "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/source.json": "41e9e129f80d8c8bf103a7acc337b76e54fad1214ac0a7084bf24f4cd924b8b4", "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f", + "https://bcr.bazel.build/modules/googletest/1.14.0/source.json": "2478949479000fdd7de9a3d0107ba2c85bb5f961c3ecb1aa448f52549ce310b5", "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075", "https://bcr.bazel.build/modules/jsoncpp/1.9.5/source.json": "4108ee5085dd2885a341c7fab149429db457b3169b86eb081fa245eadf69169d", - "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902", + "https://bcr.bazel.build/modules/libpfm/4.11.0.bcr.1/MODULE.bazel": "e5362dadc90aab6724c83a2cc1e67cbed9c89a05d97fb1f90053c8deb1e445c8", + "https://bcr.bazel.build/modules/libpfm/4.11.0.bcr.1/source.json": "0646414d9037f8aad148781dd760bec90b0b25ac12fda5e03f8aadbd6b9c61e6", "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5", "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f", "https://bcr.bazel.build/modules/platforms/0.0.11/source.json": "f7e188b79ebedebfe75e9e1d098b8845226c7992b307e28e1496f23112e8fc29", @@ -50,151 +37,71 @@ "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615", "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814", "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d", + "https://bcr.bazel.build/modules/platforms/0.0.9/MODULE.bazel": "4a87a60c927b56ddd67db50c89acaa62f4ce2a1d2149ccb63ffd871d5ce29ebc", "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7", "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", - "https://bcr.bazel.build/modules/protobuf/27.1/MODULE.bazel": "703a7b614728bb06647f965264967a8ef1c39e09e8f167b3ca0bb1fd80449c0d", - "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", - "https://bcr.bazel.build/modules/protobuf/29.0/MODULE.bazel": "319dc8bf4c679ff87e71b1ccfb5a6e90a6dbc4693501d471f48662ac46d04e4e", - "https://bcr.bazel.build/modules/protobuf/29.0/source.json": "b857f93c796750eef95f0d61ee378f3420d00ee1dd38627b27193aa482f4f981", + "https://bcr.bazel.build/modules/protobuf/27.0/source.json": "1acf3d080c728d42f423fde5422fd0a1a24f44c15908124ce12363a253384193", "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0", - "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e", - "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/source.json": "be4789e951dd5301282729fe3d4938995dc4c1a81c2ff150afc9f1b0504c6022", - "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206", - "https://bcr.bazel.build/modules/re2/2023-09-01/source.json": "e044ce89c2883cd957a2969a43e79f7752f9656f6b20050b62f90ede21ec6eb4", - "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8", - "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e", + "https://bcr.bazel.build/modules/protobuf/3.19.6/MODULE.bazel": "9233edc5e1f2ee276a60de3eaa47ac4132302ef9643238f23128fea53ea12858", "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647", - "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002", - "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191", - "https://bcr.bazel.build/modules/rules_cc/0.0.14/MODULE.bazel": "5e343a3aac88b8d7af3b1b6d2093b55c347b8eefc2e7d1442f7a02dc8fea48ac", - "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc", - "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87", "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a", + "https://bcr.bazel.build/modules/rules_cc/0.0.17/source.json": "4db99b3f55c90ab28d14552aa0632533e3e8e5e9aea0f5c24ac0014282c2a7c5", "https://bcr.bazel.build/modules/rules_cc/0.0.2/MODULE.bazel": "6915987c90970493ab97393024c156ea8fb9f3bea953b2f3ec05c34f19b5695c", "https://bcr.bazel.build/modules/rules_cc/0.0.6/MODULE.bazel": "abf360251023dfe3efcef65ab9d56beefa8394d4176dd29529750e1c57eaa33f", "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e", "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", - "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", - "https://bcr.bazel.build/modules/rules_cc/0.1.1/source.json": "d61627377bd7dd1da4652063e368d9366fc9a73920bfa396798ad92172cf645c", - "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", - "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", - "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/source.json": "c8b1e2c717646f1702290959a3302a178fb639d987ab61d548105019f11e527e", "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74", "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86", - "https://bcr.bazel.build/modules/rules_java/6.0.0/MODULE.bazel": "8a43b7df601a7ec1af61d79345c17b31ea1fedc6711fd4abfd013ea612978e39", - "https://bcr.bazel.build/modules/rules_java/6.4.0/MODULE.bazel": "e986a9fe25aeaa84ac17ca093ef13a4637f6107375f64667a15999f77db6c8f6", - "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31", - "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a", - "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6", - "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", - "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", - "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", - "https://bcr.bazel.build/modules/rules_java/8.14.0/MODULE.bazel": "717717ed40cc69994596a45aec6ea78135ea434b8402fb91b009b9151dd65615", - "https://bcr.bazel.build/modules/rules_java/8.14.0/source.json": "8a88c4ca9e8759da53cddc88123880565c520503321e2566b4e33d0287a3d4bc", + "https://bcr.bazel.build/modules/rules_java/7.6.5/MODULE.bazel": "481164be5e02e4cab6e77a36927683263be56b7e36fef918b458d7a8a1ebadb1", + "https://bcr.bazel.build/modules/rules_java/7.6.5/source.json": "a805b889531d1690e3c72a7a7e47a870d00323186a9904b36af83aa3d053ee8d", "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909", - "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036", - "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel": "bf93870767689637164657731849fb887ad086739bd5d360d90007a581d5527d", - "https://bcr.bazel.build/modules/rules_jvm_external/6.1/MODULE.bazel": "75b5fec090dbd46cf9b7d8ea08cf84a0472d92ba3585b476f44c326eda8059c4", - "https://bcr.bazel.build/modules/rules_jvm_external/6.3/MODULE.bazel": "c998e060b85f71e00de5ec552019347c8bca255062c990ac02d051bb80a38df0", - "https://bcr.bazel.build/modules/rules_jvm_external/6.3/source.json": "6f5f5a5a4419ae4e37c35a5bb0a6ae657ed40b7abc5a5189111b47fcebe43197", - "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel": "ef85697305025e5a61f395d4eaede272a5393cee479ace6686dba707de804d59", - "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3", - "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/source.json": "2faa4794364282db7c06600b7e5e34867a564ae91bda7cae7c29c64e9466b7d5", + "https://bcr.bazel.build/modules/rules_jvm_external/5.1/source.json": "5abb45cc9beb27b77aec6a65a11855ef2b55d95dfdc358e9f312b78ae0ba32d5", "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0", "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d", - "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c", - "https://bcr.bazel.build/modules/rules_license/1.0.0/source.json": "a52c89e54cc311196e478f8382df91c15f7a2bfdf4c6cd0e2675cc2ff0b56efb", + "https://bcr.bazel.build/modules/rules_license/0.0.7/source.json": "355cc5737a0f294e560d52b1b7a6492d4fff2caf0bef1a315df5a298fca2d34a", "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", - "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff", - "https://bcr.bazel.build/modules/rules_pkg/1.0.1/source.json": "bd82e5d7b9ce2d31e380dd9f50c111d678c3bdaca190cb76b0e1c71b05e1ba8a", + "https://bcr.bazel.build/modules/rules_pkg/0.7.0/source.json": "c2557066e0c0342223ba592510ad3d812d4963b9024831f7f66fd0584dd8c66c", "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06", "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7", - "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73", - "https://bcr.bazel.build/modules/rules_proto/7.0.2/MODULE.bazel": "bf81793bd6d2ad89a37a40693e56c61b0ee30f7a7fdbaf3eabbf5f39de47dea2", - "https://bcr.bazel.build/modules/rules_proto/7.0.2/source.json": "1e5e7260ae32ef4f2b52fd1d0de8d03b606a44c91b694d2f1afb1d3b28a48ce1", + "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/source.json": "d57902c052424dfda0e71646cb12668d39c4620ee0544294d9d941e7d12bc3a9", "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f", - "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300", - "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382", - "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed", - "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", + "https://bcr.bazel.build/modules/rules_python/0.22.1/MODULE.bazel": "26114f0c0b5e93018c0c066d6673f1a2c3737c7e90af95eff30cfee38d0bbac7", + "https://bcr.bazel.build/modules/rules_python/0.22.1/source.json": "57226905e783bae7c37c2dd662be078728e48fa28ee4324a7eabcafb5a43d014", "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", - "https://bcr.bazel.build/modules/rules_python/0.40.0/MODULE.bazel": "9d1a3cd88ed7d8e39583d9ffe56ae8a244f67783ae89b60caafc9f5cf318ada7", - "https://bcr.bazel.build/modules/rules_python/0.40.0/source.json": "939d4bd2e3110f27bfb360292986bb79fd8dcefb874358ccd6cdaa7bda029320", - "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", - "https://bcr.bazel.build/modules/rules_shell/0.2.0/source.json": "7f27af3c28037d9701487c4744b5448d26537cc66cdef0d8df7ae85411f8de95", "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8", "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c", - "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef", - "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c", - "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7", - "https://bcr.bazel.build/modules/stardoc/0.7.1/source.json": "b6500ffcd7b48cd72c29bb67bcac781e12701cc0d6d55d266a652583cfcdab01", + "https://bcr.bazel.build/modules/stardoc/0.5.3/source.json": "cd53fe968dc8cd98197c052db3db6d82562960c87b61e7a90ee96f8e4e0dda97", "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", - "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/MODULE.bazel": "eec517b5bbe5492629466e11dae908d043364302283de25581e3eb944326c4ca", - "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/source.json": "22bc55c47af97246cfc093d0acf683a7869377de362b5d1c552c2c2e16b7a806", - "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198" + "https://bcr.bazel.build/modules/zlib/1.2.12/MODULE.bazel": "3b1a8834ada2a883674be8cbd36ede1b6ec481477ada359cd2d3ddc562340b27", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/source.json": "2be409ac3c7601245958cd4fcdff4288be79ed23bd690b4b951f500d54ee6e7d" }, "selectedYankedVersions": {}, "moduleExtensions": { - "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { + "@@apple_support~//crosstool:setup.bzl%apple_cc_configure_extension": { "general": { - "bzlTransitiveDigest": "OlvsB0HsvxbR8ZN+J9Vf00X/+WVz/Y/5Xrq2LgcVfdo=", - "usagesDigest": "QI2z8ZUR+mqtbwsf2fLqYdJAkPOHdOV+tF2yVAUgRzw=", + "bzlTransitiveDigest": "PjIds3feoYE8SGbbIq2SFTZy3zmxeO2tQevJZNDo7iY=", + "usagesDigest": "+hz7IHWN6A1oVJJWNDB6yZRG+RYhF76wAYItpAeIUIg=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": {}, "generatedRepoSpecs": { - "com_github_jetbrains_kotlin_git": { - "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_compiler_git_repository", - "attributes": { - "urls": [ - "https://github.com/JetBrains/kotlin/releases/download/v1.9.23/kotlin-compiler-1.9.23.zip" - ], - "sha256": "93137d3aab9afa9b27cb06a824c2324195c6b6f6179d8a8653f440f5bd58be88" - } + "local_config_apple_cc_toolchains": { + "bzlFile": "@@apple_support~//crosstool:setup.bzl", + "ruleClassName": "_apple_cc_autoconf_toolchains", + "attributes": {} }, - "com_github_jetbrains_kotlin": { - "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_capabilities_repository", - "attributes": { - "git_repository_name": "com_github_jetbrains_kotlin_git", - "compiler_version": "1.9.23" - } - }, - "com_github_google_ksp": { - "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:ksp.bzl%ksp_compiler_plugin_repository", - "attributes": { - "urls": [ - "https://github.com/google/ksp/releases/download/1.9.23-1.0.20/artifacts.zip" - ], - "sha256": "ee0618755913ef7fd6511288a232e8fad24838b9af6ea73972a76e81053c8c2d", - "strip_version": "1.9.23-1.0.20" - } - }, - "com_github_pinterest_ktlint": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", - "attributes": { - "sha256": "01b2e0ef893383a50dbeb13970fe7fa3be36ca3e83259e01649945b09d736985", - "urls": [ - "https://github.com/pinterest/ktlint/releases/download/1.3.0/ktlint" - ], - "executable": true - } - }, - "rules_android": { - "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", - "attributes": { - "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806", - "strip_prefix": "rules_android-0.1.1", - "urls": [ - "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip" - ] - } + "local_config_apple_cc": { + "bzlFile": "@@apple_support~//crosstool:setup.bzl", + "ruleClassName": "_apple_cc_autoconf", + "attributes": {} } }, "recordedRepoMappingEntries": [ [ - "rules_kotlin+", + "apple_support~", "bazel_tools", "bazel_tools" ] diff --git a/core/BUILD b/core/BUILD index 5ac56bf..25be1ad 100644 --- a/core/BUILD +++ b/core/BUILD @@ -1,7 +1,7 @@ load("@bazel_skylib//rules:common_settings.bzl", "string_flag") load("@rules_cc//cc:defs.bzl", "cc_library") -CODSPEED_VERSION = "1.2.0" +CODSPEED_VERSION = module_version() config_setting( name = "windows", diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index bd8a021..246e11b 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.10) -set(CODSPEED_VERSION 1.2.0) +set(CODSPEED_VERSION 1.4.0) project(codspeed VERSION ${CODSPEED_VERSION} LANGUAGES CXX C) diff --git a/core/MODULE.bazel b/core/MODULE.bazel new file mode 100644 index 0000000..05c27f6 --- /dev/null +++ b/core/MODULE.bazel @@ -0,0 +1,8 @@ +module( + name = "codspeed_core", + version = "1.4.0", +) + +bazel_dep(name = "rules_cc", version = "0.0.17") +bazel_dep(name = "bazel_skylib", version = "1.7.1") +bazel_dep(name = "platforms", version = "0.0.10") diff --git a/examples/google_benchmark_bazel/BUILD.bazel b/examples/google_benchmark_bazel/BUILD.bazel index 164e0b5..286b67e 100644 --- a/examples/google_benchmark_bazel/BUILD.bazel +++ b/examples/google_benchmark_bazel/BUILD.bazel @@ -13,6 +13,6 @@ cc_binary( "//conditions:default": ["-Wall", "-Wextra", "-Werror"], }), deps = [ - "//google_benchmark:benchmark", + "@codspeed_google_benchmark_compat//:benchmark" ], ) diff --git a/google_benchmark/BUILD.bazel b/google_benchmark/BUILD.bazel index e944023..2cb0d24 100644 --- a/google_benchmark/BUILD.bazel +++ b/google_benchmark/BUILD.bazel @@ -2,6 +2,13 @@ load("@rules_cc//cc:defs.bzl", "cc_library") licenses(["notice"]) +# Re-export codspeed_mode from core for easier consumer access +alias( + name = "codspeed_mode", + actual = "@codspeed_core//:codspeed_mode", + visibility = ["//visibility:public"], +) + COPTS = [ "-pedantic", "-pedantic-errors", @@ -77,7 +84,7 @@ cc_library( "_LARGEFILE_SOURCE", ], visibility = ["//visibility:public"], - deps = ["//core:codspeed"] + select({ + deps = ["@codspeed_core//:codspeed"] + select({ ":perfcounters": ["@libpfm"], "//conditions:default": [], }), diff --git a/google_benchmark/MODULE.bazel b/google_benchmark/MODULE.bazel index d346b72..147a7d7 100644 --- a/google_benchmark/MODULE.bazel +++ b/google_benchmark/MODULE.bazel @@ -1,8 +1,9 @@ module( - name = "google_benchmark", - version = "1.9.1", + name = "codspeed_google_benchmark_compat", + version = "1.4.0", ) +bazel_dep(name = "codspeed_core", version = "1.4.0") bazel_dep(name = "bazel_skylib", version = "1.7.1") bazel_dep(name = "platforms", version = "0.0.10") bazel_dep(name = "rules_cc", version = "0.0.9") From 3a4f42b3d78867811b3f5ced13de83fab29b97ca Mon Sep 17 00:00:00 2001 From: Guillaume Lagrange Date: Wed, 19 Nov 2025 15:52:07 +0100 Subject: [PATCH 3/4] feat: update release process to add full tarball and bump versions Github asset does not contain submodule code, we manually create the git archive with all submodules sources checked out to be used as a self contained bazel module. --- CONTRIBUTING.md | 11 ++++-- flake.nix | 1 + scripts/release.sh | 83 ++++++++++++++++++++++++++++++++++++++-------- 3 files changed, 79 insertions(+), 16 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b962924..8106cf3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,6 +2,11 @@ ## Release -For now, releasing is done manually, by tagging a git rev with vX.Y.Z. - -When releasing a new version, please make sure the version is updated in the [`core/CMakeLists.txt`](https://github.com/CodSpeedHQ/codspeed-cpp/blob/main/core/CMakeLists.txt#L3) and [`core/BUILD`](https://github.com/CodSpeedHQ/codspeed-cpp/blob/main/core/BUILD#L4) files to match the pushed version +To create a release, run `scripts/release.sh ` from the main branch. This script will: +1. Automatically update the version in all relevant files: + - [`core/CMakeLists.txt`](https://github.com/CodSpeedHQ/codspeed-cpp/blob/main/core/CMakeLists.txt#L3) + - [`core/MODULE.bazel`](https://github.com/CodSpeedHQ/codspeed-cpp/blob/main/core/MODULE.bazel#L3) + - [`google_benchmark/MODULE.bazel`](https://github.com/CodSpeedHQ/codspeed-cpp/blob/main/google_benchmark/MODULE.bazel) +2. Create a commit with the version changes +3. Generate the CHANGELOG +4. Tag and create the release on GitHub diff --git a/flake.nix b/flake.nix index d01a173..3782fff 100644 --- a/flake.nix +++ b/flake.nix @@ -21,6 +21,7 @@ commonBuildInputs = with pkgs; [ gcc pkg-config + git-cliff # Build systems cmake diff --git a/scripts/release.sh b/scripts/release.sh index caf58ba..43f55b9 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -1,33 +1,90 @@ #!/bin/bash set -e -# Check is on main -if [ "$(git rev-parse --abbrev-ref HEAD)" != "main" ]; then - echo "Not on main branch" - exit 1 -fi - # First and only argument is the version number +VERSION_NO_V=${1} # The version number without the 'v' prefix VERSION=v$1 # The version number, prefixed with 'v' -# Prompt the release version -echo "Release version: $VERSION" -read -p "Are you sure you want to release this version? (y/n): " confirm -if [ "$confirm" != "y" ]; then - echo "Aborting release" - exit 1 + +# Check is on main (unless releasing an alpha version) +if [[ ! "$VERSION_NO_V" =~ -alpha ]]; then + if [ "$(git rev-parse --abbrev-ref HEAD)" != "main" ]; then + echo "Not on main branch (only alpha releases can be made from non-main branches)" + exit 1 + fi fi # Check that GITHUB_TOKEN is set if [ -z "$GITHUB_TOKEN" ]; then echo "GITHUB_TOKEN is not set. Trying to fetch it from gh" GITHUB_TOKEN=$(gh auth token) +fi + +# List of files and line numbers to update with version numbers +# Format: "file:line_number" +VERSION_FILES=( + "core/CMakeLists.txt:3" + "core/MODULE.bazel:3" + "google_benchmark/MODULE.bazel:3" + "google_benchmark/MODULE.bazel:6" +) +# Get current version from core/CMakeLists.txt +PREVIOUS_VERSION=$(awk -F'[ )]' '/set\(CODSPEED_VERSION/ {print $2}' core/CMakeLists.txt) + +# Prompt the release version +echo "Previous version: ${PREVIOUS_VERSION}" +echo "New version: ${VERSION_NO_V}" +read -p "Are you sure you want to release this version? (y/n): " confirm +if [ "$confirm" != "y" ]; then + echo "Aborting release" + exit 1 fi +# Update version in all relevant files +echo "Updating version numbers in source files..." + +for entry in "${VERSION_FILES[@]}"; do + IFS=':' read -r file line_num <<< "$entry" + sed -i "${line_num}s/${PREVIOUS_VERSION}/${VERSION_NO_V}/" "$file" + echo " Updated $file:$line_num" +done + +# Commit version changes +FILES_TO_COMMIT=$(printf "%s\n" "${VERSION_FILES[@]%%:*}" | sort -u | xargs) +git add $FILES_TO_COMMIT + git cliff -o CHANGELOG.md --tag $VERSION --github-token $GITHUB_TOKEN git add CHANGELOG.md git commit -m "chore: Release $VERSION" git tag $VERSION -m "Release $VERSION" git push origin main git push origin $VERSION -gh release create $VERSION -t $VERSION --generate-notes -d + +# Create tarball with submodules included +git submodule update --init --recursive +echo "Creating release tarball with submodules..." +TMPDIR=$(mktemp -d) +ARCHIVE_NAME="codspeed-cpp-${VERSION}" +TARBALL_NAME="${ARCHIVE_NAME}.tar.gz" + +# Create main archive +git archive --prefix="${ARCHIVE_NAME}/" --format=tar HEAD | \ + (cd "$TMPDIR" && tar xf -) + +# Add submodule content +git submodule foreach --recursive "git archive --prefix=${ARCHIVE_NAME}/\$path/ --format=tar HEAD | (cd $TMPDIR && tar xf -)" + +# Create final tarball +(cd "$TMPDIR" && tar czf "$TMPDIR/$TARBALL_NAME" "$ARCHIVE_NAME") + +echo "Tarball created at: $TMPDIR/$TARBALL_NAME" + +# Create GitHub release with the tarball +if [[ "$VERSION_NO_V" =~ -alpha ]]; then + gh release create $VERSION -t $VERSION --generate-notes --latest=false "$TMPDIR/$TARBALL_NAME" +else + gh release create $VERSION -t $VERSION --generate-notes --latest "$TMPDIR/$TARBALL_NAME" +fi + +# Cleanup +rm -rf "$TMPDIR" From f23b68b27f8543f88f95ff0bdc46785733dee061 Mon Sep 17 00:00:00 2001 From: Guillaume Lagrange Date: Thu, 20 Nov 2025 15:47:37 +0100 Subject: [PATCH 4/4] feat: add support for automated BCR publication --- .bcr/config.yml | 3 ++ .bcr/core/metadata.template.json | 15 +++++++ .bcr/core/presubmit.yml | 44 ++++++++++++++++++++ .bcr/core/source.template.json | 5 +++ .bcr/google_benchmark/metadata.template.json | 15 +++++++ .bcr/google_benchmark/presubmit.yml | 44 ++++++++++++++++++++ .bcr/google_benchmark/source.template.json | 5 +++ .github/workflows/publish-to-bcr.yml | 25 +++++++++++ 8 files changed, 156 insertions(+) create mode 100644 .bcr/config.yml create mode 100644 .bcr/core/metadata.template.json create mode 100644 .bcr/core/presubmit.yml create mode 100644 .bcr/core/source.template.json create mode 100644 .bcr/google_benchmark/metadata.template.json create mode 100644 .bcr/google_benchmark/presubmit.yml create mode 100644 .bcr/google_benchmark/source.template.json create mode 100644 .github/workflows/publish-to-bcr.yml diff --git a/.bcr/config.yml b/.bcr/config.yml new file mode 100644 index 0000000..18d6c20 --- /dev/null +++ b/.bcr/config.yml @@ -0,0 +1,3 @@ +moduleRoots: + - "core" + - "google_benchmark" diff --git a/.bcr/core/metadata.template.json b/.bcr/core/metadata.template.json new file mode 100644 index 0000000..dd38378 --- /dev/null +++ b/.bcr/core/metadata.template.json @@ -0,0 +1,15 @@ +{ + "homepage": "https://codspeed.io", + "maintainers": [ + { + "name": "Arthur Pastel", + "email": "arthur@codspeed.io", + "github": "art049" + } + ], + "repository": [ + "github:CodSpeedHQ/codspeed-cpp" + ], + "versions": [], + "yanked_versions": {} +} diff --git a/.bcr/core/presubmit.yml b/.bcr/core/presubmit.yml new file mode 100644 index 0000000..577c256 --- /dev/null +++ b/.bcr/core/presubmit.yml @@ -0,0 +1,44 @@ +bcr_test_module: + module_path: "" + matrix: + platform: + - debian10 + - macos + - ubuntu2004 + - windows + bazel: + - 7.x + - 8.x + tasks: + verify_instrumentation: + platform: ${{ platform }} + bazel: ${{ bazel }} + build_flags: + - "--//:codspeed_mode=instrumentation" + build_targets: + - "//:codspeed" + - "//:instrument_hooks" + verify_simulation: + platform: ${{ platform }} + bazel: ${{ bazel }} + build_flags: + - "--//:codspeed_mode=simulation" + build_targets: + - "//:codspeed" + - "//:instrument_hooks" + verify_walltime: + platform: ${{ platform }} + bazel: ${{ bazel }} + build_flags: + - "--//:codspeed_mode=walltime" + build_targets: + - "//:codspeed" + - "//:instrument_hooks" + verify_off: + platform: ${{ platform }} + bazel: ${{ bazel }} + build_flags: + - "--//:codspeed_mode=off" + build_targets: + - "//:codspeed" + - "//:instrument_hooks" diff --git a/.bcr/core/source.template.json b/.bcr/core/source.template.json new file mode 100644 index 0000000..1451c49 --- /dev/null +++ b/.bcr/core/source.template.json @@ -0,0 +1,5 @@ +{ + "url": "https://github.com/{OWNER}/{REPO}/releases/download/{TAG}/codspeed-cpp-{TAG}.tar.gz", + "integrity": "{INTEGRITY}", + "strip_prefix": "codspeed-cpp-{TAG}/core" +} diff --git a/.bcr/google_benchmark/metadata.template.json b/.bcr/google_benchmark/metadata.template.json new file mode 100644 index 0000000..dd38378 --- /dev/null +++ b/.bcr/google_benchmark/metadata.template.json @@ -0,0 +1,15 @@ +{ + "homepage": "https://codspeed.io", + "maintainers": [ + { + "name": "Arthur Pastel", + "email": "arthur@codspeed.io", + "github": "art049" + } + ], + "repository": [ + "github:CodSpeedHQ/codspeed-cpp" + ], + "versions": [], + "yanked_versions": {} +} diff --git a/.bcr/google_benchmark/presubmit.yml b/.bcr/google_benchmark/presubmit.yml new file mode 100644 index 0000000..6b2e761 --- /dev/null +++ b/.bcr/google_benchmark/presubmit.yml @@ -0,0 +1,44 @@ +bcr_test_module: + module_path: "" + matrix: + platform: + - debian10 + - macos + - ubuntu2004 + - windows + bazel: + - 7.x + - 8.x + tasks: + verify_instrumentation: + platform: ${{ platform }} + bazel: ${{ bazel }} + build_flags: + - "--@codspeed_core//:codspeed_mode=instrumentation" + build_targets: + - "//:benchmark" + - "//:benchmark_main" + verify_simulation: + platform: ${{ platform }} + bazel: ${{ bazel }} + build_flags: + - "--@codspeed_core//:codspeed_mode=simulation" + build_targets: + - "//:benchmark" + - "//:benchmark_main" + verify_walltime: + platform: ${{ platform }} + bazel: ${{ bazel }} + build_flags: + - "--@codspeed_core//:codspeed_mode=walltime" + build_targets: + - "//:benchmark" + - "//:benchmark_main" + verify_off: + platform: ${{ platform }} + bazel: ${{ bazel }} + build_flags: + - "--@codspeed_core//:codspeed_mode=off" + build_targets: + - "//:benchmark" + - "//:benchmark_main" diff --git a/.bcr/google_benchmark/source.template.json b/.bcr/google_benchmark/source.template.json new file mode 100644 index 0000000..5908146 --- /dev/null +++ b/.bcr/google_benchmark/source.template.json @@ -0,0 +1,5 @@ +{ + "url": "https://github.com/{OWNER}/{REPO}/releases/download/{TAG}/codspeed-cpp-{TAG}.tar.gz", + "integrity": "{INTEGRITY}", + "strip_prefix": "codspeed-cpp-{TAG}/google_benchmark" +} diff --git a/.github/workflows/publish-to-bcr.yml b/.github/workflows/publish-to-bcr.yml new file mode 100644 index 0000000..5bdddfc --- /dev/null +++ b/.github/workflows/publish-to-bcr.yml @@ -0,0 +1,25 @@ +name: Publish to Bazel Central Registry + +on: + release: + types: [published] + workflow_dispatch: + inputs: + tag_name: + description: 'Release tag to publish (e.g., v1.4.0)' + required: true + type: string + +jobs: + publish-to-bcr: + uses: bazel-contrib/publish-to-bcr/.github/workflows/publish.yaml@v1.0.0 + with: + tag_name: ${{ github.event.release.tag_name || inputs.tag_name }} + registry_fork: CodSpeedHQ/bazel-central-registry + # TODO: Change this back to bazel-central-registry when initial submission has been approved + registry: CodSpeedHQ/bazel-central-registry + # If we need this, because it requries tweaking permissions on the BCR_PUBLISH_TOKEN secret + # Currently it only has access to the bazel-central-registry repo + attest: false + secrets: + publish_token: ${{ secrets.BCR_PUBLISH_TOKEN }}