From c0e2f7bbbe8344ce6abb19b74f69336426c024e6 Mon Sep 17 00:00:00 2001 From: P-E-Meunier Date: Sun, 20 May 2018 11:28:19 +0100 Subject: [PATCH] buildRustCrate: add extraLinkFlags parameter This is useful when build scripts do not apply linking flags --- pkgs/build-support/rust/build-rust-crate.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/build-support/rust/build-rust-crate.nix b/pkgs/build-support/rust/build-rust-crate.nix index e0aec6e0e18..5c738dd7f0b 100644 --- a/pkgs/build-support/rust/build-rust-crate.nix +++ b/pkgs/build-support/rust/build-rust-crate.nix @@ -47,7 +47,7 @@ let makeDeps = dependencies: ''; configureCrate = - { crateName, crateVersion, crateAuthors, build, libName, crateFeatures, colors, libPath, release, buildDependencies, completeDeps, completeBuildDeps, verbose, dependencies, workspace_member }: + { crateName, crateVersion, crateAuthors, build, libName, crateFeatures, colors, libPath, release, buildDependencies, completeDeps, completeBuildDeps, verbose, dependencies, workspace_member, extraLinkFlags }: let version_ = lib.splitString "-" crateVersion; versionPre = if lib.tail version_ == [] then "" else builtins.elemAt version_ 1; version = lib.splitString "." (lib.head version_); @@ -79,6 +79,8 @@ let makeDeps = dependencies: mkdir -p target/{deps,lib,build,buildDeps} chmod uga+w target -R + echo ${extraLinkFlags} > target/link + echo ${extraLinkFlags} > target/link.final for i in ${completeDepsDir}; do symlink_dependency $i target/deps done @@ -421,9 +423,11 @@ stdenv.mkDerivation (rec { if lib.attrByPath ["plugin"] false crate then "dylib" else (crate.type or "lib"); colors = lib.attrByPath [ "colors" ] "always" crate; + extraLinkFlags = builtins.concatStringsSep " " (crate.extraLinkFlags or []); configurePhase = configureCrate { inherit crateName dependencies buildDependencies completeDeps completeBuildDeps crateFeatures libName build workspace_member release libPath crateVersion + extraLinkFlags crateAuthors verbose colors; }; extraRustcOpts = if crate ? extraRustcOpts then crate.extraRustcOpts else [];