Bug 35093 - Вступление в ALT Linux Team
Summary: Вступление в ALT Linux Team
Status: CLOSED FIXED
Alias: None
Product: Team Accounts
Classification: Development
Component: join (show other bugs)
Version: unspecified
Hardware: all Linux
: P3 normal
Assignee: Dmitry V. Levin
QA Contact: Andrey Cherepanov
URL: http://www.altlinux.org/Team/Join/Sec...
Keywords:
Depends on:
Blocks:
 
Reported: 2018-06-27 15:40 MSK by Никита Ермаков
Modified: 2018-09-24 18:16 MSK (History)
4 users (show)

See Also:


Attachments
ssh key (91 bytes, application/vnd.ms-publisher)
2018-06-27 15:41 MSK, Никита Ермаков
no flags Details
gpg key (3.07 KB, application/octet-stream)
2018-06-27 15:41 MSK, Никита Ермаков
no flags Details
spec файл к radare2 (old) (2.40 KB, text/x-rpm-spec)
2018-07-01 02:30 MSK, Никита Ермаков
no flags Details
патч для libr/config.mk.tail (416 bytes, patch)
2018-07-01 02:31 MSK, Никита Ермаков
no flags Details | Diff
патч к libr/Makefile (382 bytes, patch)
2018-07-01 02:31 MSK, Никита Ермаков
no flags Details | Diff
spec файл к radare2 (2.90 KB, text/x-rpm-spec)
2018-07-03 02:08 MSK, Никита Ермаков
no flags Details
spec файл к capstone disassembler (3.76 KB, text/x-rpm-spec)
2018-07-03 02:09 MSK, Никита Ермаков
no flags Details
radare2 2.7 RPM spec file (2.14 KB, text/x-rpm-spec)
2018-07-10 18:50 MSK, Никита Ермаков
no flags Details
capstone disassembler RPM spec file (3.34 KB, text/x-rpm-spec)
2018-07-10 18:50 MSK, Никита Ермаков
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Никита Ермаков 2018-06-27 15:40:49 MSK
Псевдоним: garmr
Адрес пересылки: coffe92@gmail.com
Имя ментора: Глеб Фотенгауэр-Малиновский

