Why does centos include extra dependencies in dylib build - rust

I think it might have something to do with lower level dependencies in my project(openssl, rdkafka), but it does not seem like it from the ldd output
Ubuntu:
Centos:
Both built from the same source with
cargo b --release
Cargo.toml
[package]
name = "wrapper-ffi"
version = "0.1.0"
authors = [""]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
wrapper={path="../wrapper"}
[lib]
crate-type = ["cdylib"]
[features]
cmake-build=["wrapper/cmake-build"]

Related

Why is wgpu failing to build in this crate?

I have recently been working on a game engine in rust and for rendering I have been planning on using the wgpu crate. When I add this to my dependancies wgpu-hal fails to build with 448 errors. my cargo.toml for this crate looks like this
[package]
name = "ferrogame"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
log = "0.4.17"
fern = {version = "0.6.1", features = ["colored"]}
chrono = "0.4.22"
winit = "0.27.2"
rapier3d = "0.15.0"
rapier2d = "0.15.0"
wgpu = "0.14.0"
[lib]
crate-type = ["rlib"]
This is especially strange because I made a new crate with only wgpu as a dependency and it compiled fine that time. I have tried updating rust and running cargo update but nothing has worked. How can I fix this?
This issue is due to a version conflict.
Rapier uses bevy at version 0.8, and bevy version 0.8 depends on wgpu at version 0.13

Failed to select a version for the requirement `rand = "^0.9.0"`

I am getting this error every time while running cargo build:
error: failed to select a version for the requirement `rand = "^0.9.0"`
candidate versions found which didn't match: 0.8.5, 0.8.4, 0.8.3, ...
location searched: crates.io index
required by package `guessing_game v0.1.0 (D:\Adwait\Rust\project\guessing_game)`
Cargo.toml looks like this:
[package]
name = "guessing_game"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
rand = "0.9.0"
This error is caused because there is no version 0.9.0 available. Update it to 0.8.0. Cargo.toml should look like this.
[package]
name = "guessing_game"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
rand = "0.8.0"
I experienced this myself, I believe the confusion is stemming from the tutorial on Rust mentioning 0.9.0 as an example to understand upgrading Rust crates.
I'm not sure why they chose that example, since it doesn't exist. Would be a better idea to do 0.7.x being upgraded to 0.8.0 if you're new to Rust and want to play around with upgrading Rust crates.

Diesel cli '`database.sqlite3` is not a valid database URL. It should start with `postgres://`'

When running diesel migration run on a project with an sqlite database in the ENV, I get this error about not being a valid postgres url.
$ diesel migration run
thread 'main' panicked at '`database.sqlite3` is not a valid database URL. It should start with `postgres://`',
Cargo.toml from the project
[package]
name = "matrix_bot"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
diesel = { version = "1.4.4", features = ["sqlite"] }
dotenv = "0.15.0"
tokio = {version = "1.14.0", features = ["full"]}
matrix-sdk = "0.4.1"
the .env content
DATABASE_URL=database.sqlite3
If diesel_cli was installed with only the postgres feature enabled, it will no longer work for sqlite databases. The solution is to reinstall the cli via cargo
cargo install diesel_cli --no-default-features

Why `cargo build` immediately after `cargo check` recompiles some dependencies?

What could be a possible reason for cargo build immediately after cargo check recompiling many (but not all) dependencies?
Cargo.toml
[package]
name = "greeter"
version = "0.1.0"
authors = ["Near Inc <hello#near.org>"]
edition = "2018"
[lib]
crate-type = ["cdylib", "rlib"]
[dependencies]
near-sdk = "3.1.0"
[profile.release]
codegen-units = 1
# Tell `rustc` to optimize for small code size.
opt-level = "z"
lto = true
debug = false
panic = "abort"
# Opt into extra safety checks on arithmetic operations https://stackoverflow.com/a/64136471/249801
overflow-checks = true
[workspace]
members = []
cargo check is not a build. It simply checks that your code would compile, but doesn't necessarily build anything. See here for more information.
So cargo build will need to actually build some crates, that where not built during cargo check. Other crates may need to be fully compiled to check (for example crates used in a build.rs script or by procedural macros), and where therefore already compiled when you ran cargo build.

Why do I get a build error for the resolver feature when I have up to date rustc and cargo version?

When I run the build command
cargo build-bpf --manifest-path=Cargo.toml --bpf-out-dir=dist/program
error: failed to download solana-frozen-abi v1.7.9
Caused by:
unable to get packages from source
Caused by:
failed to parse manifest at /home/USER/.cargo/registry/src/github.com-1ecc6299db9ec823/solana-frozen-abi-1.7.9/Cargo.toml
Caused by:
feature resolver is required
There have been people with similar issues but the cause was old rustc version. Mine looks ok
rustc --version
rustc 1.55.0-nightly (7c3872e6b 2021-06-24)
cargo --version
cargo 1.55.0-nightly (9233aa06c 2021-06-22)
My Cargo.toml file looks like
[package]
name = "test"
version = "0.0.1"
edition = "2018"
exclude = ["tests/**"]
[features]
no-entrypoint = []
test-bpf = []
[dependencies]
borsh = "0.8.2"
num-derive = "0.3"
num-traits = "0.2"
solana-program = "1.6.10"
spl-token = { version="3.1.1", features = [ "no-entrypoint" ] }
thiserror = "1.0"
[dev-dependencies]
solana-program-test = "1.6.10"
solana-sdk = "1.6.10"
[lib]
crate-type = ["cdylib", "lib"]
I have downloaded the metaplex rust code (exact same dependencies) and the build bpf command compiles successfully.
I have also tried running cargo clean which doesnt change anything.
I fixed it by updating to the latest version (1.7.9) of Solana (which is not the release version):
sh -c "$(curl -sSfL https://release.solana.com/v1.7.9/install)"
The same inputs from Cargo.toml do not mean the the Rust build will be repeatable on other machines — Cargo.lock contains the exact versions used. Additionally, cargo clean doesn't remove Cargo.lock
https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html

Resources