[devel] в защиту __cargo

Rx rx1513 на altlinux.org
Ср Окт 28 13:43:36 MSK 2026


Здраствуйте!

Первая мысль которая приходит в голову при виде чего либо, что 
начинается с "_" это то, что это часть внутреннего интерфейса которую 
стоит трогать только если ты работаешь над ней и знаешь за что она 
отвечает.  На этот счёт даже есть отдельная старенькая статья  2009-ого 
TypicalPackagingErrors/InternalMacros 
<https://www.altlinux.org/TypicalPackagingErrors/InternalMacros>.

Я подозревал что все макросы с префиксами __ это глобальное 
переопределение утилит, но насколько глобальные? Было бы неплохо 
зафиксировать данное соглашение статьёй либо же полноценной политикой.

28.10.2026 11:13, Arseny Maslennikov пишет:
> On Wed, Oct 28, 2026 at 11:08:02AM +0300, Arseny Maslennikov wrote:
>> On Wed, Oct 28, 2026 at 10:27:54AM +0300, Rx wrote:
>>>         По результатам пересборки пакетов картина следующая:
>>>
>>> Из 432 пакетов упало 29:
>>> phrog   aris - Пакет использует устаревший макрос %__cargo. Исправление:
>> Здравствуйте!
>>
>> Я хотел бы предложить оставить макрос __cargo.
> И, наверное,
>
>      __rustc %_bindir/rustc
>
> тоже нужен, если его вдруг нет.
Не особо представляю потребителя данного макроса, сейчас единственным 
таким потребителем является сам rust. Все остальные вызовы rustc это 
извлечение версии llvm, хостовой архитектуры и прочей информации которую 
можно вывести в отдельные макросы.
>> Эти бла-бла в начале не просто так; такой макрос по (конечно, не очень
>> явному) соглашению предназначен для того, чтобы можно было передефайнить
>> все обращения к %_bindir/cargo в генерируемых скриптах.
>> Аналогично устроены __make, __ninja,
>> __mv, __cp, __rm, __install, __chmod, __chown,
>> __tar, __cpio, __gzip, __bzip2, __xz,
>> и все остальные.
>>
>> Оператор может заменить любую из этих утилит на собственную обёртку, на подкоманду в
>> multi-call binary навроде busybox, на taskset -c, что угодно.
>>
>>      rpmbuild --define "__tar /usr/local/bin/busybox tar" "$@"
>>      rpmbuild --define "__ninja taskset -c $(</sys/devices/cpu_atom/cpus) ninja" "$@"
>>      rpmbuild --define '__make bear -- make' "$@"
>>
>> Примеры, ясное дело, не исчерпывающие. :)
>>
>> Это предусмотренный в подвижной системе дополнительный шарнир:
>> он нужен не всем и не всегда, но существует.
> Можно, конечно, оставить оба.
> "%__cargo" как обозначение "как вызвать программу cargo",
> "%cargo" как обращение к прагматике cargo.
>
> Тогда packager сможет, например, сказать:
>
>      rpmbuild --define 'cargo %__cargo auditable' "$@"
>
> и у него заработает всё, что сегодня у вас раскрывает "%cargo".
>
> В любом случае надо это всё задокументировать, чтобы не пропало.

Если заменить cargo на cargo auditable для всех пакетов и оставить 
возможность отката на "оригинальный" cargo, то возможно в таком случае 
есть смысл сохранить макрос, но как будто бы "%define cargo cargo" будет 
более чем достаточно.

>>> phrog-0.53.0-alt2.src.rpm
>>> <https://git.altlinux.org/tasks/431040/gears/70400/phrog-0.53.0-alt2.src.rpm>
>
> _______________________________________________
> Devel mailing list
> Devel на lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel
----------- следующая часть -----------
Вложение в формате HTML было удалено...
URL: <http://lists.altlinux.org/pipermail/devel/attachments/20261028/4665aceb/attachment-0001.html>


Подробная информация о списке рассылки Devel