buildRustCrate: move the color loggign & remove some runtime checks

The expression is already long and confusing enough without the color
stuff sprinkled in. Moving it to a dedicated file makes sense.

I switched a bit of the color support code to pure Nix since there
wasn't much point in doing that in bash while we can just do it in Nix.
wip/yesman
Andreas Rammhold 5 years ago
parent 0aac0e8d2c
commit 50b2ef28f7
No known key found for this signature in database
GPG Key ID: E432E410B5E48C86
  1. 10
      pkgs/build-support/rust/build-rust-crate/build-crate.nix
  2. 52
      pkgs/build-support/rust/build-rust-crate/default.nix
  3. 33
      pkgs/build-support/rust/build-rust-crate/log.nix

@ -15,16 +15,6 @@
rustcMeta = "-C metadata=${metadata} -C extra-filename=-${metadata}";
in ''
runHook preBuild
norm=""
bold=""
green=""
boldgreen=""
if [[ "${colors}" == "always" ]]; then
norm="$(printf '\033[0m')" #returns to "normal"
bold="$(printf '\033[0;1m')" #set bold
green="$(printf '\033[0;32m')" #set green
boldgreen="$(printf '\033[0;1;32m')" #set bold, and set green.
fi
${echo_build_heading colors}
${noisily colors verbose}

@ -14,7 +14,7 @@ let
else stdenv.hostPlatform.parsed.kernel.name;
makeDeps = dependencies: crateRenames:
(lib.concatMapStringsSep " " (dep:
lib.concatMapStringsSep " " (dep:
let
extern = lib.replaceStrings ["-"] ["_"] dep.libName;
name = if lib.hasAttr dep.crateName crateRenames then
@ -25,42 +25,20 @@ let
" --extern ${name}=${dep.lib}/lib/lib${extern}-${dep.metadata}.rlib"
else
" --extern ${name}=${dep.lib}/lib/lib${extern}-${dep.metadata}${stdenv.hostPlatform.extensions.sharedLibrary}")
) dependencies);
echo_build_heading = colors: ''
echo_build_heading() {
start=""
end=""
if [[ "${colors}" == "always" ]]; then
start="$(printf '\033[0;1;32m')" #set bold, and set green.
end="$(printf '\033[0m')" #returns to "normal"
fi
if (( $# == 1 )); then
echo "$start""Building $1""$end"
else
echo "$start""Building $1 ($2)""$end"
fi
}
'';
noisily = colors: verbose: ''
noisily() {
start=""
end=""
if [[ "${colors}" == "always" ]]; then
start="$(printf '\033[0;1;32m')" #set bold, and set green.
end="$(printf '\033[0m')" #returns to "normal"
fi
${lib.optionalString verbose ''
echo -n "$start"Running "$end"
echo $@
''}
$@
}
'';
configureCrate = import ./configure-crate.nix { inherit lib stdenv echo_build_heading noisily makeDeps; };
buildCrate = import ./build-crate.nix { inherit lib stdenv echo_build_heading noisily makeDeps rust; };
installCrate = import ./install-crate.nix;
) dependencies;
inherit (import ./log.nix { inherit lib; }) noisily echo_build_heading;
configureCrate = import ./configure-crate.nix {
inherit lib stdenv echo_build_heading noisily makeDeps;
};
buildCrate = import ./build-crate.nix {
inherit lib stdenv echo_build_heading noisily makeDeps rust;
};
installCrate = import ./install-crate.nix;
in
crate_: lib.makeOverridable ({ rust, release, verbose, features, buildInputs, crateOverrides,

@ -0,0 +1,33 @@
{ lib }:
{
echo_build_heading = colors: ''
echo_build_heading() {
start=""
end=""
${lib.optionalString (colors == "always") ''
start="$(printf '\033[0;1;32m')" #set bold, and set green.
end="$(printf '\033[0m')" #returns to "normal"
''}
if (( $# == 1 )); then
echo "$start""Building $1""$end"
else
echo "$start""Building $1 ($2)""$end"
fi
}
'';
noisily = colors: verbose: ''
noisily() {
start=""
end=""
${lib.optionalString (colors == "always") ''
start="$(printf '\033[0;1;32m')" #set bold, and set green.
end="$(printf '\033[0m')" #returns to "normal"
''}
${lib.optionalString verbose ''
echo -n "$start"Running "$end"
echo $@
''}
$@
}
'';
}
Loading…
Cancel
Save