tvl-depot/users/zseri/store-ref-scanner/default.nix
zseri 1cc8aa56a4 refactor(zseri/store-ref-scanner): get rid of proc_unroll dependency
Change-Id: I0d4a8b2af814fd2870c3eb4218ee4fbaba1216f5
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4605
Tested-by: BuildkiteCI
Reviewed-by: zseri <zseri.devel@ytrizja.de>
2021-12-25 05:03:10 +00:00

49 lines
1.3 KiB
Nix

{ depot, lib, pkgs, ... }:
let
sourceFilter = name: type:
let
baseName = builtins.baseNameOf (builtins.toString name);
in
(baseName == "Cargo.toml")
|| (type == "directory" && baseName == "src")
|| (lib.hasSuffix ".rs" baseName)
;
in
pkgs.buildRustCrate rec {
pname = "store-ref-scanner";
crateName = "store-ref-scanner";
version = "0.1.0";
edition = "2021";
src = lib.cleanSourceWith { filter = sourceFilter; src = ./.; };
passthru.tests = pkgs.buildRustCrate {
pname = "store-ref-scanner-tests";
inherit crateName src version edition;
buildTests = true;
postInstall = ''
set -ex
export RUST_BACKTRACE=1
# recreate a file hierarchy as when running tests with cargo
# the source for test data
# build outputs
testRoot=target/debug
mkdir -p $testRoot
chmod +w -R .
# test harness executables are suffixed with a hash,
# like cargo does this allows to prevent name collision
# with the main executables of the crate
hash=$(basename $out)
ls -lasR $out
for file in $out/tests/*; do
f=$testRoot/$(basename $file)-$hash
cp $file $f
$f 2>&1 | tee -a $out/tests.log
done
rm -rf $out/tests
set +ex
'';
};
}