diff --git a/.requirements b/.requirements index f53833429d64..879f37f56978 100644 --- a/.requirements +++ b/.requirements @@ -8,6 +8,8 @@ OPENSSL=3.2.1 OPENSSL_SHA256=83c7329fe52c850677d75e5d0b0ca245309b97e8ecbcfdc1dfdc4ab9fac35b39 PCRE=10.43 PCRE_SHA256=889d16be5abb8d05400b33c25e151638b8d4bac0e2d9c76e9d6923118ae8a34e +ADA=2.7.8 +ADA_SHA256=584faf94049e1e7eaae005e58841092893cd5051a13c8b7cbe7e19510bacc705 LIBEXPAT=2.6.2 LIBEXPAT_SHA256=d4cf38d26e21a56654ffe4acd9cd5481164619626802328506a2869afab29ab3 diff --git a/build/BUILD.bazel b/build/BUILD.bazel index 3af4f65ac45a..10e70e0ac432 100644 --- a/build/BUILD.bazel +++ b/build/BUILD.bazel @@ -13,14 +13,15 @@ clib_deps = [ "@openssl", "@libexpat", "@snappy", + "@ada", ] [ kong_install( name = "install-%s" % get_workspace_name(k), src = k, - prefix = "kong/lib" if k in ("@passwdqc", "@snappy") else "kong", - strip_path = "snappy" if k == "@snappy" else "", + prefix = "kong/lib" if k in ("@passwdqc", "@snappy", "@ada") else "kong", + strip_path = "snappy" if k == "@snappy" else "ada" if k == "@ada" else "", ) for k in clib_deps ] diff --git a/build/openresty/ada/BUILD.bazel b/build/openresty/ada/BUILD.bazel new file mode 100644 index 000000000000..9a157965e6b3 --- /dev/null +++ b/build/openresty/ada/BUILD.bazel @@ -0,0 +1,18 @@ +cc_library( + name = "ada-lib", + srcs = ["ada.cpp"], + hdrs = [ + "ada.h", + "ada_c.h", + ], + copts = [ + "-std=c++17", + ], + linkstatic = True, +) + +cc_shared_library( + name = "ada", + visibility = ["//visibility:public"], + deps = [":ada-lib"], +) diff --git a/build/openresty/ada/ada_repositories.bzl b/build/openresty/ada/ada_repositories.bzl new file mode 100644 index 000000000000..a2d356d0abc5 --- /dev/null +++ b/build/openresty/ada/ada_repositories.bzl @@ -0,0 +1,20 @@ +"""A module defining the third party dependency Ada""" + +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") +load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") +load("@kong_bindings//:variables.bzl", "KONG_VAR") + +def ada_repositories(): + """Defines the ada repository""" + + version = KONG_VAR["ADA"] + + maybe( + http_archive, + name = "ada", + sha256 = KONG_VAR["ADA_SHA256"], + url = "https://github.com/ada-url/ada/releases/download/v" + version + "/singleheader.zip", + type = "zip", + visibility = ["//visibility:public"], # let this to be referenced by openresty build + build_file = "//build/openresty/ada:BUILD.bazel", + ) diff --git a/build/openresty/repositories.bzl b/build/openresty/repositories.bzl index 0d992fd3fd99..2d32dd6f642b 100644 --- a/build/openresty/repositories.bzl +++ b/build/openresty/repositories.bzl @@ -11,6 +11,7 @@ load("//build/openresty/wasmx:wasmx_repositories.bzl", "wasmx_repositories") load("//build/openresty/wasmx/filters:repositories.bzl", "wasm_filters_repositories") load("//build/openresty/brotli:brotli_repositories.bzl", "brotli_repositories") load("//build/openresty/snappy:snappy_repositories.bzl", "snappy_repositories") +load("//build/openresty/ada:ada_repositories.bzl", "ada_repositories") # This is a dummy file to export the module's repository. _NGINX_MODULE_DUMMY_FILE = """ @@ -35,6 +36,7 @@ def openresty_repositories(): wasm_filters_repositories() brotli_repositories() snappy_repositories() + ada_repositories() openresty_version = KONG_VAR["OPENRESTY"] diff --git a/changelog/unreleased/kong/feat-add-ada.yml b/changelog/unreleased/kong/feat-add-ada.yml new file mode 100644 index 000000000000..891d77fa3dab --- /dev/null +++ b/changelog/unreleased/kong/feat-add-ada.yml @@ -0,0 +1,4 @@ +message: | + **Core**: Added Ada dependency - WHATWG-compliant and fast URL parser. +type: feature +scope: Core