mirror of
https://codeberg.org/icewind/mill-scale.git
synced 2026-06-03 18:04:09 +02:00
only create default package if none is auto created
Some checks failed
CI / checks (push) Has been cancelled
Some checks failed
CI / checks (push) Has been cancelled
This commit is contained in:
parent
9484c39cb9
commit
8b4cbf174a
1 changed files with 48 additions and 84 deletions
132
mill-scale.nix
132
mill-scale.nix
|
|
@ -19,6 +19,7 @@ let
|
||||||
msrv = assert assertMsg hasMsrv ''"rust-version" not set in Cargo.toml''; tomlPackage.rust-version;
|
msrv = assert assertMsg hasMsrv ''"rust-version" not set in Cargo.toml''; tomlPackage.rust-version;
|
||||||
maybeWorkspace = optionalString hasWorkspace "--workspace";
|
maybeWorkspace = optionalString hasWorkspace "--workspace";
|
||||||
hasExamples = pathExists (src + /examples);
|
hasExamples = pathExists (src + /examples);
|
||||||
|
hasDefaultPackage = pathExists (src + /nix/package.nix);
|
||||||
|
|
||||||
cargoLockDeps =
|
cargoLockDeps =
|
||||||
if pathExists (src + /Cargo.lock) then
|
if pathExists (src + /Cargo.lock) then
|
||||||
|
|
@ -126,40 +127,36 @@ warnIf (! builtins ? readFileType) "Unsupported Nix version in use."
|
||||||
withOverlays = [
|
withOverlays = [
|
||||||
(import inputs.rust-overlay)
|
(import inputs.rust-overlay)
|
||||||
(final: { inputs, rust-bin, writeShellApplication, stdenvNoCC, ... } @ prev: rec {
|
(final: { inputs, rust-bin, writeShellApplication, stdenvNoCC, ... } @ prev: rec {
|
||||||
|
|
||||||
|
commonCraneArgs = {
|
||||||
|
src = filteredSrc;
|
||||||
|
strictDeps = true;
|
||||||
|
doCheck = false;
|
||||||
|
inherit ((buildDeps final)) buildInputs nativeBuildInputs;
|
||||||
|
};
|
||||||
|
allFeaturesCraneArgs = commonCraneArgs // {
|
||||||
|
cargoExtraArgs = "--locked --all-features ${maybeWorkspace}";
|
||||||
|
pname = "${crateName}-all-features";
|
||||||
|
};
|
||||||
|
noDefaultFeaturesCraneArgs = commonCraneArgs // {
|
||||||
|
cargoExtraArgs = "--locked --no-default-features ${maybeWorkspace}";
|
||||||
|
pname = "${crateName}-all-features";
|
||||||
|
};
|
||||||
|
msrvCraneArgs = commonCraneArgs // {
|
||||||
|
cargoExtraArgs = "--locked --all-features ${maybeWorkspace}";
|
||||||
|
pname = "${crateName}-msrv";
|
||||||
|
};
|
||||||
|
|
||||||
crateName = (craneLib.crateNameFromCargoToml { inherit src; }).pname;
|
crateName = (craneLib.crateNameFromCargoToml { inherit src; }).pname;
|
||||||
craneLib = (inputs.crane.mkLib final).overrideToolchain (p: p.rustToolchain);
|
craneLib = (inputs.crane.mkLib final).overrideToolchain (p: p.rustToolchain);
|
||||||
craneLibForTargets = targets: (inputs.crane.mkLib final).overrideToolchain (p: p.rustToolchain.override { inherit targets; });
|
craneLibForTargets = targets: (inputs.crane.mkLib final).overrideToolchain (p: p.rustToolchain.override { inherit targets; });
|
||||||
craneLibMsrv = (inputs.crane.mkLib final).overrideToolchain (p: p.msrvRustToolchain);
|
craneLibMsrv = (inputs.crane.mkLib final).overrideToolchain (p: p.msrvRustToolchain);
|
||||||
cargoArtifacts = craneLib.buildDepsOnly
|
|
||||||
{
|
cargoArtifacts = craneLib.buildDepsOnly commonCraneArgs;
|
||||||
src = filteredSrc;
|
cargoArtifactsAllFeatures = craneLib.buildDepsOnly allFeaturesCraneArgs;
|
||||||
strictDeps = true;
|
cargoArtifactsNoDefault = craneLib.buildDepsOnly noDefaultFeaturesCraneArgs;
|
||||||
inherit ((buildDeps final)) buildInputs nativeBuildInputs;
|
cargoArtifactsMsrv = craneLibMsrv.buildDepsOnly msrvCraneArgs;
|
||||||
};
|
|
||||||
cargoArtifactsAllFeatures = craneLib.buildDepsOnly
|
|
||||||
{
|
|
||||||
src = filteredSrc;
|
|
||||||
strictDeps = true;
|
|
||||||
cargoExtraArgs = "--locked --all-features";
|
|
||||||
pname = "${crateName}-all-features";
|
|
||||||
inherit ((buildDeps final)) buildInputs nativeBuildInputs;
|
|
||||||
};
|
|
||||||
cargoArtifactsNoDefault = craneLib.buildDepsOnly
|
|
||||||
{
|
|
||||||
src = filteredSrc;
|
|
||||||
strictDeps = true;
|
|
||||||
cargoExtraArgs = "--locked --no-default-features";
|
|
||||||
pname = "${crateName}-no-default-features";
|
|
||||||
inherit ((buildDeps final)) buildInputs nativeBuildInputs;
|
|
||||||
};
|
|
||||||
cargoArtifactsMsrv = craneLibMsrv.buildDepsOnly
|
|
||||||
{
|
|
||||||
src = filteredSrc;
|
|
||||||
strictDeps = true;
|
|
||||||
cargoExtraArgs = "--locked --all-features";
|
|
||||||
pname = "${crateName}-msrv";
|
|
||||||
inherit ((buildDeps final)) buildInputs nativeBuildInputs;
|
|
||||||
};
|
|
||||||
rustToolchain = config.toolchain prev;
|
rustToolchain = config.toolchain prev;
|
||||||
msrvRustToolchain = config.msrvToolchain prev;
|
msrvRustToolchain = config.msrvToolchain prev;
|
||||||
miriRustToolchain = config.miriToolchain prev;
|
miriRustToolchain = config.miriToolchain prev;
|
||||||
|
|
@ -189,33 +186,25 @@ warnIf (! builtins ? readFileType) "Unsupported Nix version in use."
|
||||||
|
|
||||||
pname = tomlPackage.name;
|
pname = tomlPackage.name;
|
||||||
|
|
||||||
packages = {
|
packages = (optionalAttrs (!hasDefaultPackage) {
|
||||||
default = { callPackage, craneLib, cargoArtifacts, defaultMeta, pkgs }: craneLib.buildPackage ({
|
default = { craneLib, cargoArtifacts, defaultMeta, commonCraneArgs, pkgs }: craneLib.buildPackage (commonCraneArgs // {
|
||||||
src = filteredSrc;
|
|
||||||
inherit cargoArtifacts;
|
inherit cargoArtifacts;
|
||||||
doCheck = false;
|
|
||||||
strictDeps = true;
|
|
||||||
meta = defaultMeta;
|
meta = defaultMeta;
|
||||||
inherit ((buildDeps pkgs)) buildInputs nativeBuildInputs;
|
|
||||||
} // (config.packageOpts pkgs));
|
} // (config.packageOpts pkgs));
|
||||||
} // (genAttrs config.crossTargets (
|
}) // (genAttrs config.crossTargets (
|
||||||
target: { craneLibForTargets, cargoArtifacts, defaultMeta, callPackage, crateName, pkgs }:
|
target: { craneLibForTargets, cargoArtifacts, defaultMeta, callPackage, crateName, commonCraneArgs, pkgs }:
|
||||||
let
|
let
|
||||||
targetCraneLib = craneLibForTargets [ target ];
|
targetCraneLib = craneLibForTargets [ target ];
|
||||||
crossArgs = callPackage ./crossArgs.nix { } target;
|
crossArgs = callPackage ./crossArgs.nix { } target;
|
||||||
in
|
in
|
||||||
targetCraneLib.buildPackage
|
targetCraneLib.buildPackage
|
||||||
({
|
(commonCraneArgs // {
|
||||||
src = filteredSrc;
|
|
||||||
doCheck = false;
|
|
||||||
strictDeps = true;
|
|
||||||
meta = defaultMeta // {
|
meta = defaultMeta // {
|
||||||
targetPlatform = target;
|
targetPlatform = target;
|
||||||
binarySuffix = crossArgs.BINARY_SUFFIX or "";
|
binarySuffix = crossArgs.BINARY_SUFFIX or "";
|
||||||
};
|
};
|
||||||
pname = "${crateName}-${target}";
|
pname = "${crateName}-${target}";
|
||||||
cargoExtraArgs = "--target ${target}";
|
cargoExtraArgs = "--target ${target}";
|
||||||
inherit ((buildDeps pkgs)) buildInputs nativeBuildInputs;
|
|
||||||
} // crossArgs // (config.packageOpts pkgs))
|
} // crossArgs // (config.packageOpts pkgs))
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
@ -236,6 +225,10 @@ warnIf (! builtins ? readFileType) "Unsupported Nix version in use."
|
||||||
, cargoArtifactsAllFeatures
|
, cargoArtifactsAllFeatures
|
||||||
, cargoArtifactsNoDefault
|
, cargoArtifactsNoDefault
|
||||||
, crateName
|
, crateName
|
||||||
|
, commonCraneArgs
|
||||||
|
, allFeaturesCraneArgs
|
||||||
|
, noDefaultFeaturesCraneArgs
|
||||||
|
, msrvCraneArgs
|
||||||
, pkgs
|
, pkgs
|
||||||
, ...
|
, ...
|
||||||
}:
|
}:
|
||||||
|
|
@ -243,76 +236,47 @@ warnIf (! builtins ? readFileType) "Unsupported Nix version in use."
|
||||||
packageOpts = config.packageOpts pkgs;
|
packageOpts = config.packageOpts pkgs;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
test = craneLib.cargoTest ({
|
test = craneLib.cargoTest (commonCraneArgs // {
|
||||||
src = filteredSrc;
|
|
||||||
inherit cargoArtifacts;
|
inherit cargoArtifacts;
|
||||||
cargoExtraArgs = "--locked --all-targets --workspace";
|
doCheck = true;
|
||||||
inherit ((buildDeps pkgs)) buildInputs nativeBuildInputs;
|
cargoExtraArgs = "--locked --all-targets ${maybeWorkspace}";
|
||||||
} // packageOpts);
|
} // packageOpts);
|
||||||
clippy = craneLib.cargoClippy ({
|
clippy = craneLib.cargoClippy (commonCraneArgs // {
|
||||||
src = filteredSrc;
|
|
||||||
inherit cargoArtifacts;
|
inherit cargoArtifacts;
|
||||||
strictDeps = true;
|
|
||||||
cargoClippyExtraArgs = "--all-targets ${maybeWorkspace} -- --deny warnings";
|
cargoClippyExtraArgs = "--all-targets ${maybeWorkspace} -- --deny warnings";
|
||||||
inherit ((buildDeps pkgs)) buildInputs nativeBuildInputs;
|
|
||||||
} // packageOpts);
|
} // packageOpts);
|
||||||
} // (optionalAttrs hasMsrv
|
} // (optionalAttrs hasMsrv
|
||||||
{
|
{
|
||||||
msrv = craneLibMsrv.buildPackage
|
msrv = craneLibMsrv.buildPackage
|
||||||
({
|
(msrvCraneArgs // {
|
||||||
src = filteredSrc;
|
|
||||||
pname = "${crateName}-msrv";
|
pname = "${crateName}-msrv";
|
||||||
cargoArtifacts = cargoArtifactsMsrv;
|
cargoArtifacts = cargoArtifactsMsrv;
|
||||||
strictDeps = true;
|
|
||||||
doCheck = false;
|
|
||||||
cargoBuildCommand = "cargo check";
|
cargoBuildCommand = "cargo check";
|
||||||
cargoExtraArgs = "--release --locked --all-targets --all-features ${maybeWorkspace}";
|
cargoExtraArgs = "--release --locked --all-targets --all-features ${maybeWorkspace}";
|
||||||
installPhaseCommand = "mkdir $out";
|
installPhaseCommand = "mkdir $out";
|
||||||
inherit ((buildDeps pkgs)) buildInputs nativeBuildInputs;
|
|
||||||
} // packageOpts);
|
} // packageOpts);
|
||||||
}) // (optionalAttrs hasFeatures {
|
}) // (optionalAttrs hasFeatures {
|
||||||
test-all-features = craneLib.cargoTest ({
|
test-all-features = craneLib.cargoTest (allFeaturesCraneArgs // {
|
||||||
src = filteredSrc;
|
|
||||||
pname = "${crateName}-all-features";
|
|
||||||
strictDeps = true;
|
|
||||||
cargoArtifacts = cargoArtifactsAllFeatures;
|
cargoArtifacts = cargoArtifactsAllFeatures;
|
||||||
cargoExtraArgs = "--locked --all-targets --all-features ${maybeWorkspace}";
|
doCheck = true;
|
||||||
inherit ((buildDeps pkgs)) buildInputs nativeBuildInputs;
|
|
||||||
} // packageOpts);
|
} // packageOpts);
|
||||||
clippy-all-features = craneLib.cargoClippy ({
|
clippy-all-features = craneLib.cargoClippy (allFeaturesCraneArgs // {
|
||||||
src = filteredSrc;
|
|
||||||
pname = "${crateName}-all-features";
|
|
||||||
strictDeps = true;
|
|
||||||
cargoArtifacts = cargoArtifactsAllFeatures;
|
cargoArtifacts = cargoArtifactsAllFeatures;
|
||||||
cargoClippyExtraArgs = "--all-targets ${maybeWorkspace} --all-features -- --deny warnings";
|
cargoClippyExtraArgs = "--all-targets ${maybeWorkspace} --all-features -- --deny warnings";
|
||||||
inherit ((buildDeps pkgs)) buildInputs nativeBuildInputs;
|
|
||||||
} // packageOpts);
|
} // packageOpts);
|
||||||
}) // (optionalAttrs hasDefaultFeatures {
|
}) // (optionalAttrs hasDefaultFeatures {
|
||||||
test-no-default-features = craneLib.cargoTest ({
|
test-no-default-features = craneLib.cargoTest (noDefaultFeaturesCraneArgs // {
|
||||||
src = filteredSrc;
|
|
||||||
pname = "${crateName}-no-default-features";
|
|
||||||
strictDeps = true;
|
|
||||||
cargoArtifacts = cargoArtifactsNoDefault;
|
cargoArtifacts = cargoArtifactsNoDefault;
|
||||||
cargoExtraArgs = "--locked --all-targets --no-default-features ${maybeWorkspace}";
|
doCheck = true;
|
||||||
inherit ((buildDeps pkgs)) buildInputs nativeBuildInputs;
|
|
||||||
} // packageOpts);
|
} // packageOpts);
|
||||||
clippy-no-default-features = craneLib.cargoClippy ({
|
clippy-no-default-features = craneLib.cargoClippy (noDefaultFeaturesCraneArgs // {
|
||||||
inherit src;
|
|
||||||
pname = "${crateName}-no-default-features";
|
|
||||||
strictDeps = true;
|
|
||||||
cargoArtifacts = cargoArtifactsNoDefault;
|
cargoArtifacts = cargoArtifactsNoDefault;
|
||||||
cargoClippyExtraArgs = "--all-targets ${maybeWorkspace} --no-default-features -- --deny warnings";
|
cargoClippyExtraArgs = "--all-targets ${maybeWorkspace} --no-default-features -- --deny warnings";
|
||||||
inherit ((buildDeps pkgs)) buildInputs nativeBuildInputs;
|
|
||||||
} // packageOpts);
|
} // packageOpts);
|
||||||
}) // (optionalAttrs hasExamples {
|
}) // (optionalAttrs hasExamples {
|
||||||
examples = craneLibMsrv.buildPackage ({
|
examples = craneLibMsrv.buildPackage (commonCraneArgs // {
|
||||||
src = filteredSrc;
|
|
||||||
pname = "${crateName}-examples";
|
pname = "${crateName}-examples";
|
||||||
cargoArtifacts = if hasFeatures then cargoArtifactsAllFeatures else cargoArtifacts;
|
|
||||||
strictDeps = true;
|
|
||||||
doCheck = false;
|
|
||||||
cargoExtraArgs = "--examples ${optionalString hasFeatures "--all-features"} ${maybeWorkspace}";
|
cargoExtraArgs = "--examples ${optionalString hasFeatures "--all-features"} ${maybeWorkspace}";
|
||||||
inherit ((buildDeps pkgs)) buildInputs nativeBuildInputs;
|
|
||||||
} // packageOpts);
|
} // packageOpts);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue