From 039213df5fd36fee6ba6f893aaead43e843200ec Mon Sep 17 00:00:00 2001 From: Matthieu MOREL Date: Mon, 1 Dec 2025 08:30:48 +0100 Subject: [PATCH] chore: migrate lz4 to use BUILD.bazel from BCR Signed-off-by: Matthieu MOREL --- MODULE.bazel | 1 + MODULE.bazel.lock | 30 +++---- bazel/external/lz4.BUILD | 81 +++++++++++++++++++ bazel/foreign_cc/BUILD | 22 +---- bazel/repositories.bzl | 8 +- bazel/repository_locations.bzl | 2 +- .../qatzip/compressor/source/BUILD | 3 +- 7 files changed, 106 insertions(+), 41 deletions(-) create mode 100644 bazel/external/lz4.BUILD diff --git a/MODULE.bazel b/MODULE.bazel index d9fd45a932d33..bc5d55df9182e 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -8,6 +8,7 @@ bazel_dep(name = "envoy_api", version = "1.37.0-dev") bazel_dep(name = "envoy_build_config", version = "1.37.0-dev") bazel_dep(name = "envoy_mobile", version = "1.37.0-dev") bazel_dep(name = "gperftools", version = "2.17.2") +bazel_dep(name = "lz4", version = "1.10.0.bcr.1") bazel_dep(name = "numactl", version = "2.0.19") bazel_dep(name = "platforms", version = "1.0.0") bazel_dep(name = "rules_python", version = "1.6.3") diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 76e74e7c28969..77fbf02bde592 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -112,6 +112,8 @@ "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/source.json": "caaffb3ac2b59b8aac456917a4ecf3167d40478ee79f15ab7a877ec9273937c9", + "https://bcr.bazel.build/modules/lz4/1.10.0.bcr.1/MODULE.bazel": "701a49c6304d1f836604dbfbb1642a0c89320c8bd2fbe5a768ae97b48c8df1d4", + "https://bcr.bazel.build/modules/lz4/1.10.0.bcr.1/source.json": "33ed2bd01e038792015c2097fdbd4f4ce4f00c2046e9ea62e7fff1ab151754e4", "https://bcr.bazel.build/modules/nlohmann_json/3.11.3/MODULE.bazel": "87023db2f55fc3a9949c7b08dc711fae4d4be339a80a99d04453c4bb3998eefc", "https://bcr.bazel.build/modules/nlohmann_json/3.11.3/source.json": "296c63a90c6813e53b3812d24245711981fc7e563d98fe15625f55181494488a", "https://bcr.bazel.build/modules/nlohmann_json/3.6.1/MODULE.bazel": "6f7b417dcc794d9add9e556673ad25cb3ba835224290f4f848f8e2db1e1fca74", @@ -319,7 +321,7 @@ "moduleExtensions": { "@@envoy_api~//bazel:extensions.bzl%non_module_deps": { "general": { - "bzlTransitiveDigest": "flNBqjSl7bjTbVszVjcZoeg9vFEfWcyKiWDx1LRvlFY=", + "bzlTransitiveDigest": "TibqC0kvMoM1YhAJJWgQw8R8M2gm9vhgP+2bS4fmNlk=", "usagesDigest": "/cKf5tQ+jJAvM9+76Ky1XDzT3vCtAHYxyUQlKDQn5SY=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -387,7 +389,7 @@ }, "@@grpc~//bazel:grpc_deps.bzl%grpc_repo_deps_ext": { "general": { - "bzlTransitiveDigest": "5TfzYlp8Y+UKkVz5RlvJ+WoMjs6d3+Y3sHhn1c7I86o=", + "bzlTransitiveDigest": "R8DaQbJYa8zVJEQZ1yP3v5h2QOnsf0mjDc6pKvYunIE=", "usagesDigest": "zirGkfw3ySuuLLhcwE9lVps73amEmlGGygp6hKRHw60=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -487,7 +489,7 @@ }, "@@grpc~//bazel:grpc_python_deps.bzl%grpc_python_deps_ext": { "general": { - "bzlTransitiveDigest": "I1aLu6/WXl6aoKVzpM9MA+NKV6ciLTR8aaO7bH7eQmM=", + "bzlTransitiveDigest": "pQinE/uJeMWdFQEdm4XrcHjEQKvPmaqCfoHdirihLCc=", "usagesDigest": "tGviJuuyIzvrnnWS4qR2m+twDY/3KVsNReM3jFN618I=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -522,7 +524,7 @@ }, "@@prometheus-cpp~//bazel:repositories.bzl%data_deps_ext": { "general": { - "bzlTransitiveDigest": "pYBXOVXHv7jpSp2JaD14U0ZuU5ENdX1PFuG2Gb9tasg=", + "bzlTransitiveDigest": "KWmemGPVsCWlOVS7qjouGoa2Ku5WfgWy2AusJH+vuUg=", "usagesDigest": "7tqpil+JewSzMw33uxL2SZS0R/XidWBJZFy9vWUy1JQ=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -565,7 +567,7 @@ }, "@@pybind11_bazel~//:internal_configure.bzl%internal_configure_extension": { "general": { - "bzlTransitiveDigest": "CyAKLVVonohnkTSqg9II/HA7M49sOlnMkgMHL3CmDuc=", + "bzlTransitiveDigest": "ITysE3qT9ee8ipAmrQmkGImmq2UkzlEY/ZI2L3+wmI8=", "usagesDigest": "mFrTHX5eCiNU/OIIGVHH3cOILY9Zmjqk8RQYv8o6Thk=", "recordedFileInputs": { "@@pybind11_bazel~//MODULE.bazel": "e6f4c20442eaa7c90d7190d8dc539d0ab422f95c65a57cc59562170c58ae3d34" @@ -596,7 +598,7 @@ }, "@@rules_apple~//apple:apple.bzl%provisioning_profile_repository_extension": { "general": { - "bzlTransitiveDigest": "OXAenx+ykbR0F6x6UqNYwWAiNQr/Os7NtTUXpySX8zc=", + "bzlTransitiveDigest": "bKMiBzOI1OzAPR2cX6I52ThfDT/S5AzqpEvrBkHshSI=", "usagesDigest": "z3O39ZVxssoz5kUX8+YMSfNS8WcQb9bUg+MxjVA0v6A=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -709,7 +711,7 @@ }, "@@rules_apple~//apple:extensions.bzl%non_module_deps": { "general": { - "bzlTransitiveDigest": "5JTvg4Qr6DXjRKV+Eqg4V65+iHTZQV9VQ+3KQ+Oziw4=", + "bzlTransitiveDigest": "rO1WMWdVxH8PzXrEAdVCOAF1DqFL5xgA2VZb8wCzw1Y=", "usagesDigest": "9pqqsAjbe7kL2SXEcVAUhrJxq9vOJ39lgszUnsqDdrU=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -738,7 +740,7 @@ }, "@@rules_foreign_cc~//foreign_cc:extensions.bzl%tools": { "general": { - "bzlTransitiveDigest": "a7qnESofmIRYId6wwGNPJ9kvExU80KrkxL281P3+lBE=", + "bzlTransitiveDigest": "0sGqGZ9ZUWLqm3M3dt1bwEvNR7QO5xfnXggdyB8DGx0=", "usagesDigest": "hK5/SjH6eu1u+V0YHRti+lZvw7Wb4oU6Raw6P0mAfDQ=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -1078,7 +1080,7 @@ }, "@@rules_fuzzing~//fuzzing/private:extensions.bzl%non_module_dependencies": { "general": { - "bzlTransitiveDigest": "hVgJRQ3Er45/UUAgNn1Yp2Khcp/Y8WyafA2kXIYmQ5M=", + "bzlTransitiveDigest": "VMhyxXtdJvrNlLts7afAymA+pOatXuh5kLdxzVAZ/04=", "usagesDigest": "YnIrdgwnf3iCLfChsltBdZ7yOJh706lpa2vww/i2pDI=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -1169,7 +1171,7 @@ }, "@@rules_kotlin~//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { "general": { - "bzlTransitiveDigest": "fus14IFJ/1LGWWGKPH/U18VnJCoMjfDt1ckahqCnM0A=", + "bzlTransitiveDigest": "eecmTsmdIQveoA97hPtH3/Ej/kugbdCI24bhXIXaly8=", "usagesDigest": "aJF6fLy82rR95Ff5CZPAqxNoFgOMLMN5ImfBS0nhnkg=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -1238,7 +1240,7 @@ }, "@@rules_python~//python/uv:uv.bzl%uv": { "general": { - "bzlTransitiveDigest": "mxPY/VBQrSC9LvYeRrlxD+0IkDTQ4+36NGMnGWlN/Vw=", + "bzlTransitiveDigest": "sEFGGTSkofONc0o5QI5Gx+F/KfHEZQLIKj1B3MNlt/g=", "usagesDigest": "qIeg3YEigU6oZD/nE0vQzliorEcL5dtbidAIP+ZhylM=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -1280,7 +1282,7 @@ }, "@@rules_rust~//crate_universe/private:internal_extensions.bzl%cu_nr": { "general": { - "bzlTransitiveDigest": "uuX3zpaszmzWe87yGyEbuDWkD0tKJ5g0D1IMLulrcAc=", + "bzlTransitiveDigest": "uPvdF+1jxNoEAaotY5HY1TzNVHHIFZ4Hh1roLNyD+V8=", "usagesDigest": "CwRFmKaeUnC8xedseTe6ktL+4cTLiqsFsoBf1u/zyY4=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -1423,7 +1425,7 @@ }, "@@rules_swift~//swift:extensions.bzl%non_module_deps": { "general": { - "bzlTransitiveDigest": "sYMR3xOa5sLdm8MWGLAwlRJRX5m6BJwGpHvifl8VR70=", + "bzlTransitiveDigest": "xBI+p1eA4ZEAAj/pHj6uAqCkg5VpFh999DjHyEnzZJI=", "usagesDigest": "oOk0O0F9tROCJYa1ynfWbfouHMALDjhAJmpxXr8qfeE=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, @@ -1644,7 +1646,7 @@ }, "@@upb~//:non_module_deps.bzl%non_module_deps": { "general": { - "bzlTransitiveDigest": "n42CE1R95fa5ddK2PVwgWYAZfG476FzMuRvz0zo5gs8=", + "bzlTransitiveDigest": "w5JFGAujfTIG8urv5+XMxEmlkJFz9VvcHuM1ZwkQz3M=", "usagesDigest": "JoqUFwkGE6YMeQGSNrm9mFXAyqI66TGLlxHYXB0QfLk=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, diff --git a/bazel/external/lz4.BUILD b/bazel/external/lz4.BUILD new file mode 100644 index 0000000000000..7cbdb5efa1343 --- /dev/null +++ b/bazel/external/lz4.BUILD @@ -0,0 +1,81 @@ +load("@rules_cc//cc:defs.bzl", "cc_library") + +cc_library( + name = "lz4", + srcs = [ + "lib/lz4.c", + "lib/xxhash.c", + "lib/xxhash.h", + ], + hdrs = [ + "lib/lz4.h", + ], + strip_include_prefix = "lib/", + visibility = ["//visibility:public"], +) + +cc_library( + name = "lz4_lz4c_include", + hdrs = [ + "lib/lz4.c", + ], + strip_include_prefix = "lib/", +) + +cc_library( + name = "lz4_hc", + srcs = [ + "lib/lz4hc.c", + ], + hdrs = [ + "lib/lz4hc.h", + ], + strip_include_prefix = "lib/", + visibility = ["//visibility:public"], + deps = [ + ":lz4", + ":lz4_lz4c_include", + ], +) + +cc_library( + name = "lz4_file", + srcs = [ + "lib/lz4file.c", + ], + hdrs = [ + "lib/lz4file.h", + ], + strip_include_prefix = "lib/", + visibility = ["//:__subpackages__"], + deps = [ + ":lz4", + ":lz4_frame", + ], +) + +cc_library( + name = "lz4_frame", + srcs = [ + "lib/lz4frame.c", + "lib/lz4frame_static.h", + ], + hdrs = [ + "lib/lz4frame.h", + ], + strip_include_prefix = "lib/", + visibility = ["//visibility:public"], + deps = [ + ":lz4", + ":lz4_hc", + ], +) + +cc_library( + name = "lz4_xxhash_include", + hdrs = [ + "lib/xxhash.h", + ], + strip_include_prefix = "lib/", + visibility = ["//:__subpackages__"], +) diff --git a/bazel/foreign_cc/BUILD b/bazel/foreign_cc/BUILD index 7f198f5e745f3..623253144da09 100644 --- a/bazel/foreign_cc/BUILD +++ b/bazel/foreign_cc/BUILD @@ -1,7 +1,6 @@ load("@bazel_skylib//rules:common_settings.bzl", "bool_flag") load("@rules_cc//cc:defs.bzl", "cc_library") load("@rules_foreign_cc//foreign_cc:configure.bzl", "configure_make") -load("@rules_foreign_cc//foreign_cc:make.bzl", "make") load("//bazel:envoy_build_system.bzl", "envoy_cc_library", "envoy_cmake", "envoy_package") licenses(["notice"]) # Apache 2 @@ -56,25 +55,6 @@ envoy_cc_library( }), ) -make( - name = "lz4", - args = [ - "MOREFLAGS='-fPIC'", - "BUILD_SHARED=no", - ], - lib_source = "@com_github_lz4_lz4//:all", - out_static_libs = [ - "liblz4.a", - ], - tags = ["skip_on_windows"], - targets = [ - "lib", - "install", - ], - visibility = ["//visibility:public"], - alwayslink = False, -) - # Kafka client dependency used by Kafka-mesh filter. # librdkafka build generates extra headers that need to be copied into source to get it to compile. configure_make( @@ -93,7 +73,7 @@ configure_make( targets = [ "ARFLAGS='' WITH_LDS='n' libs install-subdirs", ], - deps = [":lz4"], + deps = ["@lz4"], alwayslink = True, ) diff --git a/bazel/repositories.bzl b/bazel/repositories.bzl index 93866d3f3e7ce..8b6def7bf35c0 100644 --- a/bazel/repositories.bzl +++ b/bazel/repositories.bzl @@ -161,7 +161,7 @@ def envoy_dependencies(skip_targets = []): _com_github_intel_qatlib() _com_github_intel_qatzip() _com_github_qat_zstd() - _com_github_lz4_lz4() + _lz4() _com_github_jbeder_yaml_cpp() _com_github_libevent_libevent() _com_github_luajit_luajit() @@ -412,10 +412,10 @@ def _com_github_qat_zstd(): patches = ["@envoy//bazel/foreign_cc:qatzstd.patch"], ) -def _com_github_lz4_lz4(): +def _lz4(): external_http_archive( - name = "com_github_lz4_lz4", - build_file_content = BUILD_ALL_CONTENT, + name = "lz4", + build_file = "@envoy//bazel/external:lz4.BUILD", ) def _com_github_jbeder_yaml_cpp(): diff --git a/bazel/repository_locations.bzl b/bazel/repository_locations.bzl index 079d630592559..6e64453d1ba38 100644 --- a/bazel/repository_locations.bzl +++ b/bazel/repository_locations.bzl @@ -1681,7 +1681,7 @@ REPOSITORY_LOCATIONS_SPEC = dict( license = "Apache-2.0", license_url = "https://github.com/maxmind/libmaxminddb/blob/{version}/LICENSE", ), - com_github_lz4_lz4 = dict( + lz4 = dict( project_name = "LZ4", project_desc = "Extremely Fast Compression algorithm", project_url = "http://www.lz4.org/", diff --git a/contrib/qat/compression/qatzip/compressor/source/BUILD b/contrib/qat/compression/qatzip/compressor/source/BUILD index fd4b6c470037d..8f66ec383dbe3 100644 --- a/contrib/qat/compression/qatzip/compressor/source/BUILD +++ b/contrib/qat/compression/qatzip/compressor/source/BUILD @@ -48,7 +48,8 @@ configure_make( target_compatible_with = envoy_contrib_linux_x86_64_constraints(), visibility = ["//visibility:public"], deps = [ - "//bazel/foreign_cc:lz4", + "@lz4", + "@lz4//:lz4_frame", "@zlib", "//contrib/qat:qatlib", # Use boringssl alias to select fips vs non-fips version.