ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] I: LTO in %optflags by default
@ 2021-08-24 18:20 Dmitry V. Levin
  2021-08-24 18:21 ` Dmitry V. Levin
                   ` (8 more replies)
  0 siblings, 9 replies; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-24 18:20 UTC (permalink / raw)
  To: ALT Devel discussion list

Hi,

Пришло время включить в Сизифе LTO (link-time optimization).
К сожалению, ещё не все пакеты собираются с этой оптимизацией,
некоторые предстоит исправить.

* 4 пакета перестанут пересобираться с диагностикой следующего вида:
/usr/bin/strip: Unable to recognise the format of the input file `./usr/libexec/arm-none-eabi/lib/libm.a(lib_a-wrf_lgamma.o)'

Сборку этих пакетов можно исправить, добавив такие библиотеки в %brp_strip_none.

* 382 пакета перестанут пересобираться с диагностикой следующего вида:
process-lto: ERROR: ./usr/lib64/libtcb.a: contains __gnu_lto_slim only.
Perhaps, you need to %define optflags_lto %optflags_lto -ffat-lto-objects

С такими пакетами можно поступить одним из двух способов:
- перестать паковать статические библиотеки;
- добавить %define optflags_lto %optflags_lto -ffat-lto-objects
  в спек-файл.

* Около 158 пакетов перестанут пересобираться с другой диагностикой,
связанной с включением LTO.  С такими пакетами можно поступить одним из
нескольких способов:
- обновить пакеты, весьма вероятно, что они уже исправлены в новых версиях;
- исправить LTO самостоятельно;
- выключить LTO, переопределив макрос optflags_lto.

Благодарность за проделанную работу принимает Виталий. :)


-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-24 18:20 [devel] I: LTO in %optflags by default Dmitry V. Levin
@ 2021-08-24 18:21 ` Dmitry V. Levin
  2021-08-24 18:22 ` Dmitry V. Levin
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-24 18:21 UTC (permalink / raw)
  To: devel

On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
> * 4 пакета перестанут пересобираться с диагностикой следующего вида:
> /usr/bin/strip: Unable to recognise the format of the input file `./usr/libexec/arm-none-eabi/lib/libm.a(lib_a-wrf_lgamma.o)'

Вот список этих пакетов:

arm-none-eabi-gcc	antohami @everybody
arm-none-eabi-newlib	antohami @everybody
avr-libc	week viy
cross-toolchain-aarch64-linux-gnu	asheplyakov @everybody


-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-24 18:20 [devel] I: LTO in %optflags by default Dmitry V. Levin
  2021-08-24 18:21 ` Dmitry V. Levin
@ 2021-08-24 18:22 ` Dmitry V. Levin
  2021-08-25  0:04   ` Dmitry V. Levin
  2021-08-27 19:43   ` [devel] Статические библиотеки и thin LTO (Was: I: LTO in %optflags by default) Alexey Sheplyakov
  2021-08-24 18:23 ` [devel] I: LTO in %optflags by default Dmitry V. Levin
                   ` (6 subsequent siblings)
  8 siblings, 2 replies; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-24 18:22 UTC (permalink / raw)
  To: devel

On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
> * 382 пакета перестанут пересобираться с диагностикой следующего вида:
> process-lto: ERROR: ./usr/lib64/libtcb.a: contains __gnu_lto_slim only.
> Perhaps, you need to %define optflags_lto %optflags_lto -ffat-lto-objects
> 
> С такими пакетами можно поступить одним из двух способов:
> - перестать паковать статические библиотеки;
> - добавить %define optflags_lto %optflags_lto -ffat-lto-objects
>   в спек-файл.

Вот список этих пакетов:

4th	led @everybody
GraphicsMagick	sbolshakov @everybody
I2util	imz @everybody
PDFlib-Lite	mike @qa
SDL	mike @everybody
SDL2_sound	viy @everybody
SDL_net	lvol @everybody
SDL_sound	lvol @everybody
adns	rider @everybody
aeskulap	rider @everybody
alsa-oss	mike shrek @qa
antlr	viy @java @python
apmd	mike viy @qa
attr	@core
audiofile	mike @everybody
avrdude	week sin viy
barcode	rider @everybody
beecrypt	@core
binutils	@core
bison	@core
bitcoin	taf @everybody
boost	iv sem @qa
bs2b	drool @everybody
bzip2	@core
capnproto	vt @everybody
capstone	arei @everybody
catch2	pv @everybody
cfitsio	zerg
cgns-seq	antohami @everybody
check	mike mithraen shrek grenka @qa
chicken	oddity @everybody
clanlib0.8	darktemplar @everybody
clsync	bircoph mike @everybody
coturn	arseny @everybody
courier-authlib	lakostis @everybody
curl	rider ldv glebfm
dante	george @everybody
dap	george @everybody
devil	rider @everybody
df_shm	@nobody
dhcp	sem
dialog	lav @everybody
directfb	mike @everybody
dmraid	aris @everybody
e2fsprogs	@core
ecl	cas @everybody
editorconfig	aris
espeak	vseleznv @everybody
evms	mike @everybody
exiv2	aris
file	@core vt
flex	@core
freehdl	mithraen @everybody
fstrcmp	sbolshakov @everybody
gamin	grenka @everybody
gdb	glebfm ldv sbolshakov
geomview	oddity @qa
glib2	aris
glog	dd @everybody
glpk	@nobody
glpk36	@nobody
gmp	@core
grace	mike evg @qa @everybody
gsoap	sin @everybody
gtk-engines-wonderland	@nobody
gtk2-theme-nimbus	@nobody
hackrf	antohami @everybody
hdf	oddity @everybody
hfsutils	george @everybody
hiredis	darktemplar @everybody
hivex	shaba rider @cpan
hts_engine	msp @everybody
httrack	@nobody
hwinfo	george @qa @everybody
icecream	led @everybody
iksemel	mithraen @everybody
intercal	@core @everybody
ipmiutil	mike @everybody
ipset	rider @everybody
iverilog	egori lineprinter @everybody
jclassinfo	viy
js	@nobody
judy	mike @everybody
kannel	week @qa
kde5-kstars	zerg
kde5-marble	zerg mcpain
klish	manowar @everybody
lam	dans @everybody @qa
ldns	darktemplar @everybody
lesstif	sin snejok @qa @everybody
libXaw3d	slazav @everybody
libaacs	sbolshakov @everybody
libabseil-cpp	lav @everybody
libadplug	ildar @everybody
libaltselinux	@nobody
libaom	darktemplar @everybody
libarpack-ng	cas @everybody
libast	viy @everybody
libatomic_ops	sbolshakov @everybody
libavc1394	lav @qa
libayemu	@nobody
libbenchmark	lav @everybody
libbtree	@nobody
libcap	@core
libcityhash	george @everybody
libclastfm	@nobody
libconfig	mike @everybody
libcoredumper	grenka @everybody
libcryptopp	lav @qa @everybody
libcuefile	@nobody
libdap	viy @everybody
libdb1	@core
libdb4.7	@core
libdb4.8	darktemplar @everybody
libdb5.3	darktemplar @everybody
libdbi	darktemplar @everybody
libdbi-drivers	darktemplar @everybody
libdha	@nobody
libdivecomputer-subsurface	viy @everybody
libdmtx	george @everybody
libdotconf	msp @qa @everybody
libdrmhelper	legion
libdv	@core @everybody
libdvbcsa	taf @everybody
libecap	viy @everybody
libenet	george @qa
libev4	mithraen @everybody
libexempi	aris
libfacet	@nobody
libfcgi	mithraen
libffcall	sbolshakov @everybody
libffi	glebfm at
libflame	@nobody
libflann	viy @everybody
libfltk13	grenka
libfplll	viy @everybody
libftdi1	sin @everybody
libgarmin	week @everybody
libgavl	ruslandh @everybody
libgdsii	george @everybody
libgeotiff2	viy @everybody
libggi	george @everybody
libgii	george @qa @everybody
libgmtk	crux @everybody
libgringotts	grenka @everybody
libguestfs	shaba rider @cpan obirvalger
libhtp	darktemplar @everybody
libiec61850	cas @everybody
libilbc	mithraen
libinklevel	oddity @everybody
libjpeg-turbo	sbolshakov ldv
liblbxutil	george @everybody
liblcms	@nobody
liblog4cpp	taf @everybody
libmaa	cheusov @everybody
libmcrypt	lav @qa @everybody
libmesode	george @everybody
libmhash	@nobody
libmilter-workers	viy @everybody
libmimalloc	george @everybody
libmm	mike @qa
libmpsse	slazav @everybody
libmrss	evg @everybody
libmtquery	@nobody
libmtsupport	@nobody
libncursesxx	mithraen @everybody
libnftnl	taf @everybody
libnghttp2	crux @everybody
libomniORB	pv @everybody
libopenaptx	aris
libopencv	darktemplar @everybody
libopenh264	aris lav
liboping	mike @qa @everybody
libparsifal	@nobody
libpki	cow @everybody
libpopt	@core rider
libproj	slazav @everybody
librarian	lav @gnome @qa @everybody
libraw	aris
librubberband	@nobody
librx	@nobody
libscalapack	darktemplar @everybody
libsdp	darktemplar @everybody
libselinux	rider nbr darktemplar
libsemanage	rider sem darktemplar
libsepol	rider sem darktemplar
libsidplayfp	drool @everybody
libsieve	enp @qa
libsilk	rider @everybody
libsixel	mithraen @everybody
libsodium	vt mithraen @everybody
libspf2	darktemplar @everybody
libsrs_alt	sbolshakov @everybody
libstrophe	george @everybody
libsz2	@nobody
libt1ha	at @everybody
libtomcrypt	george @everybody
libtommath	george @everybody
libtool_2.4	@core
libtpcmisc	viy @everybody
libudfread	rider @everybody
liburing	mike @everybody
libusb	shrek shaba mike
libutempter	ldv @norebuild
libvsqlite++	viy @everybody
libxprintutil	george @qa
libxsettings-client0	viy @everybody
libxview	viy @everybody
libyajl1	shaba @everybody
link-grammar	aris
linuxcnc	antohami @everybody
liri-eglfs	sbolshakov @everybody
litecoin	drool @everybody
littlewizard	george @qa
live555	sbolshakov @everybody
lizardfs	andy @everybody
lldpd	ender @everybody
llvm11.0	shrek arseny
llvm12.0	arseny @everybody
lm_sensors3	ender rider @everybody
log4c	grenka @everybody
ltxml	grenka @everybody
lua5.1	vseleznv viy @qa
lua5.3	vseleznv viy
lvm2	shaba vitty rider
lxde-lxappearance-obconf	@lxde @qa
lzlib	mike @everybody
lzo	@core
mailutils	asy @python @everybody
manatee-open	kirill @everybody
mariadb	shaba @everybody
mate-notification-daemon	shrek
mbelib	antohami @everybody
mcpp	sin @qa @everybody
mct	grenka @everybody
menu-cache	@lxde gns antohami @qa
minidjvu	vkni @everybody
miredo	naf @qa
mjpegtools	rider @everybody
mnogosearch	naf @qa
modsecurity	naf @qa
mono	darktemplar @everybody
mpeg2dec	@nobody
mrprojext	pv @qa
mstflint	shaba @everybody
mswatch	darktemplar @everybody
mt-daapd	@nobody
munt	ildar @everybody
musitorius	msp @everybody
mxml	dshein @everybody
nDPI	taf @everybody
nas	grenka @everybody
ncurses	george ldv
net-snmp35	shaba @everybody
netxms	enp @everybody
newt52	@python @qa
nftables	taf @everybody
nilfs-utils	led mike @qa
nspr	legion
nvidia-settings	zerg
ocaml-camlbz2	rider @everybody
ocaml-curl	rider @everybody
ocaml-curses	snejok @everybody
ocaml-lablgl	rider @everybody
ocaml-labltk	rider @everybody
ocaml-libvirt	snejok @everybody
ocaml-mysql	shaba @everybody
ocaml-zarith	rider @everybody
ocfs2-tools	rider @everybody
ocrad	oddity @everybody
openblas	slazav @everybody
opendpi	@nobody
openssl1.1	glebfm
opie	boresexpress gns @everybody
orc	aris manowar @everybody
otf	grenka @everybody
owncloud-client	zerg
pam_userpass	ldv @norebuild
parted	shrek @everybody
pcc	oddity @qa @everybody
pcre	@core at
pcre2	aris
pinball	viy @everybody
ploop	andy shaba @everybody
pnetcdf	darktemplar @everybody
poke	naf @everybody
polyml	zerg @everybody
postgresql10	taf @pgsql @cpan @everybody
postgresql11	taf @pgsql @cpan
postgresql12	taf @pgsql @cpan @everybody
postgresql12-1C	taf @pgsql @everybody
postgresql13	taf @pgsql @everybody
postgresql9.6	taf @pgsql @cpan @everybody
ppl	viy @everybody
progsreiserfs	mike @qa @everybody
python	vseleznv imz george cow glebfm
python-module-numpy	@python lav @qa
python3-module-numpy	darktemplar @everybody
python3-module-pythonmagick	@python @everybody
qgis3	cas @everybody
qt3	rom_as @everybody
qt5-declarative	zerg
qt5-tools	zerg
qtbrowserplugin	cas @everybody
quesoglc	rider
qxmledit	led @everybody
random	@nobody
readline	@core
readline5	glebfm ldv @qa
reiser4progs	darktemplar @everybody
rhash	sin @everybody
rocksdb	shaba @everybody
rss_glx	mike boyarsh @qa @everybody
ruby	@ruby @everybody
sablotron	lav @everybody
scorep	darktemplar @everybody
sexpr	@nobody
sibcoin	drool @everybody
sispmctl	mike @qa
slang2	asy @everybody
smpeg	darktemplar @everybody
sowing	grenka
sox	mithraen @everybody
spai	grenka @everybody
speech-dispatcher	msp manowar @everybody
speex	mithraen viy rider
sphinx	rider @everybody
sphinxbase	mithraen @everybody
sprng	underwit @everybody
ssdeep	george @everybody
stk	@nobody
supertuxkart	oddity @everybody
surgescript	arbars @everybody
sylpheed	oddity @everybody
sysfsutils	shaba @everybody
syslog-ng	asy @everybody
sysprof	aris
systemd	shaba
tcb	ldv @norebuild
tcc	george @everybody
tcl	vseleznv
tcl-img	vseleznv
tcl-memchan	vseleznv @everybody
tcl-tdom	vseleznv
tcl-trf	vseleznv
tcl-xml	vseleznv @everybody
tcl-zlib	vseleznv @everybody
tidyp	crux @everybody
tk	vseleznv
tokyocabinet	crux @everybody
tokyodystopia	@nobody
tokyotyrant	@nobody
torsocks	cow @everybody
toxcore	mithraen @everybody
trousers	sbolshakov @everybody
uchardet	drool @everybody
udis86	@nobody
unadf	george @qa @everybody
unit	vt andy @everybody
usbip	pv led @everybody
ustr	@nobody
uw-imap	mithraen rider
vkd3d	lakostis @everybody
vlc	rider darktemplar
vmfs-tools	@nobody
vo-aacenc	@nobody
voiceman	msp @everybody
vulkan	lakostis
wmhdplop	mike @qa @everybody
wvstreams	cas @everybody
wxsvg	rider @everybody
xblas	lav @everybody
xdrfile	@nobody
xinetd	@core
xosd	evg @everybody
xpa	egori @everybody
xz	@core vseleznv vt
yajl	shaba @everybody
yasm	sbolshakov @everybody
zbar	rider @everybody
zlib	@core
zlib-ng	nenderus @everybody


-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-24 18:20 [devel] I: LTO in %optflags by default Dmitry V. Levin
  2021-08-24 18:21 ` Dmitry V. Levin
  2021-08-24 18:22 ` Dmitry V. Levin
@ 2021-08-24 18:23 ` Dmitry V. Levin
  2021-08-24 19:19 ` Dmitry V. Levin
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-24 18:23 UTC (permalink / raw)
  To: devel

On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
> * Около 158 пакетов перестанут пересобираться с другой диагностикой,
> связанной с включением LTO.  С такими пакетами можно поступить одним из
> нескольких способов:
> - обновить пакеты, весьма вероятно, что они уже исправлены в новых версиях;
> - исправить LTO самостоятельно;
> - выключить LTO, переопределив макрос optflags_lto.

Вот список этих пакетов:

BlocksRuntime	darktemplar @everybody
ElectricFence	lav @qa
NetworkManager	sem
TiMidity++	mike stanv @qa @everybody
aircrack-ng	darktemplar @everybody
arm-none-eabi-gcc	antohami @everybody
arm-none-eabi-newlib	antohami @everybody
assaultcube	darktemplar @everybody
avr-libc	week viy
bcc	vt @everybody
bear	mattaku arseny cow @everybody
blogc	glebfm @qa
canorus	majioa @everybody
ceph	shaba @qa
cmocka	shaba @everybody
collectd	rider mike asy @cpan shaba @qa
cross-toolchain-aarch64-linux-gnu	asheplyakov @everybody
crtools	vseleznv @everybody
crtools-ovz	andy @everybody
cups-backend-bjnp	mcpain @everybody
deepin-music	lvol @everybody
deepin-terminal	lvol @everybody
dhcdrop	@nobody
dosemu	@nobody
dotnet-corefx-2.1	lav @everybody
dotnet-corefx-3.1	lav @everybody
dovecot	george glebfm @everybody
dpdk	snejok @everybody
dragonfly-reverb	iv @everybody
elfutils	ldv vt @norebuild
elinks	george glebfm at
farstream0.2	aris @everybody
ffmpeg	rider darktemplar
firebird	darktemplar @everybody
fprintd	rider @everybody
freeswitch	rider @cpan
fscrypt	bircoph @everybody
gcc10	glebfm ldv
gcc4.3	glebfm @everybody
gcc4.4	glebfm @everybody
gcc4.5	sbolshakov glebfm @everybody
gcc4.6	sbolshakov glebfm @everybody
gcc4.7	sbolshakov glebfm @everybody
gcc4.8	glebfm @everybody
gcc4.9	glebfm
gcc5	glebfm
gcc6	glebfm
gcc7	glebfm
gcc8	glebfm ldv
gcc9	glebfm ldv
ghc8.6.4	sin @everybody
glibc	@core
gnome-builder	aris
gnome-control-center	aris
gnustep-objc2	cas @everybody
gpm	@core
gprolog	ldv @everybody
grub	rider @norebuild nickel
guitarix	antohami @everybody
gzdoom	arbars @everybody
handbrake	drool @everybody
hyperscan	lav @everybody
igt-gpu-tools	george @everybody
indilib	zerg
java-1.8.0-openjdk	cas viy @everybody
java-10-openjdk	viy @jvm @everybody
java-11-openjdk	viy @jvm @everybody
jikes	@nobody
keepassxc	zorg paulelms @everybody
ladspa_sdk	aris @qa
libalsa	mike shrek @qa
libbpf	vt shaba @everybody
libbsd	lav @everybody
libcdaudio	@nobody
libcerf	viy @everybody
libcomedi	lav rom_as pv @qa
libcxxtools	sbolshakov @everybody
libgdchart	grenka @everybody
libglade	@nobody
libgtksourceview4	aris
libmodelfile	viy @everybody
libmozjs78	aris
libmtxclient	manowar @everybody
liboil	@core aris @qa
libomp	viy @qa
libpsl-native	lav @everybody
libsigsegv	@core
libtorrent	darktemplar @everybody
libvidcap	viy @everybody
libwacom	aris
libwebkitgtk4	aris
libx264	sbolshakov @everybody
libxmp	drool @everybody
linphone	taf @everybody
lksctp-tools	mithraen @everybody
ltp	vt @everybody
ltrace	grenka
lzdoom	arbars @everybody
mdadm	shaba vitty @everybody
mpir	antohami @everybody
mplayer	vseleznv led ender rider
newsboat	vseleznv @everybody
openmodelica	cas @everybody
papi	lav @everybody
php7	rider
php7-imap	rider @everybody
php8.0	rider @everybody
php8.0-imap	rider @everybody
php8.0-opcache	rider @everybody
pmplib	@nobody
printer-driver-ptouch	mcpain @everybody
python-module-pyorbit	lav @python @gnome
python3-module-PySide2	cas @everybody
python3-module-cpopen	@python @everybody
python3-module-faketime	@python @everybody
qboot	shaba @everybody
qcad	cas @everybody
qt4	zerg
qt5-base	zerg
qt5-script	zerg
qt5-webkit	zerg
quota	@core
ricochet	lav @everybody
root6	arei @everybody
rootsh	naf
rpcs3	nenderus @everybody
rpm-build-vm	vt @everybody
sandbox	arei @everybody
scim-anthy	oddity @everybody
scim-hangul	oddity @everybody
scim-m17n	oddity @everybody
sdcc	darktemplar @everybody
seahorse	aris
squid	glebfm shaba
sssd	sin shaba asheplyakov slev iv
syslinux	zerg mike ptrnine
tcptrace	@nobody
tdlib	lav @everybody
texlive	viy @everybody
thunderbird	cas legion
totem	aris
trace-cmd	vt @everybody
ucblogo	george @everybody
uftrace	lav @everybody
valgrind	@core vsu
vidix	@nobody
vifm	sin @everybody
virtualbox	sin nbr greh
vogl	bip @everybody
weston	aris legion
wine	lav @qa
wine-vanilla	lav @qa
wsjtx	antohami @everybody
wxGTK	mike @everybody
x264	rider ender @everybody
xen	shadrinov @everybody
xorg-drv-intel	shrek
xorg-server	shrek
ytalk	rider @everybody


-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-24 18:20 [devel] I: LTO in %optflags by default Dmitry V. Levin
                   ` (2 preceding siblings ...)
  2021-08-24 18:23 ` [devel] I: LTO in %optflags by default Dmitry V. Levin
@ 2021-08-24 19:19 ` Dmitry V. Levin
  2021-08-25  0:33   ` Dmitry V. Levin
  2021-08-25  5:27 ` [devel] I: LTO in %optflags by default Ivan A. Melnikov
                   ` (4 subsequent siblings)
  8 siblings, 1 reply; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-24 19:19 UTC (permalink / raw)
  To: devel

