Gentoo Problem Of The Week (#13): BOOST_JOIN and Qt4 automoc
Tue Mar 3 21:52:01 MSK 2015
- Problem
-
Some qt programs wont build w/
dev-libs/boost-1.57
due a bug of stupidmoc
andBOOST_JOIN
. In my case it waskde-base/kleopatra
andmedia-libs/qt-gstreamer
. - Solution
-
As suggested in bug comments wrapping
#include <boost/...>
into#ifndef Q_MOC_RUN
/#endif
helps to build them. The problem is to find all lines that needs to be wrapped. I didn’t want to waste my time doing patches, so the simplest way is to wrap all such#include
directives automatically w/sed
. So I’ve added ebuilds to my overlay where onsrc_prepare()
stage all sources will be patched w/ ased
script:
/<boost\// {
i #ifndef Q_MOC_RUN
a #endif
}
In ebuild at prepare stage:
src_prepare() {
# Wrap all boost #include due a bug:
# https://bugreports.qt.io/browse/QTBUG-22829
ebegin "Wrapping #include <boost/...> into #ifndef Q_MOC_RUN/#endif"
for i in `find . -name '*.h' -o -name '*.cpp'`; do
sed -f "${FILESDIR}/wrap-boost-headers.sed" -i "${i}"
done
eend $?
# Call default handler here:
# - cmake-utils_src_configure for media-libs/qt-gstreamer
# - kde4-meta_src_prepare for kde-base/kleopatra...
}
Yeah, need to report bugs (as usually)… and append them to #541572.
blog comments powered by Disqus