From 06d71ef4b9b6222cf512ec8132520d84a5a9bae9 Mon Sep 17 00:00:00 2001 From: Matthieu MOREL Date: Mon, 1 Dec 2025 09:04:10 +0100 Subject: [PATCH] deps: replace com_github_nghttp2_nghttp2 with nghttp2 BCR module Signed-off-by: Matthieu MOREL --- MODULE.bazel | 1 + MODULE.bazel.lock | 30 ++--- bazel/envoy_internal.bzl | 2 +- bazel/external/nghttp2.BUILD | 207 +++++++++++++++++++++++++++++++++ bazel/foreign_cc/BUILD | 38 ------ bazel/foreign_cc/nghttp2.patch | 16 --- bazel/repositories.bzl | 13 +-- bazel/repository_locations.bzl | 2 +- 8 files changed, 230 insertions(+), 79 deletions(-) create mode 100644 bazel/external/nghttp2.BUILD delete mode 100644 bazel/foreign_cc/nghttp2.patch diff --git a/MODULE.bazel b/MODULE.bazel index d9fd45a932d33..64c4d4e63abce 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 = "nghttp2", version = "1.65.0") 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..7477c017904d1 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/nghttp2/1.65.0/MODULE.bazel": "695f370d5847e59247912ce80cf92733c7fae0eb6adae86625247151c11d6bed", + "https://bcr.bazel.build/modules/nghttp2/1.65.0/source.json": "33dfd69122c0855eba5bc689b578ff61f3e74603d2f51dc73c4c34f680bb7137", "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/envoy_internal.bzl b/bazel/envoy_internal.bzl index cbd6d5b5bc689..2d75392490a8e 100644 --- a/bazel/envoy_internal.bzl +++ b/bazel/envoy_internal.bzl @@ -145,7 +145,7 @@ EXTERNAL_DEPS_MAP = { "api_httpbody_protos": "@com_google_googleapis//google/api:httpbody_cc_proto", "http_api_protos": "@com_google_googleapis//google/api:annotations_cc_proto", # nghttp2 - "nghttp2": "@envoy//bazel/foreign_cc:nghttp2", + "nghttp2": "@nghttp2", # gRPC "grpc": "@com_github_grpc_grpc//:grpc++", "grpc_health_proto": "@com_github_grpc_grpc//src/proto/grpc/health/v1:health_cc_proto", diff --git a/bazel/external/nghttp2.BUILD b/bazel/external/nghttp2.BUILD new file mode 100644 index 0000000000000..a427ae9cd1065 --- /dev/null +++ b/bazel/external/nghttp2.BUILD @@ -0,0 +1,207 @@ +# BUILD file for nghttp2 used in WORKSPACE mode +# This mirrors the BCR module's BUILD.bazel overlay + +load("@bazel_skylib//rules:expand_template.bzl", "expand_template") +load("@rules_cc//cc:defs.bzl", "cc_library") + +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +exports_files(["COPYING"]) + +cc_library( + name = "nghttp2", + hdrs = [ + "lib/includes/nghttp2/nghttp2.h", + ":nghttp2ver_h", + ], + defines = [ + "NGHTTP2_STATICLIB", + ], + strip_include_prefix = "lib/includes", + deps = [ + ":nghttp2_impl", + ], +) + +cc_library( + name = "nghttp2_impl", + srcs = glob(["lib/*.c"]), + hdrs = glob(["lib/*.h"]), + copts = select({ + "@rules_cc//cc/compiler:msvc-cl": [], + "//conditions:default": [ + "-Wno-string-plus-int", + ], + }), + local_defines = [ + "BUILDING_NGHTTP2", + "HAVE_CONFIG_H", + ], + deps = [ + ":nghttp2_config", + ":nghttp2_headers", + ], +) + +cc_library( + name = "nghttp2_headers", + hdrs = [ + "lib/includes/nghttp2/nghttp2.h", + ":nghttp2ver_h", + ], + defines = [ + "NGHTTP2_STATICLIB", + ], + strip_include_prefix = "lib/includes", +) + +cc_library( + name = "nghttp2_config", + hdrs = [ + ":config_h", + ], + strip_include_prefix = "lib", +) + +expand_template( + name = "nghttp2ver_h", + out = "lib/includes/nghttp2/nghttp2ver.h", + substitutions = { + "@PACKAGE_VERSION@": "1.66.0", + "@PACKAGE_VERSION_NUM@": "0x014200", + }, + template = "lib/includes/nghttp2/nghttp2ver.h.in", +) + +genrule( + name = "config_h", + outs = ["lib/config.h"], + cmd = """ +cat > $@ << 'EOF' +#ifndef EXTERNAL_NGHTTP2_CONFIG_H_ +#define EXTERNAL_NGHTTP2_CONFIG_H_ + +#if !defined(_WIN32) && !defined(__APPLE__) +#include +#endif + +#define HAVE_STD_MAP_EMPLACE 1 +#define HAVE__EXIT 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_LIMITS_H 1 +#define HAVE_FCNTL_H 1 +#define HAVE_TIME_H 1 +#define NGHTTP2_NORETURN __attribute__((noreturn)) + +#if defined(_WIN32) +#include +#define ssize_t ptrdiff_t +#define HAVE_DECL_INITGROUPS 0 + +#elif defined(__APPLE__) +#define HAVE_ARPA_INET_H 1 +#define HAVE_SOCKADDR_IN6_SIN6_LEN 1 +#define HAVE_SOCKADDR_IN_SIN_LEN 1 +#define SIZEOF_TIME_T 8 +#define STDC_HEADERS 1 + +#else +#define HAVE_ACCEPT4 1 +#define HAVE_ARPA_INET_H 1 +#endif + +// common linux, apple +#if !defined(_WIN32) +#define HAVE_ATOMIC_STD_SHARED_PTR 1 +#define HAVE_CHOWN 1 +#define HAVE_CXX14 1 +#define HAVE_DECL_INITGROUPS 1 +#define HAVE_DECL_STRERROR_R 1 +#define HAVE_DLFCN_H 1 +#define HAVE_DUP2 1 +#define HAVE_FORK 1 +#define HAVE_GETCWD 1 +#define HAVE_GETPWNAM 1 +#define HAVE_LOCALTIME_R 1 +#define HAVE_MEMCHR 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMORY_H 1 +#define HAVE_MEMSET 1 +#define HAVE_MKOSTEMP 1 +#define HAVE_NETDB_H 1 +#define HAVE_NETINET_IN_H 1 +#define HAVE_PTRDIFF_T 1 +#define HAVE_PWD_H 1 +#define HAVE_SOCKET 1 +#define HAVE_SQRT 1 +#define HAVE_STD_FUTURE 1 +#define HAVE_STDDEF_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRCHR 1 +#define HAVE_STRDUP 1 +#define HAVE_STRERROR 1 +#define HAVE_STRERROR_R 1 +#define HAVE_STRING_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_STRNDUP 1 +#define HAVE_STRSTR 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_STRUCT_TM_TM_GMTOFF 1 +#define HAVE_SYS_SOCKET_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_SYS_TIME_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_SYSLOG_H 1 +#define HAVE_THREAD_LOCAL 1 +#define HAVE_TIMEGM 1 +#define HAVE_UNISTD_H 1 +#define HAVE_VFORK 1 +#define HAVE_WORKING_FORK 1 +#define HAVE_WORKING_VFORK 1 +#endif + +#if !defined(_WIN32) +#ifndef _ALL_SOURCE +#define _ALL_SOURCE 1 +#endif +#ifndef _GNU_SOURCE +#define _GNU_SOURCE 1 +#endif +#ifndef _POSIX_PTHREAD_SEMANTICS +#define _POSIX_PTHREAD_SEMANTICS 1 +#endif +#ifndef _TANDEM_SOURCE +#define _TANDEM_SOURCE 1 +#endif +#ifndef __EXTENSIONS__ +#define __EXTENSIONS__ 1 +#endif +#endif + +#if defined(__APPLE__) +#if defined AC_APPLE_UNIVERSAL_BUILD +#if defined __BIG_ENDIAN__ +#define WORDS_BIGENDIAN 1 +#endif +#endif +#ifndef _DARWIN_USE_64_BIT_INODE +#define _DARWIN_USE_64_BIT_INODE 1 +#endif +#endif + +#if UINTPTR_MAX == UINT64_MAX +#define SIZEOF_INT_P 8 +#elif UINTPTR_MAX == UINT32_MAX +#define SIZEOF_INT_P 4 +#else +#error "Unknown int pointer size" +#endif + +#endif // EXTERNAL_NGHTTP2_CONFIG_H_ +EOF +""", +) diff --git a/bazel/foreign_cc/BUILD b/bazel/foreign_cc/BUILD index 7f198f5e745f3..6551ff97de490 100644 --- a/bazel/foreign_cc/BUILD +++ b/bazel/foreign_cc/BUILD @@ -371,44 +371,6 @@ envoy_cmake( }), ) -envoy_cmake( - name = "nghttp2", - build_args = select({ - "//bazel/foreign_cc:parallel_builds_enabled": ["-j"], - "//bazel:engflow_rbe_x86_64": ["-j"], - "//bazel:engflow_rbe_aarch64": ["-j"], - "//conditions:default": ["-j1"], - }), - cache_entries = { - "ENABLE_LIB_ONLY": "on", - "BUILD_SHARED_LIBS": "off", - "BUILD_STATIC_LIBS": "on", - "CMAKE_INSTALL_LIBDIR": "lib", - "CMAKE_CXX_COMPILER_FORCED": "on", - }, - cmake_files_dir = "$BUILD_TMPDIR/lib/CMakeFiles", - debug_cache_entries = {"ENABLE_DEBUG": "on"}, - defines = ["NGHTTP2_STATICLIB"], - exec_properties = select({ - "//bazel:engflow_rbe_x86_64": { - "Pool": "linux_x64_large", - }, - "//bazel:engflow_rbe_aarch64": { - "Pool": "linux_arm64_small", - }, - "//conditions:default": {}, - }), - generate_args = [ - "-G", - "Ninja", - ], - lib_source = "@com_github_nghttp2_nghttp2//:all", - out_static_libs = select({ - "//bazel:windows_x86_64": ["nghttp2.lib"], - "//conditions:default": ["libnghttp2.a"], - }), -) - envoy_cmake( name = "wamr", build_args = select({ diff --git a/bazel/foreign_cc/nghttp2.patch b/bazel/foreign_cc/nghttp2.patch deleted file mode 100644 index d1cbab6356e5b..0000000000000 --- a/bazel/foreign_cc/nghttp2.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff -u -r a/CMakeLists.txt b/CMakeLists.txt ---- a/CMakeLists.txt 2020-11-23 08:59:08.000000000 -0600 -+++ b/CMakeLists.txt 2021-01-15 17:15:43.665745800 -0600 -@@ -271,7 +271,11 @@ - if(SIZEOF_SSIZE_T STREQUAL "") - # ssize_t is a signed type in POSIX storing at least -1. - # Set it to "int" to match the behavior of AC_TYPE_SSIZE_T (autotools). -- set(ssize_t int) -+ if(WIN32 AND CMAKE_SIZEOF_VOID_P EQUAL 8) -+ set(ssize_t ptrdiff_t) -+ else() -+ set(ssize_t int) -+ endif() - endif() - # AC_TYPE_UINT8_T - # AC_TYPE_UINT16_T diff --git a/bazel/repositories.bzl b/bazel/repositories.bzl index 93866d3f3e7ce..f4283492d0625 100644 --- a/bazel/repositories.bzl +++ b/bazel/repositories.bzl @@ -165,7 +165,7 @@ def envoy_dependencies(skip_targets = []): _com_github_jbeder_yaml_cpp() _com_github_libevent_libevent() _com_github_luajit_luajit() - _com_github_nghttp2_nghttp2() + _nghttp2() _com_github_msgpack_cpp() _com_github_skyapm_cpp2sky() _com_github_alibaba_hessian2_codec() @@ -525,15 +525,10 @@ cc_library( """, ) -def _com_github_nghttp2_nghttp2(): +def _nghttp2(): external_http_archive( - name = "com_github_nghttp2_nghttp2", - build_file_content = BUILD_ALL_CONTENT, - patch_args = ["-p1"], - # This patch cannot be picked up due to ABI rules. Discussion at; - # https://github.com/nghttp2/nghttp2/pull/1395 - # https://github.com/envoyproxy/envoy/pull/8572#discussion_r334067786 - patches = ["@envoy//bazel/foreign_cc:nghttp2.patch"], + name = "nghttp2", + build_file = "@envoy//bazel/external:nghttp2.BUILD", ) def _com_github_msgpack_cpp(): diff --git a/bazel/repository_locations.bzl b/bazel/repository_locations.bzl index 079d630592559..1f666ea0d70b0 100644 --- a/bazel/repository_locations.bzl +++ b/bazel/repository_locations.bzl @@ -561,7 +561,7 @@ REPOSITORY_LOCATIONS_SPEC = dict( license = "MIT", license_url = "https://github.com/LuaJIT/LuaJIT/blob/{version}/COPYRIGHT", ), - com_github_nghttp2_nghttp2 = dict( + nghttp2 = dict( project_name = "Nghttp2", project_desc = "Implementation of HTTP/2 and its header compression algorithm HPACK in C", project_url = "https://nghttp2.org",