Code Monkey home page Code Monkey logo

cargo-vendor-filterer's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

cargo-vendor-filterer's Issues

Support for `--manifest-path`

cargo and its subcommands, including vendor support --manifest-path parameter:

$ cargo vendor --help | grep manifest-path 
        --manifest-path <PATH>     Path to Cargo.toml

For example, in 389-ds-base we have rust libraries that live in a subdirectory, and during the build we call cargo rustc with --manifest-path. When a release tarball is created, cargo is also called from the repo's root directory and a path to Cargo.toml is specified.

It would be nice to add support for this.
Thanks.

Fails on `kernel32-sys` and `advapi32-sys`

cargo vendor-filterer fails to replace certain crates, like kernel32-sys or advapi32-sys, because cargo metadata fails on the vendored crates.

Steps to reproduce:

$ cargo new just-test
     Created binary (application) `just-test` package
$ cd just-test
$ cargo add local-encoding
    Updating crates.io index
      Adding local-encoding v0.2.0 to dependencies.
$ cargo vendor-filterer --platform x86_64-unknown-linux-gnu
Gathering metadata for platforms
   Vendoring fuchsia-cprng v0.1.1 (/crypt/iv/.cargo/registry/src/github.com-1ecc6299db9ec823/fuchsia-cprng-0.1.1) to vendor/fuchsia-cprng
   Vendoring getopts v0.2.21 (/crypt/iv/.cargo/registry/src/github.com-1ecc6299db9ec823/getopts-0.2.21) to vendor/getopts
   Vendoring kernel32-sys v0.2.2 (/crypt/iv/.cargo/registry/src/github.com-1ecc6299db9ec823/kernel32-sys-0.2.2) to vendor/kernel32-sys
   Vendoring libc v0.2.135 (/crypt/iv/.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.135) to vendor/libc
   Vendoring local-encoding v0.2.0 (/crypt/iv/.cargo/registry/src/github.com-1ecc6299db9ec823/local-encoding-0.2.0) to vendor/local-encoding
   Vendoring pulldown-cmark v0.0.3 (/crypt/iv/.cargo/registry/src/github.com-1ecc6299db9ec823/pulldown-cmark-0.0.3) to vendor/pulldown-cmark
   Vendoring rand v0.4.6 (/crypt/iv/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.4.6) to vendor/rand
   Vendoring rand_core v0.3.1 (/crypt/iv/.cargo/registry/src/github.com-1ecc6299db9ec823/rand_core-0.3.1) to vendor/rand_core-0.3.1
   Vendoring rand_core v0.4.2 (/crypt/iv/.cargo/registry/src/github.com-1ecc6299db9ec823/rand_core-0.4.2) to vendor/rand_core
   Vendoring rdrand v0.4.0 (/crypt/iv/.cargo/registry/src/github.com-1ecc6299db9ec823/rdrand-0.4.0) to vendor/rdrand
   Vendoring remove_dir_all v0.5.3 (/crypt/iv/.cargo/registry/src/github.com-1ecc6299db9ec823/remove_dir_all-0.5.3) to vendor/remove_dir_all
   Vendoring skeptic v0.4.0 (/crypt/iv/.cargo/registry/src/github.com-1ecc6299db9ec823/skeptic-0.4.0) to vendor/skeptic
   Vendoring tempdir v0.3.7 (/crypt/iv/.cargo/registry/src/github.com-1ecc6299db9ec823/tempdir-0.3.7) to vendor/tempdir
   Vendoring unicode-width v0.1.10 (/crypt/iv/.cargo/registry/src/github.com-1ecc6299db9ec823/unicode-width-0.1.10) to vendor/unicode-width
   Vendoring winapi v0.2.8 (/crypt/iv/.cargo/registry/src/github.com-1ecc6299db9ec823/winapi-0.2.8) to vendor/winapi-0.2.8
   Vendoring winapi v0.3.9 (/crypt/iv/.cargo/registry/src/github.com-1ecc6299db9ec823/winapi-0.3.9) to vendor/winapi
   Vendoring winapi-build v0.1.1 (/crypt/iv/.cargo/registry/src/github.com-1ecc6299db9ec823/winapi-build-0.1.1) to vendor/winapi-build
   Vendoring winapi-i686-pc-windows-gnu v0.4.0 (/crypt/iv/.cargo/registry/src/github.com-1ecc6299db9ec823/winapi-i686-pc-windows-gnu-0.4.0) to vendor/winapi-i686-pc-windows-gnu
   Vendoring winapi-x86_64-pc-windows-gnu v0.4.0 (/crypt/iv/.cargo/registry/src/github.com-1ecc6299db9ec823/winapi-x86_64-pc-windows-gnu-0.4.0) to vendor/winapi-x86_64-pc-windows-gnu
To use vendored sources, add this to your .cargo/config.toml for this project:


[source.crates-io]
replace-with = "vendored-sources"

[source.vendored-sources]
directory = "vendor"
Skipping just-test
Replacing unreferenced package with stub: winapi-x86_64-pc-windows-gnu
Replacing unreferenced package with stub: winapi-i686-pc-windows-gnu
Replacing unreferenced package with stub: winapi-build
Replacing unreferenced package with stub: winapi
error: Replacing with stub: winapi-0.2.8: Executing cargo metadata: Error during execution of `cargo metadata`: error: failed to load manifest for dependency `advapi32-sys`

Caused by:
  failed to read `/tmp/.private/iv/just-test/vendor/winapi-0.2.8/lib/advapi32/Cargo.toml`

