147 lines
5.7 KiB
Diff
147 lines
5.7 KiB
Diff
|
From e96fde2421dbfee69fb9ba65e5a90e5054f7df01 Mon Sep 17 00:00:00 2001
|
||
|
From: Luke Granger-Brown <git@lukegb.com>
|
||
|
Date: Sun, 8 May 2022 21:44:47 +0000
|
||
|
Subject: [PATCH] envoy: fix builds for x86_64-linux and aarch64-linux
|
||
|
|
||
|
* Bumps brotli version to incorporate a fix for some GCC warnings which
|
||
|
get promoted to errors.
|
||
|
* Switches from wee8 to WAMR because it's easier to make it build
|
||
|
sensibly on a range of GCC versions that aren't just "whatever ships
|
||
|
with Ubuntu LTS".
|
||
|
* Adds a patch for WAMR's build in Envoy because it won't build properly
|
||
|
under Linux aarch64, since WAMR doesn't detect aarch64 unless it's on
|
||
|
macOS.
|
||
|
---
|
||
|
pkgs/servers/http/envoy/bump-brotli.patch | 15 ++++++++
|
||
|
pkgs/servers/http/envoy/default.nix | 21 ++++++++--
|
||
|
.../servers/http/envoy/fix-aarch64-wamr.patch | 38 +++++++++++++++++++
|
||
|
3 files changed, 71 insertions(+), 3 deletions(-)
|
||
|
create mode 100644 pkgs/servers/http/envoy/bump-brotli.patch
|
||
|
create mode 100644 pkgs/servers/http/envoy/fix-aarch64-wamr.patch
|
||
|
|
||
|
diff --git a/pkgs/servers/http/envoy/bump-brotli.patch b/pkgs/servers/http/envoy/bump-brotli.patch
|
||
|
new file mode 100644
|
||
|
index 0000000000000..21495e3ed3bbc
|
||
|
--- /dev/null
|
||
|
+++ b/pkgs/servers/http/envoy/bump-brotli.patch
|
||
|
@@ -0,0 +1,15 @@
|
||
|
+diff --git a/bazel/repository_locations.bzl b/bazel/repository_locations.bzl
|
||
|
+index 454c54b0ef..2ac0623cf0 100644
|
||
|
+--- a/bazel/repository_locations.bzl
|
||
|
++++ b/bazel/repository_locations.bzl
|
||
|
+@@ -510,8 +510,8 @@ REPOSITORY_LOCATIONS_SPEC = dict(
|
||
|
+ project_url = "https://brotli.org",
|
||
|
+ # Use the dev branch of brotli to resolve compilation issues.
|
||
|
+ # TODO(rojkov): Remove when brotli > 1.0.9 is released.
|
||
|
+- version = "0cd2e3926e95e7e2930f57ae3f4885508d462a25",
|
||
|
+- sha256 = "93810780e60304b51f2c9645fe313a6e4640711063ed0b860cfa60999dd256c5",
|
||
|
++ version = "27dd7265403d8e8fed99a854b9c3e1db7d79525f",
|
||
|
++ sha256 = "e71238b12e30233bdf25997132b29ae49639a69f33fdef3ae18a47abfc0d5e4c",
|
||
|
+ strip_prefix = "brotli-{version}",
|
||
|
+ urls = ["https://github.com/google/brotli/archive/{version}.tar.gz"],
|
||
|
+ use_category = ["dataplane_ext"],
|
||
|
diff --git a/pkgs/servers/http/envoy/default.nix b/pkgs/servers/http/envoy/default.nix
|
||
|
index 5a85c2c1ab64b..16de2fb399b7f 100644
|
||
|
--- a/pkgs/servers/http/envoy/default.nix
|
||
|
+++ b/pkgs/servers/http/envoy/default.nix
|
||
|
@@ -12,6 +12,9 @@
|
||
|
, python3
|
||
|
, linuxHeaders
|
||
|
, nixosTests
|
||
|
+
|
||
|
+# v8 (upstream default), wavm, wamr, wasmtime, disabled
|
||
|
+, wasmRuntime ? "wamr"
|
||
|
}:
|
||
|
|
||
|
let
|
||
|
@@ -31,7 +34,7 @@ buildBazelPackage rec {
|
||
|
src = fetchFromGitHub {
|
||
|
owner = "envoyproxy";
|
||
|
repo = "envoy";
|
||
|
- inherit (srcVer) rev ;
|
||
|
+ inherit (srcVer) rev;
|
||
|
hash = "sha256:11mm72zmb479ss585jzqzhklyyqmdadnvr91ghzvjxc0j2a1hrr4";
|
||
|
|
||
|
extraPostFetch = ''
|
||
|
@@ -58,6 +61,13 @@ buildBazelPackage rec {
|
||
|
url = "https://github.com/envoyproxy/envoy/commit/68448aae7a78a3123097b6ea96016b270457e7b8.patch";
|
||
|
sha256 = "123kv3x37p8fgfp29jhw5xg5js5q5ipibs8hsm7gzfd5bcllnpfh";
|
||
|
})
|
||
|
+
|
||
|
+ # fix issues with brotli and GCC 11.2.0+ (-Werror=vla-parameter)
|
||
|
+ ./bump-brotli.patch
|
||
|
+
|
||
|
+ # fix linux-aarch64 WAMR builds
|
||
|
+ # (upstream WAMR only detects aarch64 on Darwin, not Linux)
|
||
|
+ ./fix-aarch64-wamr.patch
|
||
|
];
|
||
|
|
||
|
nativeBuildInputs = [
|
||
|
@@ -75,8 +85,8 @@ buildBazelPackage rec {
|
||
|
|
||
|
fetchAttrs = {
|
||
|
sha256 = {
|
||
|
- x86_64-linux = "0f7mls2zrpjjvbz6pgkzrvr55bv05xn2l76j9i1r0cf367qqfkz8";
|
||
|
- aarch64-linux = "1l3ls47z20xrw6x9qps5jm7vq50xb1acv9gczfdrj9hw6jybgwgg";
|
||
|
+ x86_64-linux = "0k2cna0vjzc8z7jvxdlcw741vacil8daczppv32bslw17af65vq6";
|
||
|
+ aarch64-linux = "1ijv4arw67nprykn2wkn4ji8fbr284mc7p74zxfsky772s42yy9j";
|
||
|
}.${stdenv.system} or (throw "unsupported system ${stdenv.system}");
|
||
|
dontUseCmakeConfigure = true;
|
||
|
dontUseGnConfigure = true;
|
||
|
@@ -128,6 +138,11 @@ buildBazelPackage rec {
|
||
|
"--cxxopt=-Wno-maybe-uninitialized"
|
||
|
"--cxxopt=-Wno-uninitialized"
|
||
|
"--cxxopt=-Wno-error=type-limits"
|
||
|
+
|
||
|
+ "--define=wasm=${wasmRuntime}"
|
||
|
+ ];
|
||
|
+ bazelFetchFlags = [
|
||
|
+ "--define=wasm=${wasmRuntime}"
|
||
|
];
|
||
|
|
||
|
passthru.tests = {
|
||
|
diff --git a/pkgs/servers/http/envoy/fix-aarch64-wamr.patch b/pkgs/servers/http/envoy/fix-aarch64-wamr.patch
|
||
|
new file mode 100644
|
||
|
index 0000000000000..4d8bc6c02adce
|
||
|
--- /dev/null
|
||
|
+++ b/pkgs/servers/http/envoy/fix-aarch64-wamr.patch
|
||
|
@@ -0,0 +1,38 @@
|
||
|
+diff --git a/bazel/envoy_build_system.bzl b/bazel/envoy_build_system.bzl
|
||
|
+index f48ebe7056..1e5cc5d663 100644
|
||
|
+--- a/bazel/envoy_build_system.bzl
|
||
|
++++ b/bazel/envoy_build_system.bzl
|
||
|
+@@ -102,6 +102,7 @@ def envoy_cmake(
|
||
|
+ pdb_name = "",
|
||
|
+ cmake_files_dir = "$BUILD_TMPDIR/CMakeFiles",
|
||
|
+ generate_crosstool_file = False,
|
||
|
++ generate_args = [],
|
||
|
+ **kwargs):
|
||
|
+ cache_entries.update({"CMAKE_BUILD_TYPE": "Bazel"})
|
||
|
+ cache_entries_debug = dict(cache_entries)
|
||
|
+@@ -131,7 +132,7 @@ def envoy_cmake(
|
||
|
+ "@envoy//bazel:dbg_build": cache_entries_debug,
|
||
|
+ "//conditions:default": cache_entries,
|
||
|
+ }),
|
||
|
+- generate_args = ["-GNinja"],
|
||
|
++ generate_args = ["-GNinja"] + generate_args,
|
||
|
+ targets = ["", "install"],
|
||
|
+ # TODO: Remove install target and make this work
|
||
|
+ install = False,
|
||
|
+diff --git a/bazel/foreign_cc/BUILD b/bazel/foreign_cc/BUILD
|
||
|
+index 4d3a281669..b4716dfe2e 100644
|
||
|
+--- a/bazel/foreign_cc/BUILD
|
||
|
++++ b/bazel/foreign_cc/BUILD
|
||
|
+@@ -394,6 +394,12 @@ envoy_cmake(
|
||
|
+ "WAMR_BUILD_LIBC_WASI": "0",
|
||
|
+ "WAMR_BUILD_TAIL_CALL": "1",
|
||
|
+ },
|
||
|
++ generate_args = select({
|
||
|
++ "//conditions:default": [],
|
||
|
++ "@platforms//cpu:aarch64": [
|
||
|
++ "-DWAMR_BUILD_TARGET=AARCH64",
|
||
|
++ ],
|
||
|
++ }),
|
||
|
+ lib_source = "@com_github_wamr//:all",
|
||
|
+ out_static_libs = ["libvmlib.a"],
|
||
|
+ tags = ["skip_on_windows"],
|