Bug 37407

Summary: [3.5] join zah@
Product: Team Accounts Reporter: zah <zah>
Component: joinAssignee: Gleb F-Malinovskiy <glebfm>
Status: ASSIGNED --- QA Contact: Andrey Cherepanov <cas>
Severity: normal    
Priority: P3 CC: glebfm, grenka, ldv, mike
Version: unspecified   
Hardware: all   
OS: Linux   
URL: https://altlinux.org/Team/Join
Attachments:
Description Flags
ssh pub key
none
gpg pub key none

Description zah 2019-11-01 12:32:48 MSK
Created attachment 8354 [details]
ssh pub key

Псевдоним - zah
Почта - zah@altlinux.org
Ментор - cas

Цель - научиться собирать пакеты для последующей сборки пакетов в Сизиф. Сборка пакетов проходящих проверку Сизиф для АО ИВК.
Comment 1 zah 2019-11-01 12:34:42 MSK
Created attachment 8355 [details]
gpg pub key
Comment 2 Andrey Cherepanov 2019-11-01 16:58:36 MSK
Подтверждаю менторство.
Comment 3 zah 2019-11-13 13:29:38 MSK
Прошу завести учётку в git.alt для продолжения обучения.
Comment 4 Andrey Cherepanov 2019-11-22 14:56:36 MSK
Прошу завести учётку на git.alt.
Comment 5 Gleb F-Malinovskiy 2019-12-11 19:26:18 MSK
(В ответ на комментарий №0)
> Почта - zah@altlinux.org

А куда пересылать письма?
Comment 6 zah 2019-12-12 10:38:12 MSK
(В ответ на комментарий №5)
> (В ответ на комментарий №0)
> > Почта - zah@altlinux.org
> 
> А куда пересылать письма?

zah@ivk.ru
Comment 7 Gleb F-Malinovskiy 2019-12-16 15:35:45 MSK
(В ответ на комментарий №0)
> Created an attachment (id=8354)
(В ответ на комментарий №1)
> Created an attachment (id=8355)
(В ответ на комментарий №6)

Ok.
Comment 8 Gleb F-Malinovskiy 2019-12-16 15:39:00 MSK
ssh ключ на gitery.alt зарегистрирован.
ssh ключ на gyle.alt зарегистрирован.
Адрес для пересылки создан.