Caused by:
  No such file or directory (os error 2)

Same error, but with kernel32-sys vendored crate, happens when trying to vendor dependencies for https://github.com/mozilla/sccache checked out to tag v0.3.0.

ignore source options in config.toml

Running cargo vendor-filterer fails when config.toml is already configured with crates.io source replacements:

$ cargo vendor-filterer
error: Executing cargo metadata (first run): Error during execution of `cargo metadata`: error: failed to get `anyhow` as a dependency of package `wprs v0.1.0 (/home/rasputin/wayland-dev/rust/wprs)`

Caused by:
  failed to load source for dependency `anyhow`

Caused by:
  Unable to update registry `crates-io`

Caused by:
  failed to update replaced source registry `crates-io`

Caused by:
  failed to read root of directory source: /home/rasputin/wayland-dev/rust/wprs/vendor

Caused by:
  No such file or directory (os error 2)
Working around this (AFAIK) requires an annoying dance of blowing away config.toml, running cargo vendor-filterer, and then restoring config.toml. It would be nice if cargo-vendor-filterer ignored crates.io source replacements.

cargo-vendor does this:
alexcrichton/cargo-vendor#23
alexcrichton/cargo-vendor@03e252f

missing dependencies in vendor dir

I am not sure what causes this but with netavark 1.8.0 at least one required dependency was removed from the vendor dir

At the very least [email protected] was removed despite being used.

$ cargo tree -i [email protected]
event-listener v2.5.3
├── async-broadcast v0.5.1
│   └── zbus v3.14.1
│       └── netavark v1.8.0 (/home/pholzing/CODE/netavark)
├── async-channel v1.9.0
│   └── blocking v1.4.0
│       ├── async-fs v1.6.0
│       │   └── zbus v3.14.1 (*)
│       └── zbus v3.14.1 (*)
├── async-lock v2.8.0
│   ├── async-executor v1.5.3
│   │   └── zbus v3.14.1 (*)
│   ├── async-fs v1.6.0 (*)
│   ├── async-io v1.13.0
│   │   └── zbus v3.14.1 (*)
│   ├── blocking v1.4.0 (*)
│   └── zbus v3.14.1 (*)
└── zbus v3.14.1 (*)
...
Replacing unreferenced package with stub: event-listener-2.5.3
...

I am not sure why it thinks that it is not used, netavark depends on zbus 3.14.1 and it depends on event-listener 2.5.3
https://github.com/containers/netavark/blob/8309b68113918f9e2b178892a73ea802cdca3151/Cargo.toml#L48
https://github.com/dbus2/zbus/blob/6af95ac2e60ffb02ad4633974eb8a04783719589/zbus/Cargo.toml#L53

Original report: containers/netavark#819

Multiple --platform= options

Is there way to specify multiple platforms from command line?
When I try cargo vendor-filterer --platform='*'-unknown-linux-gnu (for sequoia-sop) here is error:

  error: Could not create LLVM TargetMachine for triple: m68k-unknown-linux-gnu: No available targets are compatible with triple "m68k-unknown-linux-gnu"

When I try to specify multiple --platform= options like:

     --platform=aarch64-unknown-linux-gnu \
     --platform=armv7-unknown-linux-gnueabihf \
     --platform=i686-unknown-linux-gnu \
     --platform=powerpc64le-unknown-linux-gnu \
     --platform=x86_64-unknown-linux-gnu

It does not compile on x86_64, perhaps something superfluous is filtered.

Error trying to vendor dependencies

I've added this bit to my Cargo.toml:

[package.metadata.vendor-filter]
platforms = ["*-*-linux-*", "*-freebsd"]

I'm basically trying to vendor dependencies requires to build on any Linux or FreeBSD (which is, realistically, the only places where my codebase works).

However, this fails, and I'm not entirely sure why:

> cargo vendor-filterer
Gathering metadata for platforms
error: Executing cargo metadata: Error during execution of `cargo metadata`: error: failed to run `rustc` to learn about target-specific information

Caused by:
  process didn't exit successfully: `rustc - --crate-name ___ --print=file-names --target m68k-unknown-linux-gnu --crate-type bin --crate-type rlib --crate-type dylib --crate-type cdylib --crate-type staticlib --crate-type proc-macro --print=sysroot --print=split-debuginfo --print=crate-name --print=cfg` (exit status: 1)
  --- stderr
  error: Could not create LLVM TargetMachine for triple: m68k-unknown-linux-gnu: No available targets are compatible with triple "m68k-unknown-linux-gnu"

The project is https://git.sr.ht/~whynothugo/shotman, in case it's necessary for reproducing, but I don't think this is anything specifically related to my project.

Output tarball does not wrap crate directories in a containing directory

cargo vendor produces an output directory (defaulting to vendor) which contains a subdirectory for each of the crates being vendored. It's been our practice in CoreOS projects to tar up that directory and ship the tarball as a release artifact, so that downstream distro packages can build the project without individually fetching dependencies.

Tarballs produced by cargo-vendor-filterer don't serve as a drop-in replacement for this practice, since the crate directories are directly placed in the root of the tarball instead of in a vendor subdirectory. This causes problems for a couple reasons:

  • The downstream package needs to adjust its unpacking code to do mkdir vendor && tar xf vendor.tgz -C vendor instead of just tar xf vendor.tgz, which is a needless compatibility break.
  • It's generally an antipattern to distribute tarballs which, unless special attention is paid during unpacking, create many entries in the current working directory.

There doesn't seem to be any way to configure this behavior, other than by avoiding --format tar* and packing the resulting tarball manually.

