* [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