Created attachment 8354 [details] ssh pub key Псевдоним - zah Почта - zah@altlinux.org Ментор - cas Цель - научиться собирать пакеты для последующей сборки пакетов в Сизиф. Сборка пакетов проходящих проверку Сизиф для АО ИВК.
Created attachment 8355 [details] gpg pub key
Подтверждаю менторство.
Прошу завести учётку в git.alt для продолжения обучения.
Прошу завести учётку на git.alt.
(В ответ на комментарий №0) > Почта - zah@altlinux.org А куда пересылать письма?
(В ответ на комментарий №5) > (В ответ на комментарий №0) > > Почта - zah@altlinux.org > > А куда пересылать письма? zah@ivk.ru
(В ответ на комментарий №0) > Created an attachment (id=8354) (В ответ на комментарий №1) > Created an attachment (id=8355) (В ответ на комментарий №6) Ok.
ssh ключ на gitery.alt зарегистрирован. ssh ключ на gyle.alt зарегистрирован. Адрес для пересылки создан. T/J/S -> 3.0.
(Ответ для Gleb F-Malinovskiy на комментарий #8) > ssh ключ на gitery.alt зарегистрирован. > ssh ключ на gyle.alt зарегистрирован. > Адрес для пересылки создан. > > T/J/S -> 3.0. zah@ утверждает, что не может собирать в сборочницу. Выложите, пожалуйста, повторно.
(Ответ для Andrey Cherepanov на комментарий #9) > (Ответ для Gleb F-Malinovskiy на комментарий #8) > > ssh ключ на gitery.alt зарегистрирован. > > ssh ключ на gyle.alt зарегистрирован. > > Адрес для пересылки создан. > > > > T/J/S -> 3.0. > > zah@ утверждает, что не может собирать в сборочницу. Это ожидаемый эффект на стадии 3.0. Сборочница начинает принимать подписи кандидата после выполнения пункта 3.3.
Подтверждаю, что кандидат научился писать спеки и готовить пакеты. Прошу перейти к следующему этапу.
Пакет alt-gpgkeys обновлён. T/J/S -> 4.0.
(Ответ для Gleb F-Malinovskiy на комментарий #13) > Пакет alt-gpgkeys обновлён. > > T/J/S -> 4.0. Кандидат показал, что готов собирать пакеты уже в репозиторий. Прошу перейти на следующий этап.
(In reply to Andrey Cherepanov from comment #14) > (Ответ для Gleb F-Malinovskiy на комментарий #13) > > Пакет alt-gpgkeys обновлён. > > > > T/J/S -> 4.0. > > Кандидат показал, что готов собирать пакеты уже в репозиторий. Прошу перейти > на следующий этап. Готов собирать пакеты в репозиторий - это хорошо, но хотелось бы прояснить несколько вопросов по тестовому заданию. spec-файл назван wavemon-0.9.2.spec, это странно, обычно версию пакета в имени spec-файла не указывают. Несмотря на то, что в wavemon/README.md написано, что "wavemon is distributed under the [GPLv3](http://www.gnu.org/licenses/gpl-3.0.en.html), refer to the file `COPYING`.", в самих исходниках все copyright headers говорят про GPLv2+. > %configure LDFLAGS="-Wl,--copy-dt-needed-entries" Зачем понадобился этот костыль, интересно? > %find_lang --all %name Зачем это делать, если результат не используется?
> spec-файл назван wavemon-0.9.2.spec, это странно, обычно версию пакета в > имени spec-файла не указывают. Исправил. > Несмотря на то, что в wavemon/README.md написано, что > "wavemon is distributed under the > [GPLv3](http://www.gnu.org/licenses/gpl-3.0.en.html), refer to the file > `COPYING`.", > в самих исходниках все copyright headers говорят про GPLv2+. Поле License мне заполнил скрипт github2spec. > > %configure LDFLAGS="-Wl,--copy-dt-needed-entries" > Зачем понадобился этот костыль, интересно? Возникает ошибка при компоновке: /usr/bin/ld.default: info_scr.o: undefined reference to symbol 'pthread_sigmask@@GLIBC_2.2.5' /usr/bin/ld.default: /lib64/libpthread.so.0: error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status make: *** [<builtin>: wavemon] Error 1 > > %find_lang --all %name > Зачем это делать, если результат не используется? Убрал
(In reply to zah from comment #16) > > spec-файл назван wavemon-0.9.2.spec, это странно, обычно версию пакета в > > имени spec-файла не указывают. > Исправил. Спасибо. > > Несмотря на то, что в wavemon/README.md написано, что > > "wavemon is distributed under the > > [GPLv3](http://www.gnu.org/licenses/gpl-3.0.en.html), refer to the file > > `COPYING`.", > > в самих исходниках все copyright headers говорят про GPLv2+. > Поле License мне заполнил скрипт github2spec. На мой взгляд, в wavemon/README.md ошибка, поскольку информация в самих исходниках приоритетнее. Если этот проект ведётся на гитхабе, не хотите открыть там issue на эту тему? > > > %configure LDFLAGS="-Wl,--copy-dt-needed-entries" > > Зачем понадобился этот костыль, интересно? > Возникает ошибка при компоновке: > > /usr/bin/ld.default: info_scr.o: undefined reference to symbol > 'pthread_sigmask@@GLIBC_2.2.5' > /usr/bin/ld.default: /lib64/libpthread.so.0: error adding symbols: DSO > missing from command line > collect2: error: ld returned 1 exit status > make: *** [<builtin>: wavemon] Error 1 Это верный признак недолинковки: приложение использует pthread, но не слинковано с -pthread. Вот цитата из лога сборки: cc -pipe -frecord-gcc-switches -Wall -g -O2 -I /usr/include/libnl3 -Wl,--copy-dt-needed-entries wavemon.c about_scr.o conf.o conf_scr.o error.o help_scr.o info_scr.o iw_if.o iw_nl80211.o iw_scan.o lhist_scr.o llist.o scan_scr.o ui.o utils.o -lcap -lncursesw -lm -lnl-genl-3 -lnl-3 -lnl-3 -o wavemon Причина - неправильный тест в configure.ac: $ git grep FLAGS wavemon/configure.ac wavemon/configure.ac:CFLAGS="-O2 -Wall" wavemon/configure.ac:AC_CHECK_LIB([pthread], [pthread_create], [CFLAGS="$CFLAGS -pthread"], wavemon/configure.ac: [CFLAGS="$CFLAGS $LIBNL3_CFLAGS"], Менять CFLAGS в configure.ac - это распространённая ошибка, которую следует исправить. Вот пример исправления из другого пакета: https://kernel.googlesource.com/pub/scm/utils/quota/quota-tools/+/f2eb78c3833a123101c8c89c45f71dd4c7cd4787%5E!/ > > > %find_lang --all %name > > Зачем это делать, если результат не используется? > Убрал Спасибо.
(In reply to Andrey Cherepanov from comment #2) > Подтверждаю менторство. Андрей, если ты не возражаешь, я тоже немножко поменторю тут.
(Ответ для Dmitry V. Levin на комментарий #18) > (In reply to Andrey Cherepanov from comment #2) > > Подтверждаю менторство. > > Андрей, если ты не возражаешь, я тоже немножко поменторю тут. Да, конечно!
> На мой взгляд, в wavemon/README.md ошибка, поскольку информация в самих > исходниках приоритетнее. Если этот проект ведётся на гитхабе, не хотите > открыть там issue на эту тему? Issue открыл https://github.com/uoaerg/wavemon/issues/81 > > /usr/bin/ld.default: info_scr.o: undefined reference to symbol > > 'pthread_sigmask@@GLIBC_2.2.5' > > /usr/bin/ld.default: /lib64/libpthread.so.0: error adding symbols: DSO > > missing from command line > > collect2: error: ld returned 1 exit status > > make: *** [<builtin>: wavemon] Error 1 > > Это верный признак недолинковки: приложение использует pthread, но не > слинковано с -pthread. Вот цитата из лога сборки: > cc -pipe -frecord-gcc-switches -Wall -g -O2 -I /usr/include/libnl3 > -Wl,--copy-dt-needed-entries wavemon.c about_scr.o conf.o conf_scr.o > error.o help_scr.o info_scr.o iw_if.o iw_nl80211.o iw_scan.o lhist_scr.o > llist.o scan_scr.o ui.o utils.o -lcap -lncursesw -lm -lnl-genl-3 -lnl-3 > -lnl-3 -o wavemon > > Причина - неправильный тест в configure.ac: > $ git grep FLAGS wavemon/configure.ac > wavemon/configure.ac:CFLAGS="-O2 -Wall" > wavemon/configure.ac:AC_CHECK_LIB([pthread], [pthread_create], > [CFLAGS="$CFLAGS -pthread"], > wavemon/configure.ac: [CFLAGS="$CFLAGS $LIBNL3_CFLAGS"], У меня получилось вот так вот: 11c11 < #CFLAGS="-O2 -Wall" --- > CFLAGS="-O2 -Wall" 58c58 < AC_CHECK_LIB([pthread], [pthread_create], [PTHREAD_CFLAGS="$CFLAGS -pthread"], --- > AC_CHECK_LIB([pthread], [pthread_create], [CFLAGS="$CFLAGS -pthread"], 77c77 < [LIBNL3_CFLAGS="$PTHREAD_CFLAGS"], --- > [CFLAGS="$CFLAGS $LIBNL3_CFLAGS"], НО без изменений. В целом я понял что при компановке не хватает -pthread. Мне нужно ещё что-то добавить или правильно переменные определить?
(In reply to zah from comment #20) > > На мой взгляд, в wavemon/README.md ошибка, поскольку информация в самих > > исходниках приоритетнее. Если этот проект ведётся на гитхабе, не хотите > > открыть там issue на эту тему? > Issue открыл > https://github.com/uoaerg/wavemon/issues/81 Спасибо. > > > /usr/bin/ld.default: info_scr.o: undefined reference to symbol > > > 'pthread_sigmask@@GLIBC_2.2.5' > > > /usr/bin/ld.default: /lib64/libpthread.so.0: error adding symbols: DSO > > > missing from command line > > > collect2: error: ld returned 1 exit status > > > make: *** [<builtin>: wavemon] Error 1 > > > > Это верный признак недолинковки: приложение использует pthread, но не > > слинковано с -pthread. Вот цитата из лога сборки: > > cc -pipe -frecord-gcc-switches -Wall -g -O2 -I /usr/include/libnl3 > > -Wl,--copy-dt-needed-entries wavemon.c about_scr.o conf.o conf_scr.o > > error.o help_scr.o info_scr.o iw_if.o iw_nl80211.o iw_scan.o lhist_scr.o > > llist.o scan_scr.o ui.o utils.o -lcap -lncursesw -lm -lnl-genl-3 -lnl-3 > > -lnl-3 -o wavemon > > > > Причина - неправильный тест в configure.ac: > > $ git grep FLAGS wavemon/configure.ac > > wavemon/configure.ac:CFLAGS="-O2 -Wall" > > wavemon/configure.ac:AC_CHECK_LIB([pthread], [pthread_create], > > [CFLAGS="$CFLAGS -pthread"], > > wavemon/configure.ac: [CFLAGS="$CFLAGS $LIBNL3_CFLAGS"], > У меня получилось вот так вот: На будущее: всегда и везде присылайте патчи только в формате unified diff (diff -u). Кстати, git так делает по-умолчанию, так что git diff вам в помощь. > 11c11 > < #CFLAGS="-O2 -Wall" > --- > > CFLAGS="-O2 -Wall" > 58c58 > < AC_CHECK_LIB([pthread], [pthread_create], [PTHREAD_CFLAGS="$CFLAGS > -pthread"], > --- > > AC_CHECK_LIB([pthread], [pthread_create], [CFLAGS="$CFLAGS -pthread"], Недостаточно поменять переменные, их ещё надо AC_SUBST'ить и потом использовать в Makefile.in; LIBNL3_CFLAGS не надо AC_SUBST'ить вручную, это уже сделал PKG_CHECK_MODULES, а вот PTHREAD_CFLAGS надо. Когда Makefile.in будет исправлен на тему использования LIBNL3_CFLAGS и PTHREAD_CFLAGS, другой костыль (%add_optflags -I %_includedir/libnl3) тоже больше не понадобится. Кстати, -pthread нужен не cтолько для компиляции, сколько для линковки, он должен попасть туда, куда попадает LIBNL3_LIBS.
> На будущее: всегда и везде присылайте патчи только в формате unified diff > (diff -u). Кстати, git так делает по-умолчанию, так что git diff вам в > помощь. Понял > Когда Makefile.in будет исправлен на тему использования LIBNL3_CFLAGS и > PTHREAD_CFLAGS, другой костыль (%add_optflags -I %_includedir/libnl3) тоже > больше не понадобится. Сделал AC_SUBST(PTHREAD_CFLAGS) в configure.ac и использовал в Makefile.in, LIBNL3_CFLAGS уже был в Makefile.in. Теперь сборка и линковка проходит успешно. Но при сборке в hsh без костыля (%add_optflags -I %_includedir/libnl3) выпадает ошибка: + make -j8 make: Entering directory '/usr/src/RPM/BUILD/wavemon-0.9.2' CC conf.c conf.c:23:10: fatal error: netlink/version.h: No such file or directory #include <netlink/version.h>
(In reply to zah from comment #22) > Сделал AC_SUBST(PTHREAD_CFLAGS) в configure.ac и использовал в Makefile.in, > LIBNL3_CFLAGS уже был в Makefile.in. Теперь сборка и линковка проходит > успешно. > > Но при сборке в hsh без костыля (%add_optflags -I %_includedir/libnl3) > выпадает ошибка: > + make -j8 > make: Entering directory '/usr/src/RPM/BUILD/wavemon-0.9.2' > CC conf.c > conf.c:23:10: fatal error: netlink/version.h: No such file or directory > #include <netlink/version.h> В апстримном Makefile.in написано: CFLAGS ?= @CFLAGS@ @LIBNL3_CFLAGS@ ... %.o: %.c $(HEADERS) @echo ' CC ' $< @$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(DEFS) -c -o $@ $< В результате получается, что CFLAGS, неявно определённый в спек-файле в результате использования %configure, перекрывает апстримное определение CFLAGS. Не хотел бы повторяться, но менять CFLAGS в configure.ac/Makefile.in - это распространённая ошибка, которую следует исправить.
(Ответ для Dmitry V. Levin на комментарий #23) > В результате получается, что CFLAGS, неявно определённый в спек-файле в > результате использования %configure, перекрывает апстримное определение > CFLAGS. > Не хотел бы повторяться, но менять CFLAGS в configure.ac/Makefile.in - это > распространённая ошибка, которую следует исправить. Исправил CFLAGS и оформил изменения в patch. p.s. Пока ковырялся в мэйнстриме поправили и закрыли issue на тему лицензии.
Подтверждаю готовность кандидата к сборке в репозиторий.
(Ответ для Andrey Cherepanov на комментарий #25) > Подтверждаю готовность кандидата к сборке в репозиторий. Повторяю: Подтверждаю готовность кандидата к сборке в репозиторий. Прошу перейти к следующему этапу.
(In reply to Andrey Cherepanov from comment #26) > (Ответ для Andrey Cherepanov на комментарий #25) > > Подтверждаю готовность кандидата к сборке в репозиторий. > > Повторяю: Подтверждаю готовность кандидата к сборке в репозиторий. > > Прошу перейти к следующему этапу. С тех пор правила поменялись. К сожалению, я выпал из контекста того единственного тестового пакета, о котором шла речь. Возможно, я ещё к нему вернусь, а пока предлагаю дать какое-нибудь ещё тестовое задание.
Преветствую всех! Прошу поменять почтовый адрес для пересылке писем на zakharchenko.sn@gmail.com Спасибо!
(In reply to zah from comment #28) > zakharchenko.sn@gmail.com Так, это было сделано, больше ничего не помню. В целом актуально вообще?
(In reply to Gleb F-Malinovskiy from comment #29) > (In reply to zah from comment #28) > > zakharchenko.sn@gmail.com > Так, это было сделано, больше ничего не помню. > > В целом актуально вообще? Актуально
(In reply to zah from comment #30) > Актуально Тогда нам нужно понять, в каком состоянии мы находимся и каковы планы. Мне кажется, что мы находимся примерно на стадии T/J/S 3.5, если что поправьте. Андрей?
ping?
(In reply to Gleb F-Malinovskiy from comment #31) > (In reply to zah from comment #30) > > Актуально > Тогда нам нужно понять, в каком состоянии мы находимся и каковы планы. Мне > кажется, что мы находимся примерно на стадии T/J/S 3.5, если что поправьте. > > Андрей? Готов продолжить с любого пункта, с которого посчитаете необходимым.
Могу выступить в роли ментора, если у cas@ нет возможности продолжать джойн.
(In reply to Grigory Ustinov from comment #34) > Могу выступить в роли ментора, если у cas@ нет возможности продолжать джойн. Григорий, предложение ещё в силе? Я бы хотел пройти джойн с нуля, поскольку давно не практиковал.
Да.
(In reply to Grigory Ustinov from comment #36) > Да. Где будем общение вести? Если удобно ответь на почту.