Support --sync flag

cargo vendor supports -s (or --sync) flag. It allows to vendor more than one project at a time. It is useful for many cases, for example if you want to build tier-3 targets with -Zbuild-std. In this case you need to vendor deps for the std-lib as well.

While cargo vendor does not support vendoring std-lib deps, there is a workaround:

RUST_DIR="$(rustc --print=sysroot)"

# Copy the Cargo.lock for Rust to place the `cargo vendor` will see
cp "$RUST_DIR"/lib/rustlib/src/rust/Cargo.lock "$RUST_DIR"/lib/rustlib/src/rust/library/test/

cargo vendor \
    --manifest-path Cargo.toml \
    --sync "$RUST_DIR"/lib/rustlib/src/rust/library/test/Cargo.toml \
    cargo_vendor

# Remove copied file
rm "$RUST_DIR"/lib/rustlib/src/rust/library/test/Cargo.lock

This is currently not working with cargo-vendor-filterer as you can pass --sync flag

Handle tier3/uninstalled toolchains

$ cargo vendor-filterer '--platform=*-unknown-linux-*'
...
error: Executing cargo metadata: Error during execution of `cargo metadata`: error: failed to run `rustc` to learn about target-specific information
 
Caused by:
  process didn't exit successfully: `rustc - --crate-name ___ --print=file-names --target m68k-unknown-linux-gnu --crate-type bin --crate-type rlib --crate-type dylib --crate-type cdylib --crate-type staticlib --crate-type proc-macro --print=sysroot --print=cfg` (exit status: 1)
  --- stderr
  error: Could not create LLVM TargetMachine for triple: m68k-unknown-linux-gnu: No available targets are compatible with triple "m68k-unknown-linux-gnu"

In this case m68k is a tier3 target, not likely to be installed. I think we should probably default to filtering only on tier1 platforms or so? We could also skip uninstalled targets, but that creates more system-local dependency.

Consider including Tier 2 platforms without host tools

Currently cargo-vendor-filterer filters only down to Tier 2 with host tools:

/// See https://doc.rust-lang.org/nightly/rustc/platform-support.html#tier-2-with-host-tools
const TIER2: &[&str] = &[
"aarch64-apple-darwin",
"aarch64-pc-windows-msvc",
"aarch64-unknown-linux-musl",
"arm-unknown-linux-gnueabi",
"arm-unknown-linux-gnueabihf",
"armv7-unknown-linux-gnueabihf",
"mips-unknown-linux-gnu",
"mips64-unknown-linux-gnuabi64",
"mips64el-unknown-linux-gnuabi64",
"mipsel-unknown-linux-gnu",
"powerpc-unknown-linux-gnu",
"powerpc64-unknown-linux-gnu",
"powerpc64le-unknown-linux-gnu",
"riscv64gc-unknown-linux-gnu",
"s390x-unknown-linux-gnu",
"x86_64-unknown-freebsd",
"x86_64-unknown-illumos",
"x86_64-unknown-linux-musl",
"x86_64-unknown-netbsd",
];

Would it be possible to extend the list or introduce some new --tier value to include Tier 2 platforms without host tools too? Personally I'm currently interested in thumbv7neon-unknown-linux-gnueabihf and x86_64-unknown-linux-gnux32 but not excluding possibility of using more in future.

what does all-features option mean?

I am currently using cargo-vendor-filterer for openSUSE's OBS service cargo since it's such a good project for reducing vendored dependencies, see PR openSUSE/obs-service-cargo_vendor#48 (comment)

My issue is I am not sure what all-features: Enable all features of the current crate when vendoring. even means. Is it referring to the target project that will be vendored or is it referring to the dependencies of that project?

I thought that after vendoring, cargo build command will handle the all-features hmm

Update rustix crate

Would you mind updating rustix crate from current 0.37.17 to at least 0.37.18 (so just one bump in patch release)? The latter version includes fix bytecodealliance/rustix@67790f1 that fixes compilation for architectures that are not supported by linux_raw backend but only libc backend.

Add the ability to specify arguments for `cargo vendor`

I need to specify the argument --respect-source-config for the cargo vendor command that is executed by cargo vendor-filterer.

I saw a similar case for the --offline argument.

I see two ways to fix this :

  1. Add another flag like --offline

  2. Fix it in a more general way, for example : cargo vendor-filterer --platform ... -- --respect-source-config --other-cargo-vendor-flag

What do you prefer ?

I will be happy to submit a PR.

Handle missing riscv64-unknown-linux-gnu

$ head -5  /etc/os-release                                                                                                                                                                                                                                                           03/01/24 16:06:05 PM
NAME="CentOS Stream"
VERSION="9"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="9"
$ rustc --version
rustc 1.75.0 (82e1608df 2023-12-21) (Red Hat 1.75.0-1.el9)
$ cargo-vendor-filterer
Gathering metadata
Skipping rpmostree-rust
Skipping rpmostree-client
Skipping libdnf-sys
Gathering metadata for platforms
error: Executing cargo metadata: Error during execution of `cargo metadata`: error: failed to run `rustc` to learn about target-specific information

Caused by:
  process didn't exit successfully: `rustc - --crate-name ___ --print=file-names --target riscv64gc-unknown-linux-gnu --crate-type bin --crate-type rlib --crate-type dylib --crate-type cdylib --crate-type staticlib --crate-type proc-macro --print=sysroot --print=split-debuginfo --print=crate-name --print=cfg` (exit status: 1)
  --- stderr
  error: could not create LLVM TargetMachine for triple: riscv64-unknown-linux-gn: No available targets are compatible with triple "riscv64-unknown-linux-gnu"
