nix: fix tests and reorganize flake outputs
Some checks failed
ci/woodpecker/pr/debug Pipeline failed
ci/woodpecker/push/debug Pipeline failed

This commit is contained in:
Alex 2025-02-02 19:52:41 +01:00
parent acc8d39fd6
commit 6ee5ab066a
5 changed files with 56 additions and 70 deletions

View file

@ -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};
}

View file

@ -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 =

View file

@ -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};
}

View file

@ -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";
});
}

View file

@ -3,7 +3,7 @@
with import ./nix/common.nix;
let
pkgs = import pkgsSrc {
pkgs = import nixpkgs {
inherit system;
};
winscp = (import ./nix/winscp.nix) pkgs;