ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] rpm-macros-cmake vs qt vs gcc vs eiskaltdcpp-qt = segfault?
@ 2010-12-05  8:58 Ivan A. Melnikov
  2010-12-05  9:27 ` REAL
  2010-12-10 20:48 ` Michael Shigorin
  0 siblings, 2 replies; 4+ messages in thread
From: Ivan A. Melnikov @ 2010-12-05  8:58 UTC (permalink / raw)
  To: ALT Linux Team development discussions

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

Тут такая история...

Начал падать eiskaltdcpp-qt. Пошёл разбираться, и нашёл, что
это воспроизводится

http://code.google.com/p/eiskaltdc/issues/detail?id=601

Оказалось, что у нас в /usr/lib/rpm/macros.d/cmake есть такие строки:

[...]
cmake .. \\\
    -DCMAKE_SKIP_RPATH:BOOL=yes \\\
    -DCMAKE_BUILD_TYPE=MinSizeRel \\\
    -DCMAKE_C_FLAGS:STRING='%optflags' \\\
    -DCMAKE_CXX_FLAGS:STRING='%optflags' \\\
[...]

Из-за такого BUILD TYPE к аргументам gcc добавляются
CMAKE_C_FLAGS_MINSIZEREL, содержащие -Os, но добавляются *после*
CMAKE_C_FLAGS. Получается, -O2 из %optflags игнорируется и eiskaltdcpp
собирается с -Os.

Почему-то это приводит к segfault'ам. По ссылке выше пишут, что нужно
собирать с теми же флагами, с какими была собрана qt. Я руками раскрыл
%cmake в спеке, удалил строку про BUILD_TYPE и пересобрал пакет -- всё
заработало.

Получается, что:

* стоит собирать все приложения с Qt с теми же флагами, с которыми была
  собрана Qt -- вообще, типичная ситуация для C++, но то, что флаги
  оптимизации влияют на ABI, имхо, проблема;

* наш %cmake частично игнорирует %optflags, что плохо, наверное повесить
  надо.

-- 
WBR,
Ivan A. Melnikov


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

* Re: [devel] rpm-macros-cmake vs qt vs gcc vs eiskaltdcpp-qt = segfault?
  2010-12-05  8:58 [devel] rpm-macros-cmake vs qt vs gcc vs eiskaltdcpp-qt = segfault? Ivan A. Melnikov
@ 2010-12-05  9:27 ` REAL
  2010-12-05  9:53   ` Ivan A. Melnikov
  2010-12-10 20:48 ` Michael Shigorin
  1 sibling, 1 reply; 4+ messages in thread
From: REAL @ 2010-12-05  9:27 UTC (permalink / raw)
  To: ALT Linux Team development discussions

05.12.2010 14:58, Ivan A. Melnikov пишет:
> * наш %cmake частично игнорирует %optflags, что плохо, наверное повесить
>    надо.

это не %cmake, это gcc (встречает -Os, поэтому игнорирует -O2). а 
вообще, лично я этим макросом не пользуюсь, мне удобней самому 
настраивать работу cmake, причём, не опциями cmake, а строками в файле 
CMakeCache.txt.

-- 

REAL aka Евгений Ростовцев, программист ЦНИТ КемГУ


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

* Re: [devel] rpm-macros-cmake vs qt vs gcc vs eiskaltdcpp-qt = segfault?
  2010-12-05  9:27 ` REAL
@ 2010-12-05  9:53   ` Ivan A. Melnikov
  0 siblings, 0 replies; 4+ messages in thread
From: Ivan A. Melnikov @ 2010-12-05  9:53 UTC (permalink / raw)
  To: devel

В Sun, 05 Dec 2010 15:27:55 +0600
REAL <root@mmedia2.kemsu.ru> пишет:

> 05.12.2010 14:58, Ivan A. Melnikov пишет:
> > * наш %cmake частично игнорирует %optflags, что плохо, наверное
> > повесить надо.
> 
> это не %cmake, это gcc (встречает -Os, поэтому игнорирует -O2). 
> [...]

Поведение gcc в этом случае правильно, документировано и давно не
менялось, так что cmake или %cmake должны подстроиться к нему, а не
наоборот. Я имел ввиду эффективное (флаги применяются) а не формальное
(флаги присутствуют) игнорирование.

-- 
WBR,
Ivan A. Melnikov


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

* Re: [devel] rpm-macros-cmake vs qt vs gcc vs eiskaltdcpp-qt = segfault?
  2010-12-05  8:58 [devel] rpm-macros-cmake vs qt vs gcc vs eiskaltdcpp-qt = segfault? Ivan A. Melnikov
  2010-12-05  9:27 ` REAL
@ 2010-12-10 20:48 ` Michael Shigorin
  1 sibling, 0 replies; 4+ messages in thread
From: Michael Shigorin @ 2010-12-10 20:48 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Sun, Dec 05, 2010 at 11:58:03AM +0300, Ivan A. Melnikov wrote:
> Получается, что:

cmake   lav damir

Полагаю, решение ближе всего к Вам...

-- 
 ---- WBR, Michael Shigorin <mike@altlinux.ru>
  ------ Linux.Kiev http://www.linux.kiev.ua/


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

end of thread, other threads:[~2010-12-10 20:48 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-12-05  8:58 [devel] rpm-macros-cmake vs qt vs gcc vs eiskaltdcpp-qt = segfault? Ivan A. Melnikov
2010-12-05  9:27 ` REAL
2010-12-05  9:53   ` Ivan A. Melnikov
2010-12-10 20:48 ` Michael Shigorin

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