mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-02-16 17:14:00 +00:00
rust: support structuredAttrs in setup hooks
Tested the following packages with and without structuredAttrs: - rust-analyzer: cargo-build-hook, cargo-check-hook - jujutsu: cargo-nextest-hook - kornia-rs: maturin-build-hook
This commit is contained in:
parent
b965ede963
commit
9220a19a4d
@ -1,5 +1,3 @@
|
||||
declare -a cargoBuildFlags
|
||||
|
||||
cargoBuildHook() {
|
||||
echo "Executing cargoBuildHook"
|
||||
|
||||
@ -16,35 +14,28 @@ cargoBuildHook() {
|
||||
pushd "${buildAndTestSubdir}"
|
||||
fi
|
||||
|
||||
local flagsArray=(
|
||||
"-j" "$NIX_BUILD_CORES"
|
||||
"--target" "@rustHostPlatformSpec@"
|
||||
"--offline"
|
||||
)
|
||||
|
||||
if [ "${cargoBuildType}" != "debug" ]; then
|
||||
cargoBuildProfileFlag="--profile ${cargoBuildType}"
|
||||
flagsArray+=("--profile" "${cargoBuildType}")
|
||||
fi
|
||||
|
||||
if [ -n "${cargoBuildNoDefaultFeatures-}" ]; then
|
||||
cargoBuildNoDefaultFeaturesFlag=--no-default-features
|
||||
flagsArray+=("--no-default-features")
|
||||
fi
|
||||
|
||||
if [ -n "${cargoBuildFeatures-}" ]; then
|
||||
if [ -n "$__structuredAttrs" ]; then
|
||||
OLDIFS="$IFS"
|
||||
IFS=','; cargoBuildFeaturesFlag="--features=${cargoBuildFeatures[*]}"
|
||||
IFS="$OLDIFS"
|
||||
unset OLDIFS
|
||||
else
|
||||
cargoBuildFeaturesFlag="--features=${cargoBuildFeatures// /,}"
|
||||
fi
|
||||
flagsArray+=("--features=$(concatStringsSep "," cargoBuildFeatures)")
|
||||
fi
|
||||
|
||||
(
|
||||
set -x
|
||||
@setEnv@ cargo build -j $NIX_BUILD_CORES \
|
||||
--target @rustHostPlatformSpec@ \
|
||||
--offline \
|
||||
${cargoBuildProfileFlag} \
|
||||
${cargoBuildNoDefaultFeaturesFlag} \
|
||||
${cargoBuildFeaturesFlag} \
|
||||
${cargoBuildFlags}
|
||||
)
|
||||
concatTo flagsArray cargoBuildFlags
|
||||
|
||||
echoCmd 'cargoBuildHook flags' "${flagsArray[@]}"
|
||||
@setEnv@ cargo build "${flagsArray[@]}"
|
||||
|
||||
if [ ! -z "${buildAndTestSubdir-}" ]; then
|
||||
popd
|
||||
|
@ -1,6 +1,3 @@
|
||||
declare -a checkFlags
|
||||
declare -a cargoTestFlags
|
||||
|
||||
cargoCheckHook() {
|
||||
echo "Executing cargoCheckHook"
|
||||
|
||||
@ -10,37 +7,37 @@ cargoCheckHook() {
|
||||
pushd "${buildAndTestSubdir}"
|
||||
fi
|
||||
|
||||
local flagsArray=("-j" "$NIX_BUILD_CORES")
|
||||
|
||||
if [[ -z ${dontUseCargoParallelTests-} ]]; then
|
||||
threads=$NIX_BUILD_CORES
|
||||
prependToVar checkFlags "--test-threads=$NIX_BUILD_CORES"
|
||||
else
|
||||
threads=1
|
||||
prependToVar checkFlags "--test-threads=1"
|
||||
fi
|
||||
|
||||
if [ "${cargoCheckType}" != "debug" ]; then
|
||||
cargoCheckProfileFlag="--profile ${cargoCheckType}"
|
||||
flagsArray+=("--profile" "${cargoCheckType}")
|
||||
fi
|
||||
|
||||
if [ -n "${cargoCheckNoDefaultFeatures-}" ]; then
|
||||
cargoCheckNoDefaultFeaturesFlag=--no-default-features
|
||||
flagsArray+=("--no-default-features")
|
||||
fi
|
||||
|
||||
if [ -n "${cargoCheckFeatures-}" ]; then
|
||||
cargoCheckFeaturesFlag="--features=${cargoCheckFeatures// /,}"
|
||||
flagsArray+=("--features=$(concatStringsSep "," cargoCheckFeatures)")
|
||||
fi
|
||||
|
||||
argstr="${cargoCheckProfileFlag} ${cargoCheckNoDefaultFeaturesFlag} ${cargoCheckFeaturesFlag}
|
||||
--target @rustHostPlatformSpec@ --offline ${cargoTestFlags}"
|
||||
|
||||
(
|
||||
set -x
|
||||
cargo test \
|
||||
-j $NIX_BUILD_CORES \
|
||||
${argstr} -- \
|
||||
--test-threads=${threads} \
|
||||
${checkFlags} \
|
||||
${checkFlagsArray+"${checkFlagsArray[@]}"}
|
||||
flagsArray+=(
|
||||
"--target" "@rustHostPlatformSpec@"
|
||||
"--offline"
|
||||
)
|
||||
|
||||
prependToVar checkFlags "--"
|
||||
concatTo flagsArray cargoTestFlags checkFlags checkFlagsArray
|
||||
|
||||
echoCmd 'cargoCheckHook flags' "${flagsArray[@]}"
|
||||
cargo test "${flagsArray[@]}"
|
||||
|
||||
if [[ -n "${buildAndTestSubdir-}" ]]; then
|
||||
popd
|
||||
fi
|
||||
|
@ -1,6 +1,3 @@
|
||||
declare -a checkFlags
|
||||
declare -a cargoTestFlags
|
||||
|
||||
cargoNextestHook() {
|
||||
echo "Executing cargoNextestHook"
|
||||
|
||||
@ -10,35 +7,34 @@ cargoNextestHook() {
|
||||
pushd "${buildAndTestSubdir}"
|
||||
fi
|
||||
|
||||
local flagsArray=(
|
||||
"--target" "@rustHostPlatformSpec@"
|
||||
"--offline"
|
||||
)
|
||||
|
||||
if [[ -z ${dontUseCargoParallelTests-} ]]; then
|
||||
threads=$NIX_BUILD_CORES
|
||||
flagsArray+=("-j" "$NIX_BUILD_CORES")
|
||||
else
|
||||
threads=1
|
||||
flagsArray+=("-j" "1")
|
||||
fi
|
||||
|
||||
if [ "${cargoCheckType}" != "debug" ]; then
|
||||
cargoCheckProfileFlag="--cargo-profile ${cargoCheckType}"
|
||||
flagsArray+=("--cargo-profile" "${cargoCheckType}")
|
||||
fi
|
||||
|
||||
if [ -n "${cargoCheckNoDefaultFeatures-}" ]; then
|
||||
cargoCheckNoDefaultFeaturesFlag=--no-default-features
|
||||
flagsArray+=("--no-default-features")
|
||||
fi
|
||||
|
||||
if [ -n "${cargoCheckFeatures-}" ]; then
|
||||
cargoCheckFeaturesFlag="--features=${cargoCheckFeatures// /,}"
|
||||
flagsArray+=("--features=$(concatStringsSep "," cargoCheckFeatures)")
|
||||
fi
|
||||
|
||||
argstr="${cargoCheckProfileFlag} ${cargoCheckNoDefaultFeaturesFlag} ${cargoCheckFeaturesFlag}
|
||||
--target @rustHostPlatformSpec@ --offline ${cargoTestFlags}"
|
||||
prependToVar checkFlags "--"
|
||||
concatTo flagsArray cargoTestFlags checkFlags checkFlagsArray
|
||||
|
||||
(
|
||||
set -x
|
||||
cargo nextest run \
|
||||
-j ${threads} \
|
||||
${argstr} -- \
|
||||
${checkFlags} \
|
||||
${checkFlagsArray+"${checkFlagsArray[@]}"}
|
||||
)
|
||||
echoCmd 'cargoNextestHook flags' "${flagsArray[@]}"
|
||||
cargo nextest run "${flagsArray[@]}"
|
||||
|
||||
if [[ -n "${buildAndTestSubdir-}" ]]; then
|
||||
popd
|
||||
|
@ -10,19 +10,21 @@ maturinBuildHook() {
|
||||
pushd "${buildAndTestSubdir}"
|
||||
fi
|
||||
|
||||
(
|
||||
set -x
|
||||
@setEnv@ maturin build \
|
||||
--jobs=$NIX_BUILD_CORES \
|
||||
--offline \
|
||||
--target @rustTargetPlatformSpec@ \
|
||||
--manylinux off \
|
||||
--strip \
|
||||
--release \
|
||||
--out "$dist" \
|
||||
${maturinBuildFlags-}
|
||||
local flagsArray=(
|
||||
"--jobs=$NIX_BUILD_CORES"
|
||||
"--offline"
|
||||
"--target" "@rustTargetPlatformSpec@"
|
||||
"--manylinux" "off"
|
||||
"--strip"
|
||||
"--release"
|
||||
"--out" "$dist"
|
||||
)
|
||||
|
||||
concatTo flagsArray maturinBuildFlags
|
||||
|
||||
echoCmd 'maturinBuildHook flags' "${flagsArray[@]}"
|
||||
@setEnv@ maturin build "${flagsArray[@]}"
|
||||
|
||||
if [ ! -z "${buildAndTestSubdir-}" ]; then
|
||||
popd
|
||||
fi
|
||||
|
Loading…
Reference in New Issue
Block a user