On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
[...]
> * 382 пакета перестанут пересобираться с диагностикой следующего вида:
> process-lto: ERROR: ./usr/lib64/libtcb.a: contains __gnu_lto_slim only.
> Perhaps, you need to %define optflags_lto %optflags_lto -ffat-lto-objects
> 
> С такими пакетами можно поступить одним из двух способов:
> - перестать паковать статические библиотеки;
> - добавить %define optflags_lto %optflags_lto -ffat-lto-objects
>   в спек-файл.

Пожалуй, лучше будет %global optflags_lto %optflags_lto -ffat-lto-objects


-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-24 18:22 ` Dmitry V. Levin
@ 2021-08-25  0:04   ` Dmitry V. Levin
  2021-08-25  8:18     ` Vitaly Lipatov
  2021-08-27 19:43   ` [devel] Статические библиотеки и thin LTO (Was: I: LTO in %optflags by default) Alexey Sheplyakov
  1 sibling, 1 reply; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-25  0:04 UTC (permalink / raw)
  To: devel

On Tue, Aug 24, 2021 at 09:22:16PM +0300, Dmitry V. Levin wrote:
> On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
> > * 382 пакета перестанут пересобираться с диагностикой следующего вида:
> > process-lto: ERROR: ./usr/lib64/libtcb.a: contains __gnu_lto_slim only.
> > Perhaps, you need to %define optflags_lto %optflags_lto -ffat-lto-objects
> > 
> > С такими пакетами можно поступить одним из двух способов:
> > - перестать паковать статические библиотеки;
> > - добавить %define optflags_lto %optflags_lto -ffat-lto-objects
> >   в спек-файл.
> 
> Вот список этих пакетов:

Из них есть 18 исходных пакетов, из которых собираются -devel-static,
присутствующие в сборочной среде других пакетов:

boost	iv sem @qa
glib2	aris
gsoap	sin @everybody
libatomic_ops	sbolshakov @everybody
libffi	glebfm at
libsepol	rider sem darktemplar
llvm12.0	arseny @everybody
lvm2	shaba vitty rider
ncurses	george ldv
newt52	@python @qa
openssl1.1	glebfm
postgresql13	taf @pgsql @everybody
qt5-declarative	zerg
qt5-tools	zerg
rocksdb	shaba @everybody
slang2	asy @everybody
uchardet	drool @everybody
wvstreams	cas @everybody


-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-24 19:19 ` Dmitry V. Levin
@ 2021-08-25  0:33   ` Dmitry V. Levin
  2021-08-26  6:00     ` [devel] I: LTO in %optflags by defaulta (top-level asm) Vitaly Chikunov
  0 siblings, 1 reply; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-25  0:33 UTC (permalink / raw)
  To: devel

On Tue, Aug 24, 2021 at 10:19:06PM +0300, Dmitry V. Levin wrote:
> On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
> [...]
> > * 382 пакета перестанут пересобираться с диагностикой следующего вида:
> > process-lto: ERROR: ./usr/lib64/libtcb.a: contains __gnu_lto_slim only.
> > Perhaps, you need to %define optflags_lto %optflags_lto -ffat-lto-objects
> > 
> > С такими пакетами можно поступить одним из двух способов:
> > - перестать паковать статические библиотеки;
> > - добавить %define optflags_lto %optflags_lto -ffat-lto-objects
> >   в спек-файл.
> 
> Пожалуй, лучше будет %global optflags_lto %optflags_lto -ffat-lto-objects

Вероятно, более переносимой будет следующая конструкция:

%{?optflags_lto:%global optflags_lto %optflags_lto -ffat-lto-objects}


-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-24 18:20 [devel] I: LTO in %optflags by default Dmitry V. Levin
                   ` (3 preceding siblings ...)
  2021-08-24 19:19 ` Dmitry V. Levin
@ 2021-08-25  5:27 ` Ivan A. Melnikov
  2021-08-25  5:46   ` Denis Medvedev
  2021-08-25 17:48   ` Dmitry V. Levin
  2021-08-25  7:37 ` Alexey Sheplyakov
                   ` (3 subsequent siblings)
  8 siblings, 2 replies; 75+ messages in thread
From: Ivan A. Melnikov @ 2021-08-25  5:27 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
> Hi,
> 
> Пришло время включить в Сизифе LTO (link-time optimization).
> К сожалению, ещё не все пакеты собираются с этой оптимизацией,
> некоторые предстоит исправить.

Скажите, а как это влияет на время сборки пакетов?

Это тестировалось только на основных архитектурах? На всех?

-- 
  wbr,
    iv m.


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25  5:27 ` [devel] I: LTO in %optflags by default Ivan A. Melnikov
@ 2021-08-25  5:46   ` Denis Medvedev
  2021-08-25  5:50     ` Denis Medvedev
                       ` (3 more replies)
  2021-08-25 17:48   ` Dmitry V. Levin
  1 sibling, 4 replies; 75+ messages in thread
From: Denis Medvedev @ 2021-08-25  5:46 UTC (permalink / raw)
  To: devel

В Wed, 25 Aug 2021 09:27:50 +0400
"Ivan A. Melnikov" <iv@altlinux.org> пишет:

> On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
> > Hi,
> > 
> > Пришло время включить в Сизифе LTO (link-time optimization).
> > К сожалению, ещё не все пакеты собираются с этой оптимизацией,
> > некоторые предстоит исправить.  
> 
> Скажите, а как это влияет на время сборки пакетов?
> 
> Это тестировалось только на основных архитектурах? На всех?
> 

Я, конечно, понимаю, что запоздал с этим,
но можно ли включить
по умолчаниию заодно вот это:


-mmitigate-rop
Attempt to compile code without unintended return addresses, making ROP just a little harder.

-mindirect-branch=thunk -mfunction-return=thunk
Enables retpoline (return trampolines) to mitigate some variants of Spectre V2. The second flag is necessary on Skylake+ due to the fact that the branch target buffer is vulnerable.

-fstack-protector-all -Wstack-protector --param ssp-buffer-size=4
choice of "-fstack-protector" does not protect all functions . You need -fstack-protector-all to guarantee guards are applied to all functions, although this will likely incur a performance penalty. Consider -fstack-protector-strong as a middle ground.
The -Wstack-protector flag here gives warnings for any functions that aren't going to get protected.

-fstack-clash-protection
Defeats a class of attacks called stack clashing.

-pie -fPIE
Required to obtain the full security benefits of ASLR.

-ftrapv
Generates traps for signed overflow (currently bugged in gcc, and may interfere with UBSAN).

-­D_FORTIFY_SOURCE=2
Buffer overflow checks. See also difference between =2 and =1.

­-Wl,-z,relro,-z,now
RELRO (read-only relocation). The options relro & now specified
together are known as "Full RELRO". You can specify "Partial RELRO" by
omitting the now flag. RELRO marks various ELF memory sections
read­only (E.g. the GOT).


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25  5:46   ` Denis Medvedev
@ 2021-08-25  5:50     ` Denis Medvedev
  2021-08-25  6:53     ` Andrey Savchenko
                       ` (2 subsequent siblings)
  3 siblings, 0 replies; 75+ messages in thread
From: Denis Medvedev @ 2021-08-25  5:50 UTC (permalink / raw)
  To: devel

В Wed, 25 Aug 2021 08:46:40 +0300
Denis Medvedev <nbr@altlinux.org> пишет:

> В Wed, 25 Aug 2021 09:27:50 +0400
> "Ivan A. Melnikov" <iv@altlinux.org> пишет:
> 
> > On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
> > > Hi,
> > > 
> > > Пришло время включить в Сизифе LTO (link-time optimization).
> > > К сожалению, ещё не все пакеты собираются с этой оптимизацией,
> > > некоторые предстоит исправить.  
> > 
> > Скажите, а как это влияет на время сборки пакетов?
> > 
> > Это тестировалось только на основных архитектурах? На всех?
> > 
> 
> Я, конечно, понимаю, что запоздал с этим,
> но можно ли включить
> по умолчаниию заодно вот это:
> 
> 
> -mmitigate-rop
> Attempt to compile code without unintended return addresses, making
> ROP just a little harder.
> 
> -mindirect-branch=thunk -mfunction-return=thunk
> Enables retpoline (return trampolines) to mitigate some variants of
> Spectre V2. The second flag is necessary on Skylake+ due to the fact
> that the branch target buffer is vulnerable.
> 
> -fstack-protector-all -Wstack-protector --param ssp-buffer-size=4
> choice of "-fstack-protector" does not protect all functions . You
> need -fstack-protector-all to guarantee guards are applied to all
> functions, although this will likely incur a performance penalty.
> Consider -fstack-protector-strong as a middle ground. The
> -Wstack-protector flag here gives warnings for any functions that
> aren't going to get protected.
> 
> -fstack-clash-protection
> Defeats a class of attacks called stack clashing.
> 
> -pie -fPIE
> Required to obtain the full security benefits of ASLR.
> 
> -ftrapv
> Generates traps for signed overflow (currently bugged in gcc, and may
> interfere with UBSAN).
Интересно, оно до сих пор bugged?
> 
> -­D_FORTIFY_SOURCE=2
> Buffer overflow checks. See also difference between =2 and =1.
> 
> ­-Wl,-z,relro,-z,now
> RELRO (read-only relocation). The options relro & now specified
> together are known as "Full RELRO". You can specify "Partial RELRO" by
> omitting the now flag. RELRO marks various ELF memory sections
> read­only (E.g. the GOT).
> _______________________________________________
> Devel mailing list
> Devel@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25  5:46   ` Denis Medvedev
  2021-08-25  5:50     ` Denis Medvedev
@ 2021-08-25  6:53     ` Andrey Savchenko
  2021-08-25  7:03       ` Denis Medvedev
                         ` (2 more replies)
  2021-08-25  7:12     ` Alexey Sheplyakov
  2021-08-25 16:28     ` Dmitry V. Levin
  3 siblings, 3 replies; 75+ messages in thread
From: Andrey Savchenko @ 2021-08-25  6:53 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 2890 bytes --]

On Wed, 25 Aug 2021 08:46:40 +0300 Denis Medvedev wrote:
> В Wed, 25 Aug 2021 09:27:50 +0400
> "Ivan A. Melnikov" <iv@altlinux.org> пишет:
> 
> > On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
> > > Hi,
> > > 
> > > Пришло время включить в Сизифе LTO (link-time optimization).
> > > К сожалению, ещё не все пакеты собираются с этой оптимизацией,
> > > некоторые предстоит исправить.  
> > 
> > Скажите, а как это влияет на время сборки пакетов?
> > 
> > Это тестировалось только на основных архитектурах? На всех?
> > 
> 
> Я, конечно, понимаю, что запоздал с этим,
> но можно ли включить
> по умолчаниию заодно вот это:
> 
> 
> -mmitigate-rop
> Attempt to compile code without unintended return addresses, making ROP just a little harder.
> 
> -mindirect-branch=thunk -mfunction-return=thunk
> Enables retpoline (return trampolines) to mitigate some variants of Spectre V2. The second flag is necessary on Skylake+ due to the fact that the branch target buffer is vulnerable.

Но эти опции, ведь, не на всех архитектурах нужны, даже в основной
сборочнице. Поэтому если и включать, то выборочно в зависимости от
архитектуры.
 
> -fstack-protector-all -Wstack-protector --param ssp-buffer-size=4
> choice of "-fstack-protector" does not protect all functions . You need -fstack-protector-all to guarantee guards are applied to all functions, although this will likely incur a performance penalty. Consider -fstack-protector-strong as a middle ground.
> The -Wstack-protector flag here gives warnings for any functions that aren't going to get protected.
> 
> -fstack-clash-protection
> Defeats a class of attacks called stack clashing.

Эта может поломать много приложений и может быть значимый удар по
производительности.
 
> ­-Wl,-z,relro,-z,now
> RELRO (read-only relocation). The options relro & now specified
> together are known as "Full RELRO". You can specify "Partial RELRO" by
> omitting the now flag. RELRO marks various ELF memory sections
> read­only (E.g. the GOT).

С точки зрения безопасности это хорошо, а вот тормоза даёт дикие,
особенно на тяжёлых приложениях типа LO. Возможно, в этом есть смысл
в специальных ветках, но в Сизиф такое не нужно тянуть.

Best regards,
Andrew Savchenko

[-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25  6:53     ` Andrey Savchenko
@ 2021-08-25  7:03       ` Denis Medvedev
  2021-08-25  7:32         ` Andrey Savchenko
  2021-08-26 18:43         ` Michael Shigorin
  2021-08-25  7:12       ` Ivan A. Melnikov
  2021-08-25  8:14       ` Alexey Tourbin
  2 siblings, 2 replies; 75+ messages in thread
From: Denis Medvedev @ 2021-08-25  7:03 UTC (permalink / raw)
  To: devel

В Wed, 25 Aug 2021 09:53:29 +0300
Andrey Savchenko <bircoph@altlinux.org> пишет:

> On Wed, 25 Aug 2021 08:46:40 +0300 Denis Medvedev wrote:
> > В Wed, 25 Aug 2021 09:27:50 +0400
> > "Ivan A. Melnikov" <iv@altlinux.org> пишет:
> >   
> > > On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:  
> > > > Hi,
> > > > 
> > > > Пришло время включить в Сизифе LTO (link-time optimization).
> > > > К сожалению, ещё не все пакеты собираются с этой оптимизацией,
> > > > некоторые предстоит исправить.    
> > > 
> > > Скажите, а как это влияет на время сборки пакетов?
> > > 
> > > Это тестировалось только на основных архитектурах? На всех?
> > >   
> > 
> > Я, конечно, понимаю, что запоздал с этим,
> > но можно ли включить
> > по умолчаниию заодно вот это:
> > 
> > 
> > -mmitigate-rop
> > Attempt to compile code without unintended return addresses, making
> > ROP just a little harder.
> > 
> > -mindirect-branch=thunk -mfunction-return=thunk
> > Enables retpoline (return trampolines) to mitigate some variants of
> > Spectre V2. The second flag is necessary on Skylake+ due to the
> > fact that the branch target buffer is vulnerable.  
> 
> Но эти опции, ведь, не на всех архитектурах нужны, даже в основной
> сборочнице. Поэтому если и включать, то выборочно в зависимости от
> архитектуры.
>  
> > -fstack-protector-all -Wstack-protector --param ssp-buffer-size=4
> > choice of "-fstack-protector" does not protect all functions . You
> > need -fstack-protector-all to guarantee guards are applied to all
> > functions, although this will likely incur a performance penalty.
> > Consider -fstack-protector-strong as a middle ground. The
> > -Wstack-protector flag here gives warnings for any functions that
> > aren't going to get protected.
> > 
> > -fstack-clash-protection
> > Defeats a class of attacks called stack clashing.  
> 
> Эта может поломать много приложений и может быть значимый удар по
> производительности.
>  
> > ­-Wl,-z,relro,-z,now
> > RELRO (read-only relocation). The options relro & now specified
> > together are known as "Full RELRO". You can specify "Partial RELRO"
> > by omitting the now flag. RELRO marks various ELF memory sections
> > read­only (E.g. the GOT).  
> 
> С точки зрения безопасности это хорошо, а вот тормоза даёт дикие,
> особенно на тяжёлых приложениях типа LO. Возможно, в этом есть смысл
> в специальных ветках, но в Сизиф такое не нужно тянуть.
В таком случае как мне правильно сделать дефолты для особых веток?
Сделать свою версию какого пакета?
> 
> Best regards,
> Andrew Savchenko



^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25  6:53     ` Andrey Savchenko
  2021-08-25  7:03       ` Denis Medvedev
@ 2021-08-25  7:12       ` Ivan A. Melnikov
  2021-08-25  8:14       ` Alexey Tourbin
  2 siblings, 0 replies; 75+ messages in thread
From: Ivan A. Melnikov @ 2021-08-25  7:12 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Wed, Aug 25, 2021 at 09:53:29AM +0300, Andrey Savchenko wrote:
> On Wed, 25 Aug 2021 08:46:40 +0300 Denis Medvedev wrote:
>  
> > -fstack-protector-all -Wstack-protector --param ssp-buffer-size=4
> > choice of "-fstack-protector" does not protect all functions . You need -fstack-protector-all to guarantee guards are applied to all functions, although this will likely incur a performance penalty. Consider -fstack-protector-strong as a middle ground.
> > The -Wstack-protector flag here gives warnings for any functions that aren't going to get protected.
> > 
> > -fstack-clash-protection
> > Defeats a class of attacks called stack clashing.
> 
> Эта может поломать много приложений и может быть значимый удар по
> производительности.

А разве -fstack-clash-protection уже не включен в нашем gcc10
по умолчанию?

-- 
  wbr,
    iv m.


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25  5:46   ` Denis Medvedev
  2021-08-25  5:50     ` Denis Medvedev
  2021-08-25  6:53     ` Andrey Savchenko
@ 2021-08-25  7:12     ` Alexey Sheplyakov
  2021-08-25 16:28     ` Dmitry V. Levin
  3 siblings, 0 replies; 75+ messages in thread
From: Alexey Sheplyakov @ 2021-08-25  7:12 UTC (permalink / raw)
  To: devel

Добрый день!

On 25.08.2021 09:46, Denis Medvedev wrote:

> -mmitigate-rop
> Attempt to compile code without unintended return addresses, making ROP just a little harder.
> 
> -mindirect-branch=thunk -mfunction-return=thunk
> Enables retpoline (return trampolines) to mitigate some variants of Spectre V2. The second flag is necessary on Skylake+ due to the fact that the branch target buffer is vulnerable.

Для некоторых архитектур, для отдельных приложений (ssh, gpg), возможно, и имеет смысл.
А "счастья всем, даром, и пусть никто не уйдёт обиженным" - спасибо, не надо.

> -pie -fPIE
> Required to obtain the full security benefits of ASLR.

Уже включили. Его бы **отключить**. Особенно на 32-битных архитектурах.

> -ftrapv
> Generates traps for signed overflow (currently bugged in gcc, and may interfere with UBSAN). 

На ровном месте урезать возможности оптимизации? Нет, спасибо.
Вы ещё предложите с -O0 собирать.
Самое главное - это не сделает код с UB более безопасным.




^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25  7:03       ` Denis Medvedev
@ 2021-08-25  7:32         ` Andrey Savchenko
  2021-08-26 18:43         ` Michael Shigorin
  1 sibling, 0 replies; 75+ messages in thread
From: Andrey Savchenko @ 2021-08-25  7:32 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 3644 bytes --]

On Wed, 25 Aug 2021 10:03:39 +0300 Denis Medvedev wrote:
> В Wed, 25 Aug 2021 09:53:29 +0300
> Andrey Savchenko <bircoph@altlinux.org> пишет:
> 
> > On Wed, 25 Aug 2021 08:46:40 +0300 Denis Medvedev wrote:
> > > В Wed, 25 Aug 2021 09:27:50 +0400
> > > "Ivan A. Melnikov" <iv@altlinux.org> пишет:
> > >   
> > > > On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:  
> > > > > Hi,
> > > > > 
> > > > > Пришло время включить в Сизифе LTO (link-time optimization).
> > > > > К сожалению, ещё не все пакеты собираются с этой оптимизацией,
> > > > > некоторые предстоит исправить.    
> > > > 
> > > > Скажите, а как это влияет на время сборки пакетов?
> > > > 
> > > > Это тестировалось только на основных архитектурах? На всех?
> > > >   
> > > 
> > > Я, конечно, понимаю, что запоздал с этим,
> > > но можно ли включить
> > > по умолчаниию заодно вот это:
> > > 
> > > 
> > > -mmitigate-rop
> > > Attempt to compile code without unintended return addresses, making
> > > ROP just a little harder.
> > > 
> > > -mindirect-branch=thunk -mfunction-return=thunk
> > > Enables retpoline (return trampolines) to mitigate some variants of
> > > Spectre V2. The second flag is necessary on Skylake+ due to the
> > > fact that the branch target buffer is vulnerable.  
> > 
> > Но эти опции, ведь, не на всех архитектурах нужны, даже в основной
> > сборочнице. Поэтому если и включать, то выборочно в зависимости от
> > архитектуры.
> >  
> > > -fstack-protector-all -Wstack-protector --param ssp-buffer-size=4
> > > choice of "-fstack-protector" does not protect all functions . You
> > > need -fstack-protector-all to guarantee guards are applied to all
> > > functions, although this will likely incur a performance penalty.
> > > Consider -fstack-protector-strong as a middle ground. The
> > > -Wstack-protector flag here gives warnings for any functions that
> > > aren't going to get protected.
> > > 
> > > -fstack-clash-protection
> > > Defeats a class of attacks called stack clashing.  
> > 
> > Эта может поломать много приложений и может быть значимый удар по
> > производительности.
> >  
> > > ­-Wl,-z,relro,-z,now
> > > RELRO (read-only relocation). The options relro & now specified
> > > together are known as "Full RELRO". You can specify "Partial RELRO"
> > > by omitting the now flag. RELRO marks various ELF memory sections
> > > read­only (E.g. the GOT).  
> > 
> > С точки зрения безопасности это хорошо, а вот тормоза даёт дикие,
> > особенно на тяжёлых приложениях типа LO. Возможно, в этом есть смысл
> > в специальных ветках, но в Сизиф такое не нужно тянуть.
> В таком случае как мне правильно сделать дефолты для особых веток?
> Сделать свою версию какого пакета?

rpmbuild, нужно править макрос(ы) %optflags_* в platform.in; думаю,
%optflags_default должно хватить.

Best regards,
Andrew Savchenko

