qt5: reduce closure size

First, closure size is reduced by including the static libraries in $out instead
of trying to move them to $dev. The Qt build system cannot handle libraries
being split between different prefixes. Previously, the static libraries were
moved into $dev and the shared libraries were symlinked from $out to $dev to
fool the build system. However, this causes $dev to be retained at
runtime. Instead, we now keep the static libraries in $out. Fortunately, the
static libraries are not very large anyway.

Second, we build with QT_NO_DEBUG defined unless debugging is enabled. This
causes some assertions to be removed; when assertions are included, they pull
paths from $dev into the runtime closure by using the __FILE__ macro. We also
now patch qtbase to remove even more assertions when QT_NO_DEBUG is defined.
This commit is contained in:
Thomas Tuegel
2018-01-15 18:48:37 -06:00
parent 3793320958
commit 75d2a7dc4d
9 changed files with 110 additions and 217 deletions
@@ -97,7 +97,6 @@ stdenv.mkDerivation {
fix_qt_builtin_paths = ../hooks/fix-qt-builtin-paths.sh;
fix_qt_module_paths = ../hooks/fix-qt-module-paths.sh;
preHook = ''
. "$fix_qt_static_libs"
. "$fix_qt_builtin_paths"
. "$fix_qt_module_paths"
. ${../hooks/move-qt-dev-tools.sh}
@@ -363,11 +362,6 @@ stdenv.mkDerivation {
fixQtBuiltinPaths "''${!outputDev}" '*.pr?'
''
# Move static libraries and QMake library definitions into $dev.
+ ''
fixQtStaticLibs "''${!outputLib}" "''${!outputDev}"
''
# Move development tools to $dev
+ ''
moveQtDevTools