Skip to content

"target doesn't support these crate types" error on x86_64-unknown-linux-musl host #7154

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Closed
ghost opened this issue Jul 20, 2019 · 2 comments
Labels
C-bug Category: bug

Comments

@ghost
Copy link

ghost commented Jul 20, 2019

Problem

I'm trying to build an library with proc-macro for x86_64-unknown-linux-musl target.

When the host is x86_64-unknown-linux-gnu it can be compiled successfully.

However, when the host is x86_64-unknown-linux-gnu, Cargo outputs this error:

error: cannot produce proc-macro for `proc_macro_lib v0.1.0 (/proc-macro-lib)` as the target `x86_64-unknown-linux-musl` does not support these crate types

As I understand, there should be no difference, as the target is the same and no C libraries from the host are used.

Steps

I've created this repository to reproduce the problem using Docker.

Running

docker-compose up --build host-gnu

runs cargo build for a library with proc-macro = true with host x86_64-unknown-linux-gnu and target x86_64-unknown-linux-musl, it builds the library successfully.

However, running

docker-compose up --build host-must

outputs the error mentioned above.
Notes

Output of cargo version:

cargo 1.36.0 (c4fcfb725 2019-05-15)
@ghost ghost added the C-bug Category: bug label Jul 20, 2019
@ghost ghost changed the title Target doesn't support these crate types error on x86_64-unknown-linux-musl host "target doesn't support these crate types" error on x86_64-unknown-linux-musl host Jul 20, 2019
@ehuss
Copy link
Contributor

ehuss commented Jul 20, 2019

Thanks for the detailed repro! I think the issue is that rustc for musl does not support dynamic linking. Proc-macros have to be dynamic libraries as they are loaded by rustc. I'm not up-to-speed on what is blocking this, but I think rust-lang/rust#59302 is the main issue for tracking this.

One option is to use the gnu host with --target for musl.

I'm going to close this as this is a rustc issue.

@viniciusd
Copy link

In case someone else hits this page, my build worked using the flags commented at rust-lang/rust#59302
i.e.: RUSTFLAGS="-C target-feature=-crt-static"

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
C-bug Category: bug
Projects
None yet
Development

No branches or pull requests

2 participants