about summary refs log tree commit diff
path: root/pkgs/by-name/en/envoy/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/en/envoy/package.nix')
-rw-r--r--pkgs/by-name/en/envoy/package.nix60
1 files changed, 52 insertions, 8 deletions
diff --git a/pkgs/by-name/en/envoy/package.nix b/pkgs/by-name/en/envoy/package.nix
index 425184598af6..c2e5025e298b 100644
--- a/pkgs/by-name/en/envoy/package.nix
+++ b/pkgs/by-name/en/envoy/package.nix
@@ -5,6 +5,10 @@
   buildBazelPackage,
   fetchFromGitHub,
   stdenv,
+  cacert,
+  cargo,
+  rustc,
+  rustPlatform,
   cmake,
   gn,
   go,
@@ -25,20 +29,20 @@ let
     # However, the version string is more useful for end-users.
     # These are contained in a attrset of their own to make it obvious that
     # people should update both.
-    version = "1.31.2";
-    rev = "cc4a75482810de4b84c301d13deb551bd3147339";
-    hash = "sha256-mfQpEGLMJV3UKqcUdbhy6/pP1sWut26zjwN6vDE7LmA=";
+    version = "1.32.0";
+    rev = "86dc7ef91ca15fb4957a74bd599397413fc26a24";
+    hash = "sha256-Wcbt62RfaNcTntmPjaAM0cP3LJangm4ht7Q0bzEpu5A=";
   };
 
   # these need to be updated for any changes to fetchAttrs
   depsHash =
     {
-      x86_64-linux = "sha256-9KXZdSvRfi5mWOSotG//+ljsx64I4bYwzbeQFuCIwDE=";
-      aarch64-linux = "sha256-knrCfUYUL+bYuHSNrNeX3SwoGDf2rLYNXuukEmj4BjA=";
+      x86_64-linux = "sha256-LkDNPFT7UUCsGPG1dMnwzdIw0lzc5+3JYDoblF5oZVk=";
+      aarch64-linux = "sha256-DkibjmY1YND9Q2aQ41bhNdch0SKM5ghY2mjYSQfV30M=";
     }
     .${stdenv.system} or (throw "unsupported system ${stdenv.system}");
 in
