RPM/Rust: различия между версиями
< RPM
м (→Как быстро сделать Rust пакет с вендорингом: Удалить Cargo.lock, git add с -f) |
Vt (обсуждение | вклад) ('verbose = true' более недостаточно) |
||
Строка 32: | Строка 32: | ||
[term] | [term] | ||
verbose = true | verbose = true | ||
quiet = false | |||
[install] | [install] | ||
Строка 37: | Строка 38: | ||
[build] | [build] | ||
rustflags = ["-Cdebuginfo=1"] | rustflags = ["-Copt-level=3", "-Cdebuginfo=1"] | ||
[profile.release] | |||
strip = false | |||
EOF | EOF | ||
Версия от 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