diff options
Diffstat (limited to 'pkgs/by-name/en/envoy/package.nix')
-rw-r--r-- | pkgs/by-name/en/envoy/package.nix | 60 |
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" |