$

This however works with the Fedora rustc.

It seems to me RHEL rust toolchain apparently omits support for riscv64-unknown-linux-gnu...and hence using our default of tier = 2 breaks there.

Compare:

This is messy. If we do something like detect what targets the toolchain has, then the filtering is suddenly dependent on the host.

Maybe we can just allow opting-in to that via e.g.

[workspace.metadata.vendor-filter]
platforms = ["*-unknown-linux-gnu"]
tier = "2"
filter-host = true

And filter-host acknowledges some potential unreproducibility.

Option documentation for "exclude-crate-path" is missing syntax format

I was trying to use the --exclude-crate-path option, via trial and error:

$ cargo vendor-filterer --platform=x86_64-unknown-linux-gnu --exclude-crate-path 'unwanted_path'
error: Missing '#' in crate exclude

...And my reaction, as a new user, was, "Why '#'?" So I ran cargo vendor-filterer -h:

      --tier <TIER>
          Limit platforms to the provided tier ("1" or "2")
      --exclude-crate-path <EXCLUDE_CRATE_PATH>
          Remove files/subdirectories in crates that match an exact path
      --manifest-path <MANIFEST_PATH>
          Path to Cargo.toml

...and my reaction was, "Okay, but where does '#' appear?"

I found my answer in src/main.rs, line 107:

    /// Parse a crate exclude in the form `CRATENAME#PATH`.

However, on line 142, in struct Args, there seem to be more documentation lines than just the one line:

    /// Remove files/subdirectories in crates that match an exact path.
    ///
    /// The format is "CRATENAME#PATH".  CRATENAME is the name of a crate (without
    /// a version included).  PATH must be a relative path, and can name a regular
    /// file, symbolic link or a directory.
    ///
    /// If the filename matches a directory, it and all its contents will be removed.
    /// For example, `curl-sys#curl` will remove the vendored libcurl C sources
    /// from the `curl-sys` crate.
    ///
    /// Nonexistent paths will emit a warning, but are not currently an error.

Add `platform-wildcards`

Right now the platforms is basically an API we need to commit to, but I think most users would want:

platform-wildcards: ["*-linux-gnu", "wasm32-*"]

for example. In particular I discovered over in coreos/coreos-installer#894 that coreos-installer actually has s390x-specific dependencies.

Add `--compress=best`

The tar compression flags invoke gzip and zstd with their default compression levels, which are not especially tight. Since we're creating long-term archives, we should probably compress as tightly as reasonably possible. That does require that we invoke the compressor separately.

`--format=tar` fails on MacOS

When running the command cargo vendor-filterer --format=tar vendor.tar, I get the following error on MacOS 13.2:

tar: Option --sort=name is not supported
Usage:
  List:    tar -tf <archive-filename>
  Extract: tar -xf <archive-filename>
  Create:  tar -cf <archive-filename> [filenames...]
  Help:    tar --help
error: tar failed: ExitStatus(unix_wait_status(256))

My tar version is bsdtar 3.5.3 - libarchive 3.5.3 zlib/1.2.11 liblzma/5.0.5 bz2lib/1.0.8.

To remedy this, I would suggest relying on the following crates instead of calling the system tar using std::process::Command:

  • tar: reader and writer for tar files
  • flate2: gzip compression
  • zstd: bindings for zstd compression

New release?

Hi, this seems like a very useful tool for cargo vendor use cases. Is there a plan for the next release?

Dynamic dependencies from build scripts are missed

(Original issue below; this text written by @cgwalters )

Today some crates like rustix end up dynamically enabling features and dependencies via build.rs, and these are missed by us because we just use cargo metadata which doesn't run build scripts.


In the latest release afterburn 5.4.2 we have found that afterburn tarball's errno 0.2.8 seems to be filtered of any real content.
This broke the active release for afterburn 5.4.2 resulting in the dependency vmw_backdoor failing with the following error:

error[E0425]: cannot find function `errno` in crate `errno`
   --> /builddir/build/BUILD/afterburn-5.4.2/vendor/vmw_backdoor/src/backdoor.rs:103:35

The vendor tarball includes two versions of errno, 0.3.0 and 0.2.8, and the 0.3.0 bundle appears to be complete.

...
[[package]]
name = "errno"
version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1"
dependencies = [
 "errno-dragonfly",
 "libc",
 "winapi",
]

[[package]]
name = "errno"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "50d6a0976c999d473fe89ad888d5a284e55366d9dc9038b1ba2aa15128c4afa0"
dependencies = [
 "errno-dragonfly",
 "libc",
 "windows-sys 0.45.0",
]
...

Cargo vender filter does return all the required contents in errno 0.3.0.

handle `path` type crates

Currently we fail on the libdnf-sys = { path = "rust/libdnf-sys", version = "0.1.0" } in rpm-ostree for example.

Support for sharing vendor directory between multiple projects (`--sync` from cargo-vendor)

cargo vendor supports --sync parameter:

$ cargo vendor --help | rg sync
    -s, --sync <TOML>            Additional `Cargo.toml` to sync and vendor