-buildBazelPackage {
+buildBazelPackage rec {
   pname = "envoy";
   inherit (srcVer) version;
   bazel = bazel_6;
@@ -58,6 +62,22 @@ buildBazelPackage {
     sed -i 's,#!/usr/bin/env python3,#!${python3}/bin/python,' bazel/foreign_cc/luajit.patch
     sed -i '/javabase=/d' .bazelrc
     sed -i '/"-Werror"/d' bazel/envoy_internal.bzl
+
+    mkdir -p bazel/nix/
+    substitute ${./bazel_nix.BUILD.bazel} bazel/nix/BUILD.bazel \
+      --subst-var-by bash "$(type -p bash)"
+    ln -sf "${cargo}/bin/cargo" bazel/nix/cargo
+    ln -sf "${rustc}/bin/rustc" bazel/nix/rustc
+    ln -sf "${rustc}/bin/rustdoc" bazel/nix/rustdoc
+    ln -sf "${rustPlatform.rustLibSrc}" bazel/nix/ruststd
+    substituteInPlace bazel/dependency_imports.bzl \
+      --replace-fail 'crate_universe_dependencies()' 'crate_universe_dependencies(rust_toolchain_cargo_template="@@//bazel/nix:cargo", rust_toolchain_rustc_template="@@//bazel/nix:rustc")' \
+      --replace-fail 'crates_repository(' 'crates_repository(rust_toolchain_cargo_template="@@//bazel/nix:cargo", rust_toolchain_rustc_template="@@//bazel/nix:rustc",'
+
+    substitute ${./rules_rust_extra.patch} bazel/nix/rules_rust_extra.patch \
+      --subst-var-by bash "$(type -p bash)"
+    cat bazel/nix/rules_rust_extra.patch bazel/rules_rust.patch > bazel/nix/rules_rust.patch
+    mv bazel/nix/rules_rust.patch bazel/rules_rust.patch
   '';
 
   patches = [
@@ -79,14 +99,23 @@ buildBazelPackage {
     jdk
     ninja
     patchelf
+    cacert
   ];
 
   buildInputs = [ linuxHeaders ];
 
   fetchAttrs = {
     sha256 = depsHash;
+    env.CARGO_BAZEL_REPIN = true;
     dontUseCmakeConfigure = true;
     dontUseGnConfigure = true;
+    postPatch = ''
+      ${postPatch}
+
+      substituteInPlace bazel/dependency_imports.bzl \
+        --replace-fail 'crate_universe_dependencies(' 'crate_universe_dependencies(bootstrap=True, ' \
+        --replace-fail 'crates_repository(' 'crates_repository(generator="@@cargo_bazel_bootstrap//:cargo-bazel", '
+    '';
     preInstall = ''
       # Strip out the path to the build location (by deleting the comment line).
       find $bazelOut/external -name requirements.bzl | while read requirements; do
@@ -113,6 +142,12 @@ buildBazelPackage {
 
       # fix tcmalloc failure https://github.com/envoyproxy/envoy/issues/30838
       sed -i '/TCMALLOC_GCC_FLAGS = \[/a"-Wno-changes-meaning",' $bazelOut/external/com_github_google_tcmalloc/tcmalloc/copts.bzl
+
+      # Install repinned rules_rust lockfile
+      cp source/extensions/dynamic_modules/sdk/rust/Cargo.Bazel.lock $bazelOut/external/Cargo.Bazel.lock
+
+      # Don't save cargo_bazel_bootstrap or the crate index cache
+      rm -rf $bazelOut/external/cargo_bazel_bootstrap $bazelOut/external/dynamic_modules_rust_sdk_crate_index/.cargo_home $bazelOut/external/dynamic_modules_rust_sdk_crate_index/splicing-output
     '';
   };
   buildAttrs = {
@@ -125,7 +160,7 @@ buildBazelPackage {
         file "$execbin" | grep -q ': ELF .*, dynamically linked,' || continue
         patchelf \
           --set-interpreter $(cat ${stdenv.cc}/nix-support/dynamic-linker) \
-          "$execbin"
+          "$execbin" || echo "$execbin"
       done
 
       ln -s ${bazel-gazelle}/bin $bazelOut/external/bazel_gazelle_go_repository_tools/bin
@@ -139,6 +174,9 @@ buildBazelPackage {
         $bazelOut/external/com_github_luajit_luajit/build.py \
         $bazelOut/external/local_config_sh/BUILD \
         $bazelOut/external/*_pip3/BUILD.bazel
+
+      # Install repinned rules_rust lockfile
+      cp $bazelOut/external/Cargo.Bazel.lock source/extensions/dynamic_modules/sdk/rust/Cargo.Bazel.lock
     '';
     installPhase = ''
       install -Dm0755 bazel-bin/source/exe/envoy-static $out/bin/envoy
@@ -162,6 +200,9 @@ buildBazelPackage {
       "--java_runtime_version=local_jdk"
       "--tool_java_runtime_version=local_jdk"
 
+      # Force use of system Rust.
+      "--extra_toolchains=//bazel/nix:rust_nix_aarch64,//bazel/nix:rust_nix_x86_64"
+
       # undefined reference to 'grpc_core::*Metadata*::*Memento*
       #
       # During linking of the final binary, we see undefined references to grpc_core related symbols.
@@ -172,7 +213,7 @@ buildBazelPackage {
 
       "--define=wasm=${wasmRuntime}"
     ]
-    ++ (lib.optionals stdenv.isAarch64 [
+    ++ (lib.optionals stdenv.hostPlatform.isAarch64 [
       # external/com_github_google_tcmalloc/tcmalloc/internal/percpu_tcmalloc.h:611:9: error: expected ':' or '::' before '[' token
       #   611 |       : [end_ptr] "=&r"(end_ptr), [cpu_id] "=&r"(cpu_id),
       #       |         ^
@@ -182,6 +223,9 @@ buildBazelPackage {
   bazelFetchFlags = [
     "--define=wasm=${wasmRuntime}"
 
+    # Force use of system Rust.
+    "--extra_toolchains=//bazel/nix:rust_nix_aarch64,//bazel/nix:rust_nix_x86_64"
+
     # https://github.com/bazelbuild/rules_go/issues/3844
     "--repo_env=GOPROXY=https://proxy.golang.org,direct"
     "--repo_env=GOSUMDB=sum.golang.org"