Giter Club home page Giter Club logo

reindeer's Introduction

Reindeer - Building Cargo Packages with Buck Build Status

Jeremy Fitzhardinge [email protected]

This is a set of tools for importing Rust crates from crates.io, git repos, etc and generating Buck build rules for them. Currently it primarily solves the problem of managing third-party dependencies in a monorepo built with Buck, but my hope is that it can be extended to support Bazel and other similar build systems.

Installation and Building

Reindeer builds with Cargo in the normal way. It has no unusual build-time dependencies. Therefore, you can use Cargo to not only build Reindeer, but to install it as well.

cargo install --locked --git https://github.com/facebookincubator/reindeer reindeer

Nix

If you are using Nix, you can install Reindeer from nixpkgs via the reindeer package. This package is unofficial and community-maintained.

Getting started

There's a complete (but small) example to get started with. More complete documentation is in docs.

Contributing

We welcome contributions! See CONTRIBUTING for details on how to get started, and our code of conduct.

License

Reindeer is MIT licensed, as found in the LICENSE file.

reindeer's People

Contributors

ahornby avatar amyreese avatar bigfootjon avatar chadaustin avatar cooperlees avatar dgrnbrg-meta avatar diliop avatar durhamg avatar facebook-github-bot avatar fanzeyi avatar genevievehelsel avatar jake-shadle avatar jsgf avatar kmancini avatar lnicco avatar lukaspiatkowski avatar ndmitchell avatar pedroerp avatar phshaikh avatar rjbailey avatar shri-khare avatar simpkins avatar simuthus-fb avatar snarkmaster avatar stepancheg avatar udippant avatar vitaut avatar xavierd avatar yfeldblum avatar zertosh avatar

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  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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

reindeer's Issues

Feature request: Fixup gallery? Or perhaps a `reindeer add` command?

Could there perhaps be a wiki added to this repo with a gallery of common fixups, maybe a generated table of crates with their known fixups?

Another interesting possibility is a command reindeer add that can apply known fixups... but as I write this I realize that vendor would already be a place to do this. I suppose that a reindeer add command would update your third party Cargo.toml with a dependency and then setup a know fixup for the crate (and transitives) in cases where you aren't going to vendor.

I'm willing to put a PoC of that together for discussion, but having only just started looking at all of this I'd hate to start digging around and find out there were already plans in place, or some internal convention or whatever that might soon be made public. :D

bracket-terminal crate ends up depending on two version of winit and can't be compiled

Howdy!

When attempting to buckify a build that uses bracket-lib I've slowly but steadily managed to get it's components to build. But for bracket-terminal I'm actually stumped and haven't found an example of how to properly handle it:

error[E0464]: multiple candidates for `rmeta` dependency `winit` found
 --> third_party/vendor/bracket-terminal-0.8.7/src/hal/crossterm_be/scancode_helper.rs:1:5
  |
1 | use winit::event::VirtualKeyCode;
  |     ^^^^^
  |
  = note: candidate #1: /home/chip/workspaces/rlt/buck-out/v2/gen/root/524f8da68ea2a374/third_party/__winit-0.26.1__/rlib-static-static-metadata/libwinit-38f23547.rmeta
  = note: candidate #2: /home/chip/workspaces/rlt/buck-out/v2/gen/root/524f8da68ea2a374/third_party/__winit-0.27.5__/rlib-static-static-metadata/libwinit-38f23182.rmeta

The problem is that it specifies a non-optional dependency on two different versions of winit, 0.26 for wasm targets, and 0.27 for all others: https://github.com/amethyst/bracket-lib/blob/master/bracket-terminal/Cargo.toml

I don't have any intention to target wasm at the moment. I'm using the default platforms which I didn't think included wasm.

The resulting BUCK deps for brack-terminal are using both version of winit:

