Bug 49687 - cargo run -Zbuild-std ожидает другой путь
Summary: cargo run -Zbuild-std ожидает другой путь
Status: ASSIGNED
Alias: None
Product: Sisyphus
Classification: Development
Component: rust-src (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Ajrat Makhmutov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-03-13 19:53 MSK by Ivan A. Melnikov
Modified: 2024-05-08 20:04 MSK (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ivan A. Melnikov 2024-03-13 19:53:39 MSK
Создадим тестовый проект:

$ cargo new hello; cd hello
[...]

И там попробуем воспользоваться нестабильными фичами карго:

$ RUSTC_BOOTSTRAP=1 cargo run -Zbuild-std --target x86_64-unknown-linux-gnu
error: "/usr/lib/rustlib/src/rust/Cargo.lock" does not exist, unable to build with the standard library, try:
        rustup component add rust-src

Путь, по которому будут искаться исходники, захардкожен вот тут:

https://git.altlinux.org/gears/r/rust.git?p=rust.git;a=blob;f=src/tools/cargo/src/cargo/core/compiler/standard_lib.rs;h=5272c211bd7474f1f881abdb89403e181bd088ed#l231

Однако у нас используется %_libdir:

$ rpm -ql rust-src  | grep -F '/Cargo.lock'
/usr/lib64/rustlib/src/rust/Cargo.lock
/usr/lib64/rustlib/src/rust/library/backtrace/Cargo.lock
/usr/lib64/rustlib/src/rust/library/portable-simd/Cargo.lock

Предлагаю перенести каталог rustlib в /usr/lib на всех архитектурах.
Comment 1 Ivan A. Melnikov 2024-03-13 19:55:08 MSK
sudo ln -sr /usr/lib64/rustlib/ /usr/lib

и правда помогает, но хотелось бы дистрибутивного решения.
Comment 2 Ajrat Makhmutov 2024-05-06 14:58:16 MSK
(Ответ для Ivan A. Melnikov на комментарий #0)
> Предлагаю перенести каталог rustlib в /usr/lib на всех архитектурах.
Так делать я не буду, так как /usr/lib это архитектурно-независимая директория, а в rustlib есть скомпилированные двоичные файлы, вероятнее всего архитектурно-зависимые:
x86_64-unknown-linux-gnu/
`-- lib
    |-- libaddr2line-bdeb55afe031b3e6.rlib
    |-- libadler-549853b5533490cf.rlib
    |-- liballoc-cc39756e9337b771.rlib
    |-- libcfg_if-55347f4e1650b108.rlib
    |-- libcompiler_builtins-fae3611e1da43b5f.rlib
    |-- libcore-cb3b37e38ca7215f.rlib
    |-- libgetopts-e83e983bbc3b6530.rlib
    |-- libgimli-21f57197152e14a3.rlib
    |-- libhashbrown-b382cdc5f4f98fc7.rlib
    |-- liblibc-8621cdfb8b678a20.rlib
    |-- libmemchr-d5d110b8400bba6f.rlib
    |-- libminiz_oxide-17cfdbeb4caa6393.rlib
    |-- libobject-133f67b4c75253cc.rlib
    |-- libpanic_abort-fa2ece2317c41167.rlib
    |-- libpanic_unwind-79dda966fd189021.rlib
    |-- libproc_macro-33650564d1f68605.rlib
    |-- libprofiler_builtins-732ed01bc6938bb5.rlib
    |-- librustc_demangle-59f68109070429a9.rlib
    |-- librustc_std_workspace_alloc-e14c4aa992180b1e.rlib
    |-- librustc_std_workspace_core-4670da79c7ee90e2.rlib
    |-- librustc_std_workspace_std-176e0b93f121636d.rlib
    |-- libstd-14eccbc7c394a2e1.rlib
    |-- libstd-14eccbc7c394a2e1.so -> ../../../libstd-14eccbc7c394a2e1.so
    |-- libstd_detect-c4e029d40a034467.rlib
    |-- libsysroot-3fedeb8400fd85fa.rlib
    |-- libtest-8eeb6f63d646b18e.rlib
    |-- libunicode_width-e355d2f8fad82fa9.rlib
    `-- libunwind-0e4e4b2658d78f4a.rlib

Делать noarch подпакет для архитектурно-зависимого проекта не хотелось бы, может привести к проблемам.
Просто поменяю захардкоженную директорию.
Comment 3 Ivan A. Melnikov 2024-05-06 15:32:04 MSK
> /usr/lib это архитектурно-независимая директория

Архитектурно-независимая -- это /usr/share.

/usr/lib -- это ещё и наш %_libexecdir, и там немало архитектурно-зависимых бинарников, например весь systemd, все LLVM, а после usrmerge ещё и модули ядра.
Comment 4 Ajrat Makhmutov 2024-05-06 20:01:23 MSK
Да, был не прав. Отправлю rustlib в /usr/lib/.
Comment 5 Ajrat Makhmutov 2024-05-08 20:04:42 MSK
https://git.altlinux.org/tasks/347340/logs/events.4.1.log
https://git.altlinux.org/tasks/347340/build/200/x86_64/log
error[E0557]: feature has been removed

Обновление firefox 126 будет 14-того числа, буду пробывать собрать новый rust уже с ним.