[00:00:27] warning: cardwire-ebpf-userspace@0.12.3: error: failed to load manifest for workspace member `/usr/lib64/rust-toolchains/alt-1.98/lib/rustlib/src/rust/library/sysroot` [00:00:27] warning: cardwire-ebpf-userspace@0.12.3: referenced by workspace at `/usr/lib64/rust-toolchains/alt-1.98/lib/rustlib/src/rust/library/Cargo.toml` [00:00:27] warning: cardwire-ebpf-userspace@0.12.3: [00:00:27] warning: cardwire-ebpf-userspace@0.12.3: Caused by: [00:00:27] warning: cardwire-ebpf-userspace@0.12.3: failed to load manifest for dependency `test` [00:00:27] warning: cardwire-ebpf-userspace@0.12.3: [00:00:27] warning: cardwire-ebpf-userspace@0.12.3: Caused by: [00:00:27] warning: cardwire-ebpf-userspace@0.12.3: failed to read `/usr/lib64/rust-toolchains/alt-1.98/lib/rustlib/src/rust/library/test/Cargo.toml` [00:00:27] warning: cardwire-ebpf-userspace@0.12.3: [00:00:27] warning: cardwire-ebpf-userspace@0.12.3: Caused by: [00:00:27] warning: cardwire-ebpf-userspace@0.12.3: No such file or directory (os error 2) [00:00:27] error: failed to run custom build command for `cardwire-ebpf-userspace v0.12.3 (/usr/src/RPM/BUILD/cardwire-0.12.3/crates/cardwire-ebpf-userspace)`
https://packages.altlinux.org/ru/tasks/434862/
rust-src обычно нужен в двух случаях: 1. Для отладочной информации и лучшей поддержки lsp сообщений. 2. Утилита/библиотека собирает std библиотеку с нуля для лучшей производительности. Исходя из логов, в данном случае имеет место быть второй случай: Error: env -u RUSTC -u RUSTC_WORKSPACE_WRAPPER CARGO_ENCODED_RUSTFLAGS="--cfg=bpf_target_arch=\"x86_64\"\u{1f}-Cdebuginfo=2\u{1f}-Clink-arg=--btf" "cargo" "build" "--package" "cardwire-ebpf" "--bins" "--message-format=json" "--release" "--target" "bpfel-unknown-none" "-Z" "build-std=core" "--features" "" "--target-dir" "/usr/src/RPM/BUILD/cardwire-0.12.3/target/ К сожалению, для предоставления такой возможности, нужна нестабильная/ночная сборка rust. На данный момент это требует некоторой проработки на которую, нужно достаточно много времени. Я верну Cargo.toml, но проблема никуда не исчезнет.
> export RUSTC_BOOTSTRAP=1 Так лучше не делать. Это переменная нужна для сборки самого компилятора и нигде больше. То что она доступна при сборке пакета историческая недоработка. Если пакет использует нестабильные возможности то для этого необходимо использовать нестабильный компилятор. https://doc.rust-lang.org/beta/unstable-book/compiler-environment-variables/RUSTC_BOOTSTRAP.html
https://packages.altlinux.org/ru/tasks/435102/
> Так лучше не делать Знаю, но я пока с проблемами не сталкивался, если пакету нужны нестабильные возможности, а нестабильного компилятора нет, это переменная которая разрешает нестабильные возможности в стабильном компиляторе помогает
(Ответ для Sergey Zhidkih на комментарий #4) > https://packages.altlinux.org/ru/tasks/435102/ Проверил локальную сборку с этой таской, всё собралось, прошу закомитить в Сизиф
rust-1:1.99.0-alt1 -> sisyphus: Thu Oct 08 2026 Sergey Zhidkih <rx1513@altlinux> 1:1.99.0-alt1 - New version (1.99.0). - Bring back "test/" into rust-src (Closes: 60762).
Локально прошло, а вот на сборочнице упало, возможно у меня что-то локально было [x86_64] warning: cardwire-ebpf-userspace@0.12.3: referenced by workspace at `/usr/lib64/rust-toolchains/alt-1.99/lib/rustlib/src/rust/library/Cargo.toml` Я тут взял апстримный rust-src и оно собралось, но таскать свой rust-src не хочется https://packages.altlinux.org/ru/tasks/436063/
(Ответ для Boris Yumankulov на комментарий #8) > Локально прошло, а вот на сборочнице упало, возможно у меня что-то локально > было > > [x86_64] warning: cardwire-ebpf-userspace@0.12.3: referenced by workspace at > `/usr/lib64/rust-toolchains/alt-1.99/lib/rustlib/src/rust/library/Cargo.toml` > Лучше приводить конкретный лог сборки: https://git.altlinux.org/tasks/436063/build/2/x86_64/log. Вырезка сборочницы часто указывает не на ту проблему. > Я тут взял апстримный rust-src и оно собралось, но таскать свой rust-src не > хочется И не надо. Таскать всё с собой это от лукавого.
По какой-то особенной причине апстрим пытается скомпилировать bpfel-unknown-none на месте, вместо того, чтобы переложить ответственность на дистрибуьютора компилятора, который и должен собирать этот таргет. https://doc.rust-lang.org/nightly/rustc/platform-support/bpf-unknown-none.html https://github.com/aya-rs/aya/issues/1329#issuecomment-3775588122 То есть идеальное решение это создать багу на добавление bpfel-unknown-none и уже использовать готовый таргет. Я попробовал пересобрать cardwire с полным rust-src, но это не сильно помогло, нужны ещё какие-то зависимости. Я ещё покопаюсь, но целесообразность этого сомнительная.
P.S. RUST_TOOLCHAIN не нужен. Его читает rustup, но он пока не адаптирован к работе с системным Rust, поэтому толку о данной переменной нетт. В будущем появится переопределение тулчейна, но он будет иметь название "alt" вместо "stable"
(In reply to Sergey Zhidkih from comment #11) > P.S. RUST_TOOLCHAIN не нужен. Его читает rustup, но он пока не адаптирован к > работе с системным Rust, поэтому толку о данной переменной нетт. В будущем > появится переопределение тулчейна, но он будет иметь название "alt" вместо > "stable" Это я просто перебирал все советы по сборке, отправлять это в Сизиф я конечно не буду, оно вроде собралось, но bpf-linker и rust-src мне не нравятся, тогда получается со своей стороны я пока cardwire не трогаю и так и оставляю не обновлённым ?
(Ответ для Boris Yumankulov на комментарий #12) > Это я просто перебирал все советы по сборке, отправлять это в Сизиф я > конечно не буду, оно вроде собралось, но bpf-linker и rust-src мне не > нравятся, тогда получается со своей стороны я пока cardwire не трогаю и так > и оставляю не обновлённым ? 1. Создать багу на добавление bpf*-unknown-none. После добавления, нужно будет собрать bpf-linker. 2. Рассказать условия при которых с системным rust-src "собралось". Было ли копирование исходников из rust-src в сборочную среду? Есть подозрение, что rust-src не встраивается в сборочное окружение, что неправильно при локальной сборке std. Либо source блокирует обращение к rust-src, что странно. В любом случае это баг, который стоит исправить. Со своей стороны я не могу запрещать обновление пакета. Если есть потребители, которым он очень сильно нужен, то можно временно воспользоваться временными костылями. Если такой потребности нет, то стоит дождаться грамотной упаковки стека для bpf.
> 2. Рассказать условия при которых с системным rust-src "собралось". Было ли копирование исходников из rust-src в сборочную среду? Есть подозрение, что rust-src не встраивается в сборочное окружение, что неправильно при локальной сборке std. Либо source блокирует обращение к rust-src, что странно. В любом случае это баг, который стоит исправить. Я же скинул таску чуть выше https://packages.altlinux.org/ru/tasks/436063/ Вот такой костыль по зависимостям for crate in rust-src-%rust_src_version/rust-src/lib/rustlib/src/rust/library/vendor/*; do if [ ! -e "vendor/${crate##*/}" ]; then cp -a "$crate" vendor/ fi done И свой rust-src вот так export __CARGO_TESTS_ONLY_SRC_ROOT="$PWD/rust-src-%rust_src_version/rust-src/lib/rustlib/src/rust/library" Всё собралось, я не проверял запуск правда, но сборка прошла, я думаю нужно вернуть ещё что-то в rust-src
Нашёл старые логи, вот на чём ещё падало [00:00:24] warning: cardwire-ebpf-userspace@0.12.3: warning: `/usr/src/RPM/BUILD/cardwire-0.12.3/.cargo/config` is deprecated in favor of `config.toml` [00:00:24] warning: cardwire-ebpf-userspace@0.12.3: | [00:00:24] warning: cardwire-ebpf-userspace@0.12.3: = help: if you need to support cargo 1.38 or earlier, you can symlink `config` to `config.toml` [00:00:24] warning: cardwire-ebpf-userspace@0.12.3: error: failed to load manifest for workspace member `/usr/lib64/rust-toolchains/alt-1.99/lib/rustlib/ src/rust/library/coretests` [00:00:24] warning: cardwire-ebpf-userspace@0.12.3: referenced by workspace at `/usr/lib64/rust-toolchains/alt-1.99/lib/rustlib/src/rust/library/ Cargo.toml` [00:00:24] warning: cardwire-ebpf-userspace@0.12.3: [00:00:24] warning: cardwire-ebpf-userspace@0.12.3: Caused by: [00:00:24] warning: cardwire-ebpf-userspace@0.12.3: failed to read `/usr/lib64/rust-toolchains/alt-1.99/lib/rustlib/src/rust/library/coretests/ Cargo.toml` [00:00:24] warning: cardwire-ebpf-userspace@0.12.3: [00:00:24] warning: cardwire-ebpf-userspace@0.12.3: Caused by: [00:00:24] warning: cardwire-ebpf-userspace@0.12.3: No such file or directory (os error 2) [00:00:24] error: failed to run custom build command for `cardwire-ebpf-userspace v0.12.3 (/usr/src/RPM/BUILD/cardwire-0.12.3/crates/cardwire-ebpf-userspace)` https://packages.altlinux.org/ru/sisyphus/binary/rust-src/ Потом когда я взял rust-src упало на › [00:00:25] warning: cardwire-ebpf-userspace@0.12.3: which(rustup)=cannot find binary path; proceeding with current toolchain [00:00:25] warning: cardwire-ebpf-userspace@0.12.3: error: no matching package named `rustc-literal-escaper` found [00:00:25] warning: cardwire-ebpf-userspace@0.12.3: location searched: directory source `/usr/src/RPM/BUILD/cardwire-0.12.3/vendor` (which is replacing registry `crates-io`) [00:00:25] warning: cardwire-ebpf-userspace@0.12.3: required by package `proc_macro v0.0.0 (/usr/src/RPM/BUILD/cardwire-0.12.3/rust-src-1.99.0/rust-src/ lib/rustlib/src/rust/library/proc_macro)` [00:00:25] warning: cardwire-ebpf-userspace@0.12.3: ... which satisfies path dependency `proc_macro` (locked to 0.0.0) of package `sysroot v0.0.0 (/ usr/src/RPM/BUILD/cardwire-0.12.3/rust-src-1.99.0/rust-src/lib/rustlib/src/rust/library/sysroot)` [00:00:25] error: failed to run custom build command for `cardwire-ebpf-userspace v0.12.3 (/usr/src/RPM/BUILD/cardwire-0.12.3/crates/cardwire-ebpf- userspace)` [00:00:25] [00:00:25] Caused by: [00:00:25] process didn't exit successfully: `/usr/src/RPM/BUILD/cardwire-0.12.3/target/release/build/cardwire-ebpf-userspace-35f4e80ebad7fb67/build- script-build` (exit status: 1) [00:00:25] --- stdout [00:00:25] cargo:rerun-if-env-changed=AYA_BUILD_SKIP [00:00:25] cargo:warning=which(rustup)=cannot find binary path; proceeding with current toolchain [00:00:25] cargo:rerun-if-changed=/usr/src/RPM/BUILD/cardwire-0.12.3/crates/cardwire-ebpf [00:00:25] cargo:warning=error: no matching package named `rustc-literal-escaper` found [00:00:25] cargo:warning=location searched: directory source `/usr/src/RPM/BUILD/cardwire-0.12.3/vendor` (which is replacing registry `crates-io`) [00:00:25] cargo:warning=required by package `proc_macro v0.0.0 (/usr/src/RPM/BUILD/cardwire-0.12.3/rust-src-1.99.0/rust-src/lib/rustlib/src/rust/ library/proc_macro)` [00:00:25] cargo:warning= ... which satisfies path dependency `proc_macro` (locked to 0.0.0) of package `sysroot v0.0.0 (/usr/src/RPM/BUILD/cardwire- 0.12.3/rust-src-1.99.0/rust-src/lib/rustlib/src/rust/library/sysroot)` [00:00:25] [00:00:25] --- stderr [00:00:25] Error: env -u RUSTC -u RUSTC_WORKSPACE_WRAPPER CARGO_ENCODED_RUSTFLAGS="--cfg=bpf_target_arch=\"x86_64\"\u{1f}-Cdebuginfo=2\u{1f}-Clink- arg=--btf" "cargo" "build" "--package" "cardwire-ebpf" "--bins" "--message-format=json" "--release" "--target" "bpfel-unknown-none" "-Z" "build-std=core" "--features" "" "--target-dir" "/usr/src/RPM/BUILD/cardwire-0.12.3/target/release/build/cardwire-ebpf-userspace-85b931ab5e65326b/out/aya-build/target/ cardwire-ebpf" failed: ExitStatus(unix_wait_status(25856)) [00:00:25] warning: build failed, waiting for other jobs to finish... [00:00:39] error: Bad exit status from /usr/src/tmp/rpmb-tmp.hEPxAj (%build) [00:00:39] [00:00:39] [00:00:39] RPM build errors: [00:00:39] Bad exit status from /usr/src/tmp/rpmb-tmp.hEPxAj (%build) [00:00:39] Command exited with non-zero status 1 [00:00:39] 858.01user 39.58system 0:34.41elapsed 2608%CPU (0avgtext+0avgdata 2261092maxresident)k [00:00:39] 0inputs+0outputs (0major+13099061minor)pagefaults 0swaps [00:00:39] hsh-rebuild: rebuild of `cardwire-0.12.3-alt1.src.rpm' failed. Это я решил for crate in rust-src-%rust_src_version/rust-src/lib/rustlib/src/rust/library/vendor/*; do if [ ! -e "vendor/${crate##*/}" ]; then cp -a "$crate" vendor/ fi done Но, во втором я наверное просто не до конца разобрался как взять свой rust-src поэтому пришлось делать костыли
(Ответ для Boris Yumankulov на комментарий #14) > > 2. Рассказать условия при которых с системным rust-src "собралось". Было ли копирование исходников из rust-src в сборочную среду? Есть подозрение, что rust-src не встраивается в сборочное окружение, что неправильно при локальной сборке std. Либо source блокирует обращение к rust-src, что странно. В любом случае это баг, который стоит исправить. > > Я же скинул таску чуть выше > > https://packages.altlinux.org/ru/tasks/436063/ > > > Вот такой костыль по зависимостям > > for crate in > rust-src-%rust_src_version/rust-src/lib/rustlib/src/rust/library/vendor/*; do > if [ ! -e "vendor/${crate##*/}" ]; then > cp -a "$crate" vendor/ > fi > done > > И свой rust-src вот так > > export > __CARGO_TESTS_ONLY_SRC_ROOT="$PWD/rust-src-%rust_src_version/rust-src/lib/ > rustlib/src/rust/library" Это завендоренный rust-src, а я имею ввиду rust-src из пакета. > Всё собралось, я не проверял запуск правда, но сборка прошла, я думаю нужно > вернуть ещё что-то в rust-src Я пробовал на полном rust-src, - не помогло.
> [00:00:25] cargo:warning=error: no matching package named `rustc-literal-escaper` found > [00:00:25] cargo:warning=location searched: directory source `/usr/src/RPM/BUILD/cardwire-0.12.3/vendor` (which is replacing registry `crates-io`) Похоже, что vendor виноват. Это пакет из rust-src.