[-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-24 18:20 [devel] I: LTO in %optflags by default Dmitry V. Levin
                   ` (4 preceding siblings ...)
  2021-08-25  5:27 ` [devel] I: LTO in %optflags by default Ivan A. Melnikov
@ 2021-08-25  7:37 ` Alexey Sheplyakov
  2021-08-25 18:07   ` [devel] Administrivia Dmitry V. Levin
  2021-08-25 19:27   ` [devel] I: LTO in %optflags by default Andrey Savchenko
  2021-08-25 10:45 ` Vitaly Lipatov
                   ` (2 subsequent siblings)
  8 siblings, 2 replies; 75+ messages in thread
From: Alexey Sheplyakov @ 2021-08-25  7:37 UTC (permalink / raw)
  To: devel

Здравствуйте!

On 24.08.2021 22:20, Dmitry V. Levin wrote:

> Пришло время включить в Сизифе LTO (link-time optimization).

Поскольку LTO ломает сборку сотен пакетов, причем не каких попало,
а gcc, glibc, и т.п. - то время включать LTO как раз таки НЕ пришло.

А если кому-то всё равно очень хочется - надо сначала доработать пакеты
(на которые повлияет LTO), а потом уж включать. И нет, это не сопровождающие
пакетов должны заниматься этой глупостью, а именно этот "кто-то", кому
понадобилась LTO (или ещё какая модная фенечка).

А "я тут всё сломал, а вы теперь - чините" - это прямое вредительство.

> * 382 пакета перестанут пересобираться с диагностикой следующего вида:

> * Около 158 пакетов перестанут пересобираться с другой диагностикой,


gcc10	glebfm ldv
gcc4.3	glebfm @everybody
gcc4.4	glebfm @everybody
gcc4.5	sbolshakov glebfm @everybody
gcc4.6	sbolshakov glebfm @everybody
gcc4.7	sbolshakov glebfm @everybody
gcc4.8	glebfm @everybody
gcc4.9	glebfm
gcc5	glebfm
gcc6	glebfm
gcc7	glebfm
gcc8	glebfm ldv
gcc9	glebfm ldv
ghc8.6.4	sin @everybody
glibc	@core

Ничего так списочек, внушает.


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25  6:53     ` Andrey Savchenko
  2021-08-25  7:03       ` Denis Medvedev
  2021-08-25  7:12       ` Ivan A. Melnikov
@ 2021-08-25  8:14       ` Alexey Tourbin
  2021-08-25  8:39         ` Andrey Savchenko
  2 siblings, 1 reply; 75+ messages in thread
From: Alexey Tourbin @ 2021-08-25  8:14 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Wed, Aug 25, 2021 at 9:54 AM Andrey Savchenko <bircoph@altlinux.org> wrote:
> > ­-Wl,-z,relro,-z,now
> > RELRO (read-only relocation). The options relro & now specified
> > together are known as "Full RELRO". You can specify "Partial RELRO" by
> > omitting the now flag. RELRO marks various ELF memory sections
> > read­only (E.g. the GOT).
>
> С точки зрения безопасности это хорошо, а вот тормоза даёт дикие,
> особенно на тяжёлых приложениях типа LO. Возможно, в этом есть смысл
> в специальных ветках, но в Сизиф такое не нужно тянуть.

Насколько дикие тормоза примерно?
По-моему оно включено давно.

$ cat hello.c
#include <stdio.h>
int main(){printf("divanus expertus vulgaris\n");}
$ gcc -O2 hello.c && md5sum a.out
ba46117902b0a993a384d3702247e81a  a.out
$ gcc -O2 hello.c -Wl,-z,relro,-z,now && md5sum a.out
ba46117902b0a993a384d3702247e81a  a.out

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25  0:04   ` Dmitry V. Levin
@ 2021-08-25  8:18     ` Vitaly Lipatov
  2021-08-25  8:28       ` Ivan A. Melnikov
  0 siblings, 1 reply; 75+ messages in thread
From: Vitaly Lipatov @ 2021-08-25  8:18 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Dmitry V. Levin писал 25.8.21 3:04:
> On Tue, Aug 24, 2021 at 09:22:16PM +0300, Dmitry V. Levin wrote:
>> On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
>> > * 382 пакета перестанут пересобираться с диагностикой следующего вида:
>> > process-lto: ERROR: ./usr/lib64/libtcb.a: contains __gnu_lto_slim only.
>> > Perhaps, you need to %define optflags_lto %optflags_lto -ffat-lto-objects
>> >
>> > С такими пакетами можно поступить одним из двух способов:
>> > - перестать паковать статические библиотеки;
>> > - добавить %define optflags_lto %optflags_lto -ffat-lto-objects
>> >   в спек-файл.
>> 
>> Вот список этих пакетов:
> 
> Из них есть 18 исходных пакетов, из которых собираются -devel-static,
> присутствующие в сборочной среде других пакетов:
> 
> boost	iv sem @qa
> glib2	aris
> gsoap	sin @everybody
> libatomic_ops	sbolshakov @everybody
> libffi	glebfm at
> libsepol	rider sem darktemplar
> llvm12.0	arseny @everybody
> lvm2	shaba vitty rider
> ncurses	george ldv
> newt52	@python @qa
> openssl1.1	glebfm
> postgresql13	taf @pgsql @everybody
> qt5-declarative	zerg
> qt5-tools	zerg
> rocksdb	shaba @everybody
> slang2	asy @everybody
> uchardet	drool @everybody
> wvstreams	cas @everybody

У меня есть впечатление, что не всем этим другим пакетам прям необходимы 
-devel-static.
По крайней мере в одном своём пакете я обнаружил прошло шутку от 
buildreq, притягивающую лишний devel-static.

Вот небольшой обзор использующих -devel-static, порождённые из пакетов 
по списку выше:
(единственное, я не смог найти следов static в пакете lvm2)


boost    iv sem @qa
     boost-devel-static - Boost libraries
           karbowanecwallet 	drool @everybody
           sibcoin 	drool @everybody
           taler 	drool @everybody

glib2    aris
     glib2-devel-static - Static version of GLib libraries
           qemu 	shaba glebfm

gsoap    sin @everybody
     libgsoap-devel-static - Static devel libraries and headers for 
linking with gSOAP generated stubs
           v4l2onvif 	sbolshakov @everybody
           virtualbox 	sin nbr greh

libatomic_ops    sbolshakov @everybody
     libatomic_ops-devel-static - A library for accessing hardware 
provided atomic memory operations
           ggaoed 	sbolshakov @everybody
           libgc 	lav @qa @everybody
           rakudo 	crux @everybody

libffi    glebfm at
     libffi-devel-static - Static library for Foreign Function Interface 
development
           libmozjs78 	aris

libsepol    rider sem darktemplar
     libsepol-devel-static - Static development files for libsepol
           checkpolicy 	rider sem darktemplar
           libselinux 	rider nbr darktemplar
           policycoreutils 	rider zerg darktemplar
           setools 	darktemplar sem led rider @qa

llvm12.0    arseny @everybody
     llvm12.0-devel-static - Static libraries for LLVM
           bcc 	vt @everybody
           bpftrace 	vt @everybody
           castxml 	darktemplar @everybody
           cvise 	lav @everybody
           dolphin-emu 	nenderus @everybody
           ispc 	vt @everybody
           libcxx 	lav @everybody
           libcxxabi 	lav @everybody
           qt-creator 	cas @everybody
           rust 	legion crux @everybody

Can't find for lvm2

ncurses    george ldv
     libncursesxx-devel-static - Static libraries for libncursesxx
ncurses    george ldv
     libncurses++-devel-static - Development static libncurses++ library
ncurses    george ldv
     libncurses-devel-static - Development static ncurses libraries
ncurses    george ldv
     libtinfo-devel-static - A low-level terminfo static library
           lvm2 	shaba vitty rider
           sash 	@core


newt52    @python @qa
     libnewt-devel-static - Newt windowing toolkit development files.
           propagator 	rider boyarsh mike sem

openssl1.1    glebfm
     libssl-devel-static - OpenSSL static libraries
           libwebsockets 	lav @everybody
           xmr-stak 	drool @everybody
           xmrig 	drool @everybody

postgresql13    taf @pgsql @everybody
     postgresql-devel-static - Development static library for 
postgresql-devel
           pg_catcheck 	kondratyuk @everybody
           pg_rman 	darktemplar @everybody
           qt4 	zerg
           qt5-base 	zerg
           repmgr 	shaba @everybody

qt5-declarative    zerg
     qt5-declarative-devel-static - Development files for qt5-declarative
           pythonqt 	darktemplar @everybody
           qt5-tools 	zerg
           qt5-virtualkeyboard 	zerg

qt5-tools    zerg
     qt5-tools-devel-static - Development files for qt5-tools
           CTK 	darktemplar @everybody
           OpenBoard 	antohami @everybody
           freecad 	cas @everybody
           kde5-calendarsupport 	zerg
           kde5-eventviews 	zerg
           kde5-kmail-account-wizard 	zerg
           kde5-korganizer 	zerg
           kde5-libkdepim 	zerg
           kde5-libksieve 	zerg
           kde5-mailcommon 	zerg
           kde5-mailimporter 	zerg
           kde5-messagelib 	zerg
           kde5-pim-apps-libs 	zerg
           kde5-pimcommon 	zerg
           kexi 	zerg
           kf5-kjsembed 	zerg
           kf5-kross 	zerg
           kf5-kwidgetsaddons 	zerg
           klatexformula 	george @everybody
           lightdm-kde-greeter 	darktemplar @everybody
           lmms 	antohami @everybody
           musescore 	lav @qa @everybody
           plasma5-kwin 	zerg
           plasma5-nm 	zerg @everybody
           python3-module-PySide2 	cas @everybody
           pythonqt 	darktemplar @everybody
           qcad 	cas @everybody
           qgis3 	cas @everybody
           qmapshack 	glebfm @qa
           slicer 	darktemplar @everybody
           texstudio 	oddity @everybody
           texworks 	grenka
           trojita 	grenka @everybody
           zint 	underwit @everybody

rocksdb    shaba @everybody
     librocksdb-devel-static - Static library for rocksdb
           clickhouse 	rider darktemplar

slang2    asy @everybody
     libslang2-devel-static - The static library for development using 
S-Lang
           propagator 	rider boyarsh mike sem

uchardet    drool @everybody
     libuchardet-devel-static - Static library for uchardet
           deepin-editor 	lvol @everybody

wvstreams    cas @everybody
     libwvstreams-devel-static - C++ libraries for rapid application 
development
           wvdial 	cas @everybody



-- 
С уважением,
Виталий Липатов,
ALT Linux Team


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25  8:18     ` Vitaly Lipatov
@ 2021-08-25  8:28       ` Ivan A. Melnikov
  2021-08-25  8:38         ` Vitaly Lipatov
  0 siblings, 1 reply; 75+ messages in thread
From: Ivan A. Melnikov @ 2021-08-25  8:28 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Wed, Aug 25, 2021 at 11:18:16AM +0300, Vitaly Lipatov wrote:
> Dmitry V. Levin писал 25.8.21 3:04:
> > On Tue, Aug 24, 2021 at 09:22:16PM +0300, Dmitry V. Levin wrote:
> > > On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
> > > > * 382 пакета перестанут пересобираться с диагностикой следующего вида:
> > > > process-lto: ERROR: ./usr/lib64/libtcb.a: contains __gnu_lto_slim only.
> > > > Perhaps, you need to %define optflags_lto %optflags_lto -ffat-lto-objects
> > > >
> > > > С такими пакетами можно поступить одним из двух способов:
> > > > - перестать паковать статические библиотеки;
> > > > - добавить %define optflags_lto %optflags_lto -ffat-lto-objects
> > > >   в спек-файл.
> > > 
> > > Вот список этих пакетов:
> > 
> > Из них есть 18 исходных пакетов, из которых собираются -devel-static,
> > присутствующие в сборочной среде других пакетов:
> > 
> > boost	iv sem @qa
> > glib2	aris
> > gsoap	sin @everybody
> > libatomic_ops	sbolshakov @everybody
> > libffi	glebfm at
> > libsepol	rider sem darktemplar
> > llvm12.0	arseny @everybody
> > lvm2	shaba vitty rider
> > ncurses	george ldv
> > newt52	@python @qa
> > openssl1.1	glebfm
> > postgresql13	taf @pgsql @everybody
> > qt5-declarative	zerg
> > qt5-tools	zerg
> > rocksdb	shaba @everybody
> > slang2	asy @everybody
> > uchardet	drool @everybody
> > wvstreams	cas @everybody
> 
> У меня есть впечатление, что не всем этим другим пакетам прям необходимы
> -devel-static.
> По крайней мере в одном своём пакете я обнаружил прошло шутку от buildreq,
> притягивающую лишний devel-static.
> 
> Вот небольшой обзор использующих -devel-static, порождённые из пакетов по
> списку выше:
> (единственное, я не смог найти следов static в пакете lvm2)
> 
> 
> boost    iv sem @qa
>     boost-devel-static - Boost libraries
>           karbowanecwallet 	drool @everybody
>           sibcoin 	drool @everybody
>           taler 	drool @everybody

Я помню просьбы людей, использовавших boost из репозитория в своих
проектах, оставить devel-static. Было это правда давно: одним из
этих людей был real@. Но всё равно, думаю тут лучше починить.

Насколько boost-devel-static нужен именно при сборке пакетов в Сизиф
-- это другой вопрос. Я думаю, что скорее не нужен.

-- 
  wbr,
    iv m.


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25  8:28       ` Ivan A. Melnikov
@ 2021-08-25  8:38         ` Vitaly Lipatov
  2021-08-25  9:18           ` Andrey Savchenko
  0 siblings, 1 reply; 75+ messages in thread
From: Vitaly Lipatov @ 2021-08-25  8:38 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Ivan A. Melnikov писал 25.8.21 11:28:
> On Wed, Aug 25, 2021 at 11:18:16AM +0300, Vitaly Lipatov wrote:
...
>> boost    iv sem @qa
>>     boost-devel-static - Boost libraries
>>           karbowanecwallet 	drool @everybody
>>           sibcoin 	drool @everybody
>>           taler 	drool @everybody
> 
> Я помню просьбы людей, использовавших boost из репозитория в своих
> проектах, оставить devel-static. Было это правда давно: одним из
> этих людей был real@. Но всё равно, думаю тут лучше починить.
Да, это может быть кому-то полезно для сборки каких-то standalone, 
недистрибутивных решений.

> Насколько boost-devel-static нужен именно при сборке пакетов в Сизиф
> -- это другой вопрос. Я думаю, что скорее не нужен.
Да. Я просто воспользовался случаем обратить внимание, что по 
возможности надо бы избавиться от статической линковки.

-- 
С уважением,
Виталий Липатов,
ALT Linux Team


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25  8:14       ` Alexey Tourbin
@ 2021-08-25  8:39         ` Andrey Savchenko
  0 siblings, 0 replies; 75+ messages in thread
From: Andrey Savchenko @ 2021-08-25  8:39 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 1501 bytes --]

On Wed, 25 Aug 2021 11:14:31 +0300 Alexey Tourbin wrote:
> On Wed, Aug 25, 2021 at 9:54 AM Andrey Savchenko <bircoph@altlinux.org> wrote:
> > > ­-Wl,-z,relro,-z,now
> > > RELRO (read-only relocation). The options relro & now specified
> > > together are known as "Full RELRO". You can specify "Partial RELRO" by
> > > omitting the now flag. RELRO marks various ELF memory sections
> > > read­only (E.g. the GOT).
> >
> > С точки зрения безопасности это хорошо, а вот тормоза даёт дикие,
> > особенно на тяжёлых приложениях типа LO. Возможно, в этом есть смысл
> > в специальных ветках, но в Сизиф такое не нужно тянуть.
> 
> Насколько дикие тормоза примерно?

Разница во времени запуска LO между ~120 и ~40 секундами на старом
атоме, где сравнивлась система, собранная целиком с relro, now
и без.

> По-моему оно включено давно.
> 
> $ cat hello.c
> #include <stdio.h>
> int main(){printf("divanus expertus vulgaris\n");}
> $ gcc -O2 hello.c && md5sum a.out
> ba46117902b0a993a384d3702247e81a  a.out
> $ gcc -O2 hello.c -Wl,-z,relro,-z,now && md5sum a.out
> ba46117902b0a993a384d3702247e81a  a.out

Очень плохо, если так.

Best regards,
Andrew Savchenko

[-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25  8:38         ` Vitaly Lipatov
@ 2021-08-25  9:18           ` Andrey Savchenko
  2021-08-25 17:14             ` [devel] devel-static Dmitry V. Levin
  0 siblings, 1 reply; 75+ messages in thread
From: Andrey Savchenko @ 2021-08-25  9:18 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 2025 bytes --]

On Wed, 25 Aug 2021 11:38:58 +0300 Vitaly Lipatov wrote:
> Ivan A. Melnikov писал 25.8.21 11:28:
> > On Wed, Aug 25, 2021 at 11:18:16AM +0300, Vitaly Lipatov wrote:
> ...
> >> boost    iv sem @qa
> >>     boost-devel-static - Boost libraries
> >>           karbowanecwallet 	drool @everybody
> >>           sibcoin 	drool @everybody
> >>           taler 	drool @everybody
> > 
> > Я помню просьбы людей, использовавших boost из репозитория в своих
> > проектах, оставить devel-static. Было это правда давно: одним из
> > этих людей был real@. Но всё равно, думаю тут лучше починить.
> Да, это может быть кому-то полезно для сборки каких-то standalone, 
> недистрибутивных решений.
> 
> > Насколько boost-devel-static нужен именно при сборке пакетов в Сизиф
> > -- это другой вопрос. Я думаю, что скорее не нужен.
> Да. Я просто воспользовался случаем обратить внимание, что по 
> возможности надо бы избавиться от статической линковки.

А почему не наоборот?

Динамическая линковка лишь создаёт иллюзию безопасности за счёт
исправления проблемы в одной библиотеке сразу для всех. Но проблема
может быть в хедерах, а C++ библиотеки всё больше переходят
в хедеры. В итоге может получится, что CVE исправлен, библиотека
обновлена без изменения ABI, а непересобранные приложения всё ещё
уязвимы.

Best regards,
Andrew Savchenko

[-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-24 18:20 [devel] I: LTO in %optflags by default Dmitry V. Levin
                   ` (5 preceding siblings ...)
  2021-08-25  7:37 ` Alexey Sheplyakov
@ 2021-08-25 10:45 ` Vitaly Lipatov
  2021-08-25 16:20   ` Dmitry V. Levin
  2021-08-25 21:24 ` Dmitry V. Levin
  2021-08-26  0:26 ` Dmitry V. Levin
  8 siblings, 1 reply; 75+ messages in thread
From: Vitaly Lipatov @ 2021-08-25 10:45 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Dmitry V. Levin писал 24.8.21 21:20:
> Hi,
> 
> Пришло время включить в Сизифе LTO (link-time optimization).
> К сожалению, ещё не все пакеты собираются с этой оптимизацией,
> некоторые предстоит исправить.
...
> Благодарность за проделанную работу принимает Виталий. :)
Почему-то нет анонса об изменениях в rpm-build. Виталий Чикунов ни разу 
не писал в devel@, как я смог посмотреть, поэтому странно ссылаться на 
него. Ведь мог пострадать и я от неразобравшихся, кто виноват :)

Ну и странно, что изменения Виталия анонсируете вы, а ваше добавление 
--runstatedir не анонсировал Виталий, который отправил пакет в Сизиф.

rpm-build changelog:
* Tue Aug 24 2021 Vitaly Chikunov <vt at altlinux.org> 4.0.4-alt175
- platform.in: Parallelize LTO with -flto=auto.
- process-lto: Fix suggestion text.

* Tue Aug 24 2021 Dmitry V. Levin <ldv at altlinux.org> 4.0.4-alt174
- Added support for --runstatedir configure option.

* Mon Aug 23 2021 Vitaly Chikunov <vt at altlinux.org> 4.0.4-alt173
- platform.in: Enable LTO by default.
- brp: Add brp-strip-lto & process-lto scripts.

-- 
С уважением,
Виталий Липатов,
ALT Linux Team


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25 10:45 ` Vitaly Lipatov
@ 2021-08-25 16:20   ` Dmitry V. Levin
  2021-08-25 20:23     ` Vitaly Lipatov
  0 siblings, 1 reply; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-25 16:20 UTC (permalink / raw)
  To: devel

On Wed, Aug 25, 2021 at 01:45:23PM +0300, Vitaly Lipatov wrote:
> Dmitry V. Levin писал 24.8.21 21:20:
> > Hi,
> > 
> > Пришло время включить в Сизифе LTO (link-time optimization).
> > К сожалению, ещё не все пакеты собираются с этой оптимизацией,
> > некоторые предстоит исправить.
> ...
> > Благодарность за проделанную работу принимает Виталий. :)
> Почему-то нет анонса об изменениях в rpm-build. Виталий Чикунов ни разу 
> не писал в devel@, как я смог посмотреть, поэтому странно ссылаться на 
> него. Ведь мог пострадать и я от неразобравшихся, кто виноват :)

У нас разделение труда: благодарность принимает Виталий, а всё остальное - я.
Не вижу ничего плохого в том, чтобы благодарность приняло более одного
Виталия. :)

> Ну и странно, что изменения Виталия анонсируете вы,

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

> а ваше добавление 
> --runstatedir не анонсировал Виталий, который отправил пакет в Сизиф.

Добавление --runstatedir отправлял в Сизиф я, а не Виталий:
https://lists.altlinux.org/pipermail/sisyphus-incominger/2021-August/630930.html
https://lists.altlinux.org/pipermail/sisyphus-incominger/2021-August/630950.html

Мне почему-то показалось, что оно ничего не сломает, иначе бы я его не
стал отправлять.  Потом я увидел, что это не так, и у --runstatedir нет
никаких шансов в обозримом будущем, поэтому я это изменение откатываю.


-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25  5:46   ` Denis Medvedev
                       ` (2 preceding siblings ...)
  2021-08-25  7:12     ` Alexey Sheplyakov
@ 2021-08-25 16:28     ` Dmitry V. Levin
  3 siblings, 0 replies; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-25 16:28 UTC (permalink / raw)
  To: devel

On Wed, Aug 25, 2021 at 08:46:40AM +0300, Denis Medvedev wrote:
[...]
> Я, конечно, понимаю, что запоздал с этим,
> но можно ли включить
> по умолчаниию заодно вот это:

У меня две просьбы:
1. Не начинать новый тред кнопкой "Ответить".
2. Изучить предметную область перед тем, как задавать вопрос,
хотя бы просто прочитать нашу документацию:

# apt-get install gcc-doc
$ info gcc
поискать там ALT.*gcc
$ rpmquery --changelog gcc10 |less


-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] devel-static
  2021-08-25  9:18           ` Andrey Savchenko
