Skip to content

Setting --libdir breaks rustc build #27254

Closed
@saschmit

Description

@saschmit

Fedora x86_64 builds install libraries to /usr/lib64 so that 32-bit and 64-bit libraries can coexist on the same system. However, with configure --prefix=/usr --libdir=/usr/lib64 && make, the build breaks:

...
rustc: x86_64-unknown-linux-gnu/stage0/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore
rustc: x86_64-unknown-linux-gnu/stage0/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc
/home/builder/rust/src/liblibc/lib.rs:81:38: 81:56 error: can't find crate for `core`
/home/builder/rust/src/liblibc/lib.rs:81 #[cfg(not(feature = "cargo-build"))] extern crate core;
                                                                              ^~~~~~~~~~~~~~~~~~
error: aborting due to previous error
/home/builder/rust/mk/target.mk:162: recipe for target 'x86_64-unknown-linux-gnu/stage0/lib/rustlib/x86_64-unknown-linux-gnu/lib/stamp.libc' failed
make: *** [x86_64-unknown-linux-gnu/stage0/lib/rustlib/x86_64-unknown-linux-gnu/lib/stamp.libc] Error 101

It appears that libraries are getting generated at stage0/lib but the build is (maybe?) looking for them at stage0/lib64. The results of find x86_64-unknown-linux-gnu/stage0:

x86_64-unknown-linux-gnu/stage0
x86_64-unknown-linux-gnu/stage0/bin
x86_64-unknown-linux-gnu/stage0/bin/rustc
x86_64-unknown-linux-gnu/stage0/lib64
x86_64-unknown-linux-gnu/stage0/lib64/rustlib
x86_64-unknown-linux-gnu/stage0/lib64/rustlib/x86_64-unknown-linux-gnu
x86_64-unknown-linux-gnu/stage0/lib64/rustlib/x86_64-unknown-linux-gnu/bin
x86_64-unknown-linux-gnu/stage0/lib64/rustlib/x86_64-unknown-linux-gnu/lib
x86_64-unknown-linux-gnu/stage0/test
x86_64-unknown-linux-gnu/stage0/lib
x86_64-unknown-linux-gnu/stage0/lib/rustlib
x86_64-unknown-linux-gnu/stage0/lib/rustlib/x86_64-unknown-linux-gnu
x86_64-unknown-linux-gnu/stage0/lib/rustlib/x86_64-unknown-linux-gnu/bin
x86_64-unknown-linux-gnu/stage0/lib/rustlib/x86_64-unknown-linux-gnu/lib
x86_64-unknown-linux-gnu/stage0/lib/rustlib/x86_64-unknown-linux-gnu/lib/stamp.libc.start_time
x86_64-unknown-linux-gnu/stage0/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-e9599659.rlib
x86_64-unknown-linux-gnu/stage0/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler-rt.a
x86_64-unknown-linux-gnu/stage0/lib/rustlib/x86_64-unknown-linux-gnu/lib/libmorestack.a
x86_64-unknown-linux-gnu/stage0/lib/rustlib/x86_64-unknown-linux-gnu/lib/stamp.core

I can only assume the same problem will probably propagate through later stages.

This is from doing a bootstrap build of the 1.1.0 tag (i.e., commit 35ceea3) in rust git, but I've also tried bootstrapping using commit 320bd6f and gotten the same results.

I've tried hunting down hard-coded "lib" and replacing it with $CFG_LIBDIR_RELATIVE. However, that did not resolve the problem, so perhaps something else is going on.

Possibly related: #11671, #22831, #16552

Output of ./x86_64-unknown-linux-gnu/stage0/bin/rustc --version --verbose:

rustc 1.1.0-dev (857ef6e27 2015-04-27) (built 2015-04-27)
binary: rustc
commit-hash: 857ef6e272e5634cb9f3e6ee50eb6bc2a2e71651
commit-date: 2015-04-27
build-date: 2015-04-27
host: x86_64-unknown-linux-gnu
release: 1.1.0-dev

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions