Brno, day 2

Ongoing efforts to build Qt5.7, Spice on Mac, Spice on Linux

Linux Spice build

I keep iterating. Last build failure was:

checking for library containing lt_dlopen... no
configure: error: in `/home/ddd/.cache/jhbuild/build/speech-dispatcher-0.8':
configure: error: ltdl library missing
See `config.log' for more details
*** Error during phase configure of speech-dispatcher: ########## Error running /home/ddd/jhbuild/checkout/speech-dispatcher-0.8/configure --prefix /home/ddd/jhbuild/install --disable-Werror --with-espeak --disable-static --disable-gtk-doc *** [106/187]

The answer seems to be:

% dnf install libtool-ltdl-devel

Next one is

checking for Text::CSV Perl module... not found
configure: error: Text::CSV Perl module is required to compile this package
*** Error during phase configure of gtk-vnc: ########## Error running /home/ddd/jhbuild/checkout/gtk-vnc/ --prefix /home/ddd/jhbuild/install --disable-Werror --with-gtk=3.0 --enable-vala --disable-static --disable-gtk-doc *** [174/186]

Answer is

% cpan Text::CSV

I thought I had already done that, but it was a different VM.

Mac Spice build

In addition to the build failure with cups, which I can easily skip, there is a somewhat strange failure extracting libpng. Not compiling it, which would make sense, but unpacking it:

*** Checking out libpng *** [4/49]
jhbuild build: failed to unpack /Users/ddd/.cache/jhbuild/downloads/libpng-1.6.17.tar.xz

What is strange is that the file looks sane:

% tar xfz /Users/ddd/.cache/jhbuild/downloads/libpng-1.6.17.tar.xz
[No error]

I tried disabling the build for pieces that annoy me by adding this in my jbuildrc:


But then I have the exact same failure with gettext-runtime:

*** Checking out gettext-runtime *** [3/47]
*** Checking out gettext-runtime *** [3/47]
curl --continue-at - -L -o /Users/ddd/.cache/jhbuild/downloads/gettext-0.19.8.tar.xz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 6969k  100 6969k    0     0  1681k      0  0:00:04  0:00:04 --:--:-- 1681k
jhbuild build: failed to unpack /Users/ddd/.cache/jhbuild/downloads/gettext-0.19.8.tar.xz

Something seems to be wrong with the extraction process itself. Wrong parameters passed to tar, some unexpected gnutar-ism leftover?