With this parameter, multiple projects can share the same vendor directory. One complication could be if users want projects which have different platforms but overlapping dependencies to share a directory (#44).

I am willing to contribute this feature.

Fails on `ws2_32-sys`

This is probably similar to #32

I tried running vendor-filterer on https://github.com/nushell/nushell/ with this config:

[package.metadata.vendor-filter]
platforms = ["x86_64-unknown-linux-gnu", "i686-unknown-linux-gnu"]
all-features = true
exclude-crate-paths = [
  { name = "libgit2-sys", exclude = "libgit2" },
  { name = "libsqlite3-sys", exclude = "sqlite3" },
  { name = "libsqlite3-sys", exclude = "sqlcipher" },
  { name = "libssh2-sys", exclude = "libssh2" },
  { name = "libz-sys", exclude = "src/zlib" },
  { name = "libz-sys", exclude = "src/zlib-ng" },
  { name = "lz4-sys", exclude = "liblz4" },
  { name = "openssl-src", exclude = "openssl" },
  { name = "zstd-sys", exclude = "zstd" },
]

and get this error:

Skipping nu-parser
Skipping nu_plugin_inc
Skipping nu-glob
Skipping nu_plugin_gstat
Skipping nu-engine
Skipping nu-path
Skipping nu_plugin_custom_values
Skipping nu-protocol
Skipping nu-test-support
Skipping nu-color-config
Skipping nu_plugin_query
Skipping nu-utils
Skipping nu-table
Skipping nu-term-grid
Skipping nu-system
Skipping nu-cli
Skipping nu-plugin
Skipping nu-json
Skipping nu_plugin_example
Skipping nu-command
Skipping nu
Skipping nu-pretty-hex
Replacing unreferenced package with stub: windows-sys
Replacing unreferenced package with stub: malloc_buf
Replacing unreferenced package with stub: ntapi
Replacing unreferenced package with stub: winres
Replacing unreferenced package with stub: riscv-target
Replacing unreferenced package with stub: windows-0.37.0
Replacing unreferenced package with stub: rdrand
Replacing unreferenced package with stub: crossterm_winapi
Replacing unreferenced package with stub: core-foundation
Replacing unreferenced package with stub: semver-parser-0.7.0
Replacing unreferenced package with stub: rustc-hash
Replacing unreferenced package with stub: objc
Replacing unreferenced package with stub: windows
Replacing unreferenced package with stub: shlex
Replacing unreferenced package with stub: wasm-bindgen
Replacing unreferenced package with stub: web-sys
Replacing unreferenced package with stub: wasi-0.9.0+wasi-snapshot-preview1
Replacing unreferenced package with stub: volatile-register
Replacing unreferenced package with stub: atomic-polyfill
Replacing unreferenced package with stub: android_system_properties
Replacing unreferenced package with stub: omnipath
Replacing unreferenced package with stub: windows_aarch64_msvc-0.36.1
Replacing unreferenced package with stub: fuchsia-zircon
Replacing unreferenced package with stub: windows_i686_gnu
Replacing unreferenced package with stub: wasm-bindgen-macro
Replacing unreferenced package with stub: winapi-util
Replacing unreferenced package with stub: fsevent-sys
Replacing unreferenced package with stub: peeking_take_while
Replacing unreferenced package with stub: rand_core-0.4.2
Replacing unreferenced package with stub: critical-section
Replacing unreferenced package with stub: winapi-build
Replacing unreferenced package with stub: cty
Replacing unreferenced package with stub: windows_i686_msvc-0.36.1
Replacing unreferenced package with stub: fuchsia-zircon-sys
Replacing unreferenced package with stub: cexpr
Replacing unreferenced package with stub: windows_x86_64_msvc-0.36.1
Replacing unreferenced package with stub: rand_core-0.3.1
Replacing unreferenced package with stub: bindgen
Replacing unreferenced package with stub: rand_hc
Replacing unreferenced package with stub: instant
Replacing unreferenced package with stub: vcell
Replacing unreferenced package with stub: wasm-bindgen-backend
Replacing unreferenced package with stub: windows_i686_gnu-0.36.1
Replacing unreferenced package with stub: windows_i686_gnu-0.37.0
Replacing unreferenced package with stub: embedded-hal
Replacing unreferenced package with stub: nb
Replacing unreferenced package with stub: schannel
Replacing unreferenced package with stub: windows_x86_64_gnullvm
error: Replacing with stub: ws2_32-sys: Executing cargo metadata: Error during execution of `cargo metadata`: error: failed to load manifest for dependency `winapi-build`

Caused by:
  failed to read `/mnt/progs/slack/builds/nushell/nushell-0.71.0/build/Cargo.toml`

Caused by:
  No such file or directory (os error 2)

What's actually a bit annoying is that it stops after that error. It would be nice that, even if it encounters a lib that can't be replaced, that it just skips it and moves on with the rest.

Crash when running for a single platform

> cargo vendor-filterer
Gathering metadata for platforms
   Vendoring adler v1.0.2 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/adler-1.0.2) to vendor/adler
   Vendoring android_system_properties v0.1.5 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/android_system_properties-0.1.5) to vendor/android_system_properties
   Vendoring anyhow v1.0.68 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/anyhow-1.0.68) to vendor/anyhow
   Vendoring atty v0.2.14 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/atty-0.2.14) to vendor/atty
   Vendoring autocfg v1.1.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/autocfg-1.1.0) to vendor/autocfg
   Vendoring bitflags v1.3.2 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/bitflags-1.3.2) to vendor/bitflags
   Vendoring bumpalo v3.11.1 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/bumpalo-3.11.1) to vendor/bumpalo
   Vendoring calloop v0.10.5 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/calloop-0.10.5) to vendor/calloop
   Vendoring cc v1.0.78 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/cc-1.0.78) to vendor/cc
   Vendoring cfg-if v1.0.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/cfg-if-1.0.0) to vendor/cfg-if
   Vendoring chrono v0.4.23 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/chrono-0.4.23) to vendor/chrono
   Vendoring clap v4.1.4 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/clap-4.1.4) to vendor/clap
   Vendoring clap_complete v4.1.1 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/clap_complete-4.1.1) to vendor/clap_complete
   Vendoring clap_derive v4.1.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/clap_derive-4.1.0) to vendor/clap_derive
   Vendoring clap_lex v0.3.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/clap_lex-0.3.0) to vendor/clap_lex
   Vendoring codespan-reporting v0.11.1 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/codespan-reporting-0.11.1) to vendor/codespan-reporting
   Vendoring colored v2.0.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/colored-2.0.0) to vendor/colored
   Vendoring core-foundation-sys v0.8.3 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/core-foundation-sys-0.8.3) to vendor/core-foundation-sys
   Vendoring crc32fast v1.3.2 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/crc32fast-1.3.2) to vendor/crc32fast
   Vendoring cxx v1.0.86 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/cxx-1.0.86) to vendor/cxx
   Vendoring cxx-build v1.0.86 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/cxx-build-1.0.86) to vendor/cxx-build
   Vendoring cxxbridge-flags v1.0.86 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/cxxbridge-flags-1.0.86) to vendor/cxxbridge-flags
   Vendoring cxxbridge-macro v1.0.86 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/cxxbridge-macro-1.0.86) to vendor/cxxbridge-macro
   Vendoring dlib v0.5.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/dlib-0.5.0) to vendor/dlib
   Vendoring downcast-rs v1.2.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/downcast-rs-1.2.0) to vendor/downcast-rs
   Vendoring either v1.8.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/either-1.8.0) to vendor/either
   Vendoring errno v0.2.8 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/errno-0.2.8) to vendor/errno
   Vendoring errno-dragonfly v0.1.2 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/errno-dragonfly-0.1.2) to vendor/errno-dragonfly
   Vendoring flate2 v1.0.25 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/flate2-1.0.25) to vendor/flate2
   Vendoring futures v0.3.25 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.3.25) to vendor/futures
   Vendoring futures-channel v0.3.25 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/futures-channel-0.3.25) to vendor/futures-channel
   Vendoring futures-core v0.3.25 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/futures-core-0.3.25) to vendor/futures-core
   Vendoring futures-io v0.3.25 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/futures-io-0.3.25) to vendor/futures-io
   Vendoring futures-sink v0.3.25 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/futures-sink-0.3.25) to vendor/futures-sink
   Vendoring futures-task v0.3.25 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/futures-task-0.3.25) to vendor/futures-task
   Vendoring futures-util v0.3.25 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.25) to vendor/futures-util
   Vendoring heck v0.4.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/heck-0.4.0) to vendor/heck
   Vendoring hermit-abi v0.1.19 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/hermit-abi-0.1.19) to vendor/hermit-abi-0.1.19
   Vendoring hermit-abi v0.2.6 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/hermit-abi-0.2.6) to vendor/hermit-abi
   Vendoring iana-time-zone v0.1.53 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/iana-time-zone-0.1.53) to vendor/iana-time-zone
   Vendoring iana-time-zone-haiku v0.1.1 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/iana-time-zone-haiku-0.1.1) to vendor/iana-time-zone-haiku
   Vendoring io-lifetimes v1.0.4 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.4) to vendor/io-lifetimes
   Vendoring is-terminal v0.4.2 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/is-terminal-0.4.2) to vendor/is-terminal
   Vendoring itertools v0.10.5 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/itertools-0.10.5) to vendor/itertools
   Vendoring itoa v1.0.5 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/itoa-1.0.5) to vendor/itoa
   Vendoring js-sys v0.3.60 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/js-sys-0.3.60) to vendor/js-sys
   Vendoring lazy_static v1.4.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/lazy_static-1.4.0) to vendor/lazy_static
   Vendoring libc v0.2.139 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.139) to vendor/libc
   Vendoring libloading v0.7.4 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/libloading-0.7.4) to vendor/libloading
   Vendoring link-cplusplus v1.0.8 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/link-cplusplus-1.0.8) to vendor/link-cplusplus
   Vendoring linux-raw-sys v0.1.4 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/linux-raw-sys-0.1.4) to vendor/linux-raw-sys
   Vendoring log v0.4.17 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/log-0.4.17) to vendor/log
   Vendoring memchr v2.5.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/memchr-2.5.0) to vendor/memchr
   Vendoring memmap2 v0.5.8 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/memmap2-0.5.8) to vendor/memmap2
   Vendoring memoffset v0.6.5 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/memoffset-0.6.5) to vendor/memoffset-0.6.5
   Vendoring memoffset v0.7.1 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/memoffset-0.7.1) to vendor/memoffset
   Vendoring minimal-lexical v0.2.1 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/minimal-lexical-0.2.1) to vendor/minimal-lexical
   Vendoring miniz_oxide v0.6.2 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/miniz_oxide-0.6.2) to vendor/miniz_oxide
   Vendoring nix v0.25.1 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/nix-0.25.1) to vendor/nix-0.25.1
   Vendoring nix v0.26.1 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/nix-0.26.1) to vendor/nix
   Vendoring nom v7.1.2 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/nom-7.1.2) to vendor/nom
   Vendoring num-integer v0.1.45 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/num-integer-0.1.45) to vendor/num-integer
   Vendoring num-traits v0.2.15 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/num-traits-0.2.15) to vendor/num-traits
   Vendoring once_cell v1.17.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/once_cell-1.17.0) to vendor/once_cell
   Vendoring os_str_bytes v6.4.1 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/os_str_bytes-6.4.1) to vendor/os_str_bytes
   Vendoring pin-project-lite v0.2.9 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/pin-project-lite-0.2.9) to vendor/pin-project-lite
   Vendoring pin-utils v0.1.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/pin-utils-0.1.0) to vendor/pin-utils
   Vendoring pkg-config v0.3.26 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/pkg-config-0.3.26) to vendor/pkg-config
   Vendoring png v0.17.7 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/png-0.17.7) to vendor/png
   Vendoring proc-macro-error v1.0.4 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro-error-1.0.4) to vendor/proc-macro-error
   Vendoring proc-macro-error-attr v1.0.4 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro-error-attr-1.0.4) to vendor/proc-macro-error-attr
   Vendoring proc-macro2 v1.0.49 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro2-1.0.49) to vendor/proc-macro2
   Vendoring quick-xml v0.23.1 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/quick-xml-0.23.1) to vendor/quick-xml
   Vendoring quote v1.0.23 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/quote-1.0.23) to vendor/quote
   Vendoring rustix v0.36.6 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/rustix-0.36.6) to vendor/rustix
   Vendoring ryu v1.0.12 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/ryu-1.0.12) to vendor/ryu
   Vendoring scoped-tls v1.0.1 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/scoped-tls-1.0.1) to vendor/scoped-tls
   Vendoring scratch v1.0.3 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/scratch-1.0.3) to vendor/scratch
   Vendoring serde v1.0.152 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/serde-1.0.152) to vendor/serde
   Vendoring serde_derive v1.0.152 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/serde_derive-1.0.152) to vendor/serde_derive
   Vendoring serde_json v1.0.91 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/serde_json-1.0.91) to vendor/serde_json
   Vendoring simple_logger v2.3.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/simple_logger-2.3.0) to vendor/simple_logger
   Vendoring slab v0.4.7 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/slab-0.4.7) to vendor/slab
   Vendoring slotmap v1.0.6 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/slotmap-1.0.6) to vendor/slotmap
   Vendoring smallvec v1.10.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/smallvec-1.10.0) to vendor/smallvec
   Vendoring smithay-client-toolkit v0.16.0 (https://github.com/Smithay/client-toolkit.git#327f9cd7) (/home/hugo/.local/state/cargo/git/checkouts/client-toolkit-e56a3844de110279/327f9cd) to vendor/smithay-client-toolkit
   Vendoring static_assertions v1.1.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/static_assertions-1.1.0) to vendor/static_assertions
   Vendoring strsim v0.10.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/strsim-0.10.0) to vendor/strsim
   Vendoring syn v1.0.107 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/syn-1.0.107) to vendor/syn
   Vendoring termcolor v1.1.3 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/termcolor-1.1.3) to vendor/termcolor
   Vendoring thiserror v1.0.38 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/thiserror-1.0.38) to vendor/thiserror
   Vendoring thiserror-impl v1.0.38 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/thiserror-impl-1.0.38) to vendor/thiserror-impl
   Vendoring unicode-ident v1.0.6 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/unicode-ident-1.0.6) to vendor/unicode-ident
   Vendoring unicode-width v0.1.10 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/unicode-width-0.1.10) to vendor/unicode-width
   Vendoring vec_map v0.8.2 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/vec_map-0.8.2) to vendor/vec_map
   Vendoring version_check v0.9.4 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/version_check-0.9.4) to vendor/version_check
   Vendoring wasm-bindgen v0.2.83 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/wasm-bindgen-0.2.83) to vendor/wasm-bindgen
   Vendoring wasm-bindgen-backend v0.2.83 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/wasm-bindgen-backend-0.2.83) to vendor/wasm-bindgen-backend
   Vendoring wasm-bindgen-macro v0.2.83 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/wasm-bindgen-macro-0.2.83) to vendor/wasm-bindgen-macro
   Vendoring wasm-bindgen-macro-support v0.2.83 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/wasm-bindgen-macro-support-0.2.83) to vendor/wasm-bindgen-macro-support
   Vendoring wasm-bindgen-shared v0.2.83 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/wasm-bindgen-shared-0.2.83) to vendor/wasm-bindgen-shared
   Vendoring wayland-backend v0.1.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/wayland-backend-0.1.0) to vendor/wayland-backend
   Vendoring wayland-client v0.30.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/wayland-client-0.30.0) to vendor/wayland-client
   Vendoring wayland-cursor v0.30.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/wayland-cursor-0.30.0) to vendor/wayland-cursor
   Vendoring wayland-protocols v0.30.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/wayland-protocols-0.30.0) to vendor/wayland-protocols
   Vendoring wayland-protocols-wlr v0.1.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/wayland-protocols-wlr-0.1.0) to vendor/wayland-protocols-wlr
   Vendoring wayland-scanner v0.30.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/wayland-scanner-0.30.0) to vendor/wayland-scanner
   Vendoring wayland-sys v0.30.1 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/wayland-sys-0.30.1) to vendor/wayland-sys
   Vendoring winapi v0.3.9 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/winapi-0.3.9) to vendor/winapi
   Vendoring winapi-i686-pc-windows-gnu v0.4.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/winapi-i686-pc-windows-gnu-0.4.0) to vendor/winapi-i686-pc-windows-gnu
   Vendoring winapi-util v0.1.5 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/winapi-util-0.1.5) to vendor/winapi-util
   Vendoring winapi-x86_64-pc-windows-gnu v0.4.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/winapi-x86_64-pc-windows-gnu-0.4.0) to vendor/winapi-x86_64-pc-windows-gnu
   Vendoring windows-sys v0.42.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/windows-sys-0.42.0) to vendor/windows-sys
   Vendoring windows_aarch64_gnullvm v0.42.1 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/windows_aarch64_gnullvm-0.42.1) to vendor/windows_aarch64_gnullvm
   Vendoring windows_aarch64_msvc v0.42.1 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/windows_aarch64_msvc-0.42.1) to vendor/windows_aarch64_msvc
   Vendoring windows_i686_gnu v0.42.1 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/windows_i686_gnu-0.42.1) to vendor/windows_i686_gnu
   Vendoring windows_i686_msvc v0.42.1 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/windows_i686_msvc-0.42.1) to vendor/windows_i686_msvc
   Vendoring windows_x86_64_gnu v0.42.1 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/windows_x86_64_gnu-0.42.1) to vendor/windows_x86_64_gnu
   Vendoring windows_x86_64_gnullvm v0.42.1 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/windows_x86_64_gnullvm-0.42.1) to vendor/windows_x86_64_gnullvm
   Vendoring windows_x86_64_msvc v0.42.1 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/windows_x86_64_msvc-0.42.1) to vendor/windows_x86_64_msvc
   Vendoring xcursor v0.3.4 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/xcursor-0.3.4) to vendor/xcursor
   Vendoring xkbcommon v0.5.0 (/home/hugo/.local/state/cargo/registry/src/github.com-1ecc6299db9ec823/xkbcommon-0.5.0) to vendor/xkbcommon
