nix: fix tests and reorganize flake outputs
This commit is contained in:
parent
acc8d39fd6
commit
6ee5ab066a
5 changed files with 56 additions and 70 deletions
54
default.nix
54
default.nix
|
@ -1,48 +1,28 @@
|
|||
{ system ? builtins.currentSystem, git_version ? null, }:
|
||||
{ system ? builtins.currentSystem, git_version ? "unknown", }:
|
||||
|
||||
with import ./nix/common.nix;
|
||||
|
||||
let
|
||||
pkgs = import pkgsSrc { };
|
||||
pkgs = import nixpkgs { };
|
||||
compile = import ./nix/compile.nix;
|
||||
|
||||
build_debug_and_release = (target: {
|
||||
debug = (compile {
|
||||
inherit system target git_version pkgsSrc cargo2nixOverlay;
|
||||
release = false;
|
||||
}).workspace.garage { compileMode = "build"; };
|
||||
compileWith = args: compile ({
|
||||
inherit system git_version nixpkgs;
|
||||
crane = flake.inputs.crane;
|
||||
rust-overlay = flake.inputs.rust-overlay;
|
||||
} // args);
|
||||
|
||||
release = (compile {
|
||||
inherit system target git_version pkgsSrc cargo2nixOverlay;
|
||||
release = true;
|
||||
}).workspace.garage { compileMode = "build"; };
|
||||
});
|
||||
|
||||
test = (rustPkgs:
|
||||
pkgs.symlinkJoin {
|
||||
name = "garage-tests";
|
||||
paths =
|
||||
builtins.map (key: rustPkgs.workspace.${key} { compileMode = "test"; })
|
||||
(builtins.attrNames rustPkgs.workspace);
|
||||
});
|
||||
build_release = target: (compile {
|
||||
inherit target;
|
||||
release = true;
|
||||
}).garage;
|
||||
|
||||
in {
|
||||
pkgs = {
|
||||
amd64 = build_debug_and_release "x86_64-unknown-linux-musl";
|
||||
i386 = build_debug_and_release "i686-unknown-linux-musl";
|
||||
arm64 = build_debug_and_release "aarch64-unknown-linux-musl";
|
||||
arm = build_debug_and_release "armv6l-unknown-linux-musleabihf";
|
||||
};
|
||||
test = {
|
||||
amd64 = test (compile {
|
||||
inherit system git_version pkgsSrc cargo2nixOverlay;
|
||||
target = "x86_64-unknown-linux-musl";
|
||||
features = [
|
||||
"garage/bundled-libs"
|
||||
"garage/k2v"
|
||||
"garage/lmdb"
|
||||
"garage/sqlite"
|
||||
];
|
||||
});
|
||||
releasePackages = {
|
||||
amd64 = build_release "x86_64-unknown-linux-musl";
|
||||
i386 = build_release "i686-unknown-linux-musl";
|
||||
arm64 = build_release "aarch64-unknown-linux-musl";
|
||||
arm = build_release "armv6l-unknown-linux-musleabihf";
|
||||
};
|
||||
flakePackages = flake.packages.${system};
|
||||
}
|
||||
|
|
41
flake.nix
41
flake.nix
|
@ -23,29 +23,28 @@
|
|||
flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
compileFor = target: release: (compile {
|
||||
inherit system git_version target nixpkgs crane rust-overlay release;
|
||||
});
|
||||
packageFor = target: release: (compileFor target release).garage;
|
||||
in
|
||||
{
|
||||
packages =
|
||||
let
|
||||
packageFor = target: release: (compile {
|
||||
inherit system git_version target nixpkgs crane rust-overlay release;
|
||||
}).garage;
|
||||
in
|
||||
{
|
||||
# default = native release build
|
||||
default = packageFor null true;
|
||||
# other = cross-compiled, statically-linked builds
|
||||
amd64 = packageFor "x86_64-unknown-linux-musl" true;
|
||||
i386 = packageFor "i686-unknown-linux-musl" true;
|
||||
arm64 = packageFor "aarch64-unknown-linux-musl" true;
|
||||
arm = packageFor "armv6l-unknown-linux-musl" true;
|
||||
# non-optimized packages
|
||||
dev = packageFor null false;
|
||||
dev-amd64 = packageFor "x86_64-unknown-linux-musl" false;
|
||||
dev-i386 = packageFor "i686-unknown-linux-musl" false;
|
||||
dev-arm64 = packageFor "aarch64-unknown-linux-musl" false;
|
||||
dev-arm = packageFor "armv6l-unknown-linux-musl" false;
|
||||
};
|
||||
packages = {
|
||||
# default = native release build
|
||||
default = packageFor null true;
|
||||
|
||||
# <arch> = cross-compiled, statically-linked release builds
|
||||
amd64 = packageFor "x86_64-unknown-linux-musl" true;
|
||||
i386 = packageFor "i686-unknown-linux-musl" true;
|
||||
arm64 = packageFor "aarch64-unknown-linux-musl" true;
|
||||
arm = packageFor "armv6l-unknown-linux-musl" true;
|
||||
|
||||
# dev = native dev build
|
||||
dev = packageFor null false;
|
||||
|
||||
# test = cargo test
|
||||
test = (compileFor null false).garage-test;
|
||||
};
|
||||
|
||||
# ---- developpment shell, for making native builds only ----
|
||||
devShells =
|
||||
|
|
|
@ -10,9 +10,9 @@ let
|
|||
|
||||
flake = (import flake-compat { system = builtins.currentSystem; src = ../.; });
|
||||
in
|
||||
rec {
|
||||
pkgsSrc = flake.defaultNix.inputs.nixpkgs;
|
||||
cargo2nix = flake.defaultNix.inputs.cargo2nix;
|
||||
cargo2nixOverlay = cargo2nix.overlays.default;
|
||||
devShells = builtins.getAttr builtins.currentSystem flake.defaultNix.devShells;
|
||||
|
||||
{
|
||||
flake = flake.defaultNix;
|
||||
nixpkgs = flake.defaultNix.inputs.nixpkgs;
|
||||
devShells = flake.defaultNix.devShells.${builtins.currentSystem};
|
||||
}
|
||||
|
|
|
@ -46,7 +46,7 @@ let
|
|||
inherit (pkgs) lib stdenv;
|
||||
|
||||
toolchainFn = (p: p.rust-bin.stable."1.78.0".default.override {
|
||||
targets = lib.optional (target != null) [ rustTarget ];
|
||||
targets = lib.optionals (target != null) [ rustTarget ];
|
||||
extensions = [
|
||||
"rust-src"
|
||||
"rustfmt"
|
||||
|
@ -109,10 +109,10 @@ let
|
|||
{
|
||||
inherit src;
|
||||
pname = "garage";
|
||||
version = git_version;
|
||||
version = "none";
|
||||
|
||||
strictDeps = true;
|
||||
cargoExtraArgs = "--features ${featuresStr}";
|
||||
cargoExtraArgs = "--locked --features ${featuresStr}";
|
||||
|
||||
nativeBuildInputs = with pkgs; ([
|
||||
pkg-config
|
||||
|
@ -123,8 +123,6 @@ let
|
|||
mold
|
||||
]);
|
||||
|
||||
GIT_VERSION = git_version;
|
||||
|
||||
CARGO_PROFILE = if release then "release" else "dev";
|
||||
CARGO_BUILD_RUSTFLAGS =
|
||||
lib.concatStringsSep
|
||||
|
@ -161,11 +159,20 @@ in rec {
|
|||
garage = craneLib.buildPackage (commonArgs // {
|
||||
cargoArtifacts = garage-deps;
|
||||
doCheck = false;
|
||||
version = git_version;
|
||||
GIT_VERSION = git_version;
|
||||
});
|
||||
|
||||
garage-test-deps = craneLib.buildDepsOnly (commonArgs // {
|
||||
pname = "garage-test";
|
||||
cargoArtifacts = garage;
|
||||
cargoExtraArgs = "${commonArgs.cargoExtraArgs} --tests --workspace";
|
||||
CARGO_PROFILE = "test";
|
||||
});
|
||||
|
||||
garage-test = craneLib.cargoTest (commonArgs // {
|
||||
cargoTestExtraArgs = "--workspace";
|
||||
cargoArtifacts = garage;
|
||||
cargoArtifacts = garage-test-deps;
|
||||
CARGO_PROFILE = "test";
|
||||
});
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
with import ./nix/common.nix;
|
||||
|
||||
let
|
||||
pkgs = import pkgsSrc {
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
};
|
||||
winscp = (import ./nix/winscp.nix) pkgs;
|
||||
|
|
Loading…
Add table
Reference in a new issue