RPM/Rust
< RPM
Версия от 22:13, 18 мая 2022; AndrewVasilyev (обсуждение | вклад) (→Как быстро сделать Rust пакет с вендорингом: Удалить Cargo.lock, git add с -f)
Как быстро сделать 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 [install] root = "%buildroot%_prefix" [build] rustflags = ["-Cdebuginfo=1"] 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