Files
2026-07-13 12:32:21 +08:00

339 lines
7.0 KiB
Python

load("@bazel_skylib//lib:selects.bzl", "selects")
load("@bazel_skylib//rules:common_settings.bzl", "bool_flag", "string_flag")
load("//build/nfpm:rules.bzl", "nfpm_pkg")
load("//build/toolchain:managed_toolchain.bzl", "aarch64_glibc_distros")
filegroup(
name = "distribution_srcs",
srcs = glob(["distribution/**"]),
visibility = ["//visibility:public"],
)
filegroup(
name = "rockspec_srcs",
srcs = glob([
"kong/**",
"*.rockspec",
]),
visibility = ["//visibility:public"],
)
filegroup(
name = "plugins_ee_rockspec_srcs",
srcs = glob(["plugins-ee/**/*.rockspec"]),
visibility = ["//visibility:public"],
)
nfpm_env = {
"KONG_NAME": "kong",
"KONG_REPLACES_1": "kong-community-edition",
"KONG_REPLACES_2": "kong-enterprise-edition-fips",
"KONG_CONFLICTS_1": "kong-community-edition",
"KONG_CONFLICTS_2": "kong-enterprise-edition-fips",
}
nfpm_pkg(
name = "kong_deb",
config = "//build:package/nfpm.yaml",
env = nfpm_env,
packager = "deb",
pkg_name = "kong",
visibility = ["//visibility:public"],
)
nfpm_pkg(
name = "kong_el9",
config = "//build:package/nfpm.yaml",
env = nfpm_env,
packager = "rpm",
pkg_name = "kong.el9",
visibility = ["//visibility:public"],
)
nfpm_pkg(
name = "kong_el8",
config = "//build:package/nfpm.yaml",
env = nfpm_env,
packager = "rpm",
pkg_name = "kong.el8",
visibility = ["//visibility:public"],
)
nfpm_pkg(
name = "kong_aws2",
config = "//build:package/nfpm.yaml",
env = nfpm_env,
extra_env = {
"RPM_EXTRA_DEPS": "/usr/sbin/useradd",
"RPM_EXTRA_DEPS_2": "/usr/sbin/groupadd",
},
packager = "rpm",
pkg_name = "kong.aws2",
visibility = ["//visibility:public"],
)
nfpm_pkg(
name = "kong_aws2023",
config = "//build:package/nfpm.yaml",
env = nfpm_env,
extra_env = {
"RPM_EXTRA_DEPS": "/usr/sbin/useradd",
"RPM_EXTRA_DEPS_2": "/usr/sbin/groupadd",
"RPM_EXTRA_DEPS_3": "libxcrypt-compat",
},
packager = "rpm",
pkg_name = "kong.aws2023",
visibility = ["//visibility:public"],
)
###### flags
# --//:debug=true
bool_flag(
name = "debug",
build_setting_default = True,
)
config_setting(
name = "debug_flag",
flag_values = {
":debug": "true",
},
visibility = ["//visibility:public"],
)
config_setting(
name = "debug_linux_flag",
constraint_values = [
"@platforms//os:linux",
],
flag_values = {
":debug": "true",
},
visibility = ["//visibility:public"],
)
# --//:brotli=true
bool_flag(
name = "brotli",
build_setting_default = True,
)
config_setting(
name = "brotli_flag",
flag_values = {
":brotli": "true",
},
visibility = ["//visibility:public"],
)
# --//:simdjson=true
bool_flag(
name = "simdjson",
build_setting_default = True,
)
config_setting(
name = "simdjson_flag",
flag_values = {
":simdjson": "true",
},
visibility = ["//visibility:public"],
)
# --//:licensing=false
bool_flag(
name = "licensing",
build_setting_default = False,
)
config_setting(
name = "licensing_flag",
flag_values = {
":licensing": "true",
},
visibility = ["//visibility:public"],
)
# --//:fips=false
bool_flag(
name = "fips",
build_setting_default = False,
)
config_setting(
name = "fips_flag",
flag_values = {
":fips": "true",
},
visibility = ["//visibility:public"],
)
# --//:skip_webui=false
bool_flag(
name = "skip_webui",
build_setting_default = False,
)
config_setting(
name = "skip_webui_flags",
flag_values = {
":skip_webui": "true",
},
visibility = ["//visibility:public"],
)
# --//:wasmx=false
bool_flag(
name = "wasmx",
build_setting_default = False,
visibility = ["//visibility:public"],
)
# --//:wasmx_module_flag=dynamic
string_flag(
name = "wasmx_module_flag",
build_setting_default = "dynamic",
values = [
"dynamic",
"static",
],
)
config_setting(
name = "wasmx_flag",
flag_values = {
":wasmx": "true",
},
visibility = ["//visibility:public"],
)
config_setting(
name = "wasmx_static_mod",
flag_values = {
":wasmx": "true",
":wasmx_module_flag": "static",
},
visibility = ["//visibility:public"],
)
config_setting(
name = "wasmx_dynamic_mod",
flag_values = {
":wasmx": "true",
":wasmx_module_flag": "dynamic",
},
visibility = ["//visibility:public"],
)
# --//:wasm_runtime=wasmtime
string_flag(
name = "wasm_runtime",
build_setting_default = "wasmtime",
values = [
"v8",
"wasmer",
"wasmtime",
],
visibility = ["//visibility:public"],
)
# --//:skip_tools=false
bool_flag(
name = "skip_tools",
build_setting_default = False,
)
config_setting(
name = "skip_tools_flag",
flag_values = {
":skip_tools": "true",
},
visibility = ["//visibility:public"],
)
##### constraints, platforms and config_settings for cross-compile
constraint_setting(name = "cross_build_setting")
constraint_value(
name = "cross_build",
constraint_setting = ":cross_build_setting",
)
# platform sets the constraint values based on user input (--platform=//:PLATFOTM)
platform(
name = "generic-crossbuild-x86_64",
constraint_values = [
"@platforms//os:linux",
"@platforms//cpu:x86_64",
"//build/platforms/distro:generic",
":cross_build",
],
)
platform(
name = "generic-crossbuild-aarch64",
constraint_values = [
"@platforms//os:linux",
"@platforms//cpu:aarch64",
"//build/platforms/distro:generic",
":cross_build",
],
)
[
platform(
name = vendor + "-crossbuild-aarch64",
constraint_values = [
"@platforms//os:linux",
"@platforms//cpu:aarch64",
"//build/platforms/distro:" + vendor,
":cross_build",
],
)
for vendor in aarch64_glibc_distros
]
platform(
name = "aws2-crossbuild-x86_64",
constraint_values = [
"@platforms//os:linux",
"@platforms//cpu:x86_64",
"//build/platforms/distro:aws2",
":cross_build",
],
)
# config_settings define a select() condition based on user-set constraint_values
# see https://bazel.build/docs/configurable-attributes
config_setting(
name = "aarch64-linux-glibc-cross",
constraint_values = [
"@platforms//os:linux",
"@platforms//cpu:aarch64",
":cross_build",
],
visibility = ["//visibility:public"],
)
config_setting(
name = "x86_64-linux-glibc-cross",
constraint_values = [
"@platforms//os:linux",
"@platforms//cpu:x86_64",
":cross_build",
],
visibility = ["//visibility:public"],
)
selects.config_setting_group(
# matches all cross build platforms
name = "any-cross",
match_any = [
":aarch64-linux-glibc-cross",
":x86_64-linux-glibc-cross",
],
visibility = ["//visibility:public"],
)