platform = {
        "linux-arm64": dict(
            deps = [
                ":winit-0.26.1",
                ":winit-0.27.5",
            ],
        ),
        "linux-x86_64": dict(
            deps = [
                ":winit-0.26.1",
                ":winit-0.27.5",
            ],
        ),
        "macos-arm64": dict(
            deps = [
                ":winit-0.26.1",
                ":winit-0.27.5",
            ],
        ),
....

EDIT: This happens when you use the 'cross_term' feature specifically. The default opengl feature appears to generally work out.

Crates in lockfile are incompatible with current nightly Rust

The readme's recommended installation instruction of cargo install --locked --git https://github.com/facebookincubator/reindeer fails on nightly:

error: to use a constant of type `TypeId` in a pattern, `TypeId` must be annotated with `#[derive(PartialEq, Eq)]`
  --> value-bag-1.0.0-alpha.9/src/internal/cast/primitive.rs:43:33
   |
43 |   ...                           $const_ident => |v| Some(Internal::from(unsafe { &*(*...
   |                                 ^^^^^^^^^^^^
...
71 | / ...   to_internal![
72 | | ...       usize: (USIZE, OPTION_USIZE),
73 | | ...       u8: (U8, OPTION_U8),
74 | | ...       u16: (U16, OPTION_U16),
...  |
96 | | ...       String: (STRING, OPTION_STRING),
97 | | ...   ];
   | |_______- in this macro invocation
   |
   = note: the traits must be derived, manual `impl`s are not sufficient
   = note: see https://doc.rust-lang.org/stable/std/marker/trait.StructuralEq.html for details
   = note: this error originates in the macro `to_internal` (in Nightly builds, run with -Z macro-backtrace for more info)

error: to use a constant of type `TypeId` in a pattern, `TypeId` must be annotated with `#[derive(PartialEq, Eq)]`
  --> value-bag-1.0.0-alpha.9/src/internal/cast/primitive.rs:46:33
   |
46 |                                   $option_ident => |v| Some({
   |                                   ^^^^^^^^^^^^^
...
71 | /         to_internal![
72 | |             usize: (USIZE, OPTION_USIZE),
73 | |             u8: (U8, OPTION_U8),
74 | |             u16: (U16, OPTION_U16),
...  |
96 | |             String: (STRING, OPTION_STRING),
97 | |         ];
   | |_________- in this macro invocation
   |
   = note: the traits must be derived, manual `impl`s are not sufficient
   = note: see https://doc.rust-lang.org/stable/std/marker/trait.StructuralEq.html for details
   = note: this error originates in the macro `to_internal` (in Nightly builds, run with -Z macro-backtrace for more info)

error: to use a constant of type `TypeId` in a pattern, `TypeId` must be annotated with `#[derive(PartialEq, Eq)]`
  --> value-bag-1.0.0-alpha.9/src/internal/cast/primitive.rs:55:29
   |
55 |   ...                       STR => |v| Some(Internal::from(unsafe { &**(v as *const &...
   |                             ^^^
...
71 | / ...   to_internal![
72 | | ...       usize: (USIZE, OPTION_USIZE),
73 | | ...       u8: (U8, OPTION_U8),
74 | | ...       u16: (U16, OPTION_U16),
...  |
96 | | ...       String: (STRING, OPTION_STRING),
97 | | ...   ];
   | |_______- in this macro invocation
   |
   = note: the traits must be derived, manual `impl`s are not sufficient
   = note: see https://doc.rust-lang.org/stable/std/marker/trait.StructuralEq.html for details
   = note: this error originates in the macro `to_internal` (in Nightly builds, run with -Z macro-backtrace for more info)

error: could not compile `value-bag` (lib) due to 3 previous errors

Without --locked, it installs successfully using a newer version of value-bag.

How do you correctly handle fixups for multiple crate versions?

Ahoy!

Because Cargo is a cursed dependency system and provides absolutely no control over this, it's possible to end up having two versions of sckt-adwaita in your vendored sources.

This causes trouble since the latest version brought in needs a fixup to specify some extra_srcs, but the older version doesn't. reindeer buckify actually ends up failing because it can't find the extra sources that have been specified in the fixups.toml in the older version.

What is the correct way to resolve this situation with reindeer?

Workspace support has broken the example and it's unclear how to proceed

After #22 was implemented (in f2145de), I'm confused on how to update my Cargo.toml in order to work with reindeer buckify anymore. Absolutely everything I have tried results in the following error:

[ERROR reindeer] parsing metadata
    
    Caused by:
        0: deserializing json
        1: missing field `workspace_default_members` at line 1 column 40613

This exact same error occurs when you attempt to run reindeer buckify on the given examples/ directory Cargo.toml as well. I tried splitting and putting things in workspaces.default-members and several other things; nothing has changed this error at all.

The version of Reindeer is from Nixpkgs; it was built as of commit 7ab6fc8.

Warning and duplicates

How to reproduce:

git clone [email protected]:near/nearcore.git
cd nearcore
buck2 init --git --allow-dirty
reindeer buckify

Error

reindeer buckify
[WARN  reindeer::fixups] serde-1.0.160 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/serde-1.0.160/build.rs.
[WARN  reindeer::fixups] quote-1.0.26 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/quote-1.0.26/build.rs.
[WARN  reindeer::fixups] proc-macro2-1.0.64 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/proc-macro2-1.0.64/build.rs.
[WARN  reindeer::fixups] serde_derive-1.0.160 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/serde_derive-1.0.160/build.rs.
[WARN  reindeer::fixups] camino-1.0.8 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/camino-1.0.8/build.rs.
[WARN  reindeer::fixups] futures-core-0.3.21 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-core-0.3.21/build.rs.
[WARN  reindeer::fixups] libc-0.2.146 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/libc-0.2.146/build.rs.
[WARN  reindeer::fixups] num-rational-0.3.2 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/num-rational-0.3.2/build.rs.
[WARN  reindeer::fixups] target-lexicon-0.12.3 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/target-lexicon-0.12.3/build.rs.
[WARN  reindeer::fixups] serde_json-1.0.81 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/serde_json-1.0.81/build.rs.
[WARN  reindeer::fixups] num-traits-0.2.15 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/num-traits-0.2.15/build.rs.
[WARN  reindeer::fixups] rkyv-0.7.38 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/rkyv-0.7.38/build.rs.
[WARN  reindeer::fixups] indexmap-1.9.2 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/indexmap-1.9.2/build.rs.
[WARN  reindeer::fixups] log-0.4.17 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/log-0.4.17/build.rs.
[WARN  reindeer::fixups] finite-wasm-0.5.0 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/finite-wasm-0.5.0/build.rs.
[WARN  reindeer::fixups] num-integer-0.1.45 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/num-integer-0.1.45/build.rs.
[WARN  reindeer::fixups] winapi-0.3.9 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/winapi-0.3.9/build.rs.
[WARN  reindeer::fixups] rend-0.3.6 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/rend-0.3.6/build.rs.
[WARN  reindeer::fixups] ahash-0.7.6 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/ahash-0.7.6/./build.rs.
[WARN  reindeer::fixups] parking_lot_core-0.9.3 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/parking_lot_core-0.9.3/build.rs.
[WARN  reindeer::fixups] near-test-contracts-0.0.0 has a build script, but I don't know what to do with it: Unresolved build script at runtime/near-test-contracts/build.rs.
[WARN  reindeer::fixups] syn-1.0.103 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.103/build.rs.
[WARN  reindeer::fixups] crunchy-0.2.2 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/crunchy-0.2.2/build.rs.
[WARN  reindeer::fixups] num-bigint-0.3.3 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/num-bigint-0.3.3/build.rs.
[WARN  reindeer::fixups] reed-solomon-erasure-4.0.2 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/reed-solomon-erasure-4.0.2/build.rs.
[WARN  reindeer::fixups] core-foundation-sys-0.8.3 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/core-foundation-sys-0.8.3/build.rs.
[WARN  reindeer::fixups] ahash-0.8.3 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/ahash-0.8.3/./build.rs.
[WARN  reindeer::fixups] bytecheck-0.6.8 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/bytecheck-0.6.8/build.rs.
[WARN  reindeer::fixups] opentelemetry-otlp-0.10.0 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/opentelemetry-otlp-0.10.0/build.rs.
[WARN  reindeer::fixups] memchr-2.5.0 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/memchr-2.5.0/build.rs.
[WARN  reindeer::fixups] futures-channel-0.3.21 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-channel-0.3.21/build.rs.
[WARN  reindeer::fixups] crossbeam-utils-0.8.8 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/crossbeam-utils-0.8.8/build.rs.
[WARN  reindeer::fixups] futures-util-0.3.21 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-util-0.3.21/build.rs.
[WARN  reindeer::fixups] getrandom-0.1.16 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/getrandom-0.1.16/build.rs.
[WARN  reindeer::fixups] generic-array-0.14.5 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/generic-array-0.14.5/build.rs.
[WARN  reindeer::fixups] lock_api-0.4.7 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/lock_api-0.4.7/build.rs.
[WARN  reindeer::fixups] anyhow-1.0.62 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/anyhow-1.0.62/build.rs.
[WARN  reindeer::fixups] tokio-1.28.0 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-1.28.0/build.rs.
[WARN  reindeer::fixups] futures-task-0.3.21 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/futures-task-0.3.21/build.rs.
[WARN  reindeer::fixups] semver-1.0.9 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/semver-1.0.9/build.rs.
[WARN  reindeer::fixups] typenum-1.15.0 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/typenum-1.15.0/build/main.rs.
[WARN  reindeer::fixups] backtrace-0.3.67 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/backtrace-0.3.67/build.rs.
[WARN  reindeer::fixups] memoffset-0.8.0 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/memoffset-0.8.0/build.rs.
[WARN  reindeer::fixups] rustversion-1.0.6 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustversion-1.0.6/build/build.rs.
[WARN  reindeer::fixups] rayon-1.5.3 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-1.5.3/build.rs.
[WARN  reindeer::fixups] proc-macro-error-1.0.4 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/proc-macro-error-1.0.4/build.rs.
[WARN  reindeer::fixups] radium-0.7.0 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/radium-0.7.0/build.rs.
[WARN  reindeer::fixups] crc32fast-1.3.2 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/crc32fast-1.3.2/build.rs.
[WARN  reindeer::fixups] rayon-core-1.9.3 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.9.3/build.rs.
[WARN  reindeer::fixups] proc-macro-error-attr-1.0.4 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/proc-macro-error-attr-1.0.4/build.rs.
[WARN  reindeer::fixups] crossbeam-queue-0.3.8 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/crossbeam-queue-0.3.8/build.rs.
[WARN  reindeer::fixups] openssl-0.10.48 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/openssl-0.10.48/build.rs.
[WARN  reindeer::fixups] crossbeam-epoch-0.9.14 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/crossbeam-epoch-0.9.14/build.rs.
[WARN  reindeer::fixups] near-vm-vm-0.0.0 has a build script, but I don't know what to do with it: Unresolved build script at runtime/near-vm/vm/build.rs.
[WARN  reindeer::fixups] secp256k1-sys-0.8.1 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/secp256k1-sys-0.8.1/build.rs.
[WARN  reindeer::fixups] openssl-sys-0.9.83 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/openssl-sys-0.9.83/build/main.rs.
[WARN  reindeer::fixups] librocksdb-sys-0.11.0+8.1.1 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/librocksdb-sys-0.11.0+8.1.1/build.rs.
[WARN  reindeer::fixups] prometheus-0.13.3 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/prometheus-0.13.3/build.rs.
[WARN  reindeer::fixups] protobuf-2.27.1 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/protobuf-2.27.1/build.rs.
[WARN  reindeer::fixups] heapsize-0.4.2 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/heapsize-0.4.2/build.rs.
[WARN  reindeer::fixups] zstd-sys-2.0.1+zstd.1.5.2 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/zstd-sys-2.0.1+zstd.1.5.2/build.rs.
[WARN  reindeer::fixups] libz-sys-1.1.6 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/libz-sys-1.1.6/build.rs.
[WARN  reindeer::fixups] cookie-0.16.0 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/cookie-0.16.0/build.rs.
[WARN  reindeer::fixups] tikv-jemalloc-sys-0.5.2+5.3.0-patched has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/tikv-jemalloc-sys-0.5.2+5.3.0-patched/build.rs.
[WARN  reindeer::fixups] windows_x86_64_msvc-0.48.0 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/windows_x86_64_msvc-0.48.0/build.rs.
[WARN  reindeer::fixups] tokio-openssl-0.6.3 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/tokio-openssl-0.6.3/build.rs.
[WARN  reindeer::fixups] bzip2-sys-0.1.11+1.0.8 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/bzip2-sys-0.1.11+1.0.8/build.rs.
[WARN  reindeer::fixups] webrtc-util-0.7.0 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/webrtc-util-0.7.0/build.rs.
[WARN  reindeer::fixups] lz4-sys-1.9.4 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/lz4-sys-1.9.4/build.rs.
[WARN  reindeer::fixups] windows_aarch64_gnullvm-0.48.0 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/windows_aarch64_gnullvm-0.48.0/build.rs.
[WARN  reindeer::fixups] httparse-1.7.1 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/httparse-1.7.1/build.rs.
[WARN  reindeer::fixups] protobuf-3.0.2 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/protobuf-3.0.2/build.rs.
[WARN  reindeer::fixups] sysinfo-0.24.5 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/sysinfo-0.24.5/build.rs.
[WARN  reindeer::fixups] windows_x86_64_gnullvm-0.48.0 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/windows_x86_64_gnullvm-0.48.0/build.rs.
[WARN  reindeer::fixups] rustix-0.37.20 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustix-0.37.20/build.rs.
[WARN  reindeer::fixups] windows_x86_64_gnu-0.48.0 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/windows_x86_64_gnu-0.48.0/build.rs.
[WARN  reindeer::fixups] wasmtime-9.0.3 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/wasmtime-9.0.3/build.rs.
[WARN  reindeer::fixups] io-lifetimes-1.0.11 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/io-lifetimes-1.0.11/build.rs.
[WARN  reindeer::fixups] ntapi-0.3.7 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/ntapi-0.3.7/build.rs.
[WARN  reindeer::fixups] memoffset-0.6.5 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/memoffset-0.6.5/build.rs.
[WARN  reindeer::fixups] encoding_rs-0.8.31 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/encoding_rs-0.8.31/build.rs.
[WARN  reindeer::fixups] wasmer-vm-near-2.4.1 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/wasmer-vm-near-2.4.1/build.rs.
[WARN  reindeer::fixups] async-trait-0.1.68 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/async-trait-0.1.68/build.rs.
[WARN  reindeer::fixups] im-15.1.0 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/im-15.1.0/./build.rs.
[WARN  reindeer::fixups] zstd-safe-6.0.3+zstd.1.5.2 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/zstd-safe-6.0.3+zstd.1.5.2/build.rs.
[WARN  reindeer::fixups] num-bigint-0.2.6 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/num-bigint-0.2.6/build.rs.
[WARN  reindeer::fixups] psm-0.1.18 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/psm-0.1.18/build.rs.
[WARN  reindeer::fixups] wasmtime-runtime-9.0.3 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/wasmtime-runtime-9.0.3/build.rs.
[WARN  reindeer::fixups] lzma-sys-0.1.17 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/lzma-sys-0.1.17/build.rs.
[WARN  reindeer::fixups] ring-0.16.20 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/ring-0.16.20/build.rs.
[WARN  reindeer::fixups] wasmer-runtime-core-near-0.18.3 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/wasmer-runtime-core-near-0.18.3/build.rs.
[WARN  reindeer::fixups] cpp_demangle-0.3.5 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/cpp_demangle-0.3.5/build.rs.
[WARN  reindeer::fixups] cranelift-codegen-0.96.3 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/cranelift-codegen-0.96.3/build.rs.
[WARN  reindeer::fixups] target-lexicon-0.10.0 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/target-lexicon-0.10.0/build.rs.
[WARN  reindeer::fixups] nix-0.15.0 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/nix-0.15.0/build.rs.
[WARN  reindeer::fixups] blake3-0.3.8 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/blake3-0.3.8/build.rs.
[WARN  reindeer::fixups] near-network-0.0.0 has a build script, but I don't know what to do with it: Unresolved build script at chain/network/build.rs.
[WARN  reindeer::fixups] native-tls-0.2.10 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/native-tls-0.2.10/build.rs.
[WARN  reindeer::fixups] libfuzzer-sys-0.4.3 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/libfuzzer-sys-0.4.3/build.rs.
[WARN  reindeer::fixups] signal-hook-0.3.14 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/signal-hook-0.3.14/build.rs.
[WARN  reindeer::fixups] near-vm-compiler-test-derive-0.0.0 has a build script, but I don't know what to do with it: Unresolved build script at runtime/near-vm/compiler-test-derive/build.rs.
[WARN  reindeer::fixups] paperclip-0.8.0 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/paperclip-0.8.0/src/build/build.rs.
[WARN  reindeer::fixups] winreg-0.10.1 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/winreg-0.10.1/build.rs.
[WARN  reindeer::fixups] rustix-0.36.9 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/rustix-0.36.9/build.rs.
[WARN  reindeer::fixups] neard-0.0.0 has a build script, but I don't know what to do with it: Unresolved build script at neard/build.rs.
[WARN  reindeer::fixups] libsqlite3-sys-0.24.2 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/libsqlite3-sys-0.24.2/build.rs.
[WARN  reindeer::fixups] mime_guess-2.0.4 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/mime_guess-2.0.4/build.rs.
[WARN  reindeer::fixups] unicase-2.6.0 has a build script, but I don't know what to do with it: Unresolved build script at ../.cargo/registry/src/index.crates.io-6f17d22bba15001f/unicase-2.6.0/build.rs.
[WARN  reindeer::fixups] near-vm-test-api-0.0.0 has a build script, but I don't know what to do with it: Unresolved build script at runtime/near-vm/test-api/build.rs.
buck2 build //:root
File changed: prelude//.buckroot
File changed: prelude//prelude
File changed: prelude//prelude/.git
628 additional file change events
Error evaluating build file: `root//:BUCK`

Caused by:
    Traceback (most recent call last):
      * BUCK:11065, in <module>
          alias(
    error: Attempted to register target root//:parity-wasm twice, re-run the command with `--stack` to obtain a call stack of the first registration
         --> BUCK:11065:1
          |
    11065 | / alias(
    11066 | |     name = "parity-wasm",
    11067 | |     actual = ":parity-wasm-0.42.2",
    11068 | |     visibility = ["PUBLIC"],
    11069 | | )
          | |_^
          |

Build ID: 7931a53b-efe2-4d0a-ae17-6299397209ed
Jobs completed: 4. Time elapsed: 0.0s.
BUILD FAILED

Questions:

  1. How to handle build.rs?
  2. How to duplicates in dependecies? (example with parity-wasm)
  3. Why reindeer doesn't include imports on python_boostrap when needed?

Failed to coerce attr `licenses` when using `vendor=false` on a crate containing license metadata

As mentioned in #11:

so you might encounter wonky targets such as:

rust_library(
    ...
    licenses = ["../../../home/steveklabnik/.cargo/registry/src/index.crates.io-6f17d22bba15001f/owo-colors-3.5.0/LICENSE"],
)

Funny enough, this is precisely the issue I was running into this afternoon, and with the owo-colors LICENSE location, leading to a buck2 targets //... error like:

❯ buck2 targets //...
File changed: root//third-party/BUCK
Error parsing root//third-party
Error evaluating build file: `root//third-party:BUCK`

Caused by:
    Traceback (most recent call last):
      * third-party/BUCK:800, in <module>
          third_party_rust_library(
      * third-party/reindeer.bzl:20, in third_party_rust_library
          native.rust_library(
    error: Error coercing attribute `licenses` of `root//third-party:owo-colors-3.5.0`
      --> third-party/reindeer.bzl:20:5
       |
    20 |       native.rust_library(
       |  _____^
    21 | |         doctests = False,
    22 | |         **kwargs
    23 | |     )
       | |_____^
       |


    Error coercing attribute `licenses` of `root//third-party:owo-colors-3.5.0`

    Caused by:
        0: Error coercing attribute `licenses` of type `attrs.list(attrs.source(), default=[])`
        1: Error coercing ["../../../../../.cargo/registry/src/github.com-1ecc6299db9ec823/owo-colors-3.5.0/LICENSE"]
        2: Error coercing "../../../../../.cargo/registry/src/github.com-1ecc6299db9ec823/owo-colors-3.5.0/LICENSE"
        3: Couldn't coerce `../../../../../.cargo/registry/src/github.com-1ecc6299db9ec823/owo-colors-3.5.0/LICENSE` as a source.
             Error when treated as a target: Invalid absolute target pattern `../../../../../.cargo/registry/src/github.com-1ecc6299db9ec823/owo-colors-3.5.0/LICENSE` is not allowed: Expected a `:`, a trailing `/...` or the literal `...`.
             Error when treated as a path: expected a normalized path but got an un-normalized path instead: `../../../../../.cargo/registry/src/github.com-1ecc6299db9ec823/owo-colors-3.5.0/LICENSE`

Failed to parse 1 package
Build ID: ee2088e2-0803-4464-8ee0-18bc1c64be56
Jobs completed: 4. Time elapsed: 0.0s.

I was operating under the assumption that the relative path to LICENSE was outside the Buck2 package. Ideally, what would be a reasonable value for the third_party_rust_library rule's licenses argument? I'm working backwards in Reindeer's code to understand, so forgive a newcomer 😄

some confusion with the latest reindeer

I was trying out the latest reindeer, and I ran into something very confusing. I have a basic project, I'd like it to have a dependency on the semver crate. So I made third-party\Cargo.toml with this:

[workspace]

[package]
name = "rust-third-party"
version = "0.0.0"
publish = false
edition = "2021"

# Dummy target to keep Cargo happy
[[bin]]
name = "fake"
path = "/dev/null"

[dependencies]
semver = "1.0.17"

Since my intention was to not use vendoring, I created a reindeer.toml:

vendor = false

I didn't run reindeer vendor, but instead, ran reindeer buckify:

〉reindeer buckify
[ERROR reindeer] Failed to load C:\Users\steve\Documents\GitHub\buck-rust-hello\third-party\Cargo.lock

    Caused by:
        The system cannot find the file specified. (os error 2)

I guess this makes sense, but sure, I can also generate a lockfile easily:

〉cargo generate-lockfile

This produces a very sensible Cargo.lock:

# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3

[[package]]
name = "rust-third-party"
version = "0.0.0"
dependencies = [
 "semver",
]

[[package]]
name = "semver"
version = "1.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed"

But reindeer isn't happy:

〉reindeer buckify
[ERROR reindeer] parsing metadata

    Caused by:
        0: running cargo
        1: cargo metadata --format-version 1 --frozen --locked --offline --manifest-path C:\Users\steve\Documents\GitHub\buck-rust-hello\third-party\Cargo.toml failed:
           error: failed to get `semver` as a dependency of package `rust-third-party v0.0.0 (C:\Users\steve\Documents\GitHub\buck-rust-hello\third-party)`

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

           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: C:\Users\steve\Documents\GitHub\buck-rust-hello\third-party\vendor

           Caused by:
             The system cannot find the path specified. (os error 3)

Oh, it still wants a vendor directory. I'll make one:

〉mkdir vendor
〉reindeer buckify
[ERROR reindeer] parsing metadata

    Caused by:
        0: running cargo
        1: cargo metadata --format-version 1 --frozen --locked --offline --manifest-path C:\Users\steve\Documents\GitHub\buck-rust-hello\third-party\Cargo.toml failed:
           error: no matching package named `semver` found
           location searched: registry `crates-io`
           required by package `rust-third-party v0.0.0 (C:\Users\steve\Documents\GitHub\buck-rust-hello\third-party)`
           As a reminder, you're using offline mode (--offline) which can sometimes cause surprising resolution failures, if this error is too confusing you may wish to retry without the offline flag.

So that doesn't make too much sense either. I'm trying not to vendor!

Now what I can do is run reindeer vendor, then reindeer buckify, which does do the right thing. I still have to delete the contents of vendor\semver though, only after a reindeer buckify, not before.

Anyway I guess my point here is, it might make sense for something to set up third-party\.cargo somewhere other than reindeer vendor, given that it's kinda weird to run a command named after a thing I'm trying not to do :) Or also, maybe just explicitly documenting the no-vendoring case, so that it's known that you should do it anyway.

Unresolved dependencies with specs crate

Hello!

I'm giving reindeer a shot and trying it out on the specs crate ended up with some failures to build. The ahash create seemed to have missed the once_cell dependency, and when you look at the cargo manifest https://github.com/tkaitchuck/aHash/blob/master/Cargo.toml it does seem like a weird one!

So after trying some variations to figure out what is actually failing I know at least a couple of things:

  • ahash 0.7 crate doesn't figure out the once_cell dep
  • ahash 0.8 uses the getrandom crate which fails to figure out the libc dep
  • specs pulls in num_cpus 1.16 which fails to figure out the libc dep

Thanks!

SSL linking problems when building

Hi.

I just tried to build reindeer as I wish to use ocamlrep. I got linking problems when trying to build it out of the box on ubuntu 23.04.

  = note: /usr/bin/ld: /home/mini-me/home/cellar/reindeer/target/debug/deps/liblibgit2_sys-18f7effd1c8d5dbd.rlib(openssl.o): in function `openssl_init':                                                                                      
          /home/mini-me/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libgit2-sys-0.13.4+1.4.2/libgit2/src/libgit2/streams/openssl.c:145: undefined reference to `SSL_CTX_ctrl'                                                        
          /usr/bin/ld: /home/yziquel/home/cellar/reindeer/target/debug/deps/liblibgit2_sys-18f7effd1c8d5dbd.rlib(openssl.o): in function `verify_server_cert':                                                                                
          /home/mini-me/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libgit2-sys-0.13.4+1.4.2/libgit2/src/libgit2/streams/openssl.c:401: undefined reference to `SSL_get1_peer_certificate'                                           
          /usr/bin/ld: /home/yziquel/home/cellar/reindeer/target/debug/deps/liblibgit2_sys-18f7effd1c8d5dbd.rlib(openssl.o): in function `openssl_connect':                                                                                   
          /home/mini-me/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libgit2-sys-0.13.4+1.4.2/libgit2/src/libgit2/streams/openssl.c:531: undefined reference to `SSL_ctrl'                                                            
          /usr/bin/ld: /home/yziquel/home/cellar/reindeer/target/debug/deps/liblibgit2_sys-18f7effd1c8d5dbd.rlib(openssl.o): in function `openssl_certificate':                                                                               
          /home/mini-me/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libgit2-sys-0.13.4+1.4.2/libgit2/src/libgit2/streams/openssl.c:545: undefined reference to `SSL_get1_peer_certificate'                                           
          /usr/bin/ld: /home/mini-me/home/cellar/reindeer/target/debug/deps/liblibssh2_sys-6611c950b2ef2b16.rlib(openssl.o): in function `_libssh2_ed25519_new_private_frommemory':                                                           
          /home/mini-me/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libssh2-sys-0.2.23/libssh2/src/openssl.c:1835: undefined reference to `EVP_PKEY_get_id'                                                                          
          /usr/bin/ld: /home/mini-me/home/cellar/reindeer/target/debug/deps/liblibssh2_sys-6611c950b2ef2b16.rlib(openssl.o): in function `_libssh2_pub_priv_keyfile':                                                                         
          /home/mini-me/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libssh2-sys-0.2.23/libssh2/src/openssl.c:3001: undefined reference to `EVP_PKEY_get_id'                                                                          
          /usr/bin/ld: /home/mini-me/home/cellar/reindeer/target/debug/deps/liblibssh2_sys-6611c950b2ef2b16.rlib(openssl.o): in function `_libssh2_pub_priv_keyfilememory':                                                                   
          /home/mini-me/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libssh2-sys-0.2.23/libssh2/src/openssl.c:3211: undefined reference to `EVP_PKEY_get_id'                                                                          
          /usr/bin/ld: /home/mini-me/home/cellar/reindeer/target/debug/deps/liblibssh2_sys-6611c950b2ef2b16.rlib(mac.o): in function `mac_method_hmac_ripemd160_hash':                                                                        
          /home/mini-me/.cargo/registry/src/index.crates.io-6f17d22bba15001f/libssh2-sys-0.2.23/libssh2/src/mac.c:354: undefined reference to `EVP_ripemd160'                                                                                 
          /usr/bin/ld: /home/mini-me/home/cellar/reindeer/target/debug/deps/liblibssh2_sys-6611c950b2ef2b16.rlib(crypt.o):(.data.rel.ro.libssh2_crypt_method_blowfish_cbc+0x40): undefined reference to `EVP_bf_cbc'                          
          /usr/bin/ld: /home/mini-me/home/cellar/reindeer/target/debug/deps/liblibssh2_sys-6611c950b2ef2b16.rlib(crypt.o):(.data.rel.ro.libssh2_crypt_method_cast128_cbc+0x40): undefined reference to `EVP_cast5_cbc'                        
          collect2: error: ld returned 1 exit status                                                                                                                                                                   

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.