RPM/Rust: различия между версиями
< RPM
Vt (обсуждение | вклад) Нет описания правки |
м (→Как быстро сделать Rust пакет с вендорингом: Удалить Cargo.lock, git add с -f) |
||
Строка 3: | Строка 3: | ||
Вендоринг — сохранение внешних зависимостей вместе с исходным пакетом (в отличии от помещения их в отдельные пакеты и использования BuildRequires). Как завендорить растовые зависимости (в дире с пакетом): | Вендоринг — сохранение внешних зависимостей вместе с исходным пакетом (в отличии от помещения их в отдельные пакеты и использования BuildRequires). Как завендорить растовые зависимости (в дире с пакетом): | ||
$ rm Cargo.lock | |||
$ cargo vendor | $ cargo vendor | ||
$ find vendor -name '*.a' -delete | $ find vendor -name '*.a' -delete | ||
$ git add -A vendor | $ git add -A -f vendor | ||
$ git commit -m "cargo vendor" | $ git commit -m "cargo vendor" | ||
* cargo vendor - поместит все зависимости в диру vendor/, желательно, чтоб она была пустая. | * cargo vendor - поместит все зависимости в диру vendor/, желательно, чтоб она была пустая. | ||
* find - удалит бинарные библиотеки из виндовых зависимостей (winapi*). | * find - удалит бинарные библиотеки из виндовых зависимостей (winapi*). | ||
* git add -f - чтобы избежать возможных проблем с .gitignore. | |||
В спеке: | В спеке: |
Версия от 22:13, 18 мая 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 [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