Looked at the jhbuild code and the problem is here in jhbuild/utils/

    elif ext == '.xz' and has_command('xzcat') and has_command('tar'):
        buildscript.execute('xzcat -d "%s" | tar xf -' % localfile,

Since macOS does not have xzcat by default, but then its z option does understand the xz format, so you can add another case:

    elif ext == '.xz' and has_command('tar'):
        buildscript.execute('tar xfz "%s"' % localfile,


Qt build

After doing the tweaks I talked about yesterday, and initializing the repository with the init-repository script instead of git submodule update --init --recursive, the build proceeded successfully… until it was interrupted with a disk full. A complete Qt debug+release build nowadays is around 72G 😯. That’s quite a significant fraction of the space on my 500GB SSD…

However, there are issues at link time. Some warnings:

 ld: warning: object file (/Volumes/LittleBig/Work/qt5/qttools/lib/libQt5UiTools_debug.a(moc_properties_p.o)) was built for newer OSX version (10.9) than being linked (10.7)

Does not seem too annoying given the version I’m running on. And a set of complaints about inconsistency between translation units (and indeed, I seem to remember seeing that there are some fields that seem to be marked private or public depending on where you come from, glad to see a toolset is finally trying to catch this kind of error):

ld: warning: direct access in function 'int qRegisterNormalizedMetaType(QByteArray const&, QtMetaTypePrivate::QSequentialIterableImpl*, QtPrivate::MetaTypeDefinedHelper::DefinedType)' from file '/Volumes/LittleBig/Work/qt5/qttools/lib/libQt5UiTools_debug.a(abstractformbuilder.o)' to global weak symbol 'QtMetaTypePrivate::QMetaTypeFunctionHelper::Construct(void*, void const*)' from file '.obj/history.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.

The consequence listed by the error message is interesting. It hints at some kind of code optimization for function calls that is enabled only for private member functions.

By the way, Qt build time is somewhat insane:

real 208m57.390s
user 1133m58.870s
sys 81m7.133s

This is with what I would consider a rather beefy machine.

After that, the link for Qt Linguist fails:

cd linguist/ && ( test -e Makefile || /Volumes/LittleBig/Work/qt5/qtbase/bin/qmake -o Makefile /Volumes/LittleBig/Work/qt5/qttools/src/linguist/linguist/ ) && /Applications/ -f Makefile install
/Applications/ -headerpad_max_install_names -stdlib=libc++ -Wl,-dead_strip -Wl,-syslibroot,/Applications/ -mmacosx-version-min=10.9  -Wl,-rpath,@loader_path/../../../../lib -o ../../../bin/ .obj/numerus.o .obj/translator.o .obj/translatormessage.o .obj/qm.o .obj/qph.o .obj/po.o .obj/ts.o .obj/xliff.o .obj/batchtranslationdialog.o .obj/errorsview.o .obj/finddialog.o .obj/formpreviewview.o .obj/globals.o .obj/main.o .obj/mainwindow.o .obj/messageeditor.o .obj/messageeditorwidgets.o .obj/messagehighlighter.o .obj/messagemodel.o .obj/phrasebookbox.o .obj/phrase.o .obj/phrasemodel.o .obj/phraseview.o .obj/printout.o .obj/recentfiles.o .obj/sourcecodeview.o .obj/statistics.o .obj/translatedialog.o .obj/translationsettingsdialog.o .obj/simtexth.o .obj/qrc_linguist.o .obj/moc_batchtranslationdialog.o .obj/moc_errorsview.o .obj/moc_finddialog.o .obj/moc_formpreviewview.o .obj/moc_mainwindow.o .obj/moc_messageeditor.o .obj/moc_messageeditorwidgets.o .obj/moc_messagehighlighter.o .obj/moc_messagemodel.o .obj/moc_phrasebookbox.o .obj/moc_phrase.o .obj/moc_phrasemodel.o .obj/moc_phraseview.o .obj/moc_recentfiles.o .obj/moc_sourcecodeview.o .obj/moc_statistics.o .obj/moc_translatedialog.o .obj/moc_translationsettingsdialog.o   -F/Volumes/LittleBig/Work/qt5/qtbase/lib -L/Volumes/LittleBig/Work/qt5/qttools/lib -lQt5UiTools -F/Volumes/LittleBig/Work/qt5/qttools/lib -framework QtWidgets -framework QtGui -framework QtCore -framework DiskArbitration -framework IOKit -framework OpenGL -framework AGL -framework QtPrintSupport -framework QtXml 
Undefined symbols for architecture x86_64:
  "vtable for ApplicationEventFilter", referenced from:
      _main in main.o
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[4]: *** [../../../bin/] Error 1

I won’t use this tool much, trying make -k install to install all the rest. But then, a build of Tao3D still does not see QtWebKit:

Project ERROR: Unknown module(s) in QT: webkit webkitwidgets

 Since the whole point of building Qt from scratch was to get WebKit, I’m pretty bummed. It turns out that, unlike git submodule --init --recursive the init-repository script does not checkout qtwebkit.

This can be fixed with:

% init-repository -f --module-subset=qtwebkit
% cd qtwebkit
% qmake
% make -j[large-number]

Then wait. And wait a bit longer.


Author: Christophe de Dinechin

I try to change the world, but that's work in progress. If you want to know me, google "Christophe de Dinechin". Keywords: concept programming, virtualization, OS design, programming languages, video games, 3D, modern physics. Some stuff I did that I'm proud of: the first "true" 3D game for the PC, HP's big iron virtualization, real-time test systems for car electronics, some of the best games for the HP48 calculator, a theory of physics that makes sense (at least to me).

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s