rust-embedded / meta-rust-bin

Yocto layer for installing Rust toolchain from pre-built binaries
104 stars 63 forks source link

Private crates are not supported even with `net.git-fetch-with-cli = true` #185

Open redeexpressos opened 1 month ago

redeexpressos commented 1 month ago

.cargo/config.toml:

[net]
git-fetch-with-cli = true

However, when compiling with bitbake, it cannot find the private crates.

| Caused by:
|   failed to load source for dependency `rust-protobufs`
| 
| Caused by:
|   Unable to update https://abc.com/git/rust-protobufs.git?branch=main#a27c537d
| 
| Caused by:
|   failed to clone into: /home/ubuntu/build/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/program/1.0+gitAUTOINC+6a7aae1cbf-r0/cargo_home/git/db/rust-protobufs-de8201c5bac7b8be
| 
| Caused by:
|   failed to authenticate when downloading repository
| 
|   * attempted to find username/password via git's `credential.helper` support, but failed
| 
|   if the git CLI succeeds then `net.git-fetch-with-cli` may help here
|   https://doc.rust-lang.org/cargo/reference/config.html#netgit-fetch-with-cli
| 
| Caused by:
|   failed to acquire username/password from local configuration
| WARNING: exit code 101 from a shell command.

What is the workaround for this?

redeexpressos commented 1 month ago

Maybe related to #168

redeexpressos commented 1 month ago

Also, I can login via .netrc inside my bitbake shell, and I can git clone private stuff. But looks like Cargo handles them in a weird way, so my recipe is unable to build because the software has a Cargo.toml that fetches private repositories. Running out of ideas :(

redeexpressos commented 1 month ago

Looks like adding netrc authentication and:

do_compile:prepend() {
    export CARGO_NET_GIT_FETCH_WITH_CLI=true
}

fixed the issue.

For some reason .cargo/config is not doing what its supposed in this bitbake shell.. I am not sure if someone can reproduce the .cargo/config part. Will wait for feedback