@ 2021-08-25 17:14             ` Dmitry V. Levin
  2021-08-25 17:25               ` Alexey Sheplyakov
  2021-08-25 19:14               ` Andrey Savchenko
  0 siblings, 2 replies; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-25 17:14 UTC (permalink / raw)
  To: devel

On Wed, Aug 25, 2021 at 12:18:40PM +0300, Andrey Savchenko wrote:
> On Wed, 25 Aug 2021 11:38:58 +0300 Vitaly Lipatov wrote:
> > Ivan A. Melnikov писал 25.8.21 11:28:
> > > On Wed, Aug 25, 2021 at 11:18:16AM +0300, Vitaly Lipatov wrote:
> > ...
> > >> boost    iv sem @qa
> > >>     boost-devel-static - Boost libraries
> > >>           karbowanecwallet 	drool @everybody
> > >>           sibcoin 	drool @everybody
> > >>           taler 	drool @everybody
> > > 
> > > Я помню просьбы людей, использовавших boost из репозитория в своих
> > > проектах, оставить devel-static. Было это правда давно: одним из
> > > этих людей был real@. Но всё равно, думаю тут лучше починить.
> > Да, это может быть кому-то полезно для сборки каких-то standalone, 
> > недистрибутивных решений.
> > 
> > > Насколько boost-devel-static нужен именно при сборке пакетов в Сизиф
> > > -- это другой вопрос. Я думаю, что скорее не нужен.
> > Да. Я просто воспользовался случаем обратить внимание, что по 
> > возможности надо бы избавиться от статической линковки.
> 
> А почему не наоборот?
> 
> Динамическая линковка лишь создаёт иллюзию безопасности за счёт
> исправления проблемы в одной библиотеке сразу для всех. Но проблема
> может быть в хедерах, а C++ библиотеки всё больше переходят
> в хедеры. В итоге может получится, что CVE исправлен, библиотека
> обновлена без изменения ABI, а непересобранные приложения всё ещё
> уязвимы.

А безопаснее всего публиковать только исходники, и пусть пользователи
сами пересобирают, как сочтут нужным, правда же?


-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] devel-static
  2021-08-25 17:14             ` [devel] devel-static Dmitry V. Levin
@ 2021-08-25 17:25               ` Alexey Sheplyakov
  2021-08-25 19:19                 ` Andrey Savchenko
  2021-08-25 19:14               ` Andrey Savchenko
  1 sibling, 1 reply; 75+ messages in thread
From: Alexey Sheplyakov @ 2021-08-25 17:25 UTC (permalink / raw)
  To: devel

On 25.08.2021 21:14, Dmitry V. Levin wrote:
>> А почему не наоборот?
>>
>> Динамическая линковка лишь создаёт иллюзию безопасности за счёт
>> исправления проблемы в одной библиотеке сразу для всех. Но проблема
>> может быть в хедерах, а C++ библиотеки всё больше переходят
>> в хедеры. В итоге может получится, что CVE исправлен, библиотека
>> обновлена без изменения ABI, а непересобранные приложения всё ещё
>> уязвимы.
> 
> А безопаснее всего публиковать только исходники, и пусть пользователи
> сами пересобирают, как сочтут нужным, правда же?
> 

Вы, Дмитрий, можете сколько угодно оскорблять людей, но C++ шаблоны
всё равно останутся устроены так, как они устроены.


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25  5:27 ` [devel] I: LTO in %optflags by default Ivan A. Melnikov
  2021-08-25  5:46   ` Denis Medvedev
@ 2021-08-25 17:48   ` Dmitry V. Levin
  1 sibling, 0 replies; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-25 17:48 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Wed, Aug 25, 2021 at 09:27:50AM +0400, Ivan A. Melnikov wrote:
> On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
> > Hi,
> > 
> > Пришло время включить в Сизифе LTO (link-time optimization).
> > К сожалению, ещё не все пакеты собираются с этой оптимизацией,
> > некоторые предстоит исправить.
> 
> Скажите, а как это влияет на время сборки пакетов?

По идее, всякая новая оптимизация занимает какое-то время, и LTO точно не
исключение, линковка должна происходить дольше.  С численной оценкой не
всё просто.  Тестовая пересборка всего репозитория до включения LTO и
после включения (без других изменений, в т.ч. без изменений про
--runstatedir) суммарно заняла одинаковое время, возможно, за счёт того,
что какие-то пакеты не собрались.  При этом одни пакеты из тех, что
собрались, сделали это быстрее, а другие - медленнее.  Можно посмотреть,
сколько занимала тестовая пересборка тех или иных пакетов, например, так:

$ join -t$'\t' /beehive/logs/Sisyphus/x86_64/{previous,latest}/time.list \
| sed -E 's/-[^-[:space:]]+-[^-[:space:]]+([[:space:]])/\1/' \
| sort \
| join -t$'\t' -v1 - /beehive/stats/Sisyphus-x86_64/ftbfs-since \
| sort -n -k2


-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] Administrivia
  2021-08-25  7:37 ` Alexey Sheplyakov
@ 2021-08-25 18:07   ` Dmitry V. Levin
  2021-08-25 19:25     ` Alexey Sheplyakov
  2021-08-25 19:27   ` [devel] I: LTO in %optflags by default Andrey Savchenko
  1 sibling, 1 reply; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-25 18:07 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 1242 bytes --]

Здравствуйте,

On Wed, Aug 25, 2021 at 11:37:46AM +0400, Alexey Sheplyakov wrote:
> Здравствуйте!
> 
> On 24.08.2021 22:20, Dmitry V. Levin wrote:
> 
> > Пришло время включить в Сизифе LTO (link-time optimization).
> 
> Поскольку LTO ломает сборку сотен пакетов, причем не каких попало,
> а gcc, glibc, и т.п. - то время включать LTO как раз таки НЕ пришло.
> 
> А если кому-то всё равно очень хочется - надо сначала доработать пакеты
> (на которые повлияет LTO), а потом уж включать. И нет, это не сопровождающие
> пакетов должны заниматься этой глупостью, а именно этот "кто-то", кому
> понадобилась LTO (или ещё какая модная фенечка).

Эту тему можно было бы обсудить по-существу, если бы вы не написали то,
что вы написали дальше.

> А "я тут всё сломал, а вы теперь - чините" - это прямое вредительство.

А дальше вы написали то, что квалифицируется как распространение заведомо
ложных сведений, порочащих честь и достоинство другого лица или
подрывающих его репутацию, а это уже УК РФ Статья 128.1. Клевета.

Клевета у нас запрещена, поэтому вам больше не разрешается писать сюда
писем до тех пор, пока вы так же публично не принесёте извинений,
которые будут приняты тем, кого вы оклеветали.


-- 
ldv

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] devel-static
  2021-08-25 17:14             ` [devel] devel-static Dmitry V. Levin
  2021-08-25 17:25               ` Alexey Sheplyakov
@ 2021-08-25 19:14               ` Andrey Savchenko
  2021-08-25 19:58                 ` Vitaly Lipatov
  1 sibling, 1 reply; 75+ messages in thread
From: Andrey Savchenko @ 2021-08-25 19:14 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 7832 bytes --]

On Wed, 25 Aug 2021 20:14:41 +0300 Dmitry V. Levin wrote:
> On Wed, Aug 25, 2021 at 12:18:40PM +0300, Andrey Savchenko wrote:
> > On Wed, 25 Aug 2021 11:38:58 +0300 Vitaly Lipatov wrote:
> > > Ivan A. Melnikov писал 25.8.21 11:28:
[...]
> > > > Насколько boost-devel-static нужен именно при сборке пакетов в Сизиф
> > > > -- это другой вопрос. Я думаю, что скорее не нужен.
> > > Да. Я просто воспользовался случаем обратить внимание, что по 
> > > возможности надо бы избавиться от статической линковки.
> > 
> > А почему не наоборот?
> > 
> > Динамическая линковка лишь создаёт иллюзию безопасности за счёт
> > исправления проблемы в одной библиотеке сразу для всех. Но проблема
> > может быть в хедерах, а C++ библиотеки всё больше переходят
> > в хедеры. В итоге может получится, что CVE исправлен, библиотека
> > обновлена без изменения ABI, а непересобранные приложения всё ещё
> > уязвимы.
> 
> А безопаснее всего публиковать только исходники, и пусть пользователи
> сами пересобирают, как сочтут нужным, правда же?

На этот вопрос нельзя однозначно ответить, поскольку в таком
случае задача обеспечения безопасности во многом перекладывается на
пользователей и ответ зависит от их квалификации. Так вернёмся к
обсуждению DSO vs static в бинарном дистрибутиве общего назначения.

1) Безопасность.

Выше я привёл пример, когда DSO лишь маскирует проблему
безопасности, но не решает её. В случае со static очевидно, что
пересобирать нужно всех потребителей (при необходимости рекурсивно).
Так что относительно просто реализовать механизм контроля
гарантированного исправления ошибок и уязвимостей среди
прямых и косвенных пользователей библиотеки.

В случае с DSO может возникнуть крайне опасная ситуация скрытого
наличия уязвимости, когда CVE в библиотеке исправлен, по
setversions с клиентами всё хорошо, мы успешно заявили об
исправлении данной CVE в дистрибутиве, а в реальности уязвимость
кое-где осталась.

Самым простым решением данной проблемы будет безусловная пересборка
всех зависимостей, так же, как и со static — но в таком случае
никаких преимуществ у DSO не остаётся.

Можно попробовать отслеживать, были ли изменения хедеров
и пересобирать безусловно только в таком случае — но это более
сложный и в то же время всё ещё грубый путь решения задачи, т.к. не
всякое изменение в хедере ведёт к изменению бинарного кода
в клиенте.

Самым «изящным» решением будет аналог setversions для хедеров —
чтоб пересобирать только те зависимости, на которые влияют
выполненные изменения хедеров. Однако, мне такая задача
представляется не решаемой на практике без полной препроцессорной
обработки всех зависимостей, что по трудоёмкости сопоставимо с их
пересборкой.

2) Экономия памяти или места на диске.

Безусловно, для повсеместно используемых библиотек эффект будет
значимым — ну та же glibc. Однако, есть очень много библиотек для
одного-двух клиент и здесь выигрыша уже нет, а может быть
и проигрыш, т.к. DSO в общем случае приводит к менее эффективному
и более раздутому коду.

Это не только моё мнение, вот что пишет по этому поводу Линус
Торвальдс:
https://lore.kernel.org/lkml/CAHk-=whs8QZf3YnifdLv57+FhBi5_WeNTG1B-suOES=RcUSmQg@mail.gmail.com/

3) Производительность.

DSO в целом всегда хуже static. Иногда эта разница пренебрежима, во
многом это зависит от архитектуры (например, i686 здесь много хуже
amd64).

В любом случае, для более-менее хорошей производительности DSO
нужно сильно переписывать код по сравнению со static версией.
Совершенно невероятное по своей сложности руководство от Ульриха
Дреппера это подтверждает:
https://akkadia.org/drepper/dsohowto.pdf

Т.е. DSO можно сделать эффективной, но это неимоверное количество
работы, которую _обычно_ апстримы не делают в полной мере, или не
делают вовсе.

4) Технические сложности.

DSO характерны вечные проблемы версионирования, безопасности (relro
и now затем ведь делаются, м?), конфликтов по soname, технических
проблем (привер -fcommon) и т.п.. У static большинства этого нет.

Самое интересное, что даже Ульрих Дреппер призывает пореже
создавать DSO (и использовать PIE):
https://udrepper.livejournal.com/8790.html

В общем, тренд во многих дистрибутивах к выбросу static везде, где
только можно, мне представляется ошибочным. Разумеется, DSO тоже
нужны: как для широко используемых библиотек, так и для плагинов
и редких случаев, где без DSO работать не будет.

Так что я рекомендовал бы отказаться от подхода «а давайте выкинем
ещё и этот devel-static» и постепенно переходить к использованию
именно static версий в тех многих случаях, где они оправданы.

Best regards,
Andrew Savchenko

[-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] devel-static
  2021-08-25 17:25               ` Alexey Sheplyakov
@ 2021-08-25 19:19                 ` Andrey Savchenko
  0 siblings, 0 replies; 75+ messages in thread
From: Andrey Savchenko @ 2021-08-25 19:19 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 1531 bytes --]

On Wed, 25 Aug 2021 21:25:40 +0400 Alexey Sheplyakov wrote:
> On 25.08.2021 21:14, Dmitry V. Levin wrote:
> >> А почему не наоборот?
> >>
> >> Динамическая линковка лишь создаёт иллюзию безопасности за счёт
> >> исправления проблемы в одной библиотеке сразу для всех. Но проблема
> >> может быть в хедерах, а C++ библиотеки всё больше переходят
> >> в хедеры. В итоге может получится, что CVE исправлен, библиотека
> >> обновлена без изменения ABI, а непересобранные приложения всё ещё
> >> уязвимы.
> > 
> > А безопаснее всего публиковать только исходники, и пусть пользователи
> > сами пересобирают, как сочтут нужным, правда же?
> > 
> 
> Вы, Дмитрий, можете сколько угодно оскорблять людей, но C++ шаблоны
> всё равно останутся устроены так, как они устроены.

Шаблоны C++ — это, конечно, основной источник проблемы, но не
единственный. То же самое может быть и в обычных макросах, даже
на C.

Best regards,
Andrew Savchenko

[-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] Administrivia
  2021-08-25 18:07   ` [devel] Administrivia Dmitry V. Levin
@ 2021-08-25 19:25     ` Alexey Sheplyakov
  2021-08-25 20:03       ` Alexey V. Vissarionov
  0 siblings, 1 reply; 75+ messages in thread
From: Alexey Sheplyakov @ 2021-08-25 19:25 UTC (permalink / raw)
  To: devel

On 25.08.2021 22:07, Dmitry V. Levin wrote:

> Эту тему можно было бы обсудить по-существу, если бы вы не написали то,
> что вы написали дальше.
> 
>> А "я тут всё сломал, а вы теперь - чините" - это прямое вредительство.

Простите, погорячился. Это я зря. Постараюсь в дальнейшем аккуратнее подбирать формулировки.


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25  7:37 ` Alexey Sheplyakov
  2021-08-25 18:07   ` [devel] Administrivia Dmitry V. Levin
@ 2021-08-25 19:27   ` Andrey Savchenko
  2021-08-25 23:54     ` Dmitry V. Levin
  1 sibling, 1 reply; 75+ messages in thread
From: Andrey Savchenko @ 2021-08-25 19:27 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 2639 bytes --]

On Wed, 25 Aug 2021 11:37:46 +0400 Alexey Sheplyakov wrote:
> Здравствуйте!
> 
> On 24.08.2021 22:20, Dmitry V. Levin wrote:
> 
> > Пришло время включить в Сизифе LTO (link-time optimization).
> 
> Поскольку LTO ломает сборку сотен пакетов, причем не каких попало,
> а gcc, glibc, и т.п. - то время включать LTO как раз таки НЕ пришло.
> 
> А если кому-то всё равно очень хочется - надо сначала доработать пакеты
> (на которые повлияет LTO), а потом уж включать. И нет, это не сопровождающие
> пакетов должны заниматься этой глупостью, а именно этот "кто-то", кому
> понадобилась LTO (или ещё какая модная фенечка).

Это давняя проблема. У нас есть правило: «кто сломал, тот
и чинит» (я не нашёл такую политику, возможно, это джентельменское
соглашение). Однако, на практике оно работает лишь для простых
смертных, а с ключевыми компонентами системы — тем же тулчейном —
всё наоборот: чинят мейнтенеры пакетов, которых обычно никто не
справшивает и просто ставят перед фактом.

С одной стороны, такой подход можно понять, т.к. когда сломанных
пакетов слишком много, авторы изменений просто физически не могут
без помощи остальных всё исправить. С другой стороны он
несправедлив по отношению к мейнтенерам других сложных подсистем
(питон, джава, telive, cmake).

Давайте искать в этом вопросе золотую середину, чтоб всё было по
справедливости. Возможно, следует сделать лимит на количество
затронутых пакетов, после которого следует подключать сообщество
к исправлению проблем. Другие предложения приветствуются.

Best regards,
Andrew Savchenko

[-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] devel-static
  2021-08-25 19:14               ` Andrey Savchenko
@ 2021-08-25 19:58                 ` Vitaly Lipatov
  2021-08-25 20:52                   ` Andrey Savchenko
  0 siblings, 1 reply; 75+ messages in thread
From: Vitaly Lipatov @ 2021-08-25 19:58 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Andrey Savchenko писал 25.8.21 22:14:
> On Wed, 25 Aug 2021 20:14:41 +0300 Dmitry V. Levin wrote:
>> On Wed, Aug 25, 2021 at 12:18:40PM +0300, Andrey Savchenko wrote:
...
>> > Динамическая линковка лишь создаёт иллюзию безопасности за счёт
>> > исправления проблемы в одной библиотеке сразу для всех. Но проблема
>> > может быть в хедерах, а C++ библиотеки всё больше переходят
>> > в хедеры. В итоге может получится, что CVE исправлен, библиотека
>> > обновлена без изменения ABI, а непересобранные приложения всё ещё
>> > уязвимы.
>> 
>> А безопаснее всего публиковать только исходники, и пусть пользователи
>> сами пересобирают, как сочтут нужным, правда же?
> 
> На этот вопрос нельзя однозначно ответить, поскольку в таком
> случае задача обеспечения безопасности во многом перекладывается на
> пользователей и ответ зависит от их квалификации. Так вернёмся к
> обсуждению DSO vs static в бинарном дистрибутиве общего назначения.
> 
> 1) Безопасность.
> 
> Выше я привёл пример, когда DSO лишь маскирует проблему
> безопасности, но не решает её. В случае со static очевидно, что
> пересобирать нужно всех потребителей (при необходимости рекурсивно).
> Так что относительно просто реализовать механизм контроля
> гарантированного исправления ошибок и уязвимостей среди
> прямых и косвенных пользователей библиотеки.
> 
> В случае с DSO может возникнуть крайне опасная ситуация скрытого
> наличия уязвимости, когда CVE в библиотеке исправлен, по
> setversions с клиентами всё хорошо, мы успешно заявили об
> исправлении данной CVE в дистрибутиве, а в реальности уязвимость
> кое-где осталась.
> 
> Самым простым решением данной проблемы будет безусловная пересборка
> всех зависимостей, так же, как и со static — но в таком случае
> никаких преимуществ у DSO не остаётся.
> 
> Можно попробовать отслеживать, были ли изменения хедеров
> и пересобирать безусловно только в таком случае — но это более
> сложный и в то же время всё ещё грубый путь решения задачи, т.к. не
> всякое изменение в хедере ведёт к изменению бинарного кода
> в клиенте.
Я бы хотел добавить только, что
в реальной жизни эта проблема решается проще — при исправлении CVE 
проект выпускает новую версию библиотеки, и если вдруг уязвимость 
требует пересборки клиентов (из-за её исправления в заголовочных 
файлах), то об этом сообщат пользователям библиотеки (в описании 
релиза).
Также, как я понимаю, достаточно сложно создать уязвимость именно в том 
коде, который генерируется при сборке приложения, а не библиотеки. Разве 
известны такие случаи?

-- 
С уважением,
Виталий Липатов,
ALT Linux Team


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] Administrivia
  2021-08-25 19:25     ` Alexey Sheplyakov
@ 2021-08-25 20:03       ` Alexey V. Vissarionov
  2021-08-26 19:02         ` [devel] Administrivii Michael Shigorin
  0 siblings, 1 reply; 75+ messages in thread
From: Alexey V. Vissarionov @ 2021-08-25 20:03 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On 2021-08-25 23:25:54 +0400, Alexey Sheplyakov wrote:

 >> Эту тему можно было бы обсудить по-существу, если бы вы не
 >> написали то, что вы написали дальше.
 >>> А "я тут всё сломал, а вы теперь - чините" - это прямое
 >>> вредительство.
 > Простите, погорячился. Это я зря. Постараюсь в дальнейшем
 > аккуратнее подбирать формулировки.

Вот тут квантором \forall размахивать уж точно не следовало,
да и умысла что-либо ломать у ldv заведомо не было.


-- 
Alexey V. Vissarionov
gremlin ПРИ altlinux ТЧК org; +vii-cmiii-ccxxix-lxxix-xlii
GPG: 0D92F19E1C0DC36E27F61A29CD17E2B43D879005 @ hkp://keys.gnupg.net


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25 16:20   ` Dmitry V. Levin
@ 2021-08-25 20:23     ` Vitaly Lipatov
  2021-08-25 20:30       ` Dmitry V. Levin
  0 siblings, 1 reply; 75+ messages in thread
From: Vitaly Lipatov @ 2021-08-25 20:23 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Dmitry V. Levin писал 25.8.21 19:20:
> On Wed, Aug 25, 2021 at 01:45:23PM +0300, Vitaly Lipatov wrote:
>> Dmitry V. Levin писал 24.8.21 21:20:
>> > Hi,
>> >
>> > Пришло время включить в Сизифе LTO (link-time optimization).
>> > К сожалению, ещё не все пакеты собираются с этой оптимизацией,
>> > некоторые предстоит исправить.
>> ...
>> > Благодарность за проделанную работу принимает Виталий. :)
>> Почему-то нет анонса об изменениях в rpm-build. Виталий Чикунов ни 
>> разу
>> не писал в devel@, как я смог посмотреть, поэтому странно ссылаться на
>> него. Ведь мог пострадать и я от неразобравшихся, кто виноват :)
> 
> У нас разделение труда: благодарность принимает Виталий, а всё 
> остальное - я.
> Не вижу ничего плохого в том, чтобы благодарность приняло более одного
> Виталия. :)
:)

>> Ну и странно, что изменения Виталия анонсируете вы,
...
> Добавление --runstatedir отправлял в Сизиф я, а не Виталий:
> https://lists.altlinux.org/pipermail/sisyphus-incominger/2021-August/630930.html
> https://lists.altlinux.org/pipermail/sisyphus-incominger/2021-August/630950.html
Ух ты, извините, это было моё неверное предположение из-за отправки в 
один день.

> Мне почему-то показалось, что оно ничего не сломает, иначе бы я его не
> стал отправлять.  Потом я увидел, что это не так, и у --runstatedir нет
> никаких шансов в обозримом будущем, поэтому я это изменение откатываю.
Я был только же уверен, что оно ничего не сломает, но оказалось, что 
configure делает warning только для неизвестных параметров 
--with-something, а для прочих параметров даёт ошибку.
А я правильно понимаю, что если перегенерировать configure с помощью 
нового autoconf, то поддержка --runstatedir появится?

