Commit Graph

176 Commits

Author SHA1 Message Date
Dawid Ciężarkiewicz
0da36bc7dd
fix: cargo docs breaking in buildDepsOnly of workspaces (#410) 2023-10-03 18:59:04 -07:00
Marijan Petričević
a863ce3c79
fix #404 - lib/cargoTarpaulin: lowercase --out xml argument (#405) 2023-10-01 11:22:09 -07:00
Ivan Petkov
67f100acc0
buildPackage: fix issue with inheriting default depsOnly artifacts (#397) 2023-09-23 23:23:33 +00:00
Jörg Thalheim
16f5732c14
allow to pass outputHashes to crane (#266)
This makes it possible to evaluate crane in a nixos test without network
as well as allow to backup all fetched input derivations properly in a
binary cache, whereas fetchGit will fallback to downloading from a
repository, which also requires a `git` binary to be present.

Co-authored-by: Ivan Petkov <ivanppetkov@gmail.com>
2023-09-22 04:08:53 +00:00
Ivan Petkov
8b4f7a4dab
various: switch to using runCommand to improve caching (#384)
For example, commands which extract a tarball should be cached (i.e
should use `runCommand` not `runCommandLocal`) because it allows builds
to download the unpacked result instead of having to write both to the
store
2023-09-04 00:33:25 +00:00
Rebecca Turner
7b92b595c9
Add devshell helper (#378) 2023-09-03 10:33:10 -07:00
Ivan Petkov
ecf151658e
cargoDoc: do not install cargo artifacts by default (#381)
* Also install generated docs
2023-09-03 10:29:13 -07:00
Rebecca Turner
174604795d
Add workaround for cargo-nextest bug (#376)
Prevents this error:

```
(...)
dyld: Library not loaded: @rpath/libtest-77ee8c29c330e4a3.dylib
  Referenced from: /private/tmp/holochain_repo/target/fast-test/deps/hdk_derive-73ec051829ad694a
  Reason: image not found
error: creating test list failed
Caused by:
  for `hdk_derive::proc-macro/hdk_derive`, running command `/private/tmp/holochain_repo/target/fast-test/deps/hdk_derive-73ec051829ad694a --list --format terse` failed
Caused by:
  command ["/private/tmp/holochain_repo/target/fast-test/deps/hdk_derive-73ec051829ad694a", "--list", "--format", "terse"] exited with code <signal 6>
Error: Process completed with exit code 104.
```

https://github.com/nextest-rs/nextest/issues/267
2023-08-30 23:44:00 +00:00
Ivan Petkov
43db881168
various: change cargoExtraArgs defaults to include --locked (#373) 2023-08-27 19:17:58 +00:00
Ivan Petkov
7809d36971
downloadCargoPackageFromGit: resolve symlinks in crate directory (#367) 2023-08-12 01:26:37 +00:00
Leonardo Eugênio
1b8653ad52
Trunk: use native dart-sass (#360)
Replace the javascript version of dart-sass with a native binary version.
Should improve built times and reduce disk usage.

---------

Co-authored-by: Ivan Petkov <ivanppetkov@gmail.com>
2023-08-11 00:38:14 +00:00
Ivan Petkov
8b08e96c9a
inheritCargoArtifactsHook: fix doNotLinkInheritedArtifacts handling (#357)
* This ensures that when doNotLinkInheritedArtifacts is set, artifact
  symlinks are deeply resolved
2023-07-07 23:28:38 +00:00
Ivan Petkov
33cfcdf33b
Fix tests to run on darwin (#348) 2023-06-29 23:50:17 +00:00
Ivan Petkov
116b32c30b
inheritCargoArtifactsHook: allow disabling symlink behavior (#345) 2023-06-21 01:13:46 +00:00
Ivan Petkov
bd65e0e473
inheritCargoArtifactsHook: symlink dependency rlib and rmeta files (#344)
* cargoTarpaulin: do not clean by default

---------

Co-authored-by: Philipp Mildenberger <philipp@mildenberger.me>
Co-authored-by: Philipp Mildenberger <philipp.mildenberger@artfabrik.at>
2023-06-19 21:50:17 +00:00
Roman Volosatovs
9f6e7286c5
fix: do not install bindep artifacts by default (#298)
- Add support for installing crates utilizing `bindeps` feature
by only installing binaries of workspace packages

---------

Signed-off-by: Roman Volosatovs <rvolosatovs@riseup.net>
Co-authored-by: Ivan Petkov <ivanppetkov@gmail.com>
2023-06-18 23:41:59 +00:00
James Baker
75f7d715f8
Natively support sparse registries (#324)
With Cargo 1.68.0, sparse registries were made stable. With sparse
registries, index metadata is stored in an HTTP api rather than in
a git repository.

As relevant to Crane, the relevant changes are mostly that registries
do not always start with `registry+` and mostly start with `registry+`
or `sparse+` depending on whether the registry is sparse or not.

This PR adjusts the core of Crane to differentiate between `registry`
and `sparse`, and adds a new sparse registry factory to make things
easy.

---------

Co-authored-by: Ivan Petkov <ivanppetkov@gmail.com>
2023-06-13 02:03:18 +00:00
Ivan Petkov
057d95721e
Add support for installing dylib crate types (#340)
---------

Signed-off-by: Roman Volosatovs <rvolosatovs@riseup.net>
Co-authored-by: Roman Volosatovs <rvolosatovs@riseup.net>
2023-06-08 01:00:25 +00:00
Uosis
3acc7230ee
Clean install hooks from buildDepsOnly invocation (#334)
---------

Co-authored-by: Ivan Petkov <ivanppetkov@gmail.com>
2023-06-07 05:38:53 +00:00
Quentin
bff08cbecc
fix(Trunk): Set the wasm-opt version as expected by Trunk (#338)
Trunk expect a version number with this specific format: "version_{num}"
2023-06-06 20:54:50 -07:00
Leonardo Eugênio
35110cccf2
fix: Strip store references in buildTrunkPackage (#330)
The output of buildTrunkPackage should never have runtime dependencies.
Not only are they redundant but they also increase the closure greatly.
2023-05-25 02:17:57 +00:00
Antti Keränen
99de890b6e
Keep "resolver" when cleaning Cargo.toml (#327)
For projects using version != 2021 and resolver = 2, the resolver
information needs to be kept or otherwise the dependency build might
fail.

---------

Co-authored-by: Ivan Petkov <ivanppetkov@gmail.com>
2023-05-18 21:03:02 -07:00
Leonardo Eugênio
7d74bfafea
fix: building trunk projects that use sass, add test (#314) 2023-05-02 17:23:35 -07:00
Leonardo Eugênio
db21a44eb0
Trunk support (#299)
[Trunk](https://trunkrs.dev) is a tool that allow you to build web apps
using Rust and webassembly, including compiling scss, and distributing
other assets.

Adds `craneLib.buildTrunkPackage`, a function that builds a Trunk
project returning a directory with the resulting dist files for that
project

---------

Co-authored-by: Ivan Petkov <ivanppetkov@gmail.com>
2023-04-29 12:34:39 -07:00
Ivan Petkov
0c9f468ff0
buildPackage: don't inherit installPhase when calling buildDepsOnly (#297) 2023-04-11 01:37:58 +00:00
Ivan Petkov
aab6d4f865
vendorMultipleCargoDeps: fix deduplication logic (#289)
* We should ignore the package.dependencies array since it can cause
  problems
2023-04-02 23:46:24 +00:00
Ivan Petkov
f491bee4f9
Add support for building standard library crates (#287)
* vendorCargoRegistries: accept `registries` from the caller if specified
* Add vendorMultipleCargoDeps
2023-04-02 17:57:17 +00:00
Ivan Petkov
6736e8be8e
crateNameFromCargoToml: make warnings more useful (#282)
* The warning now shows a more in-depth explanation on how to silence it
2023-03-29 04:21:28 +00:00
Ivan Petkov
ec69da6973
vendorCargoDeps: skip checking for cargoConfigs if src not set (#278) 2023-03-22 04:57:14 +00:00
Ivan Petkov
6fd78bc66a
Add path as a convenience wrapper around builtins.path (#273) 2023-03-19 20:57:15 -07:00
figsoda
77435dad14
feat: add cargoLockParsed option (#270)
---------

Co-authored-by: Ivan Petkov <ivanppetkov@gmail.com>
2023-03-20 00:33:17 +00:00
figsoda
475de74fa2
feat: add cargoLlvmCov (#267)
* feat: add cargoLlvmCov
* cargoHelperFunctionsHook: prefer `--release` over `--profile release`
Some tools (e.g. cargo-llvm-cov) don't understand `--profile release` as
an alias for `--release`, so `cargoWithProfile` should prefer passing
`--release` when `$CARGO_PROFILE` == "release"

---------

Co-authored-by: Ivan Petkov <ivanppetkov@gmail.com>
2023-03-19 23:44:14 +00:00
Roman Volosatovs
5291dd0aa7
feat: add support for bindeps feature (#258)
Write a `main.rs` to `src/bin/dummy` within the generated dummy source,
rather than `src/main.rs` to account for `illegalBin` test case

Signed-off-by: Roman Volosatovs <rvolosatovs@riseup.net>
2023-03-06 17:24:21 -08:00
Ivan Petkov
d777dbc167
mkDummySrc: avoid invalidation if the source name has two hashes (#248) 2023-02-19 22:43:11 +00:00
Ivan Petkov
34633dd0d7
buildDepsOnly: warn if both src and dummySrc are set (#247) 2023-02-19 17:46:57 +00:00
Ivan Petkov
6fb400ec63
crateNameFromCargoToml: warn when values can't be found (#237) 2023-02-12 00:39:43 +00:00
Felix Schröter
2b866abbdd
ignore non-json lines in cargoBuildLog (#234)
Fixes issues with non-json values in cargoBuildLog: rust-lang/cargo#8179
---------

Co-authored-by: Ivan Petkov <ivanppetkov@gmail.com>
2023-02-11 13:27:11 -08:00
Ivan Petkov
00564437f3
Properly handle workspace inheritance in git dependencies (#224)
Crates from git repos are vendored in a flattened directory where each crate shows up at the root of the vendor directory. Since the vendoring step effectively breaks workspace structures, any crates which use workspace inheritance (e.g. package.version.workspace = true will fail to resolve.

To work around this we inspect the crate's workspace manifest (if it exists) and attempt to manually merge the values while copying the contents to the vendor directory.
2023-01-21 16:46:32 -08:00
Ivan Petkov
42e2fab6bc
Make it easier to build workspaces not at source root (#212) 2023-01-05 04:46:43 +00:00
Ivan Petkov
18ef99b1e0
inheritCargoArtifactsHook: preserve executable bit of build scripts (#206)
Using `cp --no-preserve mode` ends up losing the executable bit of
previously compiled build scripts. Instead we should ignore the file
ownership, and subsequently make the files writable (since the store is
read only)
2023-01-04 02:53:38 +00:00
Ivan Petkov
8b66edc016
mkDummySource: fix build invalidation regression (#195)
* When checking the original source for its name, make sure we throw
  away the string context so we don't end up actually depending on the
  original source instead of the cleaned one
2022-12-23 17:06:58 +00:00
Ivan Petkov
70fcce8db0
mkDummySrc: try to use the same output name as original source (#190) 2022-12-20 20:50:22 -08:00
Ivan Petkov
63f80ee278
zstd: use as many threads as we can when compressing (#183) 2022-12-09 00:44:41 +00:00
Ivan Petkov
2b0be4c1c4
mkDummySrc: work with uefi targets by default, and allow downstream customization (#174)
* mkDummySrc: also include `no_std` attrs for target_os = uefi
* buildDepsOnly: only check with `--all-targets` if doCheck enabled
* mkDummySrc: allow customizing dummy Rust file contents
2022-11-28 03:23:35 +00:00
Ivan Petkov
c61d98aaea
mkDummySrc: properly import core (#172) 2022-11-21 01:12:39 +00:00
Ivan Petkov
35fd8fcbb0
Run nixpkgs-fmt 2022-11-20 16:28:49 -08:00
Ivan Petkov
e80de1e74a
Allow passing arbitrary fetchurl args per registry (#168)
Co-authored-by: Amos Wenger <amoswenger@gmail.com>
2022-11-20 16:22:13 -08:00
Ivan Petkov
c3935e06ca
removeReferencesToVendoredSourcesHook: use a single sed invocation (#167)
* Turns out it is much faster to build up one big regex of the
  references to remove and invoking `sed` just once than it is to invoke
  it once per reference
2022-11-17 17:00:25 -08:00
Zhaofeng Li
2e24bc6591
downloadCargoPackageFromGit: Ignore crates with duplicate package IDs (#158)
For example, the Cargo git repo contains multiple "case" Cargo.toml
files in the testsuite. Let's ignore them like what Cargo does [1].

Co-authored-by: Ivan Petkov <ivanppetkov@gmail.com>
2022-11-09 18:12:34 -08:00
Ivan Petkov
ee00efb961
registryFromGitIndex: use shallow git checkouts (#151) 2022-10-29 18:56:41 +00:00