From: Paul Wolneykien <manowar@altlinux.org>
To: devel@lists.altlinux.org
Subject: Re: [devel] Расширение функциональности rpm-build-rust
Date: Wed, 16 Sep 2026 12:48:47 +0300
Message-ID: <20260916124847.61c08f93@legato> (raw)
In-Reply-To: <aqpZWEKoV9Aeh6tC@lambda>
On Wed, 16 Sep 2026 11:54:48 +0300
Anton Zhukharev wrote:
> On Wed, Sep 16, 2026 at 12:31:48PM +0400, Ivan A. Melnikov wrote:
> > On Wed, Sep 16, 2026 at 11:16:11AM +0300, Artem Semenov wrote:
> > >
> > > 15.09.2026 15:55, Rx пишет:
> > > >
> > > > Привет!
> > > >
> > > > Недавно нашёл время решить проблемы с которыми сталкивался лично
> > > > и слышал от других мейнтейнеров при использовании макросов из
> > > > rpm-build-rust.
> > > >
> > > > Поскольку часть изменений может вызвать споры и непредвиденные побочные
> > > > эффекты, считаю что стоит поднять обсуждение по возможным доработкам.
> > > >
> > >
> > > Предлагаю рационанлизаторское предложение. Раст пакеты, по моему опыту. в
> > > основном -- как пододеяльник, Т.Е. Вещь в себе, шарит либы не используют,
> > > все свои зависимости носят с собой., от того они никак не связываются между
> > > собо й в сизифе.
> > >
> > >
> > > Предлагаю попробовать рассмотреть на будущее для раст механизмы, похожие на
> > > xmvn и xgradle, чтобы не вендорить хотябы то, что уже есть в сизифе.
> >
> > +1
> >
> > Нужен какой-то механизм, который намекнёт мейнтейнеру, что не нужно
> > не только собирать, но и вендорить исходники какой-нибудь libzstd
> > или openssl, а нужно добавить на них сборочную зависимость и, возможно,
> > включить фичу для использования системной библиотеки.
> >
> > Возможно, это стоит делать на уровне cargo-vendor-alt.
>
> Вообще, cargo-vendor-alt (который является скриптом, который вызывает
> cargo-vendor-filterer) выполняет лишь задачу вендоринга (бандлинга)
> зависимостей с небольшой фильтрацией (в основном по платформам) и в его
> задачи не входит поиск подобных артефактов.
>
> В целом поиск таких зависимостей - нетривиальная задача, так как помимо
> *-sys библиотек (shared libraries) могут приезжать так же и
> скомпилированные исполяемые файлы (чаще всего встречал protoc), так и
> static libraries. И иногда даже нет никаких ручек (feature или
> переменная окружения) для того, чтобы заставить cargo использовать именно
> системные shared libraries или executables.
>
> Раз уж хочется использовать системные зависимости то нужно изобретать
> другой механизм, либо контрибьютить в апстрим cargo-vendor-filterer,
> либо форкать его и делать так, как мы хотели бы.
Мне кажется, что дело не только в возможности использовать системные
зависимости. Дело в учёте и контроле прежде всего. Вот мы можем как-то
составить список всех зависимостей (проектов, фреймворков, библиотек,
rust-пакетов или как они там называются), которые завендорены среди
SRPM в Сизифе? Имея такой список его можно дальше оптимизировать.
Там же наверняка куча всего дублируется. А зачем?
Мне приходила в голову мысль, что можно было бы собрать в Сизиф
большие пакеты с названиями вроде rust-deps-best, rust-deps-good,
rust-deps-bad, rust-deps-ugly и т. д., то есть некоторую "свалку"
исходников популярных зависимостей, а при сборке пакета просто
требовать их. В сам же прикладной SRPM вендорить только то, что не
покрывается этой массой популярных зависимостей. Очевидный минус
в том, что в сборочную среду будет приезжать большой объём файлов,
из которых далеко не всё будет использоваться. Но плюс же в том, что
всё, что собирается таким образом, будет использовать одни и те же
версии rus-библиотек и несложно будет вести учёт и контроль.
Правда, я не знаю, можно ли, собирая программу на rust, убедить её
использовать зависимость не с конкретным хэшем (commit id), а соседнюю,
близкую и совместимую версию. Но если можно, тогда всё может получиться.
Собственно, паковать в rust-deps-* можно не одну версию библиотеки L,
а некоторый диапазон их -- такой набор, который реально нужен для
сборки наших пакетов. А в ситуации, если для сборки программы P нужна
версия L > V, мэйнтейнер P обращается к мэйнтейнеру rust-deps-* с
обоснованной просьбой включить в пакет нужную версию L. Примерно так
же, как сейчас просят обновить либу в Сизифе ("просьба обновить ... для
сборки ..."). И аналогично тому, как мы сейчас в Сизифе избавляемся от
старых версий библиотек ("просьба обновить ваши пакеты ..., чтобы
удалить из Сизифа старую ..."). можно будет внутри rust-deps-*
удалять уже не используемые исходники.
Короче говоря, я предлагаю завести и сопровождать общую (shared)
базу вендоринга, а в прикладных SRPM вендорить только экзотический
минимум -- то есть то, что нужно только данной программе и никому
больше не понадобится. То, что ещё называют compendium.
next prev parent reply other threads:[~2026-09-16 9:48 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-15 13:39 ` Anton Farygin
2026-09-16 9:27 ` Ivan A. Melnikov
2026-09-16 8:16 ` Artem Semenov
2026-09-16 8:31 ` Ivan A. Melnikov
2026-09-16 8:54 ` Anton Zhukharev
2026-09-16 9:48 ` Paul Wolneykien [this message]
2026-09-16 11:16 ` Rx
2026-09-16 11:51 ` Anton Zhukharev
2026-09-16 11:58 ` Anton Zhukharev
2026-09-16 13:16 ` Paul Wolneykien
2026-09-19 13:57 ` Arseny Maslennikov
2026-09-16 9:36 ` Rx
2026-09-16 9:28 ` Rx
2026-09-16 18:17 ` Anton Zhukharev
2026-09-17 11:19 ` Paul Wolneykien
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260916124847.61c08f93@legato \
--to=manowar@altlinux.org \
--cc=devel@lists.altlinux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
ALT Linux Team development discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
public-inbox-index devel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git