-- 
С уважением,
Виталий Липатов,
ALT Linux Team


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25 20:23     ` Vitaly Lipatov
@ 2021-08-25 20:30       ` Dmitry V. Levin
  0 siblings, 0 replies; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-25 20:30 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Wed, Aug 25, 2021 at 11:23:38PM +0300, Vitaly Lipatov wrote:
> Dmitry V. Levin писал 25.8.21 19:20:
[...]
> > Мне почему-то показалось, что оно ничего не сломает, иначе бы я его не
> > стал отправлять.  Потом я увидел, что это не так, и у --runstatedir нет
> > никаких шансов в обозримом будущем, поэтому я это изменение откатываю.
> Я был только же уверен, что оно ничего не сломает, но оказалось, что 
> configure делает warning только для неизвестных параметров 
> --with-something, а для прочих параметров даёт ошибку.
> А я правильно понимаю, что если перегенерировать configure с помощью 
> нового autoconf, то поддержка --runstatedir появится?

Нет, потому что я откатил этот бэкпорт:
https://lists.altlinux.org/pipermail/sisyphus-incominger/2021-August/631035.html

Но в новом autoconf 2.7x эта фича есть, так что и у нас появится.


-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] devel-static
  2021-08-25 19:58                 ` Vitaly Lipatov
@ 2021-08-25 20:52                   ` Andrey Savchenko
  2021-08-25 21:06                     ` Vitaly Lipatov
  0 siblings, 1 reply; 75+ messages in thread
From: Andrey Savchenko @ 2021-08-25 20:52 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 4949 bytes --]

On Wed, 25 Aug 2021 22:58:03 +0300 Vitaly Lipatov wrote:
> Andrey Savchenko писал 25.8.21 22:14:
> > On Wed, 25 Aug 2021 20:14:41 +0300 Dmitry V. Levin wrote:
> >> On Wed, Aug 25, 2021 at 12:18:40PM +0300, Andrey Savchenko wrote:
> ...
> >> > Динамическая линковка лишь создаёт иллюзию безопасности за счёт
> >> > исправления проблемы в одной библиотеке сразу для всех. Но проблема
> >> > может быть в хедерах, а C++ библиотеки всё больше переходят
> >> > в хедеры. В итоге может получится, что CVE исправлен, библиотека
> >> > обновлена без изменения ABI, а непересобранные приложения всё ещё
> >> > уязвимы.
> >> 
> >> А безопаснее всего публиковать только исходники, и пусть пользователи
> >> сами пересобирают, как сочтут нужным, правда же?
> > 
> > На этот вопрос нельзя однозначно ответить, поскольку в таком
> > случае задача обеспечения безопасности во многом перекладывается на
> > пользователей и ответ зависит от их квалификации. Так вернёмся к
> > обсуждению DSO vs static в бинарном дистрибутиве общего назначения.
> > 
> > 1) Безопасность.
> > 
> > Выше я привёл пример, когда DSO лишь маскирует проблему
> > безопасности, но не решает её. В случае со static очевидно, что
> > пересобирать нужно всех потребителей (при необходимости рекурсивно).
> > Так что относительно просто реализовать механизм контроля
> > гарантированного исправления ошибок и уязвимостей среди
> > прямых и косвенных пользователей библиотеки.
> > 
> > В случае с DSO может возникнуть крайне опасная ситуация скрытого
> > наличия уязвимости, когда CVE в библиотеке исправлен, по
> > setversions с клиентами всё хорошо, мы успешно заявили об
> > исправлении данной CVE в дистрибутиве, а в реальности уязвимость
> > кое-где осталась.
> > 
> > Самым простым решением данной проблемы будет безусловная пересборка
> > всех зависимостей, так же, как и со static — но в таком случае
> > никаких преимуществ у DSO не остаётся.
> > 
> > Можно попробовать отслеживать, были ли изменения хедеров
> > и пересобирать безусловно только в таком случае — но это более
> > сложный и в то же время всё ещё грубый путь решения задачи, т.к. не
> > всякое изменение в хедере ведёт к изменению бинарного кода
> > в клиенте.
> Я бы хотел добавить только, что
> в реальной жизни эта проблема решается проще — при исправлении CVE 
> проект выпускает новую версию библиотеки, и если вдруг уязвимость 
> требует пересборки клиентов (из-за её исправления в заголовочных 
> файлах), то об этом сообщат пользователям библиотеки (в описании 
> релиза).

Некоторые апстримы ушли по-умолчанию целиком в хедеры и отдельно не
выделяют такие ситуации, например, cgal.

> Также, как я понимаю, достаточно сложно создать уязвимость именно в том 
> коде, который генерируется при сборке приложения, а не библиотеки. Разве 
> известны такие случаи?

Я отдельно не искал. Но почему ошибка в реализации шаблона
представляется невероятной?

Best regards,
Andrew Savchenko

[-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] devel-static
  2021-08-25 20:52                   ` Andrey Savchenko
@ 2021-08-25 21:06                     ` Vitaly Lipatov
  2021-08-25 21:36                       ` Andrey Savchenko
  0 siblings, 1 reply; 75+ messages in thread
From: Vitaly Lipatov @ 2021-08-25 21:06 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Andrey Savchenko писал 25.8.21 23:52:
> On Wed, 25 Aug 2021 22:58:03 +0300 Vitaly Lipatov wrote:
...
> Некоторые апстримы ушли по-умолчанию целиком в хедеры и отдельно не
> выделяют такие ситуации, например, cgal.
Безусловно, нужно отмечать такие пакеты, и при их изменении пересобирать 
всё, что от них зависит. Иначе смысла в их изменении нет :)
Сейчас это могут делать и делают мантейнеры вручную (через rebuild 
зависящих по сборке пакетов), но вполне возможно, что когда-нибудь в 
сборочницу будет добавлена такая проверка и проверка будет выполняться 
автоматически.

>> Также, как я понимаю, достаточно сложно создать уязвимость именно в 
>> том
>> коде, который генерируется при сборке приложения, а не библиотеки. 
>> Разве
>> известны такие случаи?
> 
> Я отдельно не искал. Но почему ошибка в реализации шаблона
> представляется невероятной?
Представляется очень маловероятной. Потенциальная проблема может 
возникнуть у нескольких пакетов среди десятков тысяч в репозитории, 
поэтому особо никого не волнует — в смысле никто не готов ради этого 
переходить на статику, например.

-- 
С уважением,
Виталий Липатов,
ALT Linux Team


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-24 18:20 [devel] I: LTO in %optflags by default Dmitry V. Levin
                   ` (6 preceding siblings ...)
  2021-08-25 10:45 ` Vitaly Lipatov
@ 2021-08-25 21:24 ` Dmitry V. Levin
  2021-08-25 23:07   ` Aleksey Novodvorsky
  2021-08-26  0:26 ` Dmitry V. Levin
  8 siblings, 1 reply; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-25 21:24 UTC (permalink / raw)
  To: devel

On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
> Hi,
> 
> Пришло время включить в Сизифе LTO (link-time optimization).

Поскольку мы в теме, нам это казалось очевидным и не требующим
дополнительных пояснений, но, поскольку это ещё не всем очевидно,
поясню, из каких соображений мы исходили:

- LTO - это безусловно полезная оптимизация, об этом много написано,
  см. напр. [1] [2], поэтому ею хорошо было бы воспользоваться;

- LTO - это уже широко распространённая оптимизация, её уже включили в
  openSUSE, Fedora, Ubuntu, Clearlinux, скоро Debian, там уже вытоптали
  основные грабли, большинство фиксов пакетов заапстримлено, поэтому ею
  уже можно пользоваться;

- LTO - это уже настолько распространённая оптимизация, что скоро без LTO
  уже мало кто будет собирать, поэтому не пользоваться ею скоро будет себе
  дороже;

- После бранчевания мы в начале нового цикла разработки, самое время
  включить LTO.

- Исправление самой массовой сборочной ошибки "process-lto: ERROR:",
  вызванной включением LTO, тривиально.

- Выключить LTO в пакете в случае необходимости - тривиально.

[1] https://documentation.suse.com/sbp/all/html/SBP-GCC-10/index.html
[2] https://wiki.ubuntu.com/ToolChain/LTO

-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] devel-static
  2021-08-25 21:06                     ` Vitaly Lipatov
@ 2021-08-25 21:36                       ` Andrey Savchenko
  0 siblings, 0 replies; 75+ messages in thread
From: Andrey Savchenko @ 2021-08-25 21:36 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 2243 bytes --]

On Thu, 26 Aug 2021 00:06:23 +0300 Vitaly Lipatov wrote:
> Andrey Savchenko писал 25.8.21 23:52:
> > On Wed, 25 Aug 2021 22:58:03 +0300 Vitaly Lipatov wrote:
> >> Также, как я понимаю, достаточно сложно создать уязвимость именно в 
> >> том
> >> коде, который генерируется при сборке приложения, а не библиотеки. 
> >> Разве
> >> известны такие случаи?
> > 
> > Я отдельно не искал. Но почему ошибка в реализации шаблона
> > представляется невероятной?
> Представляется очень маловероятной.

А зря. Это точно такой же полноценный код с среднестатистически
такой же частотой ошибок. Вот пример по тому же cgal:
https://www.cvedetails.com/vulnerability-list/vendor_id-24019/Cgal.html

Все 4 CVE по header-only коду. Т.е. просто в яблочко.

> Потенциальная проблема может 
> возникнуть у нескольких пакетов среди десятков тысяч в репозитории, 
> поэтому особо никого не волнует — в смысле никто не готов ради этого 
> переходить на статику, например.

1. Формально закрытые, но в реальности оставшиеся CVE — это слишком
серьёзная проблема, чтоб её игнорировать. Даже если таких пакетов
0.1% (я думаю, что в десятки раз больше).

2. В исходном письме я перечислил достаточно много примемуществ
статики со ссылкой на весьма авторитетные источники.

Повторюсь, я не призываю полностью избавляться от DSO, но статику
можно и нужно использовать.

Best regards,
Andrew Savchenko

[-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25 21:24 ` Dmitry V. Levin
@ 2021-08-25 23:07   ` Aleksey Novodvorsky
  2021-08-25 23:19     ` Dmitry V. Levin
  0 siblings, 1 reply; 75+ messages in thread
From: Aleksey Novodvorsky @ 2021-08-25 23:07 UTC (permalink / raw)
  To: ALT Linux Team development discussions

чт, 26 авг. 2021 г. в 00:24, Dmitry V. Levin <ldv@altlinux.org>:
>
> On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
> > Hi,
> >
> > Пришло время включить в Сизифе LTO (link-time optimization).
>
> Поскольку мы в теме, нам это казалось очевидным и не требующим
> дополнительных пояснений, но, поскольку это ещё не всем очевидно,
> поясню, из каких соображений мы исходили:
>
> - LTO - это безусловно полезная оптимизация, об этом много написано,
>   см. напр. [1] [2], поэтому ею хорошо было бы воспользоваться;
>
> - LTO - это уже широко распространённая оптимизация, её уже включили в
>   openSUSE, Fedora, Ubuntu, Clearlinux, скоро Debian, там уже вытоптали
>   основные грабли, большинство фиксов пакетов заапстримлено, поэтому ею
>   уже можно пользоваться;
>
> - LTO - это уже настолько распространённая оптимизация, что скоро без LTO
>   уже мало кто будет собирать, поэтому не пользоваться ею скоро будет себе
>   дороже;
>
> - После бранчевания мы в начале нового цикла разработки, самое время
>   включить LTO.
>
> - Исправление самой массовой сборочной ошибки "process-lto: ERROR:",
>   вызванной включением LTO, тривиально.
>
> - Выключить LTO в пакете в случае необходимости - тривиально.
>
> [1] https://documentation.suse.com/sbp/all/html/SBP-GCC-10/index.html
> [2] https://wiki.ubuntu.com/ToolChain/LTO

Это хорошо, но все ли наши архитектуры поддерживают LTO?
Ответ важен и его надо знать.

Rgrds, Алексей

>
> --
> ldv
> _______________________________________________
> Devel mailing list
> Devel@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25 23:07   ` Aleksey Novodvorsky
@ 2021-08-25 23:19     ` Dmitry V. Levin
  2021-08-25 23:54       ` Andrey Savchenko
  2021-08-26  4:23       ` alexei
  0 siblings, 2 replies; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-25 23:19 UTC (permalink / raw)
  To: ALT Devel discussion list

On Thu, Aug 26, 2021 at 02:07:49AM +0300, Aleksey Novodvorsky wrote:
> чт, 26 авг. 2021 г. в 00:24, Dmitry V. Levin <ldv@altlinux.org>:
> >
> > On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
> > > Hi,
> > >
> > > Пришло время включить в Сизифе LTO (link-time optimization).
> >
> > Поскольку мы в теме, нам это казалось очевидным и не требующим
> > дополнительных пояснений, но, поскольку это ещё не всем очевидно,
> > поясню, из каких соображений мы исходили:
> >
> > - LTO - это безусловно полезная оптимизация, об этом много написано,
> >   см. напр. [1] [2], поэтому ею хорошо было бы воспользоваться;
> >
> > - LTO - это уже широко распространённая оптимизация, её уже включили в
> >   openSUSE, Fedora, Ubuntu, Clearlinux, скоро Debian, там уже вытоптали
> >   основные грабли, большинство фиксов пакетов заапстримлено, поэтому ею
> >   уже можно пользоваться;
> >
> > - LTO - это уже настолько распространённая оптимизация, что скоро без LTO
> >   уже мало кто будет собирать, поэтому не пользоваться ею скоро будет себе
> >   дороже;
> >
> > - После бранчевания мы в начале нового цикла разработки, самое время
> >   включить LTO.
> >
> > - Исправление самой массовой сборочной ошибки "process-lto: ERROR:",
> >   вызванной включением LTO, тривиально.
> >
> > - Выключить LTO в пакете в случае необходимости - тривиально.
> >
> > [1] https://documentation.suse.com/sbp/all/html/SBP-GCC-10/index.html
> > [2] https://wiki.ubuntu.com/ToolChain/LTO
> 
> Это хорошо, но все ли наши архитектуры поддерживают LTO?

Конечно, LTO поддерживается на всех наших архитектурах.


-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25 19:27   ` [devel] I: LTO in %optflags by default Andrey Savchenko
@ 2021-08-25 23:54     ` Dmitry V. Levin
  2021-08-26  9:35       ` Alexey V. Vissarionov
  2021-08-26 19:33       ` Andrey Savchenko
  0 siblings, 2 replies; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-25 23:54 UTC (permalink / raw)
  To: devel

On Wed, Aug 25, 2021 at 10:27:49PM +0300, Andrey Savchenko wrote:
> On Wed, 25 Aug 2021 11:37:46 +0400 Alexey Sheplyakov wrote:
> > Здравствуйте!
> > 
> > On 24.08.2021 22:20, Dmitry V. Levin wrote:
> > 
> > > Пришло время включить в Сизифе LTO (link-time optimization).
> > 
> > Поскольку LTO ломает сборку сотен пакетов, причем не каких попало,
> > а gcc, glibc, и т.п. - то время включать LTO как раз таки НЕ пришло.
> > 
> > А если кому-то всё равно очень хочется - надо сначала доработать пакеты
> > (на которые повлияет LTO), а потом уж включать. И нет, это не сопровождающие
> > пакетов должны заниматься этой глупостью, а именно этот "кто-то", кому
> > понадобилась LTO (или ещё какая модная фенечка).
> 
> Это давняя проблема. У нас есть правило: «кто сломал, тот
> и чинит» (я не нашёл такую политику, возможно, это джентельменское
> соглашение). Однако, на практике оно работает лишь для простых
> смертных, а с ключевыми компонентами системы — тем же тулчейном —
> всё наоборот: чинят мейнтенеры пакетов, которых обычно никто не
> справшивает и просто ставят перед фактом.
> 
> С одной стороны, такой подход можно понять, т.к. когда сломанных
> пакетов слишком много, авторы изменений просто физически не могут
> без помощи остальных всё исправить. С другой стороны он
> несправедлив по отношению к мейнтенерам других сложных подсистем
> (питон, джава, telive, cmake).
> 
> Давайте искать в этом вопросе золотую середину, чтоб всё было по
> справедливости. Возможно, следует сделать лимит на количество
> затронутых пакетов, после которого следует подключать сообщество
> к исправлению проблем. Другие предложения приветствуются.

Мы обсуждали обновления тулчейна в конце марта - начале апреля в этом треде:
https://lore.altlinux.org/devel/20210330142347.GA29398@altlinux.org/T/#u
И даже договорились, насколько я понимаю:
https://lore.altlinux.org/devel/20210404201605.GC15347@altlinux.org/

Надо понимать, что тулчейном у нас суммарно занимается менее одного
человека, а пользуются все, кто собирают arch-пакеты.
В таких условиях правило «кто сломал, тот и чинит» не применимо
совершенно, и максимум, что можно сделать - это опубликовать обзор
ожидаемых последствий изменений и дать ссылки для дальнейшего чтения.


-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25 23:19     ` Dmitry V. Levin
@ 2021-08-25 23:54       ` Andrey Savchenko
  2021-08-26  0:04         ` Dmitry V. Levin
  2021-08-26  4:23       ` alexei
  1 sibling, 1 reply; 75+ messages in thread
From: Andrey Savchenko @ 2021-08-25 23:54 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 3345 bytes --]

On Thu, 26 Aug 2021 02:19:29 +0300 Dmitry V. Levin wrote:
> On Thu, Aug 26, 2021 at 02:07:49AM +0300, Aleksey Novodvorsky wrote:
> > чт, 26 авг. 2021 г. в 00:24, Dmitry V. Levin <ldv@altlinux.org>:
> > >
> > > On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
> > > > Hi,
> > > >
> > > > Пришло время включить в Сизифе LTO (link-time optimization).
> > >
> > > Поскольку мы в теме, нам это казалось очевидным и не требующим
> > > дополнительных пояснений, но, поскольку это ещё не всем очевидно,
> > > поясню, из каких соображений мы исходили:
> > >
> > > - LTO - это безусловно полезная оптимизация, об этом много написано,
> > >   см. напр. [1] [2], поэтому ею хорошо было бы воспользоваться;
> > >
> > > - LTO - это уже широко распространённая оптимизация, её уже включили в
> > >   openSUSE, Fedora, Ubuntu, Clearlinux, скоро Debian, там уже вытоптали
> > >   основные грабли, большинство фиксов пакетов заапстримлено, поэтому ею
> > >   уже можно пользоваться;
> > >
> > > - LTO - это уже настолько распространённая оптимизация, что скоро без LTO
> > >   уже мало кто будет собирать, поэтому не пользоваться ею скоро будет себе
> > >   дороже;
> > >
> > > - После бранчевания мы в начале нового цикла разработки, самое время
> > >   включить LTO.
> > >
> > > - Исправление самой массовой сборочной ошибки "process-lto: ERROR:",
> > >   вызванной включением LTO, тривиально.
> > >
> > > - Выключить LTO в пакете в случае необходимости - тривиально.
> > >
> > > [1] https://documentation.suse.com/sbp/all/html/SBP-GCC-10/index.html
> > > [2] https://wiki.ubuntu.com/ToolChain/LTO
> > 
> > Это хорошо, но все ли наши архитектуры поддерживают LTO?
> 
> Конечно, LTO поддерживается на всех наших архитектурах.

Если мы говорим про все архитектуры, включая вторичные
сборочницы, то нет, на e2k не поддерживается. -flto игнорируется,
а вот более продвинутые опции приводят к ошибке:

$ gcc -flto -ffat-lto-objects test.c -o test
lcc: error: unrecognized command line option "-ffat-lto-objects"

С другой стороны, исправить это в e2k-версии rpm-build не сложно,
если не забыть. А вот если готовить эти изменения к вливанию
в основную ветку rpm-build, то там много переделывать нужно.

Best regards,
Andrew Savchenko

