Bug 39329

Summary: В python3-base задаются флаги сборки, которые потом переопределяются макросом python3_setup
Product: Sisyphus Reporter: Vitaly Lipatov <lav>
Component: python3-baseAssignee: Grigory Ustinov <grenka>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: bircoph, george, glebfm, grenka, ilyakurdyukov, imz, mike, vitty
Version: unstable   
Hardware: x86_64   
OS: Linux   
Bug Depends on:    
Bug Blocks: 40278    

Description Vitaly Lipatov 2020-11-21 20:27:12 MSK
$ grep O3 /usr/lib64/python3.8/config-3.8-x86_64-linux-gnu/Makefile
OPT=		-DNDEBUG -g -fwrapv -O3 -Wall
CONFIGURE_CFLAGS=	-pipe -frecord-gcc-switches -Wall -g -O3
CONFIG_ARGS=	 '--build=x86_64-alt-linux' '--host=x86_64-alt-linux' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/lib' '--localstatedir=/var/lib' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--disable-dependency-tracking' '--disable-silent-rules' '--without-included-gettext' '--enable-ipv6' '--enable-shared' '--with-computed-gotos=yes' '--with-dbmliborder=gdbm:ndbm:bdb' '--with-system-expat' '--with-system-ffi' '--enable-loadable-sqlite-extensions' '--with-lto' '--with-ssl-default-suites=openssl' '--without-ensurepip' 'build_alias=x86_64-alt-linux' 'host_alias=x86_64-alt-linux' 'CFLAGS=-pipe -frecord-gcc-switches -Wall -g -O3'

$ grep O3 /usr/lib64/python3.8/_sysconfigdata__linux_x86_64-linux-gnu.py
 'CFLAGS': '-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall '
           '-pipe -frecord-gcc-switches -Wall -g -O3',
 'CONFIGURE_CFLAGS': '-pipe -frecord-gcc-switches -Wall -g -O3',
                "-frecord-gcc-switches -Wall -g -O3'",
 'OPT': '-DNDEBUG -g -fwrapv -O3 -Wall',
                             '-fwrapv -O3 -Wall -pipe -frecord-gcc-switches '
                             '-Wall -g -O3 -flto -fuse-linker-plugin '
 'PY_CFLAGS': '-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall '
              '-pipe -frecord-gcc-switches -Wall -g -O3',
 'PY_CORE_CFLAGS': '-Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 '
                   '-Wall -pipe -frecord-gcc-switches -Wall -g -O3 -flto '
                        '-O3 -Wall -pipe -frecord-gcc-switches -Wall -g -O3 '

 $ rpm -qf /usr/lib64/python3.8/_sysconfigdata__linux_x86_64-linux-gnu.py
python3-base-3.8.6-alt1.x86_64
Comment 1 Vitaly Lipatov 2020-11-21 20:28:16 MSK
Также в PY_CORE_CFLAGS задаётся три флага -g и три -O3
Comment 2 Grigory Ustinov 2021-01-19 13:29:17 MSK
(Ответ для Vitaly Lipatov на комментарий #1)
> Также в PY_CORE_CFLAGS задаётся три флага -g и три -O3

четыре -O3
Comment 3 Grigory Ustinov 2021-01-20 19:28:21 MSK
Скажите пожалуйста, какое поведение ожидается?
Comment 4 Grigory Ustinov 2021-02-25 12:18:19 MSK
(Ответ для Grigory Ustinov на комментарий #3)
> Скажите пожалуйста, какое поведение ожидается?

Как надо-то?
Comment 5 Vitaly Lipatov 2021-02-25 14:28:48 MSK
(Ответ для Grigory Ustinov на комментарий #4)
> (Ответ для Grigory Ustinov на комментарий #3)
> > Скажите пожалуйста, какое поведение ожидается?
> 
> Как надо-то?
Я бы видел так, чтобы флаги соответствовали тому, что мы используем в rpm (%optflags): поменял бы -O3 на -O2 (по возможности не повторяя в каждом флаге по несколько раз.
И убрал бы -g (кому нужно, тот добавит)

По идее флаги в обсуждаемые файлы и должны попадать из %optflags при сборке пакета python3, так что не понимаю, откуда там -O3.
Comment 6 Repository Robot 2021-04-05 20:00:43 MSK
python3-3.9.4-alt1 -> sisyphus:

 Mon Apr 05 2021 Grigory Ustinov <grenka@altlinux> 3.9.4-alt1
 - Updated to upstream version 3.9.4.
 - Fix multiple -O3 and -g flags (Closes: #39329).
Comment 7 Michael Shigorin 2021-06-24 11:36:58 MSK
> #see ALT39329
> %remove_optflags -g -O3
Полагаю, следом стоит добавить
%add_optflags %optflags
Comment 8 Michael Shigorin 2021-06-24 11:43:16 MSK
PS: это же касается и

> # remove -g and replace -O3 by -O2 in configure.ac
> # see ALT39329
> Patch1014: python3-fix-optflags.patch

Считаю странным воевать с апстримом на тему флагов оптимизации и _ломать_ их
не на те, которые указаны в %_optlevel и далее в %optflags, а прибив гвоздиком.

Предлагаю откатить эти изменения -- как минимум на %e2k, где по умолчанию у нас выставляется именно -O3, они деструктивны; подозреваю, что и на остальных архитектурах выменивают производительность на эстетику.
Comment 9 ilyakurdyukov 2021-06-27 04:16:28 MSK
Может мне кто-то объяснить значение этой строки?

%remove_optflags -g -O3

То есть из configure убрали -g и -O3, зачем убирать еще и из опций от сборочницы?

А в configure добавили -O2.

-g направленно удалён из %optflags, чтобы не было отладочной информации или какой в этом смысл?

Чем вообще плох -O3, для важного с точки зрения производительности пакета? Вместо -O2 по умолчанию.

Такое ощущение, что правка мало того что неправильно сделана, так еще и логика хромает.
Comment 10 Michael Shigorin 2021-07-29 09:25:32 MSK
PreScriptum: обсуждение по существу пошло в bug 40278;
здесь отвечу, чтобы заданные вопросы не остались подвешенными в воздухе.

(Ответ для ilyakurdyukov на комментарий #9)
> Может мне кто-то объяснить значение этой строки?
> %remove_optflags -g -O3
"Удалить из _макроса_ optflags значения -g и -O3"

> То есть из configure убрали -g и -O3, зачем убирать еще и из опций от
> сборочницы?
Видимо, попытались повыкашивать отовсюду.
_Причина_ этой баги мне пока что всё так же неясна.
И понял ли её Гриша, занявшись багой -- тоже.

> А в configure добавили -O2.
Это вообще чушь несусветная была -- если нет показаний именно к -O2
(или -O3, или -fчего-нибудь -- что обычно лучше знает апстрим),
то добавлять надо -O%_optlevel (соответственно из спека, а не патчем).

> Чем вообще плох -O3, для важного с точки зрения производительности пакета?
> Вместо -O2 по умолчанию.
Тем более что вполне вдумчивый vitty@ сделал -O3 давно и в явном виде.

> Такое ощущение, что правка мало того что неправильно сделана,
> так еще и логика хромает.
Скорее "некогда вникать".  Бывает.