3 ms·
Last time I checked cargo was still not handling external dependencies and the packages were simply wrapping system-wide dependencies, that you have to manage y
by zzzcpan 10y ago
Last time I checked cargo was still not handling external dependencies and the packages were simply wrapping system-wide dependencies, that you have to manage yourself. Same problem as with all CPAN-derived package managers.
- steveklabnik 10y agoIt's up to the implementer of the wrapper; some will compile a version if they can't find one on the system, for example.
- the_mitsuhiko 10y agoIt is intentionally not handling external dependencies. That's not what it's for. Many libraries and wrappers will compile the library if missing on the system (eg: rust-curl as a practical example will compile curl and statically link it if needed).
- zzzcpan 10y agoCPAN did it exactly like that, many packages also bundled C libraries, etc. It's a very fragile mess and a mistake package managers refused to learn from CPAN. It is especially pronounced once you have a CI/CD system, forces you to pretty much abandon such package managers and only use them to explore/discover new packages.
- kibwen 10y ago>forces you to pretty much abandon such package managers and only use them to explore/discover new packages Given the unbelievable popularity of Rubygems.org, PyPI, and NPM, I think this is an unfounded assertion. Furthermore, Rust programmers aren't afraid to rewrite libs in Rust when a widespread external dependency becomes annoying, e.g. with FreeType: https://www.reddit.com/r/rust/comments/44btaz/introducing_rusttype_a_pure_rust_alternative_to/ https://www.reddit.com/r/rust/comments/44btaz/introducing_ru...
- mmstick 10y agoThis only applies if you are using system libraries. Most libraries do not rely on external dependencies. Regardless, cargo is build tool for Rust, not a replacement for your distribution's package manager. If you want to build a library that's fully static then use the musl target and build your external dependencies with musl. If you want distribution integration then use a makefile or other tool.