To use vendored sources, add this to your .cargo/config.toml for this project:

[source.crates-io]
replace-with = "vendored-sources"

[source."git+https://github.com/Smithay/client-toolkit.git"]
git = "https://github.com/Smithay/client-toolkit.git"
replace-with = "vendored-sources"

[source.vendored-sources]
directory = "vendor"
Skipping shotman
Skipping shotman_completions
Skipping smithay-client-toolkit
Replacing unreferenced package with stub: android_system_properties
Replacing unreferenced package with stub: bumpalo
Replacing unreferenced package with stub: codespan-reporting
Replacing unreferenced package with stub: core-foundation-sys
Replacing unreferenced package with stub: cxx
Replacing unreferenced package with stub: cxx-build
Replacing unreferenced package with stub: cxxbridge-flags
Replacing unreferenced package with stub: cxxbridge-macro
Replacing unreferenced package with stub: errno
Replacing unreferenced package with stub: errno-dragonfly
Replacing unreferenced package with stub: hermit-abi-0.1.19
Replacing unreferenced package with stub: hermit-abi
Replacing unreferenced package with stub: iana-time-zone-haiku
Replacing unreferenced package with stub: js-sys
Replacing unreferenced package with stub: link-cplusplus
Replacing unreferenced package with stub: scratch
Replacing unreferenced package with stub: smithay-client-toolkit
Replacing unreferenced package with stub: unicode-width
Replacing unreferenced package with stub: wasm-bindgen
Replacing unreferenced package with stub: wasm-bindgen-backend
Replacing unreferenced package with stub: wasm-bindgen-macro
Replacing unreferenced package with stub: wasm-bindgen-macro-support
Replacing unreferenced package with stub: wasm-bindgen-shared
Replacing unreferenced package with stub: winapi
Replacing unreferenced package with stub: winapi-i686-pc-windows-gnu
Replacing unreferenced package with stub: winapi-util
Replacing unreferenced package with stub: winapi-x86_64-pc-windows-gnu
Replacing unreferenced package with stub: windows-sys
Replacing unreferenced package with stub: windows_aarch64_gnullvm
Replacing unreferenced package with stub: windows_aarch64_msvc
Replacing unreferenced package with stub: windows_i686_gnu
Replacing unreferenced package with stub: windows_i686_msvc
Replacing unreferenced package with stub: windows_x86_64_gnu
Replacing unreferenced package with stub: windows_x86_64_gnullvm
Replacing unreferenced package with stub: windows_x86_64_msvc
Replacing unreferenced package with stub: android_system_properties
thread 'main' panicked at 'assertion failed: unreferenced.insert(name.to_string())', src/main.rs:712:13
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
zsh: abort      cargo vendor-filterer

My Cargo.toml is this one plus:

[package.metadata.vendor-filter]
platforms = ["x86_64-unknown-linux-musl"]

Workspaces are not supported

Taking a copy of the mozilla-central repository, and trying to run vendor-filterer on it yields the following:

$ cargo vendor-filterer
error: Executing cargo metadata (first run): Error during execution of `cargo metadata`: error: failed to parse manifest at `/tmp/gecko/Cargo.toml`

Caused by:
  missing field `name` for key `package`

Option to filter out tarballs

Currently, some Rust wrappers of C libraries provide an embedded tarball to build the C library in platforms like Windows. An obvious and known example is gettext-rs.

The gettext-sys package specifically contains a pretty large tar.* file that is useless when you are targetting linux only. This makes the majority of the linux apps built using rust (and gtk) have a larger release tarball then it should have.

It would be nice to have some way to automatically remove any archive in the vendored dependencies.

Currently we will probably be doing something like

cargo vendor-filterer --platform=x86_64-unknown-linux-gnu --platform=aarch64-unknown-linux-gnu > "$DIST"/.cargo/config
rm -f vendor/gettext-sys/gettext-*.tar.*

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.