$ 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
Также в PY_CORE_CFLAGS задаётся три флага -g и три -O3
(Ответ для Vitaly Lipatov на комментарий #1) > Также в PY_CORE_CFLAGS задаётся три флага -g и три -O3 четыре -O3
Скажите пожалуйста, какое поведение ожидается?
(Ответ для Grigory Ustinov на комментарий #3) > Скажите пожалуйста, какое поведение ожидается? Как надо-то?
(Ответ для Grigory Ustinov на комментарий #4) > (Ответ для Grigory Ustinov на комментарий #3) > > Скажите пожалуйста, какое поведение ожидается? > > Как надо-то? Я бы видел так, чтобы флаги соответствовали тому, что мы используем в rpm (%optflags): поменял бы -O3 на -O2 (по возможности не повторяя в каждом флаге по несколько раз. И убрал бы -g (кому нужно, тот добавит) По идее флаги в обсуждаемые файлы и должны попадать из %optflags при сборке пакета python3, так что не понимаю, откуда там -O3.
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).
> #see ALT39329 > %remove_optflags -g -O3 Полагаю, следом стоит добавить %add_optflags %optflags
PS: это же касается и > # remove -g and replace -O3 by -O2 in configure.ac > # see ALT39329 > Patch1014: python3-fix-optflags.patch Считаю странным воевать с апстримом на тему флагов оптимизации и _ломать_ их не на те, которые указаны в %_optlevel и далее в %optflags, а прибив гвоздиком. Предлагаю откатить эти изменения -- как минимум на %e2k, где по умолчанию у нас выставляется именно -O3, они деструктивны; подозреваю, что и на остальных архитектурах выменивают производительность на эстетику.
Может мне кто-то объяснить значение этой строки? %remove_optflags -g -O3 То есть из configure убрали -g и -O3, зачем убирать еще и из опций от сборочницы? А в configure добавили -O2. -g направленно удалён из %optflags, чтобы не было отладочной информации или какой в этом смысл? Чем вообще плох -O3, для важного с точки зрения производительности пакета? Вместо -O2 по умолчанию. Такое ощущение, что правка мало того что неправильно сделана, так еще и логика хромает.
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 давно и в явном виде. > Такое ощущение, что правка мало того что неправильно сделана, > так еще и логика хромает. Скорее "некогда вникать". Бывает.