Releases: ipetkov/crane
Releases · ipetkov/crane
v0.15.1
0.15.1 - 2023-11-30
Changed
buildDepsOnly
will now assumecargoTestExtraArgs = "--no-run";
if not
specified (since there is no point to trying to run tests with the stripped
sources). To get the old behavior back, setcargoTestExtraArgs = "";
Fixed
buildTrunkPackage
'spreConfigure
script to fail quicker with a more
obvious error message if dependencies at not appropriately met
v0.15.0
0.15.0 - 2023-11-05
Added
cargoDeny
added for runningcargo-deny
.installCargoArtifactsHook
will now pass along the contents of
$zstdCompressionExtraArgs
as arguments tozstd
when compressing artifacts.
This allows for tailoring compression behavior, for example, by setting
zstdCompressionExtraArgs = "-19";
on the derivation.
Changed
- The
use-zstd
artifact installation mode now uses a chained, incremental
approach to avoid redundancy. Old behavior (taking a full snapshot of the
cargo artifacts) can be achieved by settingdoCompressAndInstallFullArchive = true
. - The default
installCargoArtifactsMode
has been changed touse-zstd
,
meaning cargo artifacts will be compressed to a series of incremental, zstd
compressed tarballs across derivations. To get the old behavior back, set
installCargoArtifactsMode = "use-symlink"
to any derivation which produces
cargo artifacts. - All dependencies (outside of
nixpkgs
) have been dropped from the (main)
flake.lock file so they do not pollute downstream projects' lock files.
Fixed
mkDummySrc
now properly handles file cleaning (and file including) when a
build is invoked with a--store ...
override
v0.14.3
0.14.3 - 2023-10-17
Changed
craneUtils
will now be built with therustPlatform
provided by nixpkgs
instead of the currently configured toolchain. This should hopefully result in
fewer surprises for those testing with really old MSRV toolchains.devShell
will now additionally includeclippy
andrustfmt
from the
currently configured toolchain
Fixed
replaceCargoLockHook
now runs as aprePatch
hook (rather
thanpostUnpack
) which correctly replaces theCargo.lock
in the source
directory rather than the parent directory
v0.14.2
0.14.2 - 2023-10-15
Added
replaceCargoLockHook
can now be used to easily replace or insert a
Cargo.lock
file in the current derivation
Changed
cargoAudit
will pass--ignore yanked
by default ifcargoAuditExtraArgs
are not specified. This is becausecargo-audit
cannot check for yanked
crates from inside of the sandbox. To get the old behavior back, set
cargoAuditExtraArgs = "";
.mkCargoDerivation
(and by extension anything which delegates to it) will now
automatically use the value ofcargoLock
or the contents of
cargoLockContents
/cargoLockParsed
to replace the workspaceCargo.lock
file. To disable this behavior, setdoNotReplaceCargoLock = true;
.
Fixed
- Fixed handling of Cargo workspace inheritance for git-dependencies where said
crate relies on reading non-TOML metadata (i.e. comments) from its Cargo.toml
at build time. (#407) - Fixed handling of dummy target names to avoid issues with
cargo doc
.
(#410) - When using
installCargoArtifactsMode = "use-zstd";
all files will be marked
as user-writable while compressing removeReferencesToVendoredSources
now signsaarch64-darwin
binaries. (#418)
v0.14.1
v0.14.0
0.14.0 - 2023-09-21
Added
- Added
devShell
, a thin wrapper aroundpkgs.mkShell
which automatically
providescargo
andrustc
. - Added the ability to specify output hashes of git dependencies for fully
offline evaluations. TheoutputHashes
attribute can now be optionally
specified invendorCargoDeps
,vendorGitDeps
,vendorMultipleCargoDeps
, or
anything else which delegates to them.
Changed
- Breaking (technically):
buildDepsOnly
,buildPackage
,cargoBuild
,
cargoClippy
,cargoDoc
,cargoLlvmCov
, andcargoTest
's defaults have
been changed such that ifcargoExtraArgs
have not been set, a default value
of--locked
will be used. This ensures that a project's committed
Cargo.lock
is exactly what is expected (without implicit changes at build
time) but this may end up rejecting builds which were previously passing. To
get the old behavior back, setcargoExtraArgs = "";
- Breaking:
cargoDoc
will no longer install cargo artifacts by default.
SetdoInstallCargoArtifacts = true;
to get the old behavior back. cargoDoc
will now install generated documentation in$out/share/doc
- Fixed a bug when testing proc macro crates with
cargoNextest
on macOS.
(#376) - Replaced various internal usages of
runCommandLocal
withrunCommand
for
more optimal behavior when downloading cached artifacts
v0.13.1
0.13.1 - 2023-08-22
Changed
buildTrunkPackage
will now usedart-sass
instead ofnodePackages.sass
- Vendoring git dependencies will now always resolve symlinks inside of a
crate's directory. This allows for symlinks inside of a crate's directory to
possibly refer to files at the root of the git repo itself (via symlink) and
have those contents preserved during vendoring.
v0.13.0
0.13.0 - 2023-08-07
Added
buildPackage
now supports installingdylib
targets- Added support for sparse registries
Changed
- Breaking: dropped compatibility for Nix versions below 2.13.3
- Breaking: dropped compatibility for nixpkgs-22.05. nixpkgs-23.05 and
- Breaking (technically): if
buildPackage
is called without setting
cargoArtifacts
, the defaultbuildDepsOnly
invocation will now stop running
any installation hooks - Breaking (technically):
buildPackage
no longer installs cargo binary
dependencies (i.e. when thebindeps
feature is used) by default inheritCargoArtifactsHook
will now symlink dependency.rlib
and.rmeta
files. This means that derivations which reuse existing cargo artifacts will
run faster as fewer files (and bytes!) need to be copied around. To disable
this behavior, setdoNotLinkInheritedArtifacts = true;
.cargoTarpaulin
will now setdoNotLinkInheritedArtifacts = true;
unless
otherwise specified- Update
crane-utils
dependencies for successful build in nightly Rust (2023-06-28)
v0.12.2
v0.12.1
0.12.1 - 2023-04-10
Added
vendorMultipleCargoDeps
can now be used to vendor crates from multiple
distinctCargo.lock
files. Notably this allows for building the standard
library (via-Z build-std
or equivalent) since both the project's
and the Rust toolchain'sCargo.lock
files can be vendored together
Changed
vendorCargoRegistries
now accepts aregistries
parameter from the caller.
If not specified, it will be computed viacargoConfigs
. AlsocargoConfigs
is now an optional parameter which will default to[]
if not specified.
Fixed
vendorCargoDeps
correctly accepts arguments which have not setsrc
, so
long as one ofcargoLock
,cargoLockContents
, orcargoLockParsed
is set