[-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25 23:54       ` Andrey Savchenko
@ 2021-08-26  0:04         ` Dmitry V. Levin
  2021-08-26  6:39           ` Andrey Savchenko
  2021-08-26  9:40           ` Alexey V. Vissarionov
  0 siblings, 2 replies; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-26  0:04 UTC (permalink / raw)
  To: ALT Devel discussion list

On Thu, Aug 26, 2021 at 02:54:54AM +0300, Andrey Savchenko wrote:
> On Thu, 26 Aug 2021 02:19:29 +0300 Dmitry V. Levin wrote:
> > On Thu, Aug 26, 2021 at 02:07:49AM +0300, Aleksey Novodvorsky wrote:
> > > чт, 26 авг. 2021 г. в 00:24, Dmitry V. Levin <ldv@altlinux.org>:
> > > >
> > > > On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
> > > > > Hi,
> > > > >
> > > > > Пришло время включить в Сизифе LTO (link-time optimization).
> > > >
> > > > Поскольку мы в теме, нам это казалось очевидным и не требующим
> > > > дополнительных пояснений, но, поскольку это ещё не всем очевидно,
> > > > поясню, из каких соображений мы исходили:
> > > >
> > > > - LTO - это безусловно полезная оптимизация, об этом много написано,
> > > >   см. напр. [1] [2], поэтому ею хорошо было бы воспользоваться;
> > > >
> > > > - LTO - это уже широко распространённая оптимизация, её уже включили в
> > > >   openSUSE, Fedora, Ubuntu, Clearlinux, скоро Debian, там уже вытоптали
> > > >   основные грабли, большинство фиксов пакетов заапстримлено, поэтому ею
> > > >   уже можно пользоваться;
> > > >
> > > > - LTO - это уже настолько распространённая оптимизация, что скоро без LTO
> > > >   уже мало кто будет собирать, поэтому не пользоваться ею скоро будет себе
> > > >   дороже;
> > > >
> > > > - После бранчевания мы в начале нового цикла разработки, самое время
> > > >   включить LTO.
> > > >
> > > > - Исправление самой массовой сборочной ошибки "process-lto: ERROR:",
> > > >   вызванной включением LTO, тривиально.
> > > >
> > > > - Выключить LTO в пакете в случае необходимости - тривиально.
> > > >
> > > > [1] https://documentation.suse.com/sbp/all/html/SBP-GCC-10/index.html
> > > > [2] https://wiki.ubuntu.com/ToolChain/LTO
> > > 
> > > Это хорошо, но все ли наши архитектуры поддерживают LTO?
> > 
> > Конечно, LTO поддерживается на всех наших архитектурах.
> 
> Если мы говорим про все архитектуры, включая вторичные
> сборочницы, то нет, на e2k не поддерживается. -flto игнорируется,
> а вот более продвинутые опции приводят к ошибке:
> 
> $ gcc -flto -ffat-lto-objects test.c -o test
> lcc: error: unrecognized command line option "-ffat-lto-objects"

А почему там -flto игнорируется, а -ffat-lto-objects не игнорируется?
Это непоследовательно.

Впрочем, мы ожидали чего-то подобного со стороны lcc, поэтому наша
реализация это учитывает.  Если все будут следовать нашим рекомендациям
про %optflags_lto, то на e2k это практически не отразится, там просто
не станут включать %optflags_lto в %optflags.


-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-24 18:20 [devel] I: LTO in %optflags by default Dmitry V. Levin
                   ` (7 preceding siblings ...)
  2021-08-25 21:24 ` Dmitry V. Levin
@ 2021-08-26  0:26 ` Dmitry V. Levin
  8 siblings, 0 replies; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-26  0:26 UTC (permalink / raw)
  To: devel

On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
[...]
> * Около 158 пакетов перестанут пересобираться с другой диагностикой,
> связанной с включением LTO.  С такими пакетами можно поступить одним из
> нескольких способов:
> - обновить пакеты, весьма вероятно, что они уже исправлены в новых версиях;
> - исправить LTO самостоятельно;
> - выключить LTO, переопределив макрос optflags_lto.

Забыл добавить очевидное: большая часть необходимых исправлений доступна
в репозиториях, где LTO включили раньше нас.


-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25 23:19     ` Dmitry V. Levin
  2021-08-25 23:54       ` Andrey Savchenko
@ 2021-08-26  4:23       ` alexei
  2021-08-26  8:24         ` Dmitry V. Levin
  1 sibling, 1 reply; 75+ messages in thread
From: alexei @ 2021-08-26  4:23 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Добрый день!

----- Исходное сообщение -----
> От: "ldv" <ldv@altlinux.org>
> Кому: "ALT Linux Team development discussions" <devel@lists.altlinux.org>
> Отправленные: Четверг, 26 Август 2021 г 7:19:29
> Тема: Re: [devel] I: LTO in %optflags by default

> On Thu, Aug 26, 2021 at 02:07:49AM +0300, Aleksey Novodvorsky wrote:
>> чт, 26 авг. 2021 г. в 00:24, Dmitry V. Levin <ldv@altlinux.org>:
>> >
>> > On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
>> > > Hi,
>> > >
>> > > Пришло время включить в Сизифе LTO (link-time optimization).
>> >
>> > Поскольку мы в теме, нам это казалось очевидным и не требующим
>> > дополнительных пояснений, но, поскольку это ещё не всем очевидно,
>> > поясню, из каких соображений мы исходили:
>> >
>> > - LTO - это безусловно полезная оптимизация, об этом много написано,
>> >   см. напр. [1] [2], поэтому ею хорошо было бы воспользоваться;
>> >
>> > - LTO - это уже широко распространённая оптимизация, её уже включили в
>> >   openSUSE, Fedora, Ubuntu, Clearlinux, скоро Debian, там уже вытоптали
>> >   основные грабли, большинство фиксов пакетов заапстримлено, поэтому ею
>> >   уже можно пользоваться;
>> >
>> > - LTO - это уже настолько распространённая оптимизация, что скоро без LTO
>> >   уже мало кто будет собирать, поэтому не пользоваться ею скоро будет себе
>> >   дороже;
>> >
>> > - После бранчевания мы в начале нового цикла разработки, самое время
>> >   включить LTO.
>> >
>> > - Исправление самой массовой сборочной ошибки "process-lto: ERROR:",
>> >   вызванной включением LTO, тривиально.
>> >
>> > - Выключить LTO в пакете в случае необходимости - тривиально.
>> >
>> > [1] https://documentation.suse.com/sbp/all/html/SBP-GCC-10/index.html
>> > [2] https://wiki.ubuntu.com/ToolChain/LTO
>> 
>> Это хорошо, но все ли наши архитектуры поддерживают LTO?
> 
> Конечно, LTO поддерживается на всех наших архитектурах.

Есть некоторые сомнения по этому поводу.

http://git.altlinux.org/tasks/283741/build/100/armh/log
======================================================
[00:02:11] /usr/lib/gcc/armh-alt-linux-gnueabi/10/include/arm_acle.h: In function 'pg_comp_crc32c_armv8':
[00:02:11] /usr/lib/gcc/armh-alt-linux-gnueabi/10/include/arm_acle.h:739:10: error: this builtin is not supported for this target
[00:02:11]   739 |   return __builtin_arm_crc32cb (__a, __b);
[00:02:11]       |          ^
[00:02:11] /usr/lib/gcc/armh-alt-linux-gnueabi/10/include/arm_acle.h:745:10: error: this builtin is not supported for this target
[00:02:11]   745 |   return __builtin_arm_crc32ch (__a, __b);
[00:02:11]       |          ^
[00:02:11] /usr/lib/gcc/armh-alt-linux-gnueabi/10/include/arm_acle.h:751:10: error: this builtin is not supported for this target
[00:02:11]   751 |   return __builtin_arm_crc32cw (__a, __b);
[00:02:11]       |          ^
[00:02:11] /usr/lib/gcc/armh-alt-linux-gnueabi/10/include/arm_acle.h:751:10: error: this builtin is not supported for this target
[00:02:11]   751 |   return __builtin_arm_crc32cw (__a, __b);
[00:02:11]       |          ^
[00:02:11] /usr/lib/gcc/armh-alt-linux-gnueabi/10/include/arm_acle.h:751:10: error: this builtin is not supported for this target
[00:02:11]   751 |   return __builtin_arm_crc32cw (__a, __b);
[00:02:11]       |          ^
[00:02:11] /usr/lib/gcc/armh-alt-linux-gnueabi/10/include/arm_acle.h:751:10: error: this builtin is not supported for this target
[00:02:11]   751 |   return __builtin_arm_crc32cw (__a, __b);
[00:02:11]       |          ^
[00:02:11] /usr/lib/gcc/armh-alt-linux-gnueabi/10/include/arm_acle.h:745:10: error: this builtin is not supported for this target
[00:02:11]   745 |   return __builtin_arm_crc32ch (__a, __b);
[00:02:11]       |          ^
[00:02:11] /usr/lib/gcc/armh-alt-linux-gnueabi/10/include/arm_acle.h:739:10: error: this builtin is not supported for this target
[00:02:11]   739 |   return __builtin_arm_crc32cb (__a, __b);
[00:02:11]       |          ^
[00:02:11] make[3]: *** [/usr/src/tmp/ccaltlWW.mk:377: /usr/src/tmp/postgres.w4Po8V.ltrans125.ltrans.o] Error 1
[00:02:11] lto-wrapper: fatal error: make returned 2 exit status
[00:02:11] compilation terminated.
[00:02:11] ld: error: lto-wrapper failed
[00:02:11] collect2: error: ld returned 1 exit status
[00:02:11] make[2]: *** [Makefile:66: postgres] Error 1
[00:02:11] make[2]: Leaving directory '/usr/src/RPM/BUILD/postgresql13-13.4/src/backend'
[00:02:11] make[1]: *** [Makefile:42: all-backend-recurse] Error 2
[00:02:11] make: *** [GNUmakefile:11: all-src-recurse] Error 2
=======================================================

При этом задание с отключенным LTO для armh собирается успешно
( http://git.altlinux.org/tasks/283796/ )


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by defaulta (top-level asm)
  2021-08-25  0:33   ` Dmitry V. Levin
@ 2021-08-26  6:00     ` Vitaly Chikunov
  0 siblings, 0 replies; 75+ messages in thread
From: Vitaly Chikunov @ 2021-08-26  6:00 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Hi,

On Wed, Aug 25, 2021 at 03:33:51AM +0300, Dmitry V. Levin wrote:
> > [...]
> Вероятно, более переносимой будет следующая конструкция:
> 
> %{?optflags_lto:%global optflags_lto %optflags_lto -ffat-lto-objects}

Небольшое количество пакетов содержат в configure тесты с top-level
asm() - к сожалению, это не совместимо с LTO и такие тесты будут давать
false positive, что может привести к ошибкам в сборке. Бага в gcc:

  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57703

GCC only workaround: чтоб оставить LTO можно включить -ffat-lto-objects.

Проверить configure на asm() можно, например:

  egrep -w '_?_?asm_?_?.*\(' configure*

Список пакетов из Fedora, где есть такая проблема:

  lcdproc
  libcaca
  libgcrypt
  librdkafka
  libsecp256k1
  libsodium
  mednafen
  openpgm



^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-26  0:04         ` Dmitry V. Levin
@ 2021-08-26  6:39           ` Andrey Savchenko
  2021-08-26  7:25             ` Vitaly Lipatov
  2021-08-27  0:20             ` Dmitry V. Levin
  2021-08-26  9:40           ` Alexey V. Vissarionov
  1 sibling, 2 replies; 75+ messages in thread
From: Andrey Savchenko @ 2021-08-26  6:39 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 4562 bytes --]

On Thu, 26 Aug 2021 03:04:26 +0300 Dmitry V. Levin wrote:
> On Thu, Aug 26, 2021 at 02:54:54AM +0300, Andrey Savchenko wrote:
> > On Thu, 26 Aug 2021 02:19:29 +0300 Dmitry V. Levin wrote:
> > > On Thu, Aug 26, 2021 at 02:07:49AM +0300, Aleksey Novodvorsky wrote:
> > > > чт, 26 авг. 2021 г. в 00:24, Dmitry V. Levin <ldv@altlinux.org>:
> > > > >
> > > > > On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
> > > > > > Hi,
> > > > > >
> > > > > > Пришло время включить в Сизифе LTO (link-time optimization).
> > > > >
> > > > > Поскольку мы в теме, нам это казалось очевидным и не требующим
> > > > > дополнительных пояснений, но, поскольку это ещё не всем очевидно,
> > > > > поясню, из каких соображений мы исходили:
> > > > >
> > > > > - LTO - это безусловно полезная оптимизация, об этом много написано,
> > > > >   см. напр. [1] [2], поэтому ею хорошо было бы воспользоваться;
> > > > >
> > > > > - LTO - это уже широко распространённая оптимизация, её уже включили в
> > > > >   openSUSE, Fedora, Ubuntu, Clearlinux, скоро Debian, там уже вытоптали
> > > > >   основные грабли, большинство фиксов пакетов заапстримлено, поэтому ею
> > > > >   уже можно пользоваться;
> > > > >
> > > > > - LTO - это уже настолько распространённая оптимизация, что скоро без LTO
> > > > >   уже мало кто будет собирать, поэтому не пользоваться ею скоро будет себе
> > > > >   дороже;
> > > > >
> > > > > - После бранчевания мы в начале нового цикла разработки, самое время
> > > > >   включить LTO.
> > > > >
> > > > > - Исправление самой массовой сборочной ошибки "process-lto: ERROR:",
> > > > >   вызванной включением LTO, тривиально.
> > > > >
> > > > > - Выключить LTO в пакете в случае необходимости - тривиально.
> > > > >
> > > > > [1] https://documentation.suse.com/sbp/all/html/SBP-GCC-10/index.html
> > > > > [2] https://wiki.ubuntu.com/ToolChain/LTO
> > > > 
> > > > Это хорошо, но все ли наши архитектуры поддерживают LTO?
> > > 
> > > Конечно, LTO поддерживается на всех наших архитектурах.
> > 
> > Если мы говорим про все архитектуры, включая вторичные
> > сборочницы, то нет, на e2k не поддерживается. -flto игнорируется,
> > а вот более продвинутые опции приводят к ошибке:
> > 
> > $ gcc -flto -ffat-lto-objects test.c -o test
> > lcc: error: unrecognized command line option "-ffat-lto-objects"
> 
> А почему там -flto игнорируется, а -ffat-lto-objects не игнорируется?
> Это непоследовательно.

Потому что они обычно игнорируют те опции, которые попадаются на
практике. Кроме того, -ffat-lto-objects появилась существенно позже
-flto. Разумеется, я запрошу игнорирование и этой опции, но это
займёт время.

> Впрочем, мы ожидали чего-то подобного со стороны lcc, поэтому наша
> реализация это учитывает.  Если все будут следовать нашим рекомендациям
> про %optflags_lto, то на e2k это практически не отразится, там просто
> не станут включать %optflags_lto в %optflags.

Да. Но кто-нибудь может просто черезю %add_optflags добавить. Не все
полностью читают devel на регулярной основе. Нужно как минимум на
вики добавить.

Best regards,
Andrew Savchenko

[-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-26  6:39           ` Andrey Savchenko
@ 2021-08-26  7:25             ` Vitaly Lipatov
  2021-08-27  0:20             ` Dmitry V. Levin
  1 sibling, 0 replies; 75+ messages in thread
From: Vitaly Lipatov @ 2021-08-26  7:25 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Andrey Savchenko писал 26.8.21 9:39:
> On Thu, 26 Aug 2021 03:04:26 +0300 Dmitry V. Levin wrote:
...
> Потому что они обычно игнорируют те опции, которые попадаются на
> практике. Кроме того, -ffat-lto-objects появилась существенно позже
> -flto. Разумеется, я запрошу игнорирование и этой опции, но это
> займёт время.
> 
>> Впрочем, мы ожидали чего-то подобного со стороны lcc, поэтому наша
>> реализация это учитывает.  Если все будут следовать нашим 
>> рекомендациям
>> про %optflags_lto, то на e2k это практически не отразится, там просто
>> не станут включать %optflags_lto в %optflags.
> 
> Да. Но кто-нибудь может просто черезю %add_optflags добавить. Не все
> полностью читают devel на регулярной основе. Нужно как минимум на
> вики добавить.
https://www.altlinux.org/LTO

-- 
С уважением,
Виталий Липатов,
ALT Linux Team


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-26  4:23       ` alexei
@ 2021-08-26  8:24         ` Dmitry V. Levin
  0 siblings, 0 replies; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-26  8:24 UTC (permalink / raw)
  To: devel

On Thu, Aug 26, 2021 at 12:23:01PM +0800, alexei@taf.ru wrote:
[...]
> >> Это хорошо, но все ли наши архитектуры поддерживают LTO?
> > 
> > Конечно, LTO поддерживается на всех наших архитектурах.
> 
> Есть некоторые сомнения по этому поводу.

У вас уже собралось несколько пакетов с включённой LTO,
так что не сомневайтесь.

> http://git.altlinux.org/tasks/283741/build/100/armh/log
> ======================================================
> [00:02:11] /usr/lib/gcc/armh-alt-linux-gnueabi/10/include/arm_acle.h: In function 'pg_comp_crc32c_armv8':
> [00:02:11] /usr/lib/gcc/armh-alt-linux-gnueabi/10/include/arm_acle.h:739:10: error: this builtin is not supported for this target
> [00:02:11]   739 |   return __builtin_arm_crc32cb (__a, __b);
> [00:02:11]       |          ^
> [00:02:11] /usr/lib/gcc/armh-alt-linux-gnueabi/10/include/arm_acle.h:745:10: error: this builtin is not supported for this target
> [00:02:11]   745 |   return __builtin_arm_crc32ch (__a, __b);
> [00:02:11]       |          ^
> [00:02:11] /usr/lib/gcc/armh-alt-linux-gnueabi/10/include/arm_acle.h:751:10: error: this builtin is not supported for this target
> [00:02:11]   751 |   return __builtin_arm_crc32cw (__a, __b);
> [00:02:11]       |          ^
> [00:02:11] /usr/lib/gcc/armh-alt-linux-gnueabi/10/include/arm_acle.h:751:10: error: this builtin is not supported for this target
> [00:02:11]   751 |   return __builtin_arm_crc32cw (__a, __b);
> [00:02:11]       |          ^
> [00:02:11] /usr/lib/gcc/armh-alt-linux-gnueabi/10/include/arm_acle.h:751:10: error: this builtin is not supported for this target
> [00:02:11]   751 |   return __builtin_arm_crc32cw (__a, __b);
> [00:02:11]       |          ^
> [00:02:11] /usr/lib/gcc/armh-alt-linux-gnueabi/10/include/arm_acle.h:751:10: error: this builtin is not supported for this target
> [00:02:11]   751 |   return __builtin_arm_crc32cw (__a, __b);
> [00:02:11]       |          ^
> [00:02:11] /usr/lib/gcc/armh-alt-linux-gnueabi/10/include/arm_acle.h:745:10: error: this builtin is not supported for this target
> [00:02:11]   745 |   return __builtin_arm_crc32ch (__a, __b);
> [00:02:11]       |          ^
> [00:02:11] /usr/lib/gcc/armh-alt-linux-gnueabi/10/include/arm_acle.h:739:10: error: this builtin is not supported for this target
> [00:02:11]   739 |   return __builtin_arm_crc32cb (__a, __b);
> [00:02:11]       |          ^
> [00:02:11] make[3]: *** [/usr/src/tmp/ccaltlWW.mk:377: /usr/src/tmp/postgres.w4Po8V.ltrans125.ltrans.o] Error 1
> [00:02:11] lto-wrapper: fatal error: make returned 2 exit status
> [00:02:11] compilation terminated.
> [00:02:11] ld: error: lto-wrapper failed
> [00:02:11] collect2: error: ld returned 1 exit status
> [00:02:11] make[2]: *** [Makefile:66: postgres] Error 1
> [00:02:11] make[2]: Leaving directory '/usr/src/RPM/BUILD/postgresql13-13.4/src/backend'
> [00:02:11] make[1]: *** [Makefile:42: all-backend-recurse] Error 2
> [00:02:11] make: *** [GNUmakefile:11: all-src-recurse] Error 2
> =======================================================
> 
> При этом задание с отключенным LTO для armh собирается успешно
> ( http://git.altlinux.org/tasks/283796/ )

Это один из нескольких случаев, которые, видимо, были исправлены в gcc11:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96939

Наверное, можно пока отключить LTO для armh и оставить в спек-файле
соответствующий комментарий, а после перехода на gcc11 включить обратно.


-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25 23:54     ` Dmitry V. Levin
@ 2021-08-26  9:35       ` Alexey V. Vissarionov
  2021-08-26 19:33       ` Andrey Savchenko
  1 sibling, 0 replies; 75+ messages in thread
From: Alexey V. Vissarionov @ 2021-08-26  9:35 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On 2021-08-26 02:54:20 +0300, Dmitry V. Levin wrote:

 > Надо понимать, что тулчейном у нас суммарно занимается менее
 > одного человека, а пользуются все, кто собирают arch-пакеты.
 > В таких условиях правило "кто сломал, тот и чинит" не применимо
 > совершенно, и максимум, что можно сделать - это опубликовать
 > обзор ожидаемых последствий изменений и дать ссылки для
 > дальнейшего чтения.

Но при этом "максимум, что можно" - еще и "минимум, что нужно".


-- 
Alexey V. Vissarionov
gremlin ПРИ altlinux ТЧК org; +vii-cmiii-ccxxix-lxxix-xlii
GPG: 0D92F19E1C0DC36E27F61A29CD17E2B43D879005 @ hkp://keys.gnupg.net


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-26  0:04         ` Dmitry V. Levin
  2021-08-26  6:39           ` Andrey Savchenko
@ 2021-08-26  9:40           ` Alexey V. Vissarionov
  1 sibling, 0 replies; 75+ messages in thread
From: Alexey V. Vissarionov @ 2021-08-26  9:40 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On 2021-08-26 03:04:26 +0300, Dmitry V. Levin wrote:

 > Впрочем, мы ожидали чего-то подобного со стороны lcc, поэтому
 > наша реализация это учитывает. Если все будут следовать нашим
 > рекомендациям про %optflags_lto, то на e2k это практически не
 > отразится, там просто не станут включать %optflags_lto в
 > %optflags.

Это уже документировано? Где?


-- 
Alexey V. Vissarionov
gremlin ПРИ altlinux ТЧК org; +vii-cmiii-ccxxix-lxxix-xlii
GPG: 0D92F19E1C0DC36E27F61A29CD17E2B43D879005 @ hkp://keys.gnupg.net


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25  7:03       ` Denis Medvedev
  2021-08-25  7:32         ` Andrey Savchenko
@ 2021-08-26 18:43         ` Michael Shigorin
  1 sibling, 0 replies; 75+ messages in thread
From: Michael Shigorin @ 2021-08-26 18:43 UTC (permalink / raw)
  To: devel

On Wed, Aug 25, 2021 at 10:03:39AM +0300, Denis Medvedev wrote:
> > С точки зрения безопасности это хорошо, а вот тормоза даёт дикие,
> > особенно на тяжёлых приложениях типа LO. Возможно, в этом есть смысл
> > в специальных ветках, но в Сизиф такое не нужно тянуть.
> В таком случае как мне правильно сделать дефолты для особых веток?
> Сделать свою версию какого пакета?

Возможно, стоит сделать в rpm-build ручку hardening
и включать её в конфигурации сборочницы для веток c10*
(у нас для sisyphus_e2k и соответствующих бранчей таких
ручек много, хоть потихоньку и убавляются; можем научить).

-- 
 ---- WBR, Michael Shigorin / http://altlinux.org
  ------ http://opennet.ru / http://anna-news.info


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] Administrivii
  2021-08-25 20:03       ` Alexey V. Vissarionov
@ 2021-08-26 19:02         ` Michael Shigorin
  2021-08-26 19:18           ` [devel] debugedit Dmitry V. Levin
  0 siblings, 1 reply; 75+ messages in thread
From: Michael Shigorin @ 2021-08-26 19:02 UTC (permalink / raw)
  To: devel

On Wed, Aug 25, 2021 at 11:03:22PM +0300, Alexey V. Vissarionov wrote:
> >> Эту тему можно было бы обсудить по-существу, если бы вы не
> >> написали то, что вы написали дальше.

Дим, такое в твой адрес говорит далеко не первый человек --
возможно, дело всё-таки не в бобине, а в

  постановке людей перед фактом того, что _им_ нужно теперь
  выполнить дополнительную работу в интересах _других_ людей,

вместо

  _анонса_ таких изменений и доведения общей пользы до общего
  сведения и уже затем COMMIT через денёк.

Даже когда на самом деле польза вернётся обратно (думаю, многие
помнят -Wl,--as-needed в 2007 или когда там), баланс интересов
беречь стоит (и порой стоит даже слушать обратную связь или
хотя бы принимать её, иначе лишаешь себя права на ошибку,
а это чудовищная ответственность, которую никто из нас нести
не способен, по опыту).

> >>> А "я тут всё сломал, а вы теперь - чините" - это прямое
> >>> вредительство.
> > Простите, погорячился. Это я зря. Постараюсь в дальнейшем
> > аккуратнее подбирать формулировки.
> Вот тут квантором \forall размахивать уж точно не следовало,
> да и умысла что-либо ломать у ldv заведомо не было.

Тем не менее изменение и впрямь было произведено,
насколько могу видеть, предельно дИмократично,
а вовсе не "со всенародным обсуждением" и прочими
рюшиками, которые типа как должны бы быть.

Просто для протокола, так-то я Диму люблю не менее всех
и Виталику за труды благодарен (хотя пока что не понял,
debugedit в итоге починили или всё так же падает).

-- 
 ---- WBR, Michael Shigorin / http://altlinux.org
  ------ http://opennet.ru / http://anna-news.info


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] debugedit
  2021-08-26 19:02         ` [devel] Administrivii Michael Shigorin
