RPM/Rust: различия между версиями
< RPM
Vt (обсуждение | вклад) ('verbose = true' более недостаточно) |
Vt (обсуждение | вклад) мНет описания правки |
||
Строка 39: | Строка 39: | ||
[build] | [build] | ||
rustflags = ["-Copt-level=3", "-Cdebuginfo=1"] | rustflags = ["-Copt-level=3", "-Cdebuginfo=1"] | ||
[profile.release] | [profile.release] | ||
strip = false | strip = false |
Версия от 03:13, 20 мая 2022
Как быстро сделать Rust пакет с вендорингом
Вендоринг — сохранение внешних зависимостей вместе с исходным пакетом (в отличии от помещения их в отдельные пакеты и использования BuildRequires). Как завендорить растовые зависимости (в дире с пакетом):
$ rm Cargo.lock $ cargo vendor $ find vendor -name '*.a' -delete $ git add -A -f vendor $ git commit -m "cargo vendor"
- cargo vendor - поместит все зависимости в диру vendor/, желательно, чтоб она была пустая.
- find - удалит бинарные библиотеки из виндовых зависимостей (winapi*).
- git add -f - чтобы избежать возможных проблем с .gitignore.
В спеке:
BuildRequires: /proc BuildRequires: rust-cargo
- /proc необходим для работы cargo.
В секции %prep после %setup:
mkdir -p .cargo cat >> .cargo/config <<EOF [source.crates-io] replace-with = "vendored-sources" [source.vendored-sources] directory = "vendor" [term] verbose = true quiet = false [install] root = "%buildroot%_prefix" [build] rustflags = ["-Copt-level=3", "-Cdebuginfo=1"] [profile.release] strip = false EOF
- эта конструкция подключит вендореные исходники, настроит опции сборки и инсталляции.
В %build:
cargo build %_smp_mflags --offline --release
В %install (если пакет не библиотека, а бинарник):
cargo install %_smp_mflags --offline --no-track --path .
В %check, если нужен:
cargo test %_smp_mflags --release --no-fail-fast