T/J/S -> 3.0.
Comment 9 Andrey Cherepanov 2020-09-09 17:44:49 MSK
(Ответ для Gleb F-Malinovskiy на комментарий #8)
> ssh ключ на gitery.alt зарегистрирован.
> ssh ключ на gyle.alt зарегистрирован.
> Адрес для пересылки создан.
> 
> T/J/S -> 3.0.

zah@ утверждает, что не может собирать в сборочницу. Выложите, пожалуйста, повторно.
Comment 10 Gleb F-Malinovskiy 2020-09-09 21:50:17 MSK
(Ответ для Andrey Cherepanov на комментарий #9)
> (Ответ для Gleb F-Malinovskiy на комментарий #8)
> > ssh ключ на gitery.alt зарегистрирован.
> > ssh ключ на gyle.alt зарегистрирован.
> > Адрес для пересылки создан.
> > 
> > T/J/S -> 3.0.
> 
> zah@ утверждает, что не может собирать в сборочницу.

Это ожидаемый эффект на стадии 3.0.
Сборочница начинает принимать подписи кандидата после выполнения пункта 3.3.
Comment 11 Andrey Cherepanov 2020-09-10 11:41:04 MSK
Подтверждаю, что кандидат научился писать спеки и готовить пакеты. Прошу перейти к следующему этапу.
Comment 12 Andrey Cherepanov 2020-10-29 11:56:54 MSK
Подтверждаю, что кандидат научился писать спеки и готовить пакеты. Прошу перейти к следующему этапу.
Comment 13 Gleb F-Malinovskiy 2020-11-10 20:57:53 MSK
Пакет alt-gpgkeys обновлён.

T/J/S -> 4.0.
Comment 14 Andrey Cherepanov 2020-11-12 15:09:39 MSK
(Ответ для Gleb F-Malinovskiy на комментарий #13)
> Пакет alt-gpgkeys обновлён.
> 
> T/J/S -> 4.0.

Кандидат показал, что готов собирать пакеты уже в репозиторий. Прошу перейти на следующий этап.
Comment 15 Dmitry V. Levin 2020-11-14 03:53:44 MSK
(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
Зачем это делать, если результат не используется?
Comment 16 zah 2020-11-16 14:30:42 MSK
> 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
> Зачем это делать, если результат не используется?
Убрал
Comment 17 Dmitry V. Levin 2020-11-16 14:48:00 MSK
(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
> > Зачем это делать, если результат не используется?
> Убрал

Спасибо.
Comment 18 Dmitry V. Levin 2020-11-16 14:51:05 MSK
(In reply to Andrey Cherepanov from comment #2)
> Подтверждаю менторство.

Андрей, если ты не возражаешь, я тоже немножко поменторю тут.
Comment 19 Andrey Cherepanov 2020-11-16 17:02:01 MSK
(Ответ для Dmitry V. Levin на комментарий #18)
> (In reply to Andrey Cherepanov from comment #2)
> > Подтверждаю менторство.
> 
> Андрей, если ты не возражаешь, я тоже немножко поменторю тут.

Да, конечно!
Comment 20 zah 2020-11-17 16:50:41 MSK
> На мой взгляд, в 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.
Мне нужно ещё что-то добавить или правильно переменные определить?
Comment 21 Dmitry V. Levin 2020-11-17 18:27:37 MSK
(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.
Comment 22 zah 2020-11-18 14:50:16 MSK
 > На будущее: всегда и везде присылайте патчи только в формате 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>
Comment 23 Dmitry V. Levin 2020-11-19 06:09:09 MSK
(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 - это распространённая ошибка, которую следует исправить.
Comment 24 zah 2020-11-26 15:56:48 MSK
(Ответ для Dmitry V. Levin на комментарий #23) 
> В результате получается, что CFLAGS, неявно определённый в спек-файле в
> результате использования %configure, перекрывает апстримное определение
> CFLAGS.
> Не хотел бы повторяться, но менять CFLAGS в configure.ac/Makefile.in - это
> распространённая ошибка, которую следует исправить.

Исправил CFLAGS и оформил изменения в patch.

p.s. Пока ковырялся в мэйнстриме поправили и закрыли issue на тему лицензии.
Comment 25 Andrey Cherepanov 2020-12-07 08:57:01 MSK
Подтверждаю готовность кандидата к сборке в репозиторий.
Comment 26 Andrey Cherepanov 2021-01-19 17:23:36 MSK
(Ответ для Andrey Cherepanov на комментарий #25)
> Подтверждаю готовность кандидата к сборке в репозиторий.

Повторяю: Подтверждаю готовность кандидата к сборке в репозиторий.

Прошу перейти к следующему этапу.
Comment 27 Dmitry V. Levin 2021-01-19 17:42:51 MSK
(In reply to Andrey Cherepanov from comment #26)
> (Ответ для Andrey Cherepanov на комментарий #25)
> > Подтверждаю готовность кандидата к сборке в репозиторий.
> 
> Повторяю: Подтверждаю готовность кандидата к сборке в репозиторий.
> 
> Прошу перейти к следующему этапу.

С тех пор правила поменялись.
К сожалению, я выпал из контекста того единственного тестового пакета, о котором шла речь.  Возможно, я ещё к нему вернусь, а пока предлагаю дать какое-нибудь ещё тестовое задание.
Comment 28 zah 2022-02-21 22:14:26 MSK
Преветствую всех! Прошу поменять почтовый адрес для пересылке писем на

zakharchenko.sn@gmail.com

Спасибо!
Comment 29 Gleb F-Malinovskiy 2023-11-08 13:19:23 MSK
(In reply to zah from comment #28)
> zakharchenko.sn@gmail.com
Так, это было сделано, больше ничего не помню.

В целом актуально вообще?
Comment 30 zah 2023-11-24 00:08:40 MSK
(In reply to Gleb F-Malinovskiy from comment #29)
> (In reply to zah from comment #28)
> > zakharchenko.sn@gmail.com
> Так, это было сделано, больше ничего не помню.
> 
> В целом актуально вообще?

Актуально
Comment 31 Gleb F-Malinovskiy 2023-12-07 23:19:49 MSK
(In reply to zah from comment #30)
> Актуально
Тогда нам нужно понять, в каком состоянии мы находимся и каковы планы.  Мне кажется, что мы находимся примерно на стадии T/J/S 3.5, если что поправьте.

Андрей?
Comment 32 Gleb F-Malinovskiy 2024-01-23 18:22:38 MSK
ping?
Comment 33 zah 2024-02-21 09:23:18 MSK
(In reply to Gleb F-Malinovskiy from comment #31)
> (In reply to zah from comment #30)
> > Актуально
> Тогда нам нужно понять, в каком состоянии мы находимся и каковы планы.  Мне
> кажется, что мы находимся примерно на стадии T/J/S 3.5, если что поправьте.
> 
> Андрей?

Готов продолжить с любого пункта, с которого посчитаете необходимым.
Comment 34 Grigory Ustinov 2024-03-06 17:55:59 MSK
Могу выступить в роли ментора, если у cas@ нет возможности продолжать джойн.
Comment 35 zah 2024-11-18 14:31:08 MSK
(In reply to Grigory Ustinov from comment #34)
> Могу выступить в роли ментора, если у cas@ нет возможности продолжать джойн.

Григорий, предложение ещё в силе? Я бы хотел пройти джойн с нуля, поскольку давно не практиковал.
Comment 36 Grigory Ustinov 2024-11-18 14:39:36 MSK
Да.
Comment 37 zah 2024-11-18 15:56:33 MSK
(In reply to Grigory Ustinov from comment #36)
> Да.

Где будем общение вести? Если удобно ответь на почту.