Bug 47864

Summary: [4.2] join aibure@
Product: Team Accounts Reporter: krasovskiyai
Component: joinAssignee: Gleb F-Malinovskiy <glebfm>
Status: ASSIGNED --- QA Contact: Andrey Cherepanov <cas>
Severity: normal    
Priority: P5 CC: ancieg, arseny, glebfm, ldv
Version: unspecified   
Hardware: all   
OS: Linux   
URL: https://altlinux.org/Team/Join
Attachments:
Description Flags
ssh и gpg ключи
none
публичный gpg ключ
none
публичный ssh ключ none

Description krasovskiyai 2023-10-06 10:40:42 MSK

    
Comment 1 krasovskiyai 2023-10-06 11:38:44 MSK
Created attachment 14679 [details]
ssh и gpg ключи
Comment 2 krasovskiyai 2023-10-06 12:04:40 MSK
Created attachment 14680 [details]
публичный gpg ключ
Comment 3 krasovskiyai 2023-10-06 12:05:24 MSK
Created attachment 14681 [details]
публичный ssh ключ
Comment 4 krasovskiyai 2023-10-06 12:07:14 MSK
Ник: aibure
Цель: Научиться собирать пакеты
Адрес пересылки: aibure@basealt.ru
Ментор: ancieg 
Подписка: ancieg@altlinux.org
Comment 5 krasovskiyai 2023-10-06 14:41:03 MSK
Ник: aibure
Цель: Научиться собирать пакеты
Адрес пересылки: krasovskiyai@basealt.ru
Ментор: ancieg 
Подписка: ancieg@altlinux.org
Comment 6 Anton Zhukharev 2023-10-06 14:42:30 MSK
(In reply to krasovskiyai from comment #5)
> Ник: aibure
> Цель: Научиться собирать пакеты
> Адрес пересылки: krasovskiyai@basealt.ru
> Ментор: ancieg 
> Подписка: ancieg@altlinux.org
Ok
Comment 7 Gleb F-Malinovskiy 2023-11-24 16:53:03 MSK
Ментор есть, ключи в порядке.
T/J/S -> 1.3.
Comment 8 Anton Zhukharev 2023-11-24 17:11:30 MSK
Прошу выдать доступ к gitery.
Comment 9 Gleb F-Malinovskiy 2023-12-07 22:39:11 MSK
ssh ключ на gitery.alt зарегистрирован.
Адрес для пересылки создан.

T/J/S -> 2.3.
Comment 10 Anton Zhukharev 2024-01-22 15:30:38 MSK
Прошу выдать доступ к gyle.
Comment 11 Gleb F-Malinovskiy 2024-01-22 17:34:20 MSK
ssh ключ на gyle.alt зарегистрирован.
Пакет alt-gpgkeys обновлён.
Адрес подписан на devel@.

T/J/S -> 3.6.
Comment 12 Anton Zhukharev 2025-06-17 22:30:42 MSK
Думаю, пора передавать рецензенту.
Comment 13 Gleb F-Malinovskiy 2025-12-23 17:41:04 MSK
Призван рецензент (arseny@) для независимой оценки готовности кандидата.

T/J/S -> 4.2.
Comment 14 Arseny Maslennikov 2025-12-24 14:57:53 MSK
(In reply to Gleb F-Malinovskiy from comment #13)
> Призван рецензент (arseny@) для независимой оценки готовности кандидата.
> 
> T/J/S -> 4.2.

ACK.

Артём, напишите, плжст, какие сборочные задания или исходные пакеты мне смотреть.
Comment 15 krasovskiyai 2025-12-24 16:33:01 MSK
Добрый день!
Список пакетов для проверки:
duckdb (C++) https://git.altlinux.org/gears/d/duckdb.git
gleam (Rust) https://git.altlinux.org/gears/g/gleam.git
git-lfs (Golang) https://git.altlinux.org/gears/g/git-lfs.git
teleport (Golang) https://git.altlinux.org/gears/t/teleport.git
date (C++) https://git.altlinux.org/gears/d/date.git
Comment 16 Arseny Maslennikov 2026-01-12 00:34:55 MSK
Дочитал я голанговщину и растишку; можно начинать.

(In reply to krasovskiyai from comment #15)
> duckdb (C++) https://git.altlinux.org/gears/d/duckdb.git
Замечание: у вас в спеке идут обращения к %ninja_install -C "%_cmake__builddir". В нашем случае, где всеми фазами сборки управляет CMake, это лишний шаг. Для цели `install` там просто написано "исполнить сгенерированный во время configure скрипт, который всё, что надо, поставит", и от способностей ninja/make толку нет; ни трекер mtime у исходников и артефактов, ни очередь задач не используются.
А цель install для ninja вообще генерируют, если честно, просто для паритета со сложившейся практикой вокруг make(1), чтобы с руки два слова писать. 

Достаточно %cmake_install, а макросы rpm-build-ninja не требуются.

  % rpmbuild --eval '%ninja_install -C "%_cmake__builddir"'
  DESTDIR=/tmp/.private/ar/%{name}-buildroot /usr/bin/ninja -j8 install -C "x86_64-alt-linux"
  % rpmbuild --eval '%cmake_install'               
  DESTDIR="/tmp/.private/ar/%{name}-buildroot" cmake --install "x86_64-alt-linux" --verbose

Первая раскрытая команда тупо сведётся к последней.
Comment 17 Arseny Maslennikov 2026-01-12 00:35:27 MSK
(In reply to krasovskiyai from comment #15)
> duckdb (C++) https://git.altlinux.org/gears/d/duckdb.git
Пара вопросов:

* Обоснуйте, чем "ExclusiveArch: пачка" лучше, чем "ExcludeArch: %ix86". (Bonus points, если обоснуете, чем ExclusiveArch в альтовой практике _хуже_.)

* Что, по-вашему, означает "%autopatch0"?
Comment 18 Arseny Maslennikov 2026-01-12 00:37:05 MSK
(In reply to krasovskiyai from comment #15)
> date (C++) https://git.altlinux.org/gears/d/date.git
Nit: зря у этого исх. пакета название прямо date, это серьёзная заявка на конфликт с чем-нибудь, особенно для пакета с исходниками. :)
  Debian 12 bookworm/main 	howardhinnant-date 	3.0.1 	misc 	andrea@pappacoda.it
  Debian 13 trixie/main 	howardhinnant-date 	3.0.3 	misc 	tachi@debian.org
  nixpkgs stable 25.11 	howard-hinnant-date 	3.0.3 	- 	rtburns@protonmail.com
  nixpkgs unstable 	howard-hinnant-date 	3.0.3 	- 	rtburns@protonmail.com
  Arch Linux extra 	chrono-date 	3.0.4 	- 	-

Ещё мелочь: а почему у вас в секции %build при without check вызов %cmake заканчивается на %nil, а при with check не заканчивается? Хочу увидеть ход мысли.

Более важный вопрос.
Вот у вас в начале спека определено "%soversion 3". Допустим, выходит новая версия, где несовместимым образом меняется ABI и становится 4. (Мейнтейнеру нужно будет этот макрос соотв. образом бампнуть.) Как вы это определите? Помогут ли вам в этом инструменты упаковки?
Comment 19 Arseny Maslennikov 2026-01-12 00:38:40 MSK
(In reply to krasovskiyai from comment #15)
> gleam (Rust) https://git.altlinux.org/gears/g/gleam.git
Подготовка завендоренного барахла у нас не автоматизирована, она отдана на совесть мейнтейнера, так что лучше, дабы приблизиться к воспроизводимости, указывать команды, при помощи которых получился vendor-каталог. Как вариант — прямо в commit message.

Больше серьёзных недочётов и ошибок я не заметил.

Вопрос к кандидату: Вот вы благим намерением добавили в gear-репу `.cargo/config.toml`. Как этот файл попадёт в сборочную среду? возымеет ли он желаемый эффект?
Comment 20 Arseny Maslennikov 2026-01-12 00:41:05 MSK
(In reply to krasovskiyai from comment #15)
> git-lfs (Golang) https://git.altlinux.org/gears/g/git-lfs.git
Добрый совет: берите в "" все подстановки переменных на шелле; лучше перебдеть,
чем огрести потом инъекцию кода или нежелательное раскрытие глоба. К примеру,
  43   manpage="$(echo "$page" | sed 's/.adoc/.1/')"
  44   asciidoctor -a reproducible -b manpage -o "$manpage" "$page"

То же самое про вендоринг, что и отн. gleam.
То же касается webassets в пакете teleport и вообще всех неявных заавендориваний.
Comment 21 Arseny Maslennikov 2026-01-12 00:54:40 MSK
(In reply to krasovskiyai from comment #15)
> teleport (Golang) https://git.altlinux.org/gears/t/teleport.git
Открыл я directory with ALT settings. Автор, как следует из коммита, тоже вы :) так что и вопросы вам.

   9 EnvironmentFile=-/etc/default/teleport
Обоснуйте выбор каталога для этого файла.

  12 ExecReload=/bin/sh -c "exec pkill -HUP -L -F /run/teleport.pid"
Интересно, почему бы здесь и в соседних юнитах сразу не вызвать программу pkill?

  13 PIDFile=/run/teleport.pid
Нужен ли в принципе PIDFile= для службы типа simple?

Ещё: ряд компонентов из состава проекта teleport написаны на rust+cargo, которые вызываются из глубин make-портянки (oh, the irony!). Приходят ли им наши оптфлаги?
Comment 22 Arseny Maslennikov 2026-01-12 01:08:20 MSK
(In reply to krasovskiyai from comment #15)
> teleport (Golang) https://git.altlinux.org/gears/t/teleport.git
А, вот ещё нехороший момент, касается служебных uid и gid для teleport.

"Teleport user" — отсюда ясно, что записи связаны с этим пакетом, но не ясно, что под ними работает; там же субкомпоненты есть. Прошу при обновлении сделать этому усеру gecos яснее.

Кроме того, у нас служебные (aka системные) имена усеров и групп по соглашению начинаются с `_`. Теперь, конечно, когда пакет уже в сизифе, исправить это в общем случае нелегко; сложность зависит от того, хранит ли оно в системе файлы и каков их жизненный цикл.
Comment 23 Arseny Maslennikov 2026-01-12 01:19:32 MSK
Жду пока ответов на вопросы. Часть из них намекают на лучший вариант, чем сейчас, а иные заданы для того, чтобы было понятнее, как вы рассуждаете при принятии того или иного решения в роли мейнтейнера. :)

В остальном: вижу, что мы научились консистентно обновлять пакеты, умеем пользоваться git, пишем changelog-записи приемлемо, собираем пакеты разной природы. Пока я не увидел ни одного ноарчового пакета; прошу собрать что-нибудь noarch с учётом уже обсуждавшихся недочётов и замечаний.
Comment 24 krasovskiyai 2026-01-13 13:33:27 MSK
(Ответ для Arseny Maslennikov на комментарий #16)
> Дочитал я голанговщину и растишку; можно начинать.
> 
> (In reply to krasovskiyai from comment #15)
> > duckdb (C++) https://git.altlinux.org/gears/d/duckdb.git
> Замечание: у вас в спеке идут обращения к %ninja_install -C
> "%_cmake__builddir". В нашем случае, где всеми фазами сборки управляет
> CMake, это лишний шаг. Для цели `install` там просто написано "исполнить
> сгенерированный во время configure скрипт, который всё, что надо, поставит",
> и от способностей ninja/make толку нет; ни трекер mtime у исходников и
> артефактов, ни очередь задач не используются.
> А цель install для ninja вообще генерируют, если честно, просто для паритета
> со сложившейся практикой вокруг make(1), чтобы с руки два слова писать. 
> 
> Достаточно %cmake_install, а макросы rpm-build-ninja не требуются.
> 
>   % rpmbuild --eval '%ninja_install -C "%_cmake__builddir"'
>   DESTDIR=/tmp/.private/ar/%{name}-buildroot /usr/bin/ninja -j8 install -C
> "x86_64-alt-linux"
>   % rpmbuild --eval '%cmake_install'               
>   DESTDIR="/tmp/.private/ar/%{name}-buildroot" cmake --install
> "x86_64-alt-linux" --verbose
> 
> Первая раскрытая команда тупо сведётся к последней.

Спасибо за замечание, внесу исправления при следующем обновлении пакета.

(Ответ для Arseny Maslennikov на комментарий #17)
> (In reply to krasovskiyai from comment #15)
> > duckdb (C++) https://git.altlinux.org/gears/d/duckdb.git
> Пара вопросов:
> 
> * Обоснуйте, чем "ExclusiveArch: пачка" лучше, чем "ExcludeArch: %ix86".
> (Bonus points, если обоснуете, чем ExclusiveArch в альтовой практике _хуже_.)
> 
> * Что, по-вашему, означает "%autopatch0"?

Я считаю что такая пачка лучше из-за явности, сразу видно какие архитектуры поддерживаются. Именно для ALT такая явность в итоге становиться ограничением для сборки на догоняющих сборочницах, например с risc-v и для включения архитектуры мейнтейнерам приходится редактировать спек.

Насчет %autopatch0. В документации (https://rpm.org/docs/4.19.x/manual/autosetup.html) нашел возможность явно указывать какие патчи применять, решил попробовать воспользоваться в такой форме, что бы и autopatch оставить и показать, что пока я собираюсь применять только патч с номером 0, по логам показалось, что все работает нормально, сейчас перепроверил и понял, что указание 0 ничего не меняет) %autopatch0 так же применяет все патчи. Исправлю на просто %autopatch при обновлении пакета.

(Ответ для Arseny Maslennikov на комментарий #18)
> (In reply to krasovskiyai from comment #15)
> > date (C++) https://git.altlinux.org/gears/d/date.git
> Nit: зря у этого исх. пакета название прямо date, это серьёзная заявка на
> конфликт с чем-нибудь, особенно для пакета с исходниками. :)
>   Debian 12 bookworm/main 	howardhinnant-date 	3.0.1 	misc 
> andrea@pappacoda.it
>   Debian 13 trixie/main 	howardhinnant-date 	3.0.3 	misc 	tachi@debian.org
>   nixpkgs stable 25.11 	howard-hinnant-date 	3.0.3 	- 	rtburns@protonmail.com
>   nixpkgs unstable 	howard-hinnant-date 	3.0.3 	- 	rtburns@protonmail.com
>   Arch Linux extra 	chrono-date 	3.0.4 	- 	-
> 
> Ещё мелочь: а почему у вас в секции %build при without check вызов %cmake
> заканчивается на %nil, а при with check не заканчивается? Хочу увидеть ход
> мысли.
> 
> Более важный вопрос.
> Вот у вас в начале спека определено "%soversion 3". Допустим, выходит новая
> версия, где несовместимым образом меняется ABI и становится 4. (Мейнтейнеру
> нужно будет этот макрос соотв. образом бампнуть.) Как вы это определите?
> Помогут ли вам в этом инструменты упаковки?

Согласен, что недальновидно было назвать пакет просто date, на тот момент я руководствовался следующим: название не занято - значит будет занято. Сейчас я понимаю, что название конфликтное и точность в названии не помешала бы.

Про %nil. Когда только начал собирать пакет, команда сборки была выстроена каким-то образом, что не все опции cmake применялись, точно уже не помню или вообще сборка падала, тогда %nil помог, в итоге я его оставил, сейчас проверил сборку без него - сборка проходит исправно.

Какими либо инструментами для определения ABI версии еще не пользовался. Сейчас нагуглил abi-compliance-checker и abi-dumper, пока думаю что Вы имели в виду их. А так я смотрел бы grep'ом по objbump `objdump -p /usr/lib64/libexample.so | grep SONAME`, и то это если сборка уже не упала из-за несоответствия soname.

(Ответ для Arseny Maslennikov на комментарий #19)
> (In reply to krasovskiyai from comment #15)
> > gleam (Rust) https://git.altlinux.org/gears/g/gleam.git
> Подготовка завендоренного барахла у нас не автоматизирована, она отдана на
> совесть мейнтейнера, так что лучше, дабы приблизиться к воспроизводимости,
> указывать команды, при помощи которых получился vendor-каталог. Как вариант
> — прямо в commit message.
> 
> Больше серьёзных недочётов и ошибок я не заметил.
> 
> Вопрос к кандидату: Вот вы благим намерением добавили в gear-репу
> `.cargo/config.toml`. Как этот файл попадёт в сборочную среду? возымеет ли
> он желаемый эффект?

Про указание команд для вендоринга услышал, буду использовать.
.cargo/config.toml попадет в окружение через кумулятивный патч 
Patch: %name-%version-alt.patch
diff: v@version@:. . name=@name@-@version@-alt.patch exclude=vendor/ exclude=.gear/
Полагаю эффект возымеет, как минимум по логам точно применяются rustflags = ["-Copt-level=3", "-Cdebuginfo=1"]


(Ответ для Arseny Maslennikov на комментарий #20)
> (In reply to krasovskiyai from comment #15)
> > git-lfs (Golang) https://git.altlinux.org/gears/g/git-lfs.git
> Добрый совет: берите в "" все подстановки переменных на шелле; лучше
> перебдеть,
> чем огрести потом инъекцию кода или нежелательное раскрытие глоба. К примеру,
>   43   manpage="$(echo "$page" | sed 's/.adoc/.1/')"
>   44   asciidoctor -a reproducible -b manpage -o "$manpage" "$page"
> 
> То же самое про вендоринг, что и отн. gleam.
> То же касается webassets в пакете teleport и вообще всех неявных
> заавендориваний.

Так же спасибо за замечание, приму к сведению.

(Ответ для Arseny Maslennikov на комментарий #21)
> (In reply to krasovskiyai from comment #15)
> > teleport (Golang) https://git.altlinux.org/gears/t/teleport.git
> Открыл я directory with ALT settings. Автор, как следует из коммита, тоже вы
> :) так что и вопросы вам.
> 
>    9 EnvironmentFile=-/etc/default/teleport
> Обоснуйте выбор каталога для этого файла.
> 
>   12 ExecReload=/bin/sh -c "exec pkill -HUP -L -F /run/teleport.pid"
> Интересно, почему бы здесь и в соседних юнитах сразу не вызвать программу
> pkill?
> 
>   13 PIDFile=/run/teleport.pid
> Нужен ли в принципе PIDFile= для службы типа simple?
> 
> Ещё: ряд компонентов из состава проекта teleport написаны на rust+cargo,
> которые вызываются из глубин make-портянки (oh, the irony!). Приходят ли им
> наши оптфлаги?

Unit файл я получил командой: teleport install systemd. Подозрительным он мне не показался.

Rust утилита fdpass-teleport видно собирается с rustflags = ["-Copt-level=3", "-Cdebuginfo=1"], но игнорирует strip = false из tool/fdpass-teleport/.cargo/config.toml. Пока не нашел причину почему так.



(Ответ для Arseny Maslennikov на комментарий #22)
> (In reply to krasovskiyai from comment #15)
> > teleport (Golang) https://git.altlinux.org/gears/t/teleport.git
> А, вот ещё нехороший момент, касается служебных uid и gid для teleport.
> 
> "Teleport user" — отсюда ясно, что записи связаны с этим пакетом, но не
> ясно, что под ними работает; там же субкомпоненты есть. Прошу при обновлении
> сделать этому усеру gecos яснее.
> 
> Кроме того, у нас служебные (aka системные) имена усеров и групп по
> соглашению начинаются с `_`. Теперь, конечно, когда пакет уже в сизифе,
> исправить это в общем случае нелегко; сложность зависит от того, хранит ли
> оно в системе файлы и каков их жизненный цикл.

Про gecos услышал, сделаю подробнее.
Про соглашение наименования системных имен не знал, впредь буду учитывать.
Comment 25 Arseny Maslennikov 2026-01-13 18:13:20 MSK
Чуть позже всё прокомментирую.

Пока вот абстрактно.

В поле License: в пакете мы последние годы стараемся поддерживать порядок.
Если у лицензии есть общепринятый SPDX-License-Identifier, мы указываем его.
Если у лицензии его нет, то придумываем сами с префиксом "ALT-"; например, ALT-Reticulum, ALT-Zsh. Тогда либо в пакет common-licenses, либо в наш пакет нужно поместить под соотв. именем в каталог /usr/share/license* текст лицензии.