Skip to content

Commit

Permalink
wasm: make dependency clearer (envoyproxy#14062)
Browse files Browse the repository at this point in the history
Partially addresses envoyproxy#12574, makes split the monolithic wasm_lib into multiple libraries. Clear up dependency metadata due to select.

Risk Level: Low
Testing: CI

Signed-off-by: Lizan Zhou <lizan@tetrate.io>
  • Loading branch information
lizan committed Nov 18, 2020
1 parent fc9f014 commit e72d3e5
Show file tree
Hide file tree
Showing 8 changed files with 85 additions and 119 deletions.
88 changes: 55 additions & 33 deletions bazel/external/proxy_wasm_cpp_host.BUILD
Original file line number Diff line number Diff line change
@@ -1,10 +1,4 @@
load("@rules_cc//cc:defs.bzl", "cc_library")
load(
"@envoy//bazel:envoy_build_system.bzl",
"envoy_select_wasm_v8",
"envoy_select_wasm_wasmtime",
"envoy_select_wasm_wavm",
)

licenses(["notice"]) # Apache 2

Expand All @@ -19,29 +13,14 @@ cc_library(
)

cc_library(
name = "lib",
# Note that the select cannot appear in the glob.
srcs = glob(
[
"src/**/*.h",
"src/**/*.cc",
],
exclude = [
"src/v8/*.cc",
"src/wavm/*.cc",
"src/wasmtime/*.cc",
],
) + envoy_select_wasm_v8(glob([
"src/v8/*.cc",
])) + envoy_select_wasm_wavm(glob([
"src/wavm/*.cc",
])) + envoy_select_wasm_wasmtime(glob([
"src/wasmtime/*.cc",
])),
copts = envoy_select_wasm_wavm([
'-DWAVM_API=""',
"-Wno-non-virtual-dtor",
"-Wno-old-style-cast",
name = "common_lib",
srcs = glob([
"src/*.h",
"src/*.cc",
"src/common/*.h",
"src/common/*.cc",
"src/third_party/*.h",
"src/third_party/*.cc",
]),
deps = [
":include",
Expand All @@ -53,11 +32,54 @@ cc_library(
"//external:zlib",
"@proxy_wasm_cpp_sdk//:api_lib",
"@proxy_wasm_cpp_sdk//:common_lib",
] + envoy_select_wasm_v8([
],
)

cc_library(
name = "null_lib",
srcs = glob([
"src/null/*.cc",
]),
deps = [
":common_lib",
],
)

cc_library(
name = "v8_lib",
srcs = glob([
"src/v8/*.cc",
]),
deps = [
":common_lib",
"//external:wee8",
]) + envoy_select_wasm_wavm([
],
)

cc_library(
name = "wavm_lib",
srcs = glob([
"src/wavm/*.cc",
]),
copts = [
'-DWAVM_API=""',
"-Wno-non-virtual-dtor",
"-Wno-old-style-cast",
],
deps = [
":common_lib",
"@envoy//bazel/foreign_cc:wavm",
]) + envoy_select_wasm_wasmtime([
"@com_github_wasm_c_api//:wasmtime_lib",
],
)

cc_library(
name = "wasmtime_lib",
srcs = glob([
"src/wasmtime/*.h",
"src/wasmtime/*.cc",
]),
deps = [
":common_lib",
"@com_github_wasm_c_api//:wasmtime_lib",
],
)
81 changes: 6 additions & 75 deletions bazel/repository_locations.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -587,16 +587,7 @@ REPOSITORY_LOCATIONS_SPEC = dict(
urls = ["https://github.com/llvm/llvm-project/releases/download/llvmorg-{version}/llvm-{version}.src.tar.xz"],
release_date = "2020-03-23",
use_category = ["dataplane_ext"],
extensions = [
"envoy.access_loggers.wasm",
"envoy.bootstrap.wasm",
"envoy.filters.http.wasm",
"envoy.filters.network.wasm",
"envoy.stat_sinks.wasm",
"envoy.wasm.runtime.v8",
"envoy.wasm.runtime.wavm",
"envoy.wasm.runtime.wasmtime",
],
extensions = ["envoy.wasm.runtime.wavm"],
cpe = "cpe:2.3:a:llvm:*:*",
),
com_github_wavm_wavm = dict(
Expand All @@ -609,16 +600,7 @@ REPOSITORY_LOCATIONS_SPEC = dict(
urls = ["https://github.com/WAVM/WAVM/archive/{version}.tar.gz"],
release_date = "2020-09-17",
use_category = ["dataplane_ext"],
extensions = [
"envoy.access_loggers.wasm",
"envoy.bootstrap.wasm",
"envoy.filters.http.wasm",
"envoy.filters.network.wasm",
"envoy.stat_sinks.wasm",
"envoy.wasm.runtime.v8",
"envoy.wasm.runtime.wavm",
"envoy.wasm.runtime.wasmtime",
],
extensions = ["envoy.wasm.runtime.wavm"],
cpe = "cpe:2.3:a:webassembly_virtual_machine_project:webassembly_virtual_machine:*",
),
com_github_wasmtime = dict(
Expand All @@ -631,16 +613,7 @@ REPOSITORY_LOCATIONS_SPEC = dict(
urls = ["https://github.com/bytecodealliance/wasmtime/archive/v{version}.tar.gz"],
release_date = "2020-11-05",
use_category = ["dataplane_ext"],
extensions = [
"envoy.access_loggers.wasm",
"envoy.bootstrap.wasm",
"envoy.filters.http.wasm",
"envoy.filters.network.wasm",
"envoy.stat_sinks.wasm",
"envoy.wasm.runtime.v8",
"envoy.wasm.runtime.wavm",
"envoy.wasm.runtime.wasmtime",
],
extensions = ["envoy.wasm.runtime.wasmtime"],
cpe = "N/A",
),
com_github_wasm_c_api = dict(
Expand All @@ -655,16 +628,7 @@ REPOSITORY_LOCATIONS_SPEC = dict(
urls = ["https://github.com/WebAssembly/wasm-c-api/archive/{version}.tar.gz"],
release_date = "2019-11-14",
use_category = ["dataplane_ext"],
extensions = [
"envoy.access_loggers.wasm",
"envoy.bootstrap.wasm",
"envoy.filters.http.wasm",
"envoy.filters.network.wasm",
"envoy.stat_sinks.wasm",
"envoy.wasm.runtime.v8",
"envoy.wasm.runtime.wavm",
"envoy.wasm.runtime.wasmtime",
],
extensions = ["envoy.wasm.runtime.wasmtime"],
cpe = "N/A",
),
io_opencensus_cpp = dict(
Expand Down Expand Up @@ -709,16 +673,7 @@ REPOSITORY_LOCATIONS_SPEC = dict(
sha256 = "f22734640e0515bc34d1ca3772513aef24374fafa44d0489d3a9a57cadec69fb",
urls = ["https://storage.googleapis.com/envoyproxy-wee8/wee8-{version}.tar.gz"],
use_category = ["dataplane_ext"],
extensions = [
"envoy.access_loggers.wasm",
"envoy.bootstrap.wasm",
"envoy.filters.http.wasm",
"envoy.filters.network.wasm",
"envoy.stat_sinks.wasm",
"envoy.wasm.runtime.v8",
"envoy.wasm.runtime.wavm",
"envoy.wasm.runtime.wasmtime",
],
extensions = ["envoy.wasm.runtime.v8"],
release_date = "2020-10-27",
cpe = "cpe:2.3:a:google:v8:*",
),
Expand Down Expand Up @@ -765,10 +720,6 @@ REPOSITORY_LOCATIONS_SPEC = dict(
"envoy.filters.network.rbac",
"envoy.filters.network.wasm",
"envoy.stat_sinks.wasm",
"envoy.wasm.runtime.null",
"envoy.wasm.runtime.v8",
"envoy.wasm.runtime.wavm",
"envoy.wasm.runtime.wasmtime",
],
release_date = "2020-10-25",
cpe = "N/A",
Expand All @@ -788,10 +739,6 @@ REPOSITORY_LOCATIONS_SPEC = dict(
"envoy.filters.http.wasm",
"envoy.filters.network.wasm",
"envoy.stat_sinks.wasm",
"envoy.wasm.runtime.null",
"envoy.wasm.runtime.v8",
"envoy.wasm.runtime.wavm",
"envoy.wasm.runtime.wasmtime",
],
release_date = "2020-04-02",
cpe = "N/A",
Expand Down Expand Up @@ -936,17 +883,7 @@ REPOSITORY_LOCATIONS_SPEC = dict(
strip_prefix = "rules_rust-{version}",
urls = ["https://github.com/bazelbuild/rules_rust/archive/{version}.tar.gz"],
use_category = ["dataplane_ext"],
extensions = [
"envoy.access_loggers.wasm",
"envoy.bootstrap.wasm",
"envoy.filters.http.wasm",
"envoy.filters.network.wasm",
"envoy.stat_sinks.wasm",
"envoy.wasm.runtime.null",
"envoy.wasm.runtime.v8",
"envoy.wasm.runtime.wavm",
"envoy.wasm.runtime.wasmtime",
],
extensions = ["envoy.wasm.runtime.wasmtime"],
release_date = "2020-10-21",
cpe = "N/A",
),
Expand All @@ -966,9 +903,6 @@ REPOSITORY_LOCATIONS_SPEC = dict(
"envoy.filters.http.wasm",
"envoy.filters.network.wasm",
"envoy.stat_sinks.wasm",
"envoy.wasm.runtime.v8",
"envoy.wasm.runtime.wavm",
"envoy.wasm.runtime.wasmtime",
],
release_date = "2019-06-21",
cpe = "N/A",
Expand All @@ -988,9 +922,6 @@ REPOSITORY_LOCATIONS_SPEC = dict(
"envoy.filters.http.wasm",
"envoy.filters.network.wasm",
"envoy.stat_sinks.wasm",
"envoy.wasm.runtime.v8",
"envoy.wasm.runtime.wavm",
"envoy.wasm.runtime.wasmtime",
],
release_date = "2018-12-18",
cpe = "N/A",
Expand Down
5 changes: 3 additions & 2 deletions source/extensions/common/wasm/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ envoy_cc_library(
"wasm_runtime_factory.h",
],
deps = [
":wasm_hdr",
"@proxy_wasm_cpp_host//:include",
],
)

Expand Down Expand Up @@ -118,7 +118,8 @@ envoy_cc_library(
"@com_google_cel_cpp//eval/public:cel_value",
"@com_google_cel_cpp//eval/public:value_export_util",
"@envoy_api//envoy/extensions/wasm/v3:pkg_cc_proto",
"@proxy_wasm_cpp_host//:lib",
"@proxy_wasm_cpp_host//:common_lib",
"@proxy_wasm_cpp_host//:null_lib",
] + select(
{
"//bazel:windows_x86_64": [],
Expand Down
7 changes: 5 additions & 2 deletions source/extensions/common/wasm/wasm_runtime_factory.h
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
#pragma once

#include <string_view>
#include "envoy/common/pure.h"

#include "extensions/common/wasm/wasm_vm.h"
#include "absl/strings/string_view.h"
#include "include/proxy-wasm/wasm_vm.h"

namespace Envoy {
namespace Extensions {
namespace Common {
namespace Wasm {

using WasmVmPtr = std::unique_ptr<proxy_wasm::WasmVm>;

class WasmRuntimeFactory {
public:
virtual ~WasmRuntimeFactory() = default;
Expand Down
2 changes: 1 addition & 1 deletion source/extensions/wasm_runtime/null/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ envoy_cc_extension(
status = "alpha",
deps = [
"//include/envoy/registry",
"//source/extensions/common/wasm:wasm_hdr",
"//source/extensions/common/wasm:wasm_runtime_factory_interface",
"@proxy_wasm_cpp_host//:null_lib",
],
)
7 changes: 5 additions & 2 deletions source/extensions/wasm_runtime/v8/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ load(
"envoy_cc_extension",
"envoy_extension_package",
)
load("//bazel:envoy_select.bzl", "envoy_select_wasm_v8")

licenses(["notice"]) # Apache 2

Expand All @@ -15,6 +16,8 @@ envoy_cc_extension(
status = "alpha",
deps = [
"//include/envoy/registry",
"//source/extensions/common/wasm:wasm_lib",
],
"//source/extensions/common/wasm:wasm_runtime_factory_interface",
] + envoy_select_wasm_v8([
"@proxy_wasm_cpp_host//:v8_lib",
]),
)
7 changes: 5 additions & 2 deletions source/extensions/wasm_runtime/wasmtime/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ load(
"envoy_cc_extension",
"envoy_extension_package",
)
load("//bazel:envoy_select.bzl", "envoy_select_wasm_wasmtime")

licenses(["notice"]) # Apache 2

Expand All @@ -15,6 +16,8 @@ envoy_cc_extension(
status = "alpha",
deps = [
"//include/envoy/registry",
"//source/extensions/common/wasm:wasm_lib",
],
"//source/extensions/common/wasm:wasm_runtime_factory_interface",
] + envoy_select_wasm_wasmtime([
"@proxy_wasm_cpp_host//:wasmtime_lib",
]),
)
7 changes: 5 additions & 2 deletions source/extensions/wasm_runtime/wavm/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ load(
"envoy_cc_extension",
"envoy_extension_package",
)
load("//bazel:envoy_select.bzl", "envoy_select_wasm_wavm")

licenses(["notice"]) # Apache 2

Expand All @@ -15,6 +16,8 @@ envoy_cc_extension(
status = "alpha",
deps = [
"//include/envoy/registry",
"//source/extensions/common/wasm:wasm_lib",
],
"//source/extensions/common/wasm:wasm_runtime_factory_interface",
] + envoy_select_wasm_wavm([
"@proxy_wasm_cpp_host//:wavm_lib",
]),
)

0 comments on commit e72d3e5

Please sign in to comment.