Хочу собрать пакет ROOT 6 (root.cern.ch), а так же если возможно, собрать другие пакеты в области физики. Так же хочу устроиться к вам на работу :)
Comment 1 Никита Ермаков 2018-06-27 15:41:25 MSK
Created attachment 7624 [details]
ssh key
Comment 2 Никита Ермаков 2018-06-27 15:41:47 MSK
Created attachment 7625 [details]
gpg key
Comment 3 Никита Ермаков 2018-06-28 01:05:19 MSK
Прошу прощения, я ошибся в псевдониме, который написал в тексте. gpg ключ я генерировал для псевдонима: arei
Только сейчас заметил это.
Comment 4 Никита Ермаков 2018-07-01 02:30:05 MSK
  Было решено вместо ROOT-6 собрать radare2 (http://radare.org/r/).
В процессе написания spec файла и попытки сборки rpm пакета были обнаружены и исправлены (написаны патчи) проблемы в radare2-2.6.0.
  Первая проблема была связана функцией libpath-to-name внутри libr/config.mk.tail - не выполнялась проверка на наличие '/' в аргументе, в следствии чего при копировании имя библиотеки libr.so изменялось в .2.6.0. Для исправления была сделана дополнительная проверка (см. fix_libr_install.patch)
  Вторая проблема связана с тем, что во время сборки библиотеки libr.so не выполнялась линковка libutil.so. Исправление представлено в патче fix_libr_ldflags.patch

spec файл radare2.spec был собран и протестирован с помощью hasher. При проверке sisyphus-check ошибок обнаружено не было.
Comment 5 Никита Ермаков 2018-07-01 02:30:46 MSK
Created attachment 7632 [details]
spec файл к radare2 (old)
Comment 6 Никита Ермаков 2018-07-01 02:31:20 MSK
Created attachment 7633 [details]
патч для libr/config.mk.tail
Comment 7 Никита Ермаков 2018-07-01 02:31:43 MSK
Created attachment 7634 [details]
патч к libr/Makefile
Comment 8 Никита Ермаков 2018-07-01 02:35:08 MSK
(В ответ на комментарий №4)
>   Было решено вместо ROOT-6 собрать radare2 (http://radare.org/r/).
> В процессе написания spec файла и попытки сборки rpm пакета были обнаружены и
> исправлены (написаны патчи) проблемы в radare2-2.6.0.
>   Первая проблема была связана функцией libpath-to-name внутри
> libr/config.mk.tail - не выполнялась проверка на наличие '/' в аргументе, в
> следствии чего при копировании имя библиотеки libr.so изменялось в .2.6.0. Для
> исправления была сделана дополнительная проверка (см. fix_libr_install.patch)
>   Вторая проблема связана с тем, что во время сборки библиотеки libr.so не
> выполнялась линковка libutil.so. Исправление представлено в патче
> fix_libr_ldflags.patch
> 
> spec файл radare2.spec был собран и протестирован с помощью hasher. При
> проверке sisyphus-check ошибок обнаружено не было.

Для информации.
radare2 для сборки использует дизассемблер capstone который берёт из репозитория гит. Поэтому hasher нужен доступ в сеть:
$: share_network=1 hsh HASHER_REPO SRPM
Comment 9 Dmitry V. Levin 2018-07-01 02:43:22 MSK
(In reply to comment #8)
> Для информации.
> radare2 для сборки использует дизассемблер capstone который берёт из
> репозитория гит. Поэтому hasher нужен доступ в сеть:
> $: share_network=1 hsh HASHER_REPO SRPM

В Сизиф такое собрать не получится; всё, что во время сборки скачивается по сети, должно быть скачано и доступно для сборки.
Comment 10 Michael Shigorin 2018-07-01 23:00:15 MSK
Обычно это достигается сборкой требуемого тоже пакетом, прописыванием
в BuildRequires: и разбандливанием (штатно или предоставленным заодно
апстриму патчем).
Comment 11 Никита Ермаков 2018-07-02 12:36:14 MSK
В пакете radare2 есть возможность использовать системный capstone при указании --with-syscapstone флага в скрипт configure. Я решил создать отдельный пакет capstone, написал spec файл и выполнил компиляцию rpm пакета при помощи rpmbuild -ba. Однако при компиляции пакета в hasher я столкнулся со следующей проблемой. Для компиляции capstone нужен пакет java-devel, например java-1.7.0-openjdk-devel. При компиляции rpm пакета с помощью rpmbuild в процессе выполнения команды javac никаких ошибок не возникает. Но при использовании hasher возникает ошибка на стадии работы javac:
javac: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory

При этом эта библиотека есть и лежит (доступна как в hasher так и в хост системе) /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.79-2.5.5.0.x86_64/jre/lib/amd64/jli/libjli.so

В самой системе alt javac прекрасно работает:
> ldd /usr/bin/javac
        linux-vdso.so.1 (0x00007fff2e7e7000)
        libjli.so => /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.79-2.5.5.0.x86_64/jre/lib/amd64/jli/libjli.so (0x00007f8de7f41000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f8de7b9e000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f8de799a000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f8de777d000)
        libz.so.1 => /lib64/libz.so.1 (0x00007f8de7565000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f8de814f000)

А вот в hasher:
+ ldd /usr/bin/javac
        linux-vdso.so.1 (0x00007fffdfb7f000)
        libjli.so => not found
        libc.so.6 => /lib64/libc.so.6 (0x00007feeafe7d000)
        /lib64/ld-linux-x86-64.so.2 (0x00007feeb0220000)

Я пытаюсь разобраться в этой проблеме какое-то время, но пока без результатов. Подскажите, если вы знаете, в какую сторону нужно смотреть?
Comment 12 Dmitry V. Levin 2018-07-02 13:12:00 MSK
(In reply to comment #11)
> + ldd /usr/bin/javac
>         linux-vdso.so.1 (0x00007fffdfb7f000)
>         libjli.so => not found
>         libc.so.6 => /lib64/libc.so.6 (0x00007feeafe7d000)
>         /lib64/ld-linux-x86-64.so.2 (0x00007feeb0220000)
> 
> Я пытаюсь разобраться в этой проблеме какое-то время, но пока без результатов.
> Подскажите, если вы знаете, в какую сторону нужно смотреть?

Скорее всего, вы не разрешили hasher'у смонтировать /proc, без которого java не java.
Comment 14 Никита Ермаков 2018-07-03 02:08:47 MSK
Created attachment 7637 [details]
spec файл к radare2
Comment 15 Никита Ермаков 2018-07-03 02:09:14 MSK
Created attachment 7638 [details]
spec файл к capstone disassembler
Comment 16 Никита Ермаков 2018-07-03 02:13:37 MSK
Дмитрий, Михаил, большое спасибо за ответы. Действительно дело оказалось в том, что я не монтировал /proc. Я изменил spec файл к radare2, добавил зависимость от capstone-devel и добавил изменение строчки libr/Makefile отвечающей за путь к libcapstone.a, которая была hard-coded на bundled версию capstone. Так же я создал и протестировал на hasher spec файл для сборки capstone (см. приложение) который используется radare2.
Comment 17 Gleb F-Malinovskiy 2018-07-06 12:37:58 MSK
ssh ключ на gitery.alt зарегистрирован.
ssh ключ на gyle.alt зарегистрирован.
Адрес для пересылки создан.

T/J/S -> 3.0.
Comment 18 Dmitry V. Levin 2018-07-06 12:57:06 MSK
(In reply to comment #14)
> Created an attachment (id=7637) [details]
> spec файл к radare2

По традиции, тэги пишутся с заглавной буквы (Name, Version, Release, и т.п.).

Комментарии пишут к тому, что нуждается в комментарии; тэги, которые есть в каждом спеке, лучше не комментировать.

Точка в конце Summary указывать не следует.

BuildRequires странный, содержит пакеты, которые всегда присутствуют в сборочной среде, а также пакеты, которые на самом деле не нужны для сборки.

У нас нет полиси указывать provides: bundled().
Нужны веские основания использовать носимые с собой zlib, lz4, и magic вместо системных.

Вместо
%dir %{_datadir}/%{name}/%{version}
%{_datadir}/%{name}/%{version}/*
можно написать
%{_datadir}/%{name}/%{version}/
аналогичную замену можно сделать и в других местах.
Comment 19 Michael Shigorin 2018-07-06 14:07:45 MSK
Зафиксировал хотя бы в https://www.altlinux.org/Обсуждение:Spec
Comment 20 Michael Shigorin 2018-07-06 14:09:19 MSK
(В ответ на комментарий №18)
> (In reply to comment #14)
> Вместо
> %dir %{_datadir}/%{name}/%{version}
> %{_datadir}/%{name}/%{version}/*
> можно написать
> %{_datadir}/%{name}/%{version}/
> аналогичную замену можно сделать и в других местах.
...а затем напустить cleanup_spec и получить наконец
%_datadir/%name/%version/
Comment 21 Никита Ермаков 2018-07-10 18:50:02 MSK
Created attachment 7656 [details]
radare2 2.7 RPM spec file
Comment 22 Никита Ермаков 2018-07-10 18:50:51 MSK
Created attachment 7657 [details]
capstone disassembler RPM spec file
Comment 23 Никита Ермаков 2018-07-10 19:08:18 MSK
Спасибо за замечания! Я исправил стилистическую часть spec файлов (см. radare2 2.7 RPM spec file, capstone disassembler RPM spec file). Вчера вышла новая версия radare2-2.7, поэтому я взял теперь её за основу пакета radare2. В ней были исправлены проблемы с libr/Makefile поэтому патчи которые я прикладывал для версии 2.6 больше не нужны. Кроме этого, я исправил build requirements, вроде бы убрал все ненужные зависимости. Убрал Bundled lz4, zlib и magic, в configure скрипте есть возможность использовать их как внешние зависимости. Однако для того, чтобы убрать остальные bundled, необходимо, как я понимаю, существенно менять код самой программы.

* sdb - (https://github.com/radare/sdb) разработка команды radare, которая вшита в код radare2

* js0n - (https://github.com/quartzjer/js0n) они используют свою версию этой программы

* openbsdregex - они используют свою версию OpenBSD реализации regex

* tcc - их "обрезанная" версия tcc

* binutils - они используют части кода из binutils

* vavrdisasm - они вытащили куски кода из vAVRdisasm написанный Vanya A. Sergeev - <vsergeev@gmail.com>
Comment 24 Dmitry V. Levin 2018-07-25 20:44:16 MSK
Пакет alt-gpgkeys обновлён.

T/J/S -> 4.0.
Comment 25 Gleb F-Malinovskiy 2018-09-24 17:42:28 MSK
Можно завершить приём.
Comment 26 AEN 2018-09-24 17:48:26 MSK
(В ответ на комментарий №25)
> Можно завершить приём.
Поздравляю! :)
Comment 27 Dmitry V. Levin 2018-09-24 17:49:41 MSK
Адрес подписан на devel@.
Пользователь добавлен в группу мантейнеров.

Желаю удачного мантейнерства!
Comment 28 Никита Ермаков 2018-09-24 18:16:16 MSK
Всем спасибо! :)