@ 2021-08-26 19:18           ` Dmitry V. Levin
  2021-10-13  9:16             ` [devel] debugedit DWARF version 0 Denis Medvedev
  0 siblings, 1 reply; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-26 19:18 UTC (permalink / raw)
  To: devel

On Thu, Aug 26, 2021 at 10:02:55PM +0300, Michael Shigorin wrote:
[...]
> Просто для протокола, так-то я Диму люблю не менее всех
> и Виталику за труды благодарен (хотя пока что не понял,
> debugedit в итоге починили или всё так же падает).

На обычных архитектурах debugedit не падает (и вроде бы никогда не падал),
а на e2k тебе виднее.


-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-25 23:54     ` Dmitry V. Levin
  2021-08-26  9:35       ` Alexey V. Vissarionov
@ 2021-08-26 19:33       ` Andrey Savchenko
  2021-08-27  0:37         ` Dmitry V. Levin
  1 sibling, 1 reply; 75+ messages in thread
From: Andrey Savchenko @ 2021-08-26 19:33 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 5219 bytes --]

On Thu, 26 Aug 2021 02:54:20 +0300 Dmitry V. Levin wrote:
> On Wed, Aug 25, 2021 at 10:27:49PM +0300, Andrey Savchenko wrote:
> > On Wed, 25 Aug 2021 11:37:46 +0400 Alexey Sheplyakov wrote:
> > > Здравствуйте!
> > > 
> > > On 24.08.2021 22:20, Dmitry V. Levin wrote:
> > > 
> > > > Пришло время включить в Сизифе LTO (link-time optimization).
> > > 
> > > Поскольку LTO ломает сборку сотен пакетов, причем не каких попало,
> > > а gcc, glibc, и т.п. - то время включать LTO как раз таки НЕ пришло.
> > > 
> > > А если кому-то всё равно очень хочется - надо сначала доработать пакеты
> > > (на которые повлияет LTO), а потом уж включать. И нет, это не сопровождающие
> > > пакетов должны заниматься этой глупостью, а именно этот "кто-то", кому
> > > понадобилась LTO (или ещё какая модная фенечка).
> > 
> > Это давняя проблема. У нас есть правило: «кто сломал, тот
> > и чинит» (я не нашёл такую политику, возможно, это джентельменское
> > соглашение). Однако, на практике оно работает лишь для простых
> > смертных, а с ключевыми компонентами системы — тем же тулчейном —
> > всё наоборот: чинят мейнтенеры пакетов, которых обычно никто не
> > справшивает и просто ставят перед фактом.
> > 
> > С одной стороны, такой подход можно понять, т.к. когда сломанных
> > пакетов слишком много, авторы изменений просто физически не могут
> > без помощи остальных всё исправить. С другой стороны он
> > несправедлив по отношению к мейнтенерам других сложных подсистем
> > (питон, джава, telive, cmake).
> > 
> > Давайте искать в этом вопросе золотую середину, чтоб всё было по
> > справедливости. Возможно, следует сделать лимит на количество
> > затронутых пакетов, после которого следует подключать сообщество
> > к исправлению проблем. Другие предложения приветствуются.
> 
> Мы обсуждали обновления тулчейна в конце марта - начале апреля в этом треде:
> https://lore.altlinux.org/devel/20210330142347.GA29398@altlinux.org/T/#u
> И даже договорились, насколько я понимаю:
> https://lore.altlinux.org/devel/20210404201605.GC15347@altlinux.org/

И где же в этих обсуждениях анонс повсеместного включения LTO?
Я что-то не вижу по ссылкам.

Недовольство у сообщества оттого, что людей никто не спрашивал,
публичного обсуждения не было, а в закрытом кругу было принято
решение и остальных лишь поставили перед фактом: мы сделали так,
живите с этим как хотите.

> Надо понимать, что тулчейном у нас суммарно занимается менее одного
> человека, а пользуются все, кто собирают arch-пакеты.
> В таких условиях правило «кто сломал, тот и чинит» не применимо
> совершенно, и максимум, что можно сделать - это опубликовать обзор
> ожидаемых последствий изменений и дать ссылки для дальнейшего чтения.

Да, я это понимаю и в предыдущем письме недвусмысленно об этом
написал. Но точно так же у нас меньше одного человека занимается
другими тяжёлыми подсистемами, затрагивающими большое число пакетов,
например, texlive, java и, возможно, python. А правила получаются
для всех разные. И я нахожу это несправедливым, поэтому предлагаю
выработать общие критерии когда чинит, кто сломал, а когда
подключаются мейнтенеры поломанных пакетов.

Best regards,
Andrew Savchenko

[-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-26  6:39           ` Andrey Savchenko
  2021-08-26  7:25             ` Vitaly Lipatov
@ 2021-08-27  0:20             ` Dmitry V. Levin
  1 sibling, 0 replies; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-27  0:20 UTC (permalink / raw)
  To: devel

On Thu, Aug 26, 2021 at 09:39:30AM +0300, Andrey Savchenko wrote:
> On Thu, 26 Aug 2021 03:04:26 +0300 Dmitry V. Levin wrote:
> > On Thu, Aug 26, 2021 at 02:54:54AM +0300, Andrey Savchenko wrote:
[...]
> > > Если мы говорим про все архитектуры, включая вторичные
> > > сборочницы, то нет, на e2k не поддерживается. -flto игнорируется,
> > > а вот более продвинутые опции приводят к ошибке:
> > > 
> > > $ gcc -flto -ffat-lto-objects test.c -o test
> > > lcc: error: unrecognized command line option "-ffat-lto-objects"
> > 
> > А почему там -flto игнорируется, а -ffat-lto-objects не игнорируется?
> > Это непоследовательно.
> 
> Потому что они обычно игнорируют те опции, которые попадаются на
> практике. Кроме того, -ffat-lto-objects появилась существенно позже
> -flto. Разумеется, я запрошу игнорирование и этой опции, но это
> займёт время.

Никак не могу привыкнуть к тому, что вы не можете сами пропатчить фронтенд
компилятора, чтобы добавить просто игнорирование опции, что вам нужно
обращаться к каким-то проприетарщикам с просьбой сделать такое тривиальное
изменение.

> > Впрочем, мы ожидали чего-то подобного со стороны lcc, поэтому наша
> > реализация это учитывает.  Если все будут следовать нашим рекомендациям
> > про %optflags_lto, то на e2k это практически не отразится, там просто
> > не станут включать %optflags_lto в %optflags.
> 
> Да. Но кто-нибудь может просто черезю %add_optflags добавить.

Мы можем мониторить spec.git на эту тему.

> Не все
> полностью читают devel на регулярной основе. Нужно как минимум на
> вики добавить.

На вики добавлено.


-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-26 19:33       ` Andrey Savchenko
@ 2021-08-27  0:37         ` Dmitry V. Levin
  2021-08-27  8:07           ` Sergey V Turchin
                             ` (2 more replies)
  0 siblings, 3 replies; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-27  0:37 UTC (permalink / raw)
  To: ALT Devel discussion list

On Thu, Aug 26, 2021 at 10:33:49PM +0300, Andrey Savchenko wrote:
> On Thu, 26 Aug 2021 02:54:20 +0300 Dmitry V. Levin wrote:
> > On Wed, Aug 25, 2021 at 10:27:49PM +0300, Andrey Savchenko wrote:
> > > On Wed, 25 Aug 2021 11:37:46 +0400 Alexey Sheplyakov wrote:
> > > > Здравствуйте!
> > > > 
> > > > On 24.08.2021 22:20, Dmitry V. Levin wrote:
> > > > 
> > > > > Пришло время включить в Сизифе LTO (link-time optimization).
> > > > 
> > > > Поскольку LTO ломает сборку сотен пакетов, причем не каких попало,
> > > > а gcc, glibc, и т.п. - то время включать LTO как раз таки НЕ пришло.
> > > > 
> > > > А если кому-то всё равно очень хочется - надо сначала доработать пакеты
> > > > (на которые повлияет LTO), а потом уж включать. И нет, это не сопровождающие
> > > > пакетов должны заниматься этой глупостью, а именно этот "кто-то", кому
> > > > понадобилась LTO (или ещё какая модная фенечка).
> > > 
> > > Это давняя проблема. У нас есть правило: «кто сломал, тот
> > > и чинит» (я не нашёл такую политику, возможно, это джентельменское
> > > соглашение). Однако, на практике оно работает лишь для простых
> > > смертных, а с ключевыми компонентами системы — тем же тулчейном —
> > > всё наоборот: чинят мейнтенеры пакетов, которых обычно никто не
> > > справшивает и просто ставят перед фактом.
> > > 
> > > С одной стороны, такой подход можно понять, т.к. когда сломанных
> > > пакетов слишком много, авторы изменений просто физически не могут
> > > без помощи остальных всё исправить. С другой стороны он
> > > несправедлив по отношению к мейнтенерам других сложных подсистем
> > > (питон, джава, telive, cmake).
> > > 
> > > Давайте искать в этом вопросе золотую середину, чтоб всё было по
> > > справедливости. Возможно, следует сделать лимит на количество
> > > затронутых пакетов, после которого следует подключать сообщество
> > > к исправлению проблем. Другие предложения приветствуются.
> > 
> > Мы обсуждали обновления тулчейна в конце марта - начале апреля в этом треде:
> > https://lore.altlinux.org/devel/20210330142347.GA29398@altlinux.org/T/#u
> > И даже договорились, насколько я понимаю:
> > https://lore.altlinux.org/devel/20210404201605.GC15347@altlinux.org/
> 
> И где же в этих обсуждениях анонс повсеместного включения LTO?
> Я что-то не вижу по ссылкам.

Что толку в анонсе LTO, пока нет списка последствий.
А когда есть список последствий, что толку откладывать неизбежное.
Обсуждать имеет смысл, когда есть выбор, включать LTO или нет.

Единственная тема, которую можно было бы обсудить - это что делать
сначала, обновлять тулчейн или включать LTO.  Но и тут всё просто:
что готово первым, то и внедряется первым.

> Недовольство у сообщества оттого, что людей никто не спрашивал,
> публичного обсуждения не было, а в закрытом кругу было принято
> решение и остальных лишь поставили перед фактом: мы сделали так,
> живите с этим как хотите.

Люди, как правило, не замечают пользы, но замечают дополнительную работу,
которую приходится делать, пусть даже тривиальную.
Кроме того, люди хотят, чтобы им всё объяснили и спросили их мнения даже
тогда, когда выбора по сути нет.
Такое поведение людей сложно назвать рациональным.


-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-27  0:37         ` Dmitry V. Levin
@ 2021-08-27  8:07           ` Sergey V Turchin
  2021-08-27  9:11           ` Alexey V. Vissarionov
  2021-08-27 10:00           ` Alexey Sheplyakov
  2 siblings, 0 replies; 75+ messages in thread
From: Sergey V Turchin @ 2021-08-27  8:07 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Friday, 27 August 2021 03:37:45 MSK Dmitry V wrote:

[...]
> Люди, как правило, не замечают пользы, но замечают дополнительную работу,
> которую приходится делать, пусть даже тривиальную.
> Кроме того, люди хотят, чтобы им всё объяснили и спросили их мнения даже
> тогда, когда выбора по сути нет.
> Такое поведение людей сложно назвать рациональным.
Так, о том и разговор, что как бы кому-то не хотелось, а корректнее всегда 
будет попытка улаживать эти 3 вышеуказанных пункта, иначе по факту это лишние 
провокации негативного отношения со стороны тех самых "людей".

-- 
Regards, Sergey.

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-27  0:37         ` Dmitry V. Levin
  2021-08-27  8:07           ` Sergey V Turchin
@ 2021-08-27  9:11           ` Alexey V. Vissarionov
  2021-08-27 10:00           ` Alexey Sheplyakov
  2 siblings, 0 replies; 75+ messages in thread
From: Alexey V. Vissarionov @ 2021-08-27  9:11 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On 2021-08-27 03:37:45 +0300, Dmitry V. Levin wrote:

 >> И где же в этих обсуждениях анонс повсеместного включения LTO?
 >> Я что-то не вижу по ссылкам.
 > Что толку в анонсе LTO, пока нет списка последствий. А когда
 > есть список последствий, что толку откладывать неизбежное.
 > Обсуждать имеет смысл, когда есть выбор, включать LTO или нет.

Еще бывает "когда" и "в какие сроки".

 > Единственная тема, которую можно было бы обсудить - это что
 > делать сначала, обновлять тулчейн или включать LTO. Но и тут
 > всё просто: что готово первым, то и внедряется первым.

Ну ведь не по принципу "раз-два, и в production"... Или?

 >> Недовольство у сообщества оттого, что людей никто не
 >> спрашивал, публичного обсуждения не было, а в закрытом кругу
 >> было принято решение и остальных лишь поставили перед фактом:
 >> мы сделали так, живите с этим как хотите.
 > Люди, как правило, не замечают пользы,

Так покажи ее. В простейшем случае - "мы собираемся сделать %s,
это позволит нам сделать %s и избавиться от %s, ожидаемый срок
%s, проверять вот так, про обнаруженные коряквы писать %s".

 > но замечают дополнительную работу, которую приходится делать,
 > пусть даже тривиальную.

Ага. И выглядит это как "они там опять что-то навертели".

 > Кроме того, люди хотят, чтобы им всё объяснили

Вполне разумное желание.

 > и спросили их мнения даже тогда, когда выбора по сути нет.

См. выше про "когда" и "в какие сроки".

 > Такое поведение людей сложно назвать рациональным.

Пинками в светлое будущее, ага.


-- 
Alexey V. Vissarionov
gremlin ПРИ altlinux ТЧК org; +vii-cmiii-ccxxix-lxxix-xlii
GPG: 0D92F19E1C0DC36E27F61A29CD17E2B43D879005 @ hkp://keys.gnupg.net


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-27  0:37         ` Dmitry V. Levin
  2021-08-27  8:07           ` Sergey V Turchin
  2021-08-27  9:11           ` Alexey V. Vissarionov
@ 2021-08-27 10:00           ` Alexey Sheplyakov
  2021-08-27 12:54             ` Dmitry V. Levin
  2 siblings, 1 reply; 75+ messages in thread
From: Alexey Sheplyakov @ 2021-08-27 10:00 UTC (permalink / raw)
  To: devel

On 27.08.2021 04:37, Dmitry V. Levin wrote:

> Люди, как правило, не замечают пользы, но замечают дополнительную работу,
> которую приходится делать, пусть даже тривиальную.

Полегче, пожалуйста, с квантором общности.
Люди прекрасно понимают преимущества cross-module/whole program optimization.
Но и отрицательные последствия тоже знают:

1) Дополнительные оптимизации часто вскрывают баги, причину которых достаточно
   сложно выяснить, а как чинить - вообще не ясно [1]

   [1] Пример: https://www.ginac.de/pipermail/cln-list/2020-September/000772.html

2) Глобальная оптимизация жрёт память, как не в себя.
   Потому на машинах с "небольшим" (8 ГБ) объёмом памяти сборка чего-то сложнее
   "hello, world" будет будить ктулху^W OOM killer. А на 32-битных архитектурах
   упрётся в лимит адресного пространства.

> Кроме того, люди хотят, чтобы им всё объяснили и спросили их мнения даже
> тогда, когда выбора по сути нет.

Даже если тебя съели, у тебя всё еще есть два выхода (C)


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] I: LTO in %optflags by default
  2021-08-27 10:00           ` Alexey Sheplyakov
@ 2021-08-27 12:54             ` Dmitry V. Levin
  0 siblings, 0 replies; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-27 12:54 UTC (permalink / raw)
  To: ALT Devel discussion list

On Fri, Aug 27, 2021 at 02:00:08PM +0400, Alexey Sheplyakov wrote:
> On 27.08.2021 04:37, Dmitry V. Levin wrote:
> 
> > Люди, как правило, не замечают пользы, но замечают дополнительную работу,
> > которую приходится делать, пусть даже тривиальную.
> 
> Полегче, пожалуйста, с квантором общности.
> Люди прекрасно понимают преимущества cross-module/whole program optimization.
> Но и отрицательные последствия тоже знают:
> 
> 1) Дополнительные оптимизации часто вскрывают баги, причину которых достаточно
>    сложно выяснить, а как чинить - вообще не ясно [1]
> 
>    [1] Пример: https://www.ginac.de/pipermail/cln-list/2020-September/000772.html
> 
> 2) Глобальная оптимизация жрёт память, как не в себя.
>    Потому на машинах с "небольшим" (8 ГБ) объёмом памяти сборка чего-то сложнее
>    "hello, world" будет будить ктулху^W OOM killer. А на 32-битных архитектурах
>    упрётся в лимит адресного пространства.

Всё верно.  Когда оптимизация не подходит, её можно выключить.


-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

* [devel] Статические библиотеки и thin LTO (Was:  I: LTO in %optflags by default)
  2021-08-24 18:22 ` Dmitry V. Levin
  2021-08-25  0:04   ` Dmitry V. Levin
@ 2021-08-27 19:43   ` Alexey Sheplyakov
  2021-08-27 22:18     ` [devel] Статические библиотеки и thin LTO Vitaly Chikunov
  1 sibling, 1 reply; 75+ messages in thread
From: Alexey Sheplyakov @ 2021-08-27 19:43 UTC (permalink / raw)
  To: devel

Добрый вечер!

On 24.08.2021 22:22, Dmitry V. Levin wrote:
> On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
>> * 382 пакета перестанут пересобираться с диагностикой следующего вида:
>> process-lto: ERROR: ./usr/lib64/libtcb.a: contains __gnu_lto_slim only.
>> Perhaps, you need to %define optflags_lto %optflags_lto -ffat-lto-objects

Странно это. GCC прекрасно умеет создавать и использовать архивы
из thin LTO объектов:

cat > add.c <<-EOF
int add(int x, int y) { return x + y; }
EOF
cat > main.c <<-EOF
extern int add(int x, int y);
int main(int argc, char **argv) {
	volatile int a = 1;
        volatile int b = 2;
        return add(a, b);
}
EOF

gcc -c -flto -fno-fat-lto-objects -O2 -g add.c
gcc-ar rcs libadd.a add.o
gcc -c -flto -fno-fat-lto-objects -O2 -g main.c
gcc -flto -O2 -o main main.o libadd.a
objdump -j .text --disassemble=main main

Получаю:

main:     file format elf64-x86-64

Disassembly of section .text:

0000000000001040 <main>:
    1040:	f3 0f 1e fa          	endbr64 
    1044:	c7 44 24 fc 01 00 00 	movl   $0x1,-0x4(%rsp)
    104b:	00 
    104c:	c7 44 24 f8 02 00 00 	movl   $0x2,-0x8(%rsp)
    1053:	00 
    1054:	8b 44 24 f8          	mov    -0x8(%rsp),%eax
    1058:	8b 54 24 fc          	mov    -0x4(%rsp),%edx
    105c:	01 d0                	add    %edx,%eax
    105e:	c3                   	ret    


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] Статические библиотеки и thin LTO
  2021-08-27 19:43   ` [devel] Статические библиотеки и thin LTO (Was: I: LTO in %optflags by default) Alexey Sheplyakov
@ 2021-08-27 22:18     ` Vitaly Chikunov
  2021-08-29  6:34       ` Alexey Sheplyakov
  0 siblings, 1 reply; 75+ messages in thread
From: Vitaly Chikunov @ 2021-08-27 22:18 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Hi,

On Fri, Aug 27, 2021 at 11:43:17PM +0400, Alexey Sheplyakov wrote:
> Добрый вечер!
> 
> On 24.08.2021 22:22, Dmitry V. Levin wrote:
> > On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
> >> * 382 пакета перестанут пересобираться с диагностикой следующего вида:
> >> process-lto: ERROR: ./usr/lib64/libtcb.a: contains __gnu_lto_slim only.
> >> Perhaps, you need to %define optflags_lto %optflags_lto -ffat-lto-objects
> 
> Странно это. GCC прекрасно умеет создавать и использовать архивы
> из thin LTO объектов:

Нельзя запаковывать GIMPLE в репозиторий, так как он не переносимый
между версиями GCC. Иначе после каждого обновления GCC пришлось бы
пересобирать все эти пакеты.

  "The bytecode files are versioned and there is a strict version
  check, so bytecode files generated in one version of GCC do not
  work with an older or newer version of GCC." -- gcc(1)



^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] Статические библиотеки и thin LTO
  2021-08-27 22:18     ` [devel] Статические библиотеки и thin LTO Vitaly Chikunov
@ 2021-08-29  6:34       ` Alexey Sheplyakov
  2021-08-30  9:18         ` Dmitry V. Levin
  0 siblings, 1 reply; 75+ messages in thread
From: Alexey Sheplyakov @ 2021-08-29  6:34 UTC (permalink / raw)
  To: devel

Здравствуйте!

On 28.08.2021 02:18, Vitaly Chikunov wrote:
> Hi,
> 
> On Fri, Aug 27, 2021 at 11:43:17PM +0400, Alexey Sheplyakov wrote:
>> Добрый вечер!
>>
>> On 24.08.2021 22:22, Dmitry V. Levin wrote:
>>> On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
>>>> * 382 пакета перестанут пересобираться с диагностикой следующего вида:
>>>> process-lto: ERROR: ./usr/lib64/libtcb.a: contains __gnu_lto_slim only.
>>>> Perhaps, you need to %define optflags_lto %optflags_lto -ffat-lto-objects
>>
>> Странно это. GCC прекрасно умеет создавать и использовать архивы
>> из thin LTO объектов:
> 
> Нельзя запаковывать GIMPLE в репозиторий, так как он не переносимый
> между версиями GCC. Иначе после каждого обновления GCC пришлось бы
> пересобирать все эти пакеты.

Тогда почему бы не написать об этом прямо, например:

process-lto: ERROR: ./usr/lib64/libfoo.a: contains GIMPLE bytecode only.
Bytecode should NOT be packaged since its format can change between GCC versions.
To package the machine code in static libraries use -ffat-lto-objects option:
%define optflags_lto %optflags_lto -ffat-lto-object
Alternatively you might want to stop packaging static libraries.

А не говорить загадками -- "contains __gnu_lto_slim only".
"Perhaps you need" - а как понять, таки нужно, или не нужно?


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] Статические библиотеки и thin LTO
  2021-08-29  6:34       ` Alexey Sheplyakov
@ 2021-08-30  9:18         ` Dmitry V. Levin
  2021-08-30  9:30           ` Andrey Savchenko
  2021-08-30  9:50           ` Arseny Maslennikov
  0 siblings, 2 replies; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-30  9:18 UTC (permalink / raw)
  To: devel

On Sun, Aug 29, 2021 at 10:34:49AM +0400, Alexey Sheplyakov wrote:
> On 28.08.2021 02:18, Vitaly Chikunov wrote:
> > On Fri, Aug 27, 2021 at 11:43:17PM +0400, Alexey Sheplyakov wrote:
> >> On 24.08.2021 22:22, Dmitry V. Levin wrote:
> >>> On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
> >>>> * 382 пакета перестанут пересобираться с диагностикой следующего вида:
> >>>> process-lto: ERROR: ./usr/lib64/libtcb.a: contains __gnu_lto_slim only.
> >>>> Perhaps, you need to %define optflags_lto %optflags_lto -ffat-lto-objects
> >>
> >> Странно это. GCC прекрасно умеет создавать и использовать архивы
> >> из thin LTO объектов:
> > 
> > Нельзя запаковывать GIMPLE в репозиторий, так как он не переносимый
> > между версиями GCC. Иначе после каждого обновления GCC пришлось бы
> > пересобирать все эти пакеты.
> 
> Тогда почему бы не написать об этом прямо, например:
> 
> process-lto: ERROR: ./usr/lib64/libfoo.a: contains GIMPLE bytecode only.
> Bytecode should NOT be packaged since its format can change between GCC versions.
> To package the machine code in static libraries use -ffat-lto-objects option:
> %define optflags_lto %optflags_lto -ffat-lto-object
> Alternatively you might want to stop packaging static libraries.
> 
> А не говорить загадками -- "contains __gnu_lto_slim only".
> "Perhaps you need" - а как понять, таки нужно, или не нужно?

Предлагаю компромиссный вариант: в диагностике написать короткую формально
корректную фразу для скриптов, которая будет меняться редко, после которой
длинный текст для людей с описанием, которое может меняться чаще.
Например, так:

process-lto: ERROR: ./usr/lib64/libfoo.a: contains __gnu_lto_slim
Most likely this file contains GIMPLE bytecode that should NOT be packaged
since its format can change between GCC versions.
Use -ffat-lto-objects option to package machine code in static libraries, e.g.
%{?optflags_lto:%global optflags_lto %optflags_lto -ffat-lto-objects}
Alternatively, you might want to stop packaging static libraries.


-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] Статические библиотеки и thin LTO
  2021-08-30  9:18         ` Dmitry V. Levin
@ 2021-08-30  9:30           ` Andrey Savchenko
  2021-08-30  9:39             ` Dmitry V. Levin
  2021-08-30  9:50           ` Arseny Maslennikov
  1 sibling, 1 reply; 75+ messages in thread
From: Andrey Savchenko @ 2021-08-30  9:30 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 2822 bytes --]

On Mon, 30 Aug 2021 12:18:18 +0300 Dmitry V. Levin wrote:
> On Sun, Aug 29, 2021 at 10:34:49AM +0400, Alexey Sheplyakov wrote:
> > On 28.08.2021 02:18, Vitaly Chikunov wrote:
> > > On Fri, Aug 27, 2021 at 11:43:17PM +0400, Alexey Sheplyakov wrote:
> > >> On 24.08.2021 22:22, Dmitry V. Levin wrote:
> > >>> On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
> > >>>> * 382 пакета перестанут пересобираться с диагностикой следующего вида:
> > >>>> process-lto: ERROR: ./usr/lib64/libtcb.a: contains __gnu_lto_slim only.
> > >>>> Perhaps, you need to %define optflags_lto %optflags_lto -ffat-lto-objects
> > >>
> > >> Странно это. GCC прекрасно умеет создавать и использовать архивы
> > >> из thin LTO объектов:
> > > 
> > > Нельзя запаковывать GIMPLE в репозиторий, так как он не переносимый
> > > между версиями GCC. Иначе после каждого обновления GCC пришлось бы
> > > пересобирать все эти пакеты.
> > 
> > Тогда почему бы не написать об этом прямо, например:
> > 
> > process-lto: ERROR: ./usr/lib64/libfoo.a: contains GIMPLE bytecode only.
> > Bytecode should NOT be packaged since its format can change between GCC versions.
> > To package the machine code in static libraries use -ffat-lto-objects option:
> > %define optflags_lto %optflags_lto -ffat-lto-object
> > Alternatively you might want to stop packaging static libraries.
> > 
> > А не говорить загадками -- "contains __gnu_lto_slim only".
> > "Perhaps you need" - а как понять, таки нужно, или не нужно?
> 
> Предлагаю компромиссный вариант: в диагностике написать короткую формально
> корректную фразу для скриптов, которая будет меняться редко, после которой
> длинный текст для людей с описанием, которое может меняться чаще.
> Например, так:
> 
> process-lto: ERROR: ./usr/lib64/libfoo.a: contains __gnu_lto_slim
> Most likely this file contains GIMPLE bytecode that should NOT be packaged
> since its format can change between GCC versions.
> Use -ffat-lto-objects option to package machine code in static libraries, e.g.
> %{?optflags_lto:%global optflags_lto %optflags_lto -ffat-lto-objects}
> Alternatively, you might want to stop packaging static libraries.

s/to stop packaging static libraries/to disable LTO for this package/

Best regards,
Andrew Savchenko

[-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] Статические библиотеки и thin LTO
  2021-08-30  9:30           ` Andrey Savchenko
@ 2021-08-30  9:39             ` Dmitry V. Levin
  2021-08-30 14:36               ` Andrey Savchenko
  0 siblings, 1 reply; 75+ messages in thread
From: Dmitry V. Levin @ 2021-08-30  9:39 UTC (permalink / raw)
  To: devel

On Mon, Aug 30, 2021 at 12:30:00PM +0300, Andrey Savchenko wrote:
> On Mon, 30 Aug 2021 12:18:18 +0300 Dmitry V. Levin wrote:
> > On Sun, Aug 29, 2021 at 10:34:49AM +0400, Alexey Sheplyakov wrote:
[...]
> > > Тогда почему бы не написать об этом прямо, например:
> > > 
> > > process-lto: ERROR: ./usr/lib64/libfoo.a: contains GIMPLE bytecode only.
> > > Bytecode should NOT be packaged since its format can change between GCC versions.
> > > To package the machine code in static libraries use -ffat-lto-objects option:
> > > %define optflags_lto %optflags_lto -ffat-lto-object
> > > Alternatively you might want to stop packaging static libraries.
> > > 
> > > А не говорить загадками -- "contains __gnu_lto_slim only".
> > > "Perhaps you need" - а как понять, таки нужно, или не нужно?
> > 
> > Предлагаю компромиссный вариант: в диагностике написать короткую формально
> > корректную фразу для скриптов, которая будет меняться редко, после которой
> > длинный текст для людей с описанием, которое может меняться чаще.
> > Например, так:
> > 
> > process-lto: ERROR: ./usr/lib64/libfoo.a: contains __gnu_lto_slim
> > Most likely this file contains GIMPLE bytecode that should NOT be packaged
> > since its format can change between GCC versions.
> > Use -ffat-lto-objects option to package machine code in static libraries, e.g.
> > %{?optflags_lto:%global optflags_lto %optflags_lto -ffat-lto-objects}
> > Alternatively, you might want to stop packaging static libraries.
> 
> s/to stop packaging static libraries/to disable LTO for this package/

Или обе альтернативы, например:
Alternatively, you might want to stop packaging static libraries
or disable link-time optimization for this package.


-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] Статические библиотеки и thin LTO
  2021-08-30  9:18         ` Dmitry V. Levin
  2021-08-30  9:30           ` Andrey Savchenko
@ 2021-08-30  9:50           ` Arseny Maslennikov
  1 sibling, 0 replies; 75+ messages in thread
From: Arseny Maslennikov @ 2021-08-30  9:50 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 3323 bytes --]

On Mon, Aug 30, 2021 at 12:18:18PM +0300, Dmitry V. Levin wrote:
> On Sun, Aug 29, 2021 at 10:34:49AM +0400, Alexey Sheplyakov wrote:
> > On 28.08.2021 02:18, Vitaly Chikunov wrote:
> > > On Fri, Aug 27, 2021 at 11:43:17PM +0400, Alexey Sheplyakov wrote:
> > >> On 24.08.2021 22:22, Dmitry V. Levin wrote:
> > >>> On Tue, Aug 24, 2021 at 09:20:50PM +0300, Dmitry V. Levin wrote:
> > >>>> * 382 пакета перестанут пересобираться с диагностикой следующего вида:
> > >>>> process-lto: ERROR: ./usr/lib64/libtcb.a: contains __gnu_lto_slim only.
> > >>>> Perhaps, you need to %define optflags_lto %optflags_lto -ffat-lto-objects
> > >>
> > >> Странно это. GCC прекрасно умеет создавать и использовать архивы
> > >> из thin LTO объектов:
> > > 
> > > Нельзя запаковывать GIMPLE в репозиторий, так как он не переносимый
> > > между версиями GCC. Иначе после каждого обновления GCC пришлось бы
> > > пересобирать все эти пакеты.
> > 
> > Тогда почему бы не написать об этом прямо, например:
> > 
> > process-lto: ERROR: ./usr/lib64/libfoo.a: contains GIMPLE bytecode only.
> > Bytecode should NOT be packaged since its format can change between GCC versions.
> > To package the machine code in static libraries use -ffat-lto-objects option:
> > %define optflags_lto %optflags_lto -ffat-lto-object
> > Alternatively you might want to stop packaging static libraries.
> > 
> > А не говорить загадками -- "contains __gnu_lto_slim only".
> > "Perhaps you need" - а как понять, таки нужно, или не нужно?
> 
> Предлагаю компромиссный вариант: в диагностике написать короткую формально
> корректную фразу для скриптов, которая будет меняться редко, после которой
> длинный текст для людей с описанием, которое может меняться чаще.

Логично.
Не лучше ли к каждой строчке длинного текста дописать, какой компонент
его породил, как и к формальному сообщению? И вообще взять за правило
приписывать префикс к выводу.
Например, так:

> process-lto: ERROR: ./usr/lib64/libfoo.a: contains __gnu_lto_slim
> process-lto:   Most likely this file contains GIMPLE bytecode that should NOT be packaged
> process-lto:   since its format can change between GCC versions.
> process-lto:   Use -ffat-lto-objects option to package machine code in static libraries, e.g.
> process-lto:   %{?optflags_lto:%global optflags_lto %optflags_lto -ffat-lto-objects}
> process-lto:   Alternatively, you might want to stop packaging static libraries.

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

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] Статические библиотеки и thin LTO
  2021-08-30  9:39             ` Dmitry V. Levin
@ 2021-08-30 14:36               ` Andrey Savchenko
  0 siblings, 0 replies; 75+ messages in thread
From: Andrey Savchenko @ 2021-08-30 14:36 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 2229 bytes --]

On Mon, 30 Aug 2021 12:39:54 +0300 Dmitry V. Levin wrote:
> On Mon, Aug 30, 2021 at 12:30:00PM +0300, Andrey Savchenko wrote:
> > On Mon, 30 Aug 2021 12:18:18 +0300 Dmitry V. Levin wrote:
> > > On Sun, Aug 29, 2021 at 10:34:49AM +0400, Alexey Sheplyakov wrote:
> [...]
> > > > Тогда почему бы не написать об этом прямо, например:
> > > > 
> > > > process-lto: ERROR: ./usr/lib64/libfoo.a: contains GIMPLE bytecode only.
> > > > Bytecode should NOT be packaged since its format can change between GCC versions.
> > > > To package the machine code in static libraries use -ffat-lto-objects option:
> > > > %define optflags_lto %optflags_lto -ffat-lto-object
> > > > Alternatively you might want to stop packaging static libraries.
> > > > 
> > > > А не говорить загадками -- "contains __gnu_lto_slim only".
> > > > "Perhaps you need" - а как понять, таки нужно, или не нужно?
> > > 
> > > Предлагаю компромиссный вариант: в диагностике написать короткую формально
> > > корректную фразу для скриптов, которая будет меняться редко, после которой
> > > длинный текст для людей с описанием, которое может меняться чаще.
> > > Например, так:
> > > 
> > > process-lto: ERROR: ./usr/lib64/libfoo.a: contains __gnu_lto_slim
> > > Most likely this file contains GIMPLE bytecode that should NOT be packaged
> > > since its format can change between GCC versions.
> > > Use -ffat-lto-objects option to package machine code in static libraries, e.g.
> > > %{?optflags_lto:%global optflags_lto %optflags_lto -ffat-lto-objects}
> > > Alternatively, you might want to stop packaging static libraries.
> > 
> > s/to stop packaging static libraries/to disable LTO for this package/
> 
> Или обе альтернативы, например:
> Alternatively, you might want to stop packaging static libraries
> or disable link-time optimization for this package.

Да, так лучше.

Best regards,
Andrew Savchenko

[-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 75+ messages in thread

* [devel]  debugedit DWARF version 0
  2021-08-26 19:18           ` [devel] debugedit Dmitry V. Levin
@ 2021-10-13  9:16             ` Denis Medvedev
  2021-10-13  9:51               ` Dmitry V. Levin
  0 siblings, 1 reply; 75+ messages in thread
From: Denis Medvedev @ 2021-10-13  9:16 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Добрый день всем!
Как вот с этим бороться и отчего такое бывает?
x86_64

/usr/lib/rpm/debugedit: ./usr/lib/ruby/gems/2.5.0/extensions/x86_64-linux/2.5.0/eventmachine-1.2.7/fastfilereaderext.so:
DWARF version 0 unhandled Failed to update file: invalid section
alignment



^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] debugedit DWARF version 0
  2021-10-13  9:51               ` Dmitry V. Levin
@ 2021-10-13  9:51                 ` Denis Medvedev
  0 siblings, 0 replies; 75+ messages in thread
From: Denis Medvedev @ 2021-10-13  9:51 UTC (permalink / raw)
  To: Dmitry V. Levin; +Cc: ALT Linux Team development discussions

В Wed, 13 Oct 2021 12:51:53 +0300
"Dmitry V. Levin" <ldv@altlinux.org> пишет:

> On Wed, Oct 13, 2021 at 12:16:15PM +0300, Denis Medvedev wrote:
> > Добрый день всем!
> > Как вот с этим бороться и отчего такое бывает?
> > x86_64
> > 
> > /usr/lib/rpm/debugedit: ./usr/lib/ruby/gems/2.5.0/extensions/x86_64-linux/2.5.0/eventmachine-1.2.7/fastfilereaderext.so:
> > DWARF version 0 unhandled Failed to update file: invalid section
> > alignment  
> 
> $ rpmquery -f /usr/lib/rpm/debugedit
> error: file /usr/lib/rpm/debugedit: No such file or directory
> 
> В rpm-build >= 4.0.4-alt167 такого файла нет.  Это не Сизиф?
> 

Это не сизиф.


^ permalink raw reply	[flat|nested] 75+ messages in thread

* Re: [devel] debugedit DWARF version 0
  2021-10-13  9:16             ` [devel] debugedit DWARF version 0 Denis Medvedev
@ 2021-10-13  9:51               ` Dmitry V. Levin
  2021-10-13  9:51                 ` Denis Medvedev
  0 siblings, 1 reply; 75+ messages in thread
From: Dmitry V. Levin @ 2021-10-13  9:51 UTC (permalink / raw)
  To: ALT Devel discussion list

On Wed, Oct 13, 2021 at 12:16:15PM +0300, Denis Medvedev wrote:
> Добрый день всем!
> Как вот с этим бороться и отчего такое бывает?
> x86_64
> 
> /usr/lib/rpm/debugedit: ./usr/lib/ruby/gems/2.5.0/extensions/x86_64-linux/2.5.0/eventmachine-1.2.7/fastfilereaderext.so:
> DWARF version 0 unhandled Failed to update file: invalid section alignment

$ rpmquery -f /usr/lib/rpm/debugedit
error: file /usr/lib/rpm/debugedit: No such file or directory

В rpm-build >= 4.0.4-alt167 такого файла нет.  Это не Сизиф?


-- 
ldv


^ permalink raw reply	[flat|nested] 75+ messages in thread

end of thread, other threads:[~2021-10-13  9:51 UTC | newest]

Thread overview: 75+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-24 18:20 [devel] I: LTO in %optflags by default Dmitry V. Levin
2021-08-24 18:21 ` Dmitry V. Levin
2021-08-24 18:22 ` Dmitry V. Levin
2021-08-25  0:04   ` Dmitry V. Levin
2021-08-25  8:18     ` Vitaly Lipatov
2021-08-25  8:28       ` Ivan A. Melnikov
2021-08-25  8:38         ` Vitaly Lipatov
2021-08-25  9:18           ` Andrey Savchenko
2021-08-25 17:14             ` [devel] devel-static Dmitry V. Levin
2021-08-25 17:25               ` Alexey Sheplyakov
2021-08-25 19:19                 ` Andrey Savchenko
2021-08-25 19:14               ` Andrey Savchenko
2021-08-25 19:58                 ` Vitaly Lipatov
2021-08-25 20:52                   ` Andrey Savchenko
2021-08-25 21:06                     ` Vitaly Lipatov
2021-08-25 21:36                       ` Andrey Savchenko
2021-08-27 19:43   ` [devel] Статические библиотеки и thin LTO (Was: I: LTO in %optflags by default) Alexey Sheplyakov
2021-08-27 22:18     ` [devel] Статические библиотеки и thin LTO Vitaly Chikunov
2021-08-29  6:34       ` Alexey Sheplyakov
2021-08-30  9:18         ` Dmitry V. Levin
2021-08-30  9:30           ` Andrey Savchenko
2021-08-30  9:39             ` Dmitry V. Levin
2021-08-30 14:36               ` Andrey Savchenko
2021-08-30  9:50           ` Arseny Maslennikov
2021-08-24 18:23 ` [devel] I: LTO in %optflags by default Dmitry V. Levin
2021-08-24 19:19 ` Dmitry V. Levin
2021-08-25  0:33   ` Dmitry V. Levin
2021-08-26  6:00     ` [devel] I: LTO in %optflags by defaulta (top-level asm) Vitaly Chikunov
2021-08-25  5:27 ` [devel] I: LTO in %optflags by default Ivan A. Melnikov
2021-08-25  5:46   ` Denis Medvedev
2021-08-25  5:50     ` Denis Medvedev
2021-08-25  6:53     ` Andrey Savchenko
2021-08-25  7:03       ` Denis Medvedev
2021-08-25  7:32         ` Andrey Savchenko
2021-08-26 18:43         ` Michael Shigorin
2021-08-25  7:12       ` Ivan A. Melnikov
2021-08-25  8:14       ` Alexey Tourbin
2021-08-25  8:39         ` Andrey Savchenko
2021-08-25  7:12     ` Alexey Sheplyakov
2021-08-25 16:28     ` Dmitry V. Levin
2021-08-25 17:48   ` Dmitry V. Levin
2021-08-25  7:37 ` Alexey Sheplyakov
2021-08-25 18:07   ` [devel] Administrivia Dmitry V. Levin
2021-08-25 19:25     ` Alexey Sheplyakov
2021-08-25 20:03       ` Alexey V. Vissarionov
2021-08-26 19:02         ` [devel] Administrivii Michael Shigorin
2021-08-26 19:18           ` [devel] debugedit Dmitry V. Levin
2021-10-13  9:16             ` [devel] debugedit DWARF version 0 Denis Medvedev
2021-10-13  9:51               ` Dmitry V. Levin
2021-10-13  9:51                 ` Denis Medvedev
2021-08-25 19:27   ` [devel] I: LTO in %optflags by default Andrey Savchenko
2021-08-25 23:54     ` Dmitry V. Levin
2021-08-26  9:35       ` Alexey V. Vissarionov
2021-08-26 19:33       ` Andrey Savchenko
2021-08-27  0:37         ` Dmitry V. Levin
2021-08-27  8:07           ` Sergey V Turchin
2021-08-27  9:11           ` Alexey V. Vissarionov
2021-08-27 10:00           ` Alexey Sheplyakov
2021-08-27 12:54             ` Dmitry V. Levin
2021-08-25 10:45 ` Vitaly Lipatov
2021-08-25 16:20   ` Dmitry V. Levin
2021-08-25 20:23     ` Vitaly Lipatov
2021-08-25 20:30       ` Dmitry V. Levin
2021-08-25 21:24 ` Dmitry V. Levin
2021-08-25 23:07   ` Aleksey Novodvorsky
2021-08-25 23:19     ` Dmitry V. Levin
2021-08-25 23:54       ` Andrey Savchenko
2021-08-26  0:04         ` Dmitry V. Levin
2021-08-26  6:39           ` Andrey Savchenko
2021-08-26  7:25             ` Vitaly Lipatov
2021-08-27  0:20             ` Dmitry V. Levin
2021-08-26  9:40           ` Alexey V. Vissarionov
2021-08-26  4:23       ` alexei
2021-08-26  8:24         ` Dmitry V. Levin
2021-08-26  0:26 ` Dmitry V. Levin

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git