Giter Club home page Giter Club logo

cargo-tree's People

Contributors

bossmc avatar brahmlower avatar dependabot-preview[bot] avatar est31 avatar fauxfaux avatar fbernier avatar g2p avatar gnmerritt avatar infinity0 avatar m1cha avatar matthewkmayer avatar matthiaskrgr avatar nebkor avatar ralfjung avatar reynoldsbd avatar sfackler avatar tesuji avatar viraptor 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

cargo-tree's Issues

Add a --all-features-recursive option and communicate better about omitted features

Currently, cargo-tree --all-features only resolves the features of the top-level crate and their dependencies, which may omit features from child crates. For example, chrono-0.4.0 depends on num 0.1 with default-features = false, and so:

chrono-0.4.0$ cargo tree -p num --all-features -a
num v0.1.41
[dependencies]
├── num-integer v0.1.35
│   [dependencies]
│   └── num-traits v0.1.42
├── num-iter v0.1.34
│   [dependencies]
│   ├── num-integer v0.1.35
│   │   [dependencies]
│   │   └── num-traits v0.1.42
│   └── num-traits v0.1.42
└── num-traits v0.1.42

whereas running the same command in num's workspace:

num-0.1.41$ cargo tree -p num --all-features -a
num v0.1.41 (file:///$PWD)
[dependencies]
├── num-bigint v0.1.41
[..]
├── num-complex v0.1.41
[... etc, lots more stuff ...]

My use-case for cargo-tree requires not only to resolve a single crate's dependencies, but to resolve its child dependencies from the point-of-view of (anyone that could possibly also depend on that child crate). In this case, a --all-features-recursive output would be more useful.

Identify proc_macro dependencies

When cross-compiling, it's useful to know which crates are compiled for the host and which for the target. The [build-dependencies] and [dev-dependencies] sections are already useful for filtering some of this information. However, proc_macro crates are shown as regular dependencies.

Build-deps of dev-deps are not listed in any view

Basically, imagine there is a crate built and it does not show up in either of cargo tree, cargo tree -k dev or cargo tree -k build, where does it come from? It's from one of the dependencies' build deps!

Finally found it in this "view":

cargo tree -p newtype_derive -k build
newtype_derive v0.1.6
└── rustc_version v0.1.7
    └── semver v0.1.20

I'm sorry that I'm slightly lazy, I've only tested with cargo tree 0.14. It didn't look like recent git history had fixed this.

What's expected? I would kind of expect it in -k dev. I think I already disagree a bit with the kind split, because regular dependencies are not shown in -k dev. I'd like to see a tree of all crates that are built for dev-compiles (so in "cargo test"). That includes all regular deps and dev-deps. Digressions... but that kind of explains the bug, doesn't it?

No error when target is invalid

This doesn't error:

$ cargo tree --target foo

This does:

$ cargo build --target foo
error: failed to run `rustc` to learn about target-specific information

To learn more, run the command again with --verbose.

This is very annoying if you use custom targets and forget to set RUST_TARGET_PATH when running cargo tree (which would make a potentially invalid target valid)

Please support running standalone

cargo-tree expects to find a local Cargo.toml file. Please consider adding support for running on a named package directly from the registry: cargo tree somecrate.

Broken because latest cargo 0.20.0+ creates bare crate index

rustc 1.19.0-nightly (75b056812 2017-05-15)

cargo 0.20.0-nightly (13d92c64d 2017-05-12)

cargo-tree compiled against cargo 0.18.0


$ cargo tree
    Updating registry `https://github.com/rust-lang/crates.io-index`
error: An unknown error occurred

$ RUST_LOG=trace cargo tree

<snip>

TRACE:cargo::core::source: loading SourceId; registry https://github.com/rust-lang/crates.io-index
    Updating registry `https://github.com/rust-lang/crates.io-index`
TRACE:cargo::sources::registry::remote: [registry https://github.com/rust-lang/crates.io-index] updating to rev 335e8a73a2d33fd1999bd9fdcbf52dd21e696af8
DEBUG:cargo: exit_with_error; err=CliError { error: Some(Error { code: -8, klass: 6, message: "Cannot reset hard. This operation is not allowed against bare repositories." }), unknown: true, exit_code: 101 }

The local crate index is indeed a bare repo (due to rust-lang/cargo@15cc376 ) but cargo-tree compiles against an older cargo (0.18.0), so tries to git reset --hard the crate index repo (repo.reset(&object, git2::ResetType::Hard, None)?;), which fails.

I don't know if this can be fixed by changing cargo-tree to use cargo 0.20.0 (ie will it then stop working against crate index created by older cargo that isn't bare?) but I figured I'd atleast document this here.

cc @alexcrichton

error: failed to run custom build command for `kernel32-sys v0.2.2`

I tried installing cargo-tree in order to help diagnose a build problem with kernel32-sys and ran into the exact same problem. I could use some help troubleshooting this.

C:\Users\camer\rs\octh_helloworld [master +5 ~0 -0 !]> cargo install cargo-tree
    Updating registry `https://github.com/rust-lang/crates.io-index`
 Downloading cargo-tree v0.12.0
  Installing cargo-tree v0.12.0
 Downloading petgraph v0.4.4
 Downloading cargo v0.18.0
 Downloading libc v0.2.23
 Downloading fixedbitset v0.1.6
 Downloading ordermap v0.2.10
 Downloading git2 v0.6.5
 Downloading serde_ignored v0.0.2
 Downloading url v1.4.0
 Downloading chrono v0.2.25
 Downloading git2-curl v0.7.0
 Downloading fs2 v0.4.1
 Downloading libgit2-sys v0.6.10
 Downloading crossbeam v0.2.10
 Downloading shell-escape v0.1.3
 Downloading tar v0.4.12
 Downloading docopt v0.7.0
 Downloading tempdir v0.3.5
 Downloading flate2 v0.2.19
 Downloading curl v0.4.6
 Downloading filetime v0.1.10
 Downloading semver v0.6.0
 Downloading serde_derive v0.9.15
 Downloading num_cpus v1.4.0
 Downloading crates-io v0.7.0
 Downloading toml v0.3.2
 Downloading curl-sys v0.3.11
 Downloading libz-sys v1.0.13
 Downloading libssh2-sys v0.2.6
 Downloading pkg-config v0.3.9
 Downloading gcc v0.3.46
 Downloading cmake v0.1.23
 Downloading matches v0.1.4
 Downloading idna v0.1.1
 Downloading unicode-normalization v0.1.4
 Downloading unicode-bidi v0.2.6
 Downloading num v0.1.37
 Downloading num-iter v0.1.33
 Downloading num-integer v0.1.34
 Downloading miniz-sys v0.1.9
 Downloading semver-parser v0.7.0
 Downloading serde_codegen_internals v0.14.2
 Downloading miow v0.2.1
 Downloading psapi-sys v0.1.0
 Downloading advapi32-sys v0.2.0
 Downloading ws2_32-sys v0.2.1
 Downloading net2 v0.2.29
   Compiling ordermap v0.2.10
   Compiling fixedbitset v0.1.6
   Compiling num-traits v0.1.37
   Compiling unicode-normalization v0.1.4
   Compiling lazy_static v0.2.8
   Compiling libc v0.2.23
   Compiling winapi v0.2.8
   Compiling log v0.3.7
   Compiling winapi-build v0.1.1
   Compiling filetime v0.1.10
   Compiling memchr v1.0.1
   Compiling matches v0.1.4
   Compiling tar v0.4.12
   Compiling crossbeam v0.2.10
   Compiling shell-escape v0.1.3
   Compiling glob v0.2.11
   Compiling rand v0.3.15
   Compiling cfg-if v0.1.0
   Compiling strsim v0.6.0
   Compiling quote v0.3.15
   Compiling gcc v0.3.46
   Compiling regex-syntax v0.4.0
   Compiling unicode-xid v0.0.4
   Compiling synom v0.11.3
   Compiling serde v0.9.15
   Compiling pkg-config v0.3.9
   Compiling aho-corasick v0.6.3
   Compiling advapi32-sys v0.2.0
   Compiling kernel32-sys v0.2.2
   Compiling unicode-bidi v0.2.6
   Compiling tempdir v0.3.5
   Compiling ws2_32-sys v0.2.1
   Compiling num_cpus v1.4.0
   Compiling utf8-ranges v1.0.0
   Compiling itoa v0.3.1
error: failed to run custom build command for `kernel32-sys v0.2.2`
process didn't exit successfully: `C:\Users\camer\AppData\Local\Temp\cargo-install.BKbYOhP6uKBW\release\build\kernel32-
sys-5ee1259db1228dbc\build-script-build` (exit code: 3221225781)
Build failed, waiting for other jobs to finish...
error: failed to compile `cargo-tree v0.12.0`, intermediate artifacts can be found at `C:\Users\camer\AppData\Local\Tem
p\cargo-install.BKbYOhP6uKBW`

Caused by:
  build failed

Cannot install on stock macOS

cargo-tree won't build on stock macOS due to a transitive dependency on openssl-sys which I believe comes from cargo. The issue is that macOS ships with a very old version of OpenSSL that openssl-sys does not support. I'm pretty sure this can be worked around with brew install openssl but I don't use Homebrew so that doesn't work for me.

A quick look at https://github.com/rust-lang/cargo/blob/master/Cargo.toml indicates that there's a vendored-openssl feature flag, it might be a good idea to opt into that feature flag when building cargo-tree on macOS (or at least to re-expose it so I can select it myself).

Missing information with overridden dependencies

[package]
name = "treetest"
version = "0.1.0"

[dependencies]
rand = "*"

results in:

$ cargo tree
treetest v0.1.0 (file:///tmp/treetest)
└── rand v0.3.14
    └── libc v0.2.14

but

[package]
name = "treetest"
version = "0.1.0"

[dependencies]
rand = "*"

[replace]
'libc:0.2.14' = { git = "https://github.com/rust-lang/libc", tag = "0.2.14" }

results in:

$ cargo tree
treetest v0.1.0 (file:///tmp/treetest)
└── rand v0.3.14

OSX instructions

Initial caveat: rustup may have been set to Rust 1.9.0 not 1.10.0.

$ cargo install cargo-tree gives me

...
error: failed to compile `cargo-tree v0.5.0`, intermediate artifacts can be found at `/Users/matthew/Documents/rusoto/target-install`

Caused by:
  failed to run custom build command for `libssh2-sys v0.1.37`
Process didn't exit successfully: `/Users/matthew/Documents/rusoto/target-install/release/build/libssh2-sys-cbc6fdd97830bc3a/build-script-build` (exit code: 101)
--- stdout
running: "cmake" "/Users/matthew/.cargo/registry/src/github.com-88ac128001ac3a9a/libssh2-sys-0.1.37/libssh2" "-DCRYPTO_BACKEND=OpenSSL" "-DOPENSSL_INCLUDE_DIR=/usr/local/opt/openssl/include" "-DBUILD_SHARED_LIBS=OFF" "-DENABLE_ZLIB_COMPRESSION=ON" "-DCMAKE_INSTALL_LIBDIR=lib" "-DBUILD_EXAMPLES=OFF" "-DBUILD_TESTING=OFF" "-DCMAKE_INSTALL_PREFIX=/Users/matthew/Documents/rusoto/target-install/release/build/libssh2-sys-cbc6fdd97830bc3a/out" "-DCMAKE_C_FLAGS= -O0 -ffunction-sections -fdata-sections -m64 -fPIC" "-DCMAKE_C_COMPILER=/usr/bin/cc" "-DCMAKE_CXX_FLAGS= -O0 -ffunction-sections -fdata-sections -m64 -fPIC" "-DCMAKE_CXX_COMPILER=/usr/bin/c++" "-DCMAKE_BUILD_TYPE=Release"

--- stderr
thread '<main>' panicked at '
failed to execute command: No such file or directory (os error 2)
is `cmake` not installed?

Running $ brew install cmake then $ cargo install cargo-tree makes it all work.

Would an extra section on installing for OSX in the README be appropriate?

cargo dependency rename breaks cargo-tree

Using the feature of rust-lang/cargo#4953 to rename a dependency in order to use parts from two versions of same crate, results in the following error when attempting to use cargo tree:

error: failed to parse manifest at /home/david/src/bar/Cargo.toml

Caused by:
Dependency 'foo' has different source paths depending on the build target. Each
dependency must have a single canonical source path irrespective of build target.

This is of course an interesting case to want to see the dependency tree and check duplicates!

I will share an actual Cargo.toml that exhibits the problem, shortly.

packages not in the dependency graph for a given target lead to panics

Attempting to find dependencies of a particular package in Firefox's repository from an x86-64 Linux machine gives:

froydnj@hawkeye:~/src/gecko-dev.git$ RUST_BACKTRACE=1 cargo tree --manifest-path `pwd`/toolkit/library/rust/Cargo.toml -p winapi:0.2.8 --invert
thread 'main' panicked at 'no entry found for key', libcore/option.rs:960:5
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
             at libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
   1: std::sys_common::backtrace::print
             at libstd/sys_common/backtrace.rs:71
             at libstd/sys_common/backtrace.rs:59
   2: std::panicking::default_hook::{{closure}}
             at libstd/panicking.rs:211
   3: std::panicking::default_hook
             at libstd/panicking.rs:227
   4: std::panicking::rust_panic_with_hook
             at libstd/panicking.rs:511
   5: std::panicking::continue_panic_fmt
             at libstd/panicking.rs:426
   6: rust_begin_unwind
             at libstd/panicking.rs:337
   7: core::panicking::panic_fmt
             at libcore/panicking.rs:92
   8: core::option::expect_failed
             at libcore/option.rs:960
   9: <std::collections::hash::map::HashMap<K, V, S> as core::ops::index::Index<&'a Q>>::index
  10: cargo_tree::print_tree
  11: cargo_tree::real_main
  12: cargo_tree::main
  13: std::rt::lang_start::{{closure}}
  14: std::panicking::try::do_call
             at libstd/rt.rs:59
             at libstd/panicking.rs:310
  15: __rust_maybe_catch_panic
             at libpanic_unwind/lib.rs:105
  16: std::rt::lang_start_internal
             at libstd/panicking.rs:289
             at libstd/panic.rs:392
             at libstd/rt.rs:58
  17: main
  18: __libc_start_main
  19: _start

The problem seems to be that winapi 0.2.8 is only used on Windows targets:

froydnj@hawkeye:~/src/gecko-dev.git$ RUST_BACKTRACE=1 cargo tree --manifest-path `pwd`/toolkit/library/rust/Cargo.toml -p winapi:0.2.8 --target i686-pc-windows-msvc --invert
winapi v0.2.8
├── atty v0.2.2
│   └── env_logger v0.5.6
│       ├── gkrust-shared v0.1.0 (file:///home/froydnj/src/gecko-dev.git/toolkit/library/rust/shared)
│       │   └── gkrust v0.1.0 (file:///home/froydnj/src/gecko-dev.git/toolkit/library/rust)
│       └── stylo_tests v0.0.1 (file:///home/froydnj/src/gecko-dev.git/servo/ports/geckolib/tests)
│           [dev-dependencies]
│           └── gkrust v0.1.0 (file:///home/froydnj/src/gecko-dev.git/toolkit/library/rust) (*)
├── kernel32-sys v0.2.2
│   ├── atty v0.2.2 (*)
│   └── parking_lot_core v0.2.7
│       └── parking_lot v0.6.3
│           ├── geckoservo v0.0.1 (file:///home/froydnj/src/gecko-dev.git/servo/ports/geckolib)
│           │   └── stylo_tests v0.0.1 (file:///home/froydnj/src/gecko-dev.git/servo/ports/geckolib/tests) (*)
│           └── style v0.0.1 (file:///home/froydnj/src/gecko-dev.git/servo/components/style)
│               ├── geckoservo v0.0.1 (file:///home/froydnj/src/gecko-dev.git/servo/ports/geckolib) (*)
│               └── stylo_tests v0.0.1 (file:///home/froydnj/src/gecko-dev.git/servo/ports/geckolib/tests) (*)
├── parking_lot_core v0.2.7 (*)
└── u2fhid v0.2.0 (file:///home/froydnj/src/gecko-dev.git/dom/webauthn/u2f-hid-rs)
    └── gkrust-shared v0.1.0 (file:///home/froydnj/src/gecko-dev.git/toolkit/library/rust/shared) (*)

Which is understandable, but it would be good to give a better error message than panicking.

Spurious "broken pipe" error

$ cargo tree | head -n1
debcargo v1.3.0 (file:///$PWD)
thread 'main' panicked at 'failed printing to stdout: Broken pipe (os error 32)', src/libstd/io/stdio.rs:692:8
note: Run with `RUST_BACKTRACE=1` for a backtrace.

Can be suppressed with 2>/dev/null but this also suppresses any other errors, and other UNIX tools don't need this.

[Feature Request] Enable Version Analysis

It would be nice to see how many versions off crates are from the current published version on crates.io.

I was looking at my own crate recently and did not find a quick way to do this. I then found cargo tree which displays the output exactly how I would like to see it; however, it would be a great feature to see (not by default of course since this would involve web requests) how many versions off the dependencies I am using are. It would be useful for example, if there was an openssl update due to a security vulnerability.

Example output:

cargo tree -x --color=always
├── <GREEN> CRATE1 v1.0.0 [=] </GREEN>
└── <BLUE> CRATE2 v0.4.5 [v0.4.6] </BLUE>
    └── <YELLOW> CRATE3 v1.1.11 [v1.2.55] </YELLOW>
    └── <RED> CRATE4 v0.2.11 [v1.0.0] </RED>

In my mind the color output would be a great way to spot crates that definitely, might, or could use a version bump. With the most recent version number provided in the [] next to the crates current version.

Where color can be based off the versions X.Y.Z where if off by X red, off by Y Yellow, and off by Z Green, finally if the crate is equal Blue. Without the ability to colorize output you would still have the version numbers next to the crate, and the most up-to-date crates will have a visually blending [=] drawing attention to out-of-date crates.

Version analysis can be quite complicated and crate dependent but a simple scheme would make at glance quick and easy. Also a simple scheme can easy be published in the --help output giving the user a quick guide.

url-0.5.9: could not parse input as TOML

As seen in rusoto at 76c7c56, where we're still using an old version of url, 0.5.9:

$ cargo tree gives

error: unable to get packages from source

Caused by:
  failed to parse manifest at `/Users/matthew/.cargo/registry/src/github.com-1ecc6299db9ec823/url-0.5.9/Cargo.toml`

Caused by:
  could not parse input as TOML
/Users/matthew/.cargo/registry/src/github.com-1ecc6299db9ec823/url-0.5.9/Cargo.toml:14:3 expected a newline after table definition

error: 

Line in file specified:

[[test]] name = "format"

Updating url to the latest version, 1.1.1, allows cargo tree to work as expected. Is this a bug in pre-1.0.0 url or cargo-tree?

Sort `cargo tree -d`

I have a crate that has transitive dependencies on both serde 0.9 and serde 0.8. I can run cargo tree -d to discover this.

But sometimes serde 0.8 is shown before 0.9, sometimes after. I don't care whether the order is decreasing by version number or increasing by version number or something else but it should be consistent so that I can sanely diff the output before/after making a change to my Cargo.toml.

Does not work when there are dependency issues

    Updating `git://mirrors.ustc.edu.cn/crates.io-index` index
    Updating git repository `https://github.com/paritytech/parity-ethereum`
    Updating git repository `https://github.com/paritytech/hidapi-rs`
    Updating git repository `https://github.com/paritytech/libusb-rs`
    Updating git repository `https://github.com/paritytech/trezor-sys`
    Updating git repository `https://github.com/paritytech/app-dirs-rs`
    Updating git repository `https://github.com/paritytech/libusb-sys`
error: failed to select a version for `ring`.
    ... required by package `parity-crypto v0.3.0`
    ... which is depended on by `mycrate v0.1.1`
    ... which is depended on by `myprogram v0.1.0`
versions that meet the requirements `^0.14.3` are: 0.14.6, 0.14.5, 0.14.4, 0.14.3

the package `ring` links to the native library `ring-asm`, but it conflicts with a previous package which links to `ring-asm` as well:
package `ring v0.13.5`
    ... which is depended on by `parity-crypto v0.2.0`
    ... which is depended on by `ethcore v1.12.0 (https://github.com/paritytech/parity-ethereum?tag=v2.3.0#10657d96)`
    ... which is depended on by `myprogram v0.1.0`

failed to select a version for `ring` which could resolve this conflict

I've checked the options but none of them seems to help.

Add --list to list all transitive dependencies once

Currently, it's very hard to calculate the exact number of total transient dependencies without duplicates.

I know it's ironic to do tree --list, but it's just impossible to do with a tree and it doesn't make sense to create a separate command.

However renaming this to cargo deps could be a thing, but I'll leave that idea behind.

Would there be interest in this feature?

Can't install using cargo install

Since openssl-sys 0.9.0 has been released, cargo's dependency resolution mechanism is unable to automatically choose a single openssl-sys version for this crate, resulting in a failed build:

  native library `openssl` is being linked to by more than one version of the same package, but it can only be linked once; try updating or pinning your dependencies to ensure that this package only shows up once

When I clone manually and do:

cargo update -p curl:0.3.10 --precise 0.3.9
cargo update -p openssl-sys:0.9.0 --precise 0.7.17

everything builds fine.

Support comma-separated features

$ cargo build --features core,unicase
   Compiling phf v0.7.21
    Finished dev [unoptimized + debuginfo] target(s) in 0.31 secs

$ cargo tree --features core,unicase
error: Package `phf v0.7.21` does not have these features: `core,unicase`

Undefined symbol "___isOSVersionAtLeast" when building on OSX 10.14

cargo install cargo-tree fails to build, with that error. There's a fix that worked for me at the bottom.

Cargo version:

$ cargo --version
cargo 1.34.0-nightly (5c6aa46e6 2019-02-22)

Initial Build Error

$ cargo install cargo-tree
    Updating crates.io index
  Installing cargo-tree v0.24.0
   Compiling serde v1.0.89
   [...snip...]
   Compiling cargo v0.33.0
   Compiling cargo-tree v0.24.0
error: linking with `cc` failed: exit code: 1
  |
  = note: "cc" "-m64" "-L"
  [... tons of objects explicitly listed here...]

rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/x86_64-apple-darwin/lib/libcompiler_builtins-93dcb870eb2f89d4.rlib" "-framework" "Security" "-liconv" "-framework" "Security" "-framework" "CoreFoundation" "-lssl" "-lcrypto" "-framework" "Security" "-framework" "CoreFoundation" "-lz" "-framework" "CoreFoundation" "-lSystem" "-lresolv" "-lc" "-lm"
  = note: Undefined symbols for architecture x86_64:
            "___isOSVersionAtLeast", referenced from:
                _darwinssl_connect_common in libcurl_sys-90e4bc5d19684572.rlib(darwinssl.o)
                _darwinssl_connect_step2 in libcurl_sys-90e4bc5d19684572.rlib(darwinssl.o)
          ld: symbol(s) not found for architecture x86_64
          clang: error: linker command failed with exit code 1 (use -v to see invocation)


error: aborting due to previous error

error: failed to compile `cargo-tree v0.24.0`, intermediate artifacts can be found at `/var/folders/v8/z79nbgzs4_vddyznhfkr7rq40000z8/T/cargo-installNn4bfg`

Caused by:
  Could not compile `cargo-tree`.

To learn more, run the command again with --verbose.

I can make this succeed by adding "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.1.0/lib/darwin/libclang_rt.osx.a" to the large list of objects passed to cc. This approach from a blog entry that came up when I did a google search for the error/symbol. The object output is (though not named that yet) the cargo-tree binary, and the command works if I copy it to ~/.cargo/bin/

Doesn't detect inverse tree when sub crate of workspace is the leaf

I tried running cargo-tree on my workspace's top level crate:

> cargo tree -i -p fs2
error: There are multiple `fs2` packages in your project, and the specification `fs2` is ambiguous.
Please re-run this command with `-p <spec>` where `<spec>` is one of the following:
  fs2:0.2.5
  fs2:0.4.3


> cargo tree -i -p fs2:0.2.5
thread 'main' panicked at 'no entry found for key', libcore\option.rs:914:5
stack backtrace:


> cargo tree -i -p fs2:0.4.3
fs2 v0.4.3
└── rustbreak v1.3.0 (https://github.com/TheNeikos/rustbreak?rev=561c203#561c2031)
    ├── db v0.1.0 (file:///D:/projects/myproject/db)
    │   ├── core_types v0.1.0 (file:///D:/projects/myproject/core_types)
    │   │   ├── myproject v0.1.0 (file:///D:/projects/myproject)
    │   │   ├── webui v0.1.0 (file:///D:/projects/myproject/webui)
    │   │   │   └── myproject v0.1.0 (file:///D:/projects/myproject) (*)
    │   │   └── window v0.1.0 (file:///D:/projects/myproject/window)
    │   │       └── myproject v0.1.0 (file:///D:/projects/myproject) (*)
    │   ├── similar_tracks v0.1.0 (file:///D:/projects/myproject/similar_tracks)
    │   │   └── myproject v0.1.0 (file:///D:/projects/myproject) (*)
    │   ├── myproject v0.1.0 (file:///D:/projects/myproject) (*)
    │   └── window v0.1.0 (file:///D:/projects/myproject/window) (*)
    └── myproject v0.1.0 (file:///D:/projects/myproject) (*)

But in Cargo.lock, I have:

[[package]]
name = "window"
version = "0.1.0"
dependencies = [
 "bidir-map 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
 "core_types 0.1.0",
 "db 0.1.0",
 "derive-new 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
 "enum_primitive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
 "escapi 0.1.0 (git+https://github.com/Boscop/escapi-rs)",
 "fps-loop 0.1.0",
 "glium 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)",
 "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
 "mozjpeg-sys 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)",
 "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)",
 "palette 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
 "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)",
 "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)",
 "shortmsg 0.1.0",
 "smart-default 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
 "type-name 0.1.0",
]

[[package]]
name = "glium"
version = "0.17.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
 "backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
 "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
 "gl_generator 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
 "glutin 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
 "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
 "smallvec 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
]

[[package]]
name = "glutin"
version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
 "android_glue 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
 "cgl 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
 "cocoa 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
 "core-foundation 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
 "core-graphics 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
 "dwmapi-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
 "gdi32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
 "gl_generator 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
 "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)",
 "objc 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
 "osmesa-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
 "shared_library 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
 "shell32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
 "user32-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
 "wayland-client 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)",
 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 "winit 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)",
 "x11-dl 2.18.1 (registry+https://github.com/rust-lang/crates.io-index)",
]

[[package]]
name = "winit"
version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
 "android_glue 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
 "cocoa 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
 "core-foundation 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
 "core-graphics 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
 "dwmapi-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
 "gdi32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
 "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)",
 "objc 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
 "shared_library 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
 "shell32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
 "tempfile 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
 "user32-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
 "wayland-client 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)",
 "wayland-kbd 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
 "wayland-protocols 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)",
 "wayland-window 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
 "x11-dl 2.18.1 (registry+https://github.com/rust-lang/crates.io-index)",
]

[[package]]
name = "wayland-kbd"
version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
 "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
 "dlib 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
 "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
 "memmap 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
 "wayland-client 0.9.10 (registry+https://github.com/rust-lang/crates.io-index)",
]

[[package]]
name = "memmap"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
 "fs2 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 "libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)",
 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
]

So clearly, fs2 0.2.5 is used by winit, glutin, glium etc.!
Btw, glium is used by the window sub crate, not by the workspace's top level crate (myproject).
So why can't cargo-tree detect this tree? :)

--tree option has trouble reading Cargo.toml

cargo list --tree
Couldn't read section dependencies.

I get the same error for every non-trivial project. My guess is that some dependency somewhere doesn't have this section.

I even get errors on an empty project:

cargo new empty
cd empty/
cargo list --tree

Your Cargo.toml is missing.

but Cargo.toml is present (and it does have an empty [dependencies] section).


cargo --version
cargo 0.24.0-nightly (859c2305b 2017-10-29)
cargo list --version
cargo-list version 0.1.2

Build error with broken dependency: backtrace

Local compiler:
rustc --version
rustc 1.31.0 (abe02cefd 2018-12-04)
rustc +nightly --version
rustc 1.32.0-nightly (f4a421ee3 2018-12-13)

errors:

error[E0308]: mismatched types
   --> /home/xiaoniu/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.12/src/symbolize/libbacktrace.rs:156:60
    |
156 |         STATE = bt::backtrace_create_state(ptr::null(), 0, error_cb,
    |                                                            ^^^^^^^^ expected enum `std::os::raw::c_void`, found enum `libc::c_void`                                                                                                                                    
    |
    = note: expected type `extern "C" fn(*mut std::os::raw::c_void, *const i8, i32)`
               found type `extern "C" fn(*mut libc::c_void, *const i8, i32) {symbolize::libbacktrace::error_cb}`

error[E0308]: mismatched types
   --> /home/xiaoniu/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.12/src/symbolize/libbacktrace.rs:172:36
    |
172 |                                    pcinfo_cb, error_cb,
    |                                    ^^^^^^^^^ expected enum `std::os::raw::c_void`, found enum `libc::c_void`
    |
    = note: expected type `extern "C" fn(*mut std::os::raw::c_void, usize, *const i8, i32, *const i8) -> i32`
               found type `extern "C" fn(*mut libc::c_void, usize, *const i8, i32, *const i8) -> i32 {symbolize::libbacktrace::pcinfo_cb}`

error[E0308]: mismatched types
   --> /home/xiaoniu/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.12/src/symbolize/libbacktrace.rs:172:47
    |
172 |                                    pcinfo_cb, error_cb,
    |                                               ^^^^^^^^ expected enum `std::os::raw::c_void`, found enum `libc::c_void`
    |
    = note: expected type `extern "C" fn(*mut std::os::raw::c_void, *const i8, i32)`
               found type `extern "C" fn(*mut libc::c_void, *const i8, i32) {symbolize::libbacktrace::error_cb}`

can't install on windows because of libssh2-sys

I'm sure there's some way to install libssh2-sys on windows, but why does cargo tree need it anyway? it seems like a spurious dependency. is there a way to disable it?

error: failed to run custom build command for `libssh2-sys v0.2.6`
process didn't exit successfully: `C:\Users\radix\AppData\Local\Temp\cargo-install.FV5LTR5nFsKM\release\build\libssh2-sys-86a416940bda1db0\build-script-build` (exit code: 101)
--- stdout
running: "cmake" "C:\\Users\\radix\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\libssh2-sys-0.2.6\\libssh2" "-G" "Visual Studio 15 2017 Win64" "-DCRYPTO_BACKEND=WinCNG" "-DZLIB_INCLUDE_DIR=C:\\Users\\radix\\AppData\\Local\\Temp\\cargo-install.FV5LTR5nFsKM\\release\\build\\libz-sys-7f501f039badde83\\out/include" "-DBUILD_SHARED_LIBS=OFF" "-DENABLE_ZLIB_COMPRESSION=ON" "-DCMAKE_INSTALL_LIBDIR=lib" "-DBUILD_EXAMPLES=OFF" "-DBUILD_TESTING=OFF" "-DCMAKE_INSTALL_PREFIX=C:\\Users\\radix\\AppData\\Local\\Temp\\cargo-install.FV5LTR5nFsKM\\release\\build\\libssh2-sys-31d17d69d1151c6b\\out" "-DCMAKE_C_FLAGS= /nologo /MD" "-DCMAKE_C_FLAGS_RELEASE= /nologo /MD" "-DCMAKE_CXX_FLAGS= /nologo /MD" "-DCMAKE_CXX_FLAGS_RELEASE= /nologo /MD" "-DCMAKE_BUILD_TYPE=Release"

Error when running on nightly, invalid arguments reported when no arguments are supplied

On nightly:

Default host: x86_64-unknown-linux-gnu

installed toolchains
--------------------

stable-x86_64-unknown-linux-gnu
nightly-x86_64-unknown-linux-gnu (default)

active toolchain
----------------

nightly-x86_64-unknown-linux-gnu (default)
rustc 1.26.0-nightly (75af15ee6 2018-03-20)

Installed cargo-tree ok. When running:

$ cargo tree
error: Invalid arguments.

Usage: cargo tree [options]

The same thing happens with cargo-outdated, so this might be a problem/change in cargo itself that is now showing itself here. However, cargo clippy works fine.

Should say that the same thing happens with a direct run of cargo-tree.

cargo-tree does not work on workspaces that use nightly features

I am trying to use cargo tree on the rustc workspace, but all I get is

error: failed to parse manifest at `/home/r/src/rust/rustc.2/src/tools/miri/Cargo.toml`

Caused by:
  the `default-run` manifest key is unstable

Caused by:
  feature `default-run` is required

this Cargo does not support nightly features, but if you
switch to nightly channel you can add
`cargo-features = ["default-run"]` to enable this feature

Is there any way to use cargo tree on this workspace? I compiled cargo-tree with a nightly rustc but that did not help.

cut a new release plz?

currently cargo install cargo-tree fails with problems building cargo-0.22.0. This is fixed on master by bb20400

you can repro it with a simple dockerfile:

FROM rust:1.22.1
RUN apt-get update && apt-get install -y cmake
RUN cargo install cargo-tree --vers=0.15.0

Thanks!

Add virtual manifest support

In a workspace with a virtual manifest (one with [workspace], but not [package]), we get the following error message:

$ cargo tree
error: manifest path `<path>/Cargo.toml` is a virtual manifest, but this command requires running against an actual package in this workspace

I suspect it should be fairly straightforward to switch over to using https://crates.io/crates/cargo_metadata to get the set of dependencies and their relationships. Cargo-metadata is fully workspace-aware - we use it in cargo-edit for this purpose

cannot cargo run

Hi when i tried this i had faced with the problem like this Can anyone help?
Compiling exonum_libsodium-sys v0.0.14
error: failed to run custom build command for exonum_libsodium-sys v0.0.14
process didn't exit successfully: C:\Users\Уля\OneDrive\hello_cargo\target\debug\build\exonum_libsodium-sys-440368f41d859672\build-script-build (exit code: 101)
--- stderr
thread 'main' panicked at '
"powershell" "-Command" "([Net.ServicePointManager]::SecurityProtocol = 'Tls12') -and ((New-Object System.Net.WebClient).DownloadFile("https://download.libsodium.org/libsodium/releases/libsodium-1.0.13-msvc.zip\", "C:\Users\Уля\OneDrive\hello_cargo\target\debug\build\exonum_libsodium-sys-9f97a51b4550d7b8\out/installed/libsodium-1.0.13-msvc.zip"))"

`patch` section in workspace not supported?

With cargo-tree 0.15.0, a dependency in my workspace member’s Cargo.toml, that is overridden in my root Cargo.toml’s patch section, isn’t listed.

Is this expected behavior? If not, I’ll post more details. If so, this is a feature request. 🙂

--no-dev-dependencies seems not working

Environment

  • macOS 10.12
  • cargo-tree 0.26.0
  • cargo 1.33.0

Steps

  1. cargo install cargo-tree
  2. git clone https://github.com/rhysd/git-brws.git && cd git-brws
  3. cargo tree --no-dev-dependencies

Expected

[dev-dependencies] is not included in output

Actual

I got this output. [dev-dependencies] was included. It seemed that output of cargo tree and of cargo tree --no-dev-dependencies were exactly the same.

git-brws v0.11.2 (/Users/npsdev5/Develop/github.com/rhysd/git-brws)
├── envy v0.4.0
│   └── serde v1.0.97
│       └── serde_derive v1.0.97
│           ├── proc-macro2 v0.4.30
│           │   └── unicode-xid v0.1.0
│           ├── quote v0.6.13
│           │   └── proc-macro2 v0.4.30 (*)
│           └── syn v0.15.40
│               ├── proc-macro2 v0.4.30 (*)
│               ├── quote v0.6.13 (*)
│               └── unicode-xid v0.1.0 (*)
│       [dev-dependencies]
│       └── serde_derive v1.0.97 (*)
│   [dev-dependencies]
│   └── serde v1.0.97 (*)
├── getopts v0.2.19
│   └── unicode-width v0.1.5
├── open v1.2.3
├── path-slash v0.1.1
├── reqwest v0.9.19
│   ├── base64 v0.10.1
│   │   └── byteorder v1.3.2
│   ├── bytes v0.4.12
│   │   ├── byteorder v1.3.2 (*)
│   │   ├── either v1.5.2
│   │   └── iovec v0.1.2
│   │       └── libc v0.2.60
│   ├── cookie v0.12.0
│   │   ├── time v0.1.42
│   │   │   └── libc v0.2.60 (*)
│   │   │   [dev-dependencies]
│   │   │   └── winapi v0.3.7
│   │   └── url v1.7.2
│   │       ├── idna v0.1.5
│   │       │   ├── matches v0.1.8
│   │       │   ├── unicode-bidi v0.3.4
│   │       │   │   └── matches v0.1.8 (*)
│   │       │   └── unicode-normalization v0.1.8
│   │       │       └── smallvec v0.6.10
│   │       ├── matches v0.1.8 (*)
│   │       └── percent-encoding v1.0.1
│   ├── cookie_store v0.7.0
│   │   ├── cookie v0.12.0 (*)
│   │   ├── failure v0.1.5
│   │   │   ├── backtrace v0.3.33
│   │   │   │   ├── backtrace-sys v0.1.31
│   │   │   │   │   └── libc v0.2.60 (*)
│   │   │   │   │   [build-dependencies]
│   │   │   │   │   └── cc v1.0.37
│   │   │   │   ├── cfg-if v0.1.9
│   │   │   │   ├── libc v0.2.60 (*)
│   │   │   │   └── rustc-demangle v0.1.15
│   │   │   └── failure_derive v0.1.5
│   │   │       ├── proc-macro2 v0.4.30 (*)
│   │   │       ├── quote v0.6.13 (*)
│   │   │       ├── syn v0.15.40 (*)
│   │   │       └── synstructure v0.10.2
│   │   │           ├── proc-macro2 v0.4.30 (*)
│   │   │           ├── quote v0.6.13 (*)
│   │   │           ├── syn v0.15.40 (*)
│   │   │           └── unicode-xid v0.1.0 (*)
│   │   ├── idna v0.1.5 (*)
│   │   ├── log v0.4.7
│   │   │   └── cfg-if v0.1.9 (*)
│   │   ├── publicsuffix v1.5.2
│   │   │   ├── error-chain v0.12.1
│   │   │   │   └── backtrace v0.3.33 (*)
│   │   │   │   [build-dependencies]
│   │   │   │   └── version_check v0.1.5
│   │   │   ├── idna v0.1.5 (*)
│   │   │   ├── lazy_static v1.3.0
│   │   │   │   └── spin v0.5.0
│   │   │   ├── regex v1.2.0
│   │   │   │   ├── aho-corasick v0.7.4
│   │   │   │   │   └── memchr v2.2.1
│   │   │   │   ├── memchr v2.2.1 (*)
│   │   │   │   ├── regex-syntax v0.6.10
│   │   │   │   │   └── ucd-util v0.1.5
│   │   │   │   ├── thread_local v0.3.6
│   │   │   │   │   └── lazy_static v1.3.0 (*)
│   │   │   │   └── utf8-ranges v1.0.3
│   │   │   └── url v1.7.2 (*)
│   │   ├── serde v1.0.97 (*)
│   │   ├── serde_json v1.0.40
│   │   │   ├── itoa v0.4.4
│   │   │   ├── ryu v1.0.0
│   │   │   └── serde v1.0.97 (*)
│   │   ├── time v0.1.42 (*)
│   │   ├── try_from v0.3.2
│   │   │   └── cfg-if v0.1.9 (*)
│   │   └── url v1.7.2 (*)
│   ├── encoding_rs v0.8.17
│   │   └── cfg-if v0.1.9 (*)
│   ├── flate2 v1.0.9
│   │   ├── crc32fast v1.2.0
│   │   │   └── cfg-if v0.1.9 (*)
│   │   ├── libc v0.2.60 (*)
│   │   └── miniz_oxide_c_api v0.2.2
│   │       ├── crc32fast v1.2.0 (*)
│   │       ├── libc v0.2.60 (*)
│   │       └── miniz_oxide v0.2.3
│   │           └── adler32 v1.0.3
│   │       [build-dependencies]
│   │       └── cc v1.0.37 (*)
│   ├── futures v0.1.28
│   ├── http v0.1.17
│   │   ├── bytes v0.4.12 (*)
│   │   ├── fnv v1.0.6
│   │   └── itoa v0.4.4 (*)
│   ├── hyper v0.12.33
│   │   ├── bytes v0.4.12 (*)
│   │   ├── futures v0.1.28 (*)
│   │   ├── futures-cpupool v0.1.8
│   │   │   ├── futures v0.1.28 (*)
│   │   │   └── num_cpus v1.10.1
│   │   │       └── libc v0.2.60 (*)
│   │   ├── h2 v0.1.25
│   │   │   ├── byteorder v1.3.2 (*)
│   │   │   ├── bytes v0.4.12 (*)
│   │   │   ├── fnv v1.0.6 (*)
│   │   │   ├── futures v0.1.28 (*)
│   │   │   ├── http v0.1.17 (*)
│   │   │   ├── indexmap v1.0.2
│   │   │   ├── log v0.4.7 (*)
│   │   │   ├── slab v0.4.2
│   │   │   ├── string v0.2.1
│   │   │   │   └── bytes v0.4.12 (*)
│   │   │   └── tokio-io v0.1.12
│   │   │       ├── bytes v0.4.12 (*)
│   │   │       ├── futures v0.1.28 (*)
│   │   │       └── log v0.4.7 (*)
│   │   ├── http v0.1.17 (*)
│   │   ├── http-body v0.1.0
│   │   │   ├── bytes v0.4.12 (*)
│   │   │   ├── futures v0.1.28 (*)
│   │   │   ├── http v0.1.17 (*)
│   │   │   └── tokio-buf v0.1.1
│   │   │       ├── bytes v0.4.12 (*)
│   │   │       ├── either v1.5.2 (*)
│   │   │       └── futures v0.1.28 (*)
│   │   ├── httparse v1.3.4
│   │   ├── iovec v0.1.2 (*)
│   │   ├── itoa v0.4.4 (*)
│   │   ├── log v0.4.7 (*)
│   │   ├── net2 v0.2.33
│   │   │   ├── cfg-if v0.1.9 (*)
│   │   │   └── libc v0.2.60 (*)
│   │   ├── time v0.1.42 (*)
│   │   ├── tokio v0.1.22
│   │   │   ├── bytes v0.4.12 (*)
│   │   │   ├── futures v0.1.28 (*)
│   │   │   ├── mio v0.6.19
│   │   │   │   ├── iovec v0.1.2 (*)
│   │   │   │   ├── libc v0.2.60 (*)
│   │   │   │   ├── log v0.4.7 (*)
│   │   │   │   ├── net2 v0.2.33 (*)
│   │   │   │   └── slab v0.4.2 (*)
│   │   │   ├── num_cpus v1.10.1 (*)
│   │   │   ├── tokio-current-thread v0.1.6
│   │   │   │   ├── futures v0.1.28 (*)
│   │   │   │   └── tokio-executor v0.1.8
│   │   │   │       ├── crossbeam-utils v0.6.5
│   │   │   │       │   ├── cfg-if v0.1.9 (*)
│   │   │   │       │   └── lazy_static v1.3.0 (*)
│   │   │   │       └── futures v0.1.28 (*)
│   │   │   ├── tokio-executor v0.1.8 (*)
│   │   │   ├── tokio-io v0.1.12 (*)
│   │   │   ├── tokio-reactor v0.1.9
│   │   │   │   ├── crossbeam-utils v0.6.5 (*)
│   │   │   │   ├── futures v0.1.28 (*)
│   │   │   │   ├── lazy_static v1.3.0 (*)
│   │   │   │   ├── log v0.4.7 (*)
│   │   │   │   ├── mio v0.6.19 (*)
│   │   │   │   ├── num_cpus v1.10.1 (*)
│   │   │   │   ├── parking_lot v0.7.1
│   │   │   │   │   ├── lock_api v0.1.5
│   │   │   │   │   │   ├── owning_ref v0.4.0
│   │   │   │   │   │   │   └── stable_deref_trait v1.1.1
│   │   │   │   │   │   └── scopeguard v0.3.3
│   │   │   │   │   └── parking_lot_core v0.4.0
│   │   │   │   │       ├── libc v0.2.60 (*)
│   │   │   │   │       ├── rand v0.6.5
│   │   │   │   │       │   ├── libc v0.2.60 (*)
│   │   │   │   │       │   ├── rand_chacha v0.1.1
│   │   │   │   │       │   │   └── rand_core v0.3.1
│   │   │   │   │       │   │       └── rand_core v0.4.0
│   │   │   │   │       │   │   [build-dependencies]
│   │   │   │   │       │   │   └── autocfg v0.1.5
│   │   │   │   │       │   ├── rand_core v0.4.0 (*)
│   │   │   │   │       │   ├── rand_hc v0.1.0
│   │   │   │   │       │   │   └── rand_core v0.3.1 (*)
│   │   │   │   │       │   ├── rand_isaac v0.1.1
│   │   │   │   │       │   │   └── rand_core v0.3.1 (*)
│   │   │   │   │       │   ├── rand_jitter v0.1.4
│   │   │   │   │       │   │   ├── libc v0.2.60 (*)
│   │   │   │   │       │   │   └── rand_core v0.4.0 (*)
│   │   │   │   │       │   ├── rand_os v0.1.3
│   │   │   │   │       │   │   ├── libc v0.2.60 (*)
│   │   │   │   │       │   │   └── rand_core v0.4.0 (*)
│   │   │   │   │       │   ├── rand_pcg v0.1.2
│   │   │   │   │       │   │   └── rand_core v0.4.0 (*)
│   │   │   │   │       │   │   [build-dependencies]
│   │   │   │   │       │   │   └── autocfg v0.1.5 (*)
│   │   │   │   │       │   └── rand_xorshift v0.1.1
│   │   │   │   │       │       └── rand_core v0.3.1 (*)
│   │   │   │   │       │   [build-dependencies]
│   │   │   │   │       │   └── autocfg v0.1.5 (*)
│   │   │   │   │       └── smallvec v0.6.10 (*)
│   │   │   │   │       [build-dependencies]
│   │   │   │   │       └── rustc_version v0.2.3
│   │   │   │   │           └── semver v0.9.0
│   │   │   │   │               └── semver-parser v0.7.0
│   │   │   │   ├── slab v0.4.2 (*)
│   │   │   │   ├── tokio-executor v0.1.8 (*)
│   │   │   │   ├── tokio-io v0.1.12 (*)
│   │   │   │   └── tokio-sync v0.1.6
│   │   │   │       ├── fnv v1.0.6 (*)
│   │   │   │       └── futures v0.1.28 (*)
│   │   │   │   [dev-dependencies]
│   │   │   │   └── num_cpus v1.10.1 (*)
│   │   │   ├── tokio-tcp v0.1.3
│   │   │   │   ├── bytes v0.4.12 (*)
│   │   │   │   ├── futures v0.1.28 (*)
│   │   │   │   ├── iovec v0.1.2 (*)
│   │   │   │   ├── mio v0.6.19 (*)
│   │   │   │   ├── tokio-io v0.1.12 (*)
│   │   │   │   └── tokio-reactor v0.1.9 (*)
│   │   │   ├── tokio-threadpool v0.1.15
│   │   │   │   ├── crossbeam-deque v0.7.1
│   │   │   │   │   ├── crossbeam-epoch v0.7.1
│   │   │   │   │   │   ├── arrayvec v0.4.11
│   │   │   │   │   │   │   └── nodrop v0.1.13
│   │   │   │   │   │   ├── cfg-if v0.1.9 (*)
│   │   │   │   │   │   ├── crossbeam-utils v0.6.5 (*)
│   │   │   │   │   │   ├── lazy_static v1.3.0 (*)
│   │   │   │   │   │   ├── memoffset v0.2.1
│   │   │   │   │   │   └── scopeguard v0.3.3 (*)
│   │   │   │   │   └── crossbeam-utils v0.6.5 (*)
│   │   │   │   ├── crossbeam-queue v0.1.2
│   │   │   │   │   └── crossbeam-utils v0.6.5 (*)
│   │   │   │   ├── crossbeam-utils v0.6.5 (*)
│   │   │   │   ├── futures v0.1.28 (*)
│   │   │   │   ├── log v0.4.7 (*)
│   │   │   │   ├── num_cpus v1.10.1 (*)
│   │   │   │   ├── rand v0.6.5 (*)
│   │   │   │   ├── slab v0.4.2 (*)
│   │   │   │   └── tokio-executor v0.1.8 (*)
│   │   │   └── tokio-timer v0.2.11
│   │   │       ├── crossbeam-utils v0.6.5 (*)
│   │   │       ├── futures v0.1.28 (*)
│   │   │       ├── slab v0.4.2 (*)
│   │   │       └── tokio-executor v0.1.8 (*)
│   │   │   [dev-dependencies]
│   │   │   └── num_cpus v1.10.1 (*)
│   │   ├── tokio-buf v0.1.1 (*)
│   │   ├── tokio-executor v0.1.8 (*)
│   │   ├── tokio-io v0.1.12 (*)
│   │   ├── tokio-reactor v0.1.9 (*)
│   │   ├── tokio-tcp v0.1.3 (*)
│   │   ├── tokio-threadpool v0.1.15 (*)
│   │   ├── tokio-timer v0.2.11 (*)
│   │   └── want v0.2.0
│   │       ├── futures v0.1.28 (*)
│   │       ├── log v0.4.7 (*)
│   │       └── try-lock v0.2.2
│   │   [build-dependencies]
│   │   └── rustc_version v0.2.3 (*)
│   ├── hyper-tls v0.3.2
│   │   ├── bytes v0.4.12 (*)
│   │   ├── futures v0.1.28 (*)
│   │   ├── hyper v0.12.33 (*)
│   │   ├── native-tls v0.2.3
│   │   │   ├── lazy_static v1.3.0 (*)
│   │   │   ├── libc v0.2.60 (*)
│   │   │   ├── security-framework v0.3.1
│   │   │   │   ├── core-foundation v0.6.4
│   │   │   │   │   ├── core-foundation-sys v0.6.2
│   │   │   │   │   └── libc v0.2.60 (*)
│   │   │   │   ├── core-foundation-sys v0.6.2 (*)
│   │   │   │   ├── libc v0.2.60 (*)
│   │   │   │   └── security-framework-sys v0.3.1
│   │   │   │       └── core-foundation-sys v0.6.2 (*)
│   │   │   ├── security-framework-sys v0.3.1 (*)
│   │   │   └── tempfile v3.1.0
│   │   │       ├── cfg-if v0.1.9 (*)
│   │   │       ├── libc v0.2.60 (*)
│   │   │       ├── rand v0.7.0
│   │   │       │   ├── getrandom v0.1.6
│   │   │       │   │   ├── lazy_static v1.3.0 (*)
│   │   │       │   │   └── libc v0.2.60 (*)
│   │   │       │   ├── libc v0.2.60 (*)
│   │   │       │   ├── rand_chacha v0.2.0
│   │   │       │   │   ├── c2-chacha v0.2.2
│   │   │       │   │   │   ├── lazy_static v1.3.0 (*)
│   │   │       │   │   │   └── ppv-lite86 v0.2.5
│   │   │       │   │   └── rand_core v0.5.0
│   │   │       │   │       └── getrandom v0.1.6 (*)
│   │   │       │   │   [build-dependencies]
│   │   │       │   │   └── autocfg v0.1.5 (*)
│   │   │       │   └── rand_core v0.5.0 (*)
│   │   │       │   [dev-dependencies]
│   │   │       │   └── rand_hc v0.2.0
│   │   │       │       └── rand_core v0.5.0 (*)
│   │   │       └── remove_dir_all v0.5.2
│   │   └── tokio-io v0.1.12 (*)
│   ├── log v0.4.7 (*)
│   ├── mime v0.3.13
│   │   └── unicase v2.4.0
│   │       [build-dependencies]
│   │       └── version_check v0.1.5 (*)
│   ├── mime_guess v2.0.0-alpha.6
│   │   ├── mime v0.3.13 (*)
│   │   ├── phf v0.7.24
│   │   │   └── phf_shared v0.7.24
│   │   │       ├── siphasher v0.2.3
│   │   │       └── unicase v1.4.2
│   │   │           [build-dependencies]
│   │   │           └── version_check v0.1.5 (*)
│   │   └── unicase v1.4.2 (*)
│   │   [build-dependencies]
│   │   ├── phf_codegen v0.7.24
│   │   │   ├── phf_generator v0.7.24
│   │   │   │   ├── phf_shared v0.7.24 (*)
│   │   │   │   └── rand v0.6.5 (*)
│   │   │   └── phf_shared v0.7.24 (*)
│   │   └── unicase v1.4.2 (*)
│   ├── native-tls v0.2.3 (*)
│   ├── serde v1.0.97 (*)
│   ├── serde_json v1.0.40 (*)
│   ├── serde_urlencoded v0.5.5
│   │   ├── dtoa v0.4.4
│   │   ├── itoa v0.4.4 (*)
│   │   ├── serde v1.0.97 (*)
│   │   └── url v1.7.2 (*)
│   ├── time v0.1.42 (*)
│   ├── tokio v0.1.22 (*)
│   ├── tokio-executor v0.1.8 (*)
│   ├── tokio-io v0.1.12 (*)
│   ├── tokio-threadpool v0.1.15 (*)
│   ├── tokio-timer v0.2.11 (*)
│   ├── url v1.7.2 (*)
│   └── uuid v0.7.4
│       └── rand v0.6.5 (*)
│   [dev-dependencies]
│   ├── bytes v0.4.12 (*)
│   ├── serde v1.0.97 (*)
│   └── tokio v0.1.22 (*)
├── serde v1.0.97 (*)
├── serde_derive v1.0.97 (*)
└── url v1.7.2 (*)

Option to mark/exclusively show crates in the tree with multiple versions

Multiple versions pulled into the tree are often a source of confusion, e.g. with the infamous "expected crate::Foo, found crate::Foo" messages. cargo tree is nice to identify these crates and possible solutions, but it can be a bit tedious to find the relevant crates in the output.

I could see two modes to help here:

  • mark (and colorize) crates with multiple versions and/or sources, similar to the (*) for truncated deps
  • add an option to only show these crates and their position in the tree

Thoughts? I'll give the implementation a try when the goal is clear.

Optionally show metadata for dependencies

I'm not sure if this goes outside the scope of this plugin but I thought I'd raise an issue here to discuss the possibility of add ManifestMetadata information to the output of cargo tree.

For example, I have a small example patch which displays license and repository information for the dependencies:

[~/cargo-tree]$ ./target/debug/cargo-tree tree -p petgraph
petgraph v0.2.5 MIT/Apache-2.0 https://github.com/bluss/petulant-avenger-graphlibrary
└── fixedbitset v0.1.0 MIT/Apache-2.0 https://github.com/bluss/fixedbitset

Would this be something that would be reasonable to add to the --verbose output (maybe with another flag)?

Supported platform:? msys2/mingw64 (windows 7)

I have cmake and gcc:

$ pacman -Ss cmake
mingw32/mingw-w64-i686-cmake 3.14.4-1
    A cross-platform open-source make system (mingw-w64)
mingw32/mingw-w64-i686-cmake-doc-qt 3.12.4-1
    CMake documentation in Qt Help format
mingw32/mingw-w64-i686-cotire 1.8.0_3.14-1
    CMake module to speed up builds (automated PCH, unity builds) (mingw-w64)
mingw32/mingw-w64-i686-extra-cmake-modules 5.50.0-1
    Extra CMake modules (mingw-w64)
mingw64/mingw-w64-x86_64-cmake 3.14.4-1 [installed: 3.13.4-1]
    A cross-platform open-source make system (mingw-w64)
mingw64/mingw-w64-x86_64-cmake-doc-qt 3.12.4-1
    CMake documentation in Qt Help format
mingw64/mingw-w64-x86_64-cotire 1.8.0_3.14-1
    CMake module to speed up builds (automated PCH, unity builds) (mingw-w64)
mingw64/mingw-w64-x86_64-extra-cmake-modules 5.50.0-1
    Extra CMake modules (mingw-w64)
msys/cmake 3.14.4-1 [installed: 3.13.2-1]
    A cross-platform open-source make system
msys/icmake 9.02.08-1
    A program maintenance (make) utility using a C-like grammar
$ pacman -Ss libcurl
msys/libcurl 7.65.0-2 (libraries) [installed]
    Multi-protocol file transfer library (runtime)
msys/libcurl-devel 7.65.0-2 (development) [installed]
    Libcurl headers and libraries

But build fails with some libcurl undefined references:

  = note: C:\Users\User\AppData\Local\Temp\cargo-installF2jwBD\release\deps\libcurl_sys-0d6c6dae884c997e.rlib(url.o):url.c:(.text$Curl_init_userdefined+0xa): undefined reference to `__imp___acrt_iob_func'
          C:\Users\User\AppData\Local\Temp\cargo-installF2jwBD\release\deps\libcurl_sys-0d6c6dae884c997e.rlib(cookie.o):cookie.c:(.text$Curl_cookie_init+0x2ae): undefined reference to `__imp___acrt_iob_func'
          C:\Users\User\AppData\Local\Temp\cargo-installF2jwBD\release\deps\libcurl_sys-0d6c6dae884c997e.rlib(cookie.o):cookie.c:(.text$Curl_flush_cookies+0x183): undefined reference to `__imp___acrt_iob_func'
          C:\Users\User\AppData\Local\Temp\cargo-installF2jwBD\release\deps\libcurl_sys-0d6c6dae884c997e.rlib(formdata.o):formdata.c:(.text$Curl_getformdata.part.0+0x266): undefined reference to `__imp___acrt_iob_func'
          C:\Users\User\AppData\Local\Temp\cargo-installF2jwBD\release\deps\libcurl_sys-0d6c6dae884c997e.rlib(setopt.o):setopt.c:(.text$curl_easy_setopt+0x25d0): undefined reference to `__imp___acrt_iob_func'
          C:\Users\User\AppData\Local\Temp\cargo-installF2jwBD\release\deps\libcurl_sys-0d6c6dae884c997e.rlib(mprintf.o):mprintf.c:(.text$curl_mprintf+0x29): more undefined references to `__imp___acrt_iob_func' follow


error: aborting due to previous error

error: failed to compile `cargo-tree v0.26.0`, intermediate artifacts can be found at `C:\Users\User\AppData\Local\Temp\cargo-installF2jwBD`

Caused by:
  Could not compile `cargo-tree`.

Is this the problem? If so, feel free to close

Build failing on Mac OS X with cmake

I tried following the instructions by running brew install cmake and verified that I have version 3.14.3 installed.

After running cargo install cargo-tree, I get the following error:

error: failed to run custom build command for `miniz-sys v0.1.11`
process didn't exit successfully: `/var/folders/56/nrjnt_7502345jgyjl4c6lvh0000gn/T/cargo-installbg8DfW/release/build/miniz-sys-64d3911af67afc86/build-script-build` (exit code: 101)
--- stdout
TARGET = Some("x86_64-apple-darwin")
OPT_LEVEL = Some("3")
HOST = Some("x86_64-apple-darwin")
CC_x86_64-apple-darwin = None
CC_x86_64_apple_darwin = None
HOST_CC = None
CC = None
CFLAGS_x86_64-apple-darwin = None
CFLAGS_x86_64_apple_darwin = None
HOST_CFLAGS = None
CFLAGS = None
CRATE_CC_NO_DEFAULTS = None
DEBUG = Some("false")
CARGO_CFG_TARGET_FEATURE = Some("fxsr,sse,sse2,sse3,ssse3")
running: "cc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-DMINIZ_NO_STDIO" "-DMINIZ_NO_ARCHIVE_APIS" "-DMINIZ_NO_ARCHIVE_WRITING_APIS" "-DMINIZ_NO_TIME" "-DMINIZ_NO_ZLIB_COMPATIBLE_NAMES" "-o" "/var/folders/56/nrjnt_7502345jgyjl4c6lvh0000gn/T/cargo-installbg8DfW/release/build/miniz-sys-75966623faf4ac25/out/miniz.o" "-c" "miniz.c"
exit code: 0
AR_x86_64-apple-darwin = None
AR_x86_64_apple_darwin = None
HOST_AR = None
AR = None
running: "ar" "crs" "/var/folders/56/nrjnt_7502345jgyjl4c6lvh0000gn/T/cargo-installbg8DfW/release/build/miniz-sys-75966623faf4ac25/out/libminiz.a" "/var/folders/56/nrjnt_7502345jgyjl4c6lvh0000gn/T/cargo-installbg8DfW/release/build/miniz-sys-75966623faf4ac25/out/miniz.o"
cargo:warning=/opt/local/bin/ranlib: object: /var/folders/56/nrjnt_7502345jgyjl4c6lvh0000gn/T/cargo-installbg8DfW/release/build/miniz-sys-75966623faf4ac25/out/libminiz.a(miniz.o) malformed object (unknown load command 1)
cargo:warning=ar: internal ranlib command failed
exit code: 1

--- stderr
thread 'main' panicked at '

Internal error occurred: Command "ar" "crs" "/var/folders/56/nrjnt_7502345jgyjl4c6lvh0000gn/T/cargo-installbg8DfW/release/build/miniz-sys-75966623faf4ac25/out/libminiz.a" "/var/folders/56/nrjnt_7502345jgyjl4c6lvh0000gn/T/cargo-installbg8DfW/release/build/miniz-sys-75966623faf4ac25/out/miniz.o" with args "ar" did not execute successfully (status code exit code: 1).

', /Users/arko/.cargo/registry/src/github.com-1ecc6299db9ec823/cc-1.0.35/src/lib.rs:2398:5
note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace.

Misreporting of platform default dependencies?

Using cargo-tree 0.26.0, I noticed something strange with a project depending on flate2 and its transitive dependencies. Namely the dependency tree includes miniz_oxide_c_api even though the rust_backend feature is not enabled.

The flate2 1.0.9 Cargo.toml appears to make the otherwise non-default miniz_oxide_c_api mandatory on wasm32. But I'm not targeting wasm. See excerpt below. Is that what's confusing cargo-tree?

[dependencies]
miniz-sys = { path = "miniz-sys", version = "0.1.11", optional = true }
miniz_oxide_c_api = { version = "0.2", optional = true, features = ["no_c_export"]}

[target.'cfg(all(target_arch = "wasm32", not(target_os = "emscripten")))'.dependencies]
miniz_oxide_c_api = { version = "0.2", features = ["no_c_export"] }

[features]
default = ["miniz-sys"]
zlib = ["libz-sys"]
rust_backend = ["miniz_oxide_c_api"]

Here is a minimal reproduction test project:

[package]
name = "cargo-tree-opt-dep-test"
version = "0.1.0"
edition = "2018"

[dependencies]
flate2 = "^1.0.9"
brotli = {version = "^3.3.0", optional = true}

[features]
default = []

With the following output from cargo tree:

cargo-tree-opt-dep-test v0.1.0 (/home/david/src/cargo-tree-opt-dep-test)
└── flate2 v1.0.9
    ├── crc32fast v1.2.0
    │   └── cfg-if v0.1.9
    ├── libc v0.2.60
    ├── miniz-sys v0.1.12
    │   └── libc v0.2.60 (*)
    │   [build-dependencies]
    │   └── cc v1.0.38
    └── miniz_oxide_c_api v0.2.3
        ├── crc32fast v1.2.0 (*)
        ├── libc v0.2.60 (*)
        └── miniz_oxide v0.3.0
            └── adler32 v1.0.3
        [build-dependencies]
        └── cc v1.0.38 (*)

Note that the optional brotli dependency isn't shown, so cargo tree does pay attention to features. Here is cargo clean && cargo build output showing miniz_oxide_c_api isn't built:

  Compiling libc v0.2.60
   Compiling cc v1.0.38
   Compiling crc32fast v1.2.0
   Compiling cfg-if v0.1.9
   Compiling miniz-sys v0.1.12
   Compiling flate2 v1.0.9
   Compiling cargo-tree-opt-dep-test v0.1.0 (/home/david/src/cargo-tree-opt-dep-test)
    Finished dev [unoptimized + debuginfo] target(s) in 3.85s

Support crate sizes

Hello,

Not sure how possible this is to implement but it would be cool if there was a flag to show the size of each crate - like the downloaded size from crates.io.

Feature request: print features used to build each crate in tree

Thanks for this tool,

to debug issue like desribed at rust-lang/cargo#4323 it would be nice
to show in cargo tree output the features used for building each crate
(it can be done by parsing cargo check -v output),

for example if cargo tree has such feature, then SO question can be solved just compare cargo tree outputs,
in one case it may print something like:

nom v3.1.0 ["std", "memchr", "stream"]

in other case

nom v3.1.0 ["std", "memchr", "stream", "verbose-errors"]

`cargo install cargo-tree` fails without cmake installed

Even though Compiling cmake v0.1.26 is in cargo-tree's dependency list and compiled successfully during the install, another dependency, flate2 v0.2.20 later failed with:

error: failed to run custom build command for `libssh2-sys v0.2.6`
process didn't exit successfully: `/tmp/cargo-install.bLOWRTFgeCJ3/release/build/libssh2-sys-ff367fac3f63f989/build-script-build` (exit code: 101)
--- stdout
running: "cmake" "/home/brad/.cargo/registry/src/github.com-1ecc6299db9ec823/libssh2-sys-0.2.6/libssh2" "-DCRYPTO_BACKEND=OpenSSL" "-DBUILD_SHARED_LIBS=OFF" "-DENABLE_ZLIB_COMPRESSION=ON" "-DCMAKE_INSTALL_LIBDIR=lib" "-DBUILD_EXAMPLES=OFF" "-DBUILD_TESTING=OFF" "-DCMAKE_INSTALL_PREFIX=/tmp/cargo-install.bLOWRTFgeCJ3/release/build/libssh2-sys-e9547953ed5244f2/out" "-DCMAKE_C_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_C_COMPILER=/usr/bin/cc" "-DCMAKE_CXX_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_CXX_COMPILER=/usr/bin/c++" "-DCMAKE_BUILD_TYPE=Release"

--- stderr
fatal: Not a git repository (or any of the parent directories): .git
thread 'main' panicked at '
failed to execute command: No such file or directory (os error 2)
is `cmake` not installed?

Not sure if the cargo-tree install's listed cmake dependency should have prevented this, or if this is a flate2 problem or a libssh2-sys problem, but I thought I'd at least document the issue.

sudo apt-get install cmake resolved the issue, but I expected cargo to build without "external" dependencies.

(I am on nightly-x86_64-unknown-linux-gnu updated - rustc 1.23.0-nightly (a35a3abcd 2017-11-10))

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.