[mingw-qt5-qtbase] Various fixes submitted by Yaakov Selkowitz (RHBZ #1048677)

Erik van Pienbroek epienbro at fedoraproject.org
Mon Jan 6 17:22:01 UTC 2014


commit 72ed476691ecec0aa362e5f36240cc0d35b4b859
Author: Erik van Pienbroek <epienbro at fedoraproject.org>
Date:   Mon Jan 6 18:20:02 2014 +0100

    Various fixes submitted by Yaakov Selkowitz (RHBZ #1048677)
    
    - Fix qmake to use .dll.a extension for implibs (avoids renaming hacks
      in all mingw-qt5-* packages)
    - Force usage of system zlib in Qt5Bootstrap
    - Install shared libQt5BootstrapDBus for qdbuscpp2xml and qdbusxml2cpp
    - Fix QMAKE_LIBS_NETWORK for static linkage

 mingw-qt5-qtbase.spec                   |   50 ++++++++++++++++++++----------
 qt5-dont-build-host-libs-static.patch   |    8 +++++
 qt5-qmake-implib-dll-a.patch            |   20 ++++++++++++
 qt5-use-system-zlib-in-host-libs.patch  |   11 +++++++
 qt5-use-win32-g++-mkspecs-profile.patch |    3 +-
 5 files changed, 74 insertions(+), 18 deletions(-)
---
diff --git a/mingw-qt5-qtbase.spec b/mingw-qt5-qtbase.spec
index cb087f4..20824ba 100644
--- a/mingw-qt5-qtbase.spec
+++ b/mingw-qt5-qtbase.spec
@@ -20,7 +20,7 @@
 
 Name:           mingw-qt5-qtbase
 Version:        5.2.0
-Release:        1%{?pre:.%{pre}}%{?snapshot_date:.git%{snapshot_date}.%{snapshot_rev}}%{?dist}
+Release:        2%{?pre:.%{pre}}%{?snapshot_date:.git%{snapshot_date}.%{snapshot_rev}}%{?dist}
 Summary:        Qt5 for Windows - QtBase component
 
 License:        GPLv3 with exceptions or LGPLv2 with exceptions
@@ -72,6 +72,9 @@ Patch2:         qt5-dont-add-resource-files-to-qmake-libs.patch
 # files for the debug build an unique file name
 Patch3:         qt5-prevent-debug-library-names-in-pkgconfig-files.patch
 
+# Fix qmake to create implibs with .dll.a extension for MinGW
+Patch4:         qt5-qmake-implib-dll-a.patch
+
 ###########################
 # Fedora specific patches #
 ###########################
@@ -117,6 +120,10 @@ Patch106:       qt5-dont-build-host-libs-static.patch
 # want to avoid conflicts with the native qt5 packages
 Patch107:       qt5-enable-rpath-for-host-tools.patch
 
+# Build host libs with system zlib. This patch cannot be upstreamed as-is
+# due to the other host-libs patches.
+Patch108:       qt5-use-system-zlib-in-host-libs.patch
+
 BuildRequires:  mingw32-filesystem >= 95
 BuildRequires:  mingw32-gcc
 BuildRequires:  mingw32-gcc-c++
@@ -126,7 +133,6 @@ BuildRequires:  mingw32-zlib
 BuildRequires:  mingw32-win-iconv
 BuildRequires:  mingw32-libjpeg-turbo
 BuildRequires:  mingw32-libpng
-BuildRequires:  mingw32-libtiff
 BuildRequires:  mingw32-sqlite
 BuildRequires:  mingw32-dbus
 BuildRequires:  mingw32-pkg-config
@@ -143,7 +149,6 @@ BuildRequires:  mingw64-zlib
 BuildRequires:  mingw64-win-iconv
 BuildRequires:  mingw64-libjpeg-turbo
 BuildRequires:  mingw64-libpng
-BuildRequires:  mingw64-libtiff
 BuildRequires:  mingw64-sqlite
 BuildRequires:  mingw64-dbus
 BuildRequires:  mingw64-pkg-config
@@ -158,6 +163,8 @@ BuildRequires:  dos2unix
 BuildRequires:  flex
 BuildRequires:  bison
 
+# For Qt5Bootstrap
+BuildRequires:  pkgconfig(zlib)
 
 %description
 This package contains the Qt software toolkit for developing
@@ -262,6 +269,7 @@ Static version of the mingw64-qt5-qtbase library.
 %patch1 -p0 -b .pkgconfig
 %patch2 -p1 -b .res
 %patch3 -p1 -b .pkgconfig_debug
+%patch4 -p1 -b .qmake_implib
 
 %patch100 -p0
 %patch101 -p0
@@ -271,12 +279,13 @@ Static version of the mingw64-qt5-qtbase library.
 %patch105 -p1 -b .pcre
 %patch106 -p0
 %patch107 -p1
+%patch108 -p1 -b .host_system_zlib
 
 # Make sure the Qt5 build system uses our external ANGLE library
 rm -rf src/3rdparty/angle include/QtANGLE/{EGL,GLES2,KHR}
 
-# As well as our external PCRE library
-rm -rf src/3rdparty/pcre
+# As well as our external PCRE library and zlib
+rm -rf src/3rdparty/{pcre,zlib}
 
 
 %build
@@ -365,9 +374,9 @@ pushd ../build_release_static_win32
 make %{?_smp_mflags}
 popd
 
-# The LD_LIBRARY_PATH override is needed because libQt5Bootstrap is a shared
-# library which various compiled tools (like moc) use. As the libQt5Bootstrap
-# library isn't installed at this point yet, we have to workaround this
+# The LD_LIBRARY_PATH override is needed because libQt5Bootstrap* are shared
+# libraries which various compiled tools (like moc) use. As the libQt5Bootstrap*
+# libraries aren't installed at this point yet, we have to workaround this
 rm -rf ../build_release_shared_win32
 mkdir ../build_release_shared_win32
 pushd ../build_release_shared_win32
@@ -420,15 +429,6 @@ make install -C ../build_release_static_win64$BUILDDIR INSTALL_ROOT=$RPM_BUILD_R
 sed -i s@'"%{_prefix}/%{mingw32_target}/lib" '@@g $RPM_BUILD_ROOT%{mingw32_datadir}/qt5/mkspecs/qconfig.pri
 sed -i s@'"%{_prefix}/%{mingw64_target}/lib" '@@g $RPM_BUILD_ROOT%{mingw64_datadir}/qt5/mkspecs/qconfig.pri
 
-# Rename the .a files to .dll.a as they're actually import libraries and not static libraries
-for FN in $RPM_BUILD_ROOT%{mingw32_libdir}/*.a $RPM_BUILD_ROOT%{mingw64_libdir}/*.a ; do
-    # Ignore libqtmain*.a
-    echo $FN | grep -q qtmain && continue
-
-    FN_NEW=$(echo $FN | sed s/'.a$'/'.dll.a'/)
-    mv $FN $FN_NEW
-done
-
 # Drop the qtmain and libQt5Bootstrap static libraries from the static
 # tree as they're already part of the main tree
 rm -f $RPM_BUILD_ROOT/static/%{mingw32_libdir}/libqtmain*
@@ -460,10 +460,14 @@ rm -f  $RPM_BUILD_ROOT%{mingw64_libdir}/*.prl
 # Remove various unneeded files belonging to the Qt5Bootstrap library
 rm -f  $RPM_BUILD_ROOT%{_prefix}/%{mingw32_target}/lib/libQt5Bootstrap.la
 rm -f  $RPM_BUILD_ROOT%{_prefix}/%{mingw32_target}/lib/libQt5Bootstrap.prl
+rm -f  $RPM_BUILD_ROOT%{_prefix}/%{mingw32_target}/lib/libQt5BootstrapDBus.la
+rm -f  $RPM_BUILD_ROOT%{_prefix}/%{mingw32_target}/lib/libQt5BootstrapDBus.prl
 rm -rf $RPM_BUILD_ROOT%{_prefix}/%{mingw32_target}/lib/pkgconfig
 
 rm -f  $RPM_BUILD_ROOT%{_prefix}/%{mingw64_target}/lib/libQt5Bootstrap.la
 rm -f  $RPM_BUILD_ROOT%{_prefix}/%{mingw64_target}/lib/libQt5Bootstrap.prl
+rm -f  $RPM_BUILD_ROOT%{_prefix}/%{mingw64_target}/lib/libQt5BootstrapDBus.la
+rm -f  $RPM_BUILD_ROOT%{_prefix}/%{mingw64_target}/lib/libQt5BootstrapDBus.prl
 rm -rf $RPM_BUILD_ROOT%{_prefix}/%{mingw64_target}/lib/pkgconfig
 
 # Add qtchooser support
@@ -605,12 +609,14 @@ ln -s %{mingw64_target}-qmake-qt5 $RPM_BUILD_ROOT%{_bindir}/mingw64-qmake-qt5
 %{_prefix}/%{mingw32_target}/bin/qt5/syncqt.pl
 %{_prefix}/%{mingw32_target}/bin/qt5/uic
 %{_prefix}/%{mingw32_target}/lib/libQt5Bootstrap.so.5*
+%{_prefix}/%{mingw32_target}/lib/libQt5BootstrapDBus.so.5*
 %{mingw32_datadir}/qt5/
 # not editable config files, so not using %%config here
 %{_sysconfdir}/xdg/qtchooser/mingw32-qt5.conf
 
 %files -n mingw32-qt5-qtbase-devel
 %{_prefix}/%{mingw32_target}/lib/libQt5Bootstrap.so
+%{_prefix}/%{mingw32_target}/lib/libQt5BootstrapDBus.so
 
 %files -n mingw32-qt5-qtbase-static
 %{mingw32_libdir}/libQt5Concurrent.a
@@ -737,12 +743,14 @@ ln -s %{mingw64_target}-qmake-qt5 $RPM_BUILD_ROOT%{_bindir}/mingw64-qmake-qt5
 %{_prefix}/%{mingw64_target}/bin/qt5/syncqt.pl
 %{_prefix}/%{mingw64_target}/bin/qt5/uic
 %{_prefix}/%{mingw64_target}/lib/libQt5Bootstrap.so.5*
+%{_prefix}/%{mingw64_target}/lib/libQt5BootstrapDBus.so.5*
 %{mingw64_datadir}/qt5/
 # not editable config files, so not using %%config here
 %{_sysconfdir}/xdg/qtchooser/mingw64-qt5.conf
 
 %files -n mingw64-qt5-qtbase-devel
 %{_prefix}/%{mingw64_target}/lib/libQt5Bootstrap.so
+%{_prefix}/%{mingw64_target}/lib/libQt5BootstrapDBus.so
 
 %files -n mingw64-qt5-qtbase-static
 %{mingw64_libdir}/libQt5Concurrent.a
@@ -761,6 +769,14 @@ ln -s %{mingw64_target}-qmake-qt5 $RPM_BUILD_ROOT%{_bindir}/mingw64-qmake-qt5
 
 
 %changelog
+* Sun Jan  5 2014 Yaakov Selkowitz <yselkowitz at users.sourceforge.net> - 5.2.0-2
+- Fix qmake to use .dll.a extension for implibs (avoids renaming hacks in
+  all mingw-qt5-* packages)
+- Force usage of system zlib in Qt5Bootstrap
+- Install shared libQt5BootstrapDBus for qdbuscpp2xml and qdbusxml2cpp
+- Fix QMAKE_LIBS_NETWORK for static linkage
+- Closes RHBZ #1048677
+
 * Sun Jan  5 2014 Erik van Pienbroek <epienbro at fedoraproject.org> - 5.2.0-1
 - Update to 5.2.0
 - Use the generic win32-g++ mkspecs profile instead of win32-g++-cross
diff --git a/qt5-dont-build-host-libs-static.patch b/qt5-dont-build-host-libs-static.patch
index 4ea6262..9e430e4 100644
--- a/qt5-dont-build-host-libs-static.patch
+++ b/qt5-dont-build-host-libs-static.patch
@@ -9,3 +9,11 @@
  
  host_build {
      QT -= gui   # no host module will ever use gui
+--- src/tools/bootstrap-dbus/bootstrap-dbus.pro.orig	2013-12-08 11:09:47.000000000 -0600
++++ src/tools/bootstrap-dbus/bootstrap-dbus.pro	2014-01-05 23:06:13.575543400 -0600
+@@ -30,4 +30,4 @@
+     ../../dbus/qdbusunixfiledescriptor.cpp
+ 
+ lib.CONFIG = dummy_install
+-INSTALLS = lib
++INSTALLS += lib
diff --git a/qt5-qmake-implib-dll-a.patch b/qt5-qmake-implib-dll-a.patch
new file mode 100644
index 0000000..23b6d70
--- /dev/null
+++ b/qt5-qmake-implib-dll-a.patch
@@ -0,0 +1,20 @@
+--- a/qmake/generators/win32/mingw_make.cpp	2013-08-25 13:04:06.000000000 -0500
++++ b/qmake/generators/win32/mingw_make.cpp	2014-01-02 01:24:31.640046700 -0600
+@@ -71,7 +71,7 @@ QString MingwMakefileGenerator::escapeDe
+ 
+ QString MingwMakefileGenerator::getLibTarget()
+ {
+-    return QString("lib" + project->first("TARGET") + project->first("TARGET_VERSION_EXT") + ".a");
++    return QString("lib" + project->first("TARGET") + project->first("TARGET_VERSION_EXT") + ".dll.a");
+ }
+ 
+ bool MingwMakefileGenerator::findLibraries()
+@@ -274,7 +274,7 @@ void MingwMakefileGenerator::init()
+         if(!project->first("DESTDIR").isEmpty())
+             destDir = Option::fixPathToTargetOS(project->first("DESTDIR") + Option::dir_sep, false, false);
+         project->values("MINGW_IMPORT_LIB").prepend(destDir + "lib" + project->first("TARGET")
+-                                                         + project->first("TARGET_VERSION_EXT") + ".a");
++                                                         + project->first("TARGET_VERSION_EXT") + ".dll.a");
+ 	project->values("QMAKE_LFLAGS").append(QString("-Wl,--out-implib,") + project->first("MINGW_IMPORT_LIB"));
+     }
+ 
diff --git a/qt5-use-system-zlib-in-host-libs.patch b/qt5-use-system-zlib-in-host-libs.patch
new file mode 100644
index 0000000..eccd9e4
--- /dev/null
+++ b/qt5-use-system-zlib-in-host-libs.patch
@@ -0,0 +1,11 @@
+--- a/src/tools/bootstrap/bootstrap.pro	2014-01-01 13:22:42.367935800 -0600
++++ b/src/tools/bootstrap/bootstrap.pro	2014-01-02 23:38:20.707687700 -0600
+@@ -148,7 +148,7 @@ macx {
+ 
+ *-g++*: QMAKE_CXXFLAGS += -ffunction-sections
+ 
+-if(contains(QT_CONFIG, zlib)|cross_compile):include(../../3rdparty/zlib.pri)
++if(contains(QT_CONFIG, zlib)):include(../../3rdparty/zlib.pri)
+ else:include(../../3rdparty/zlib_dependency.pri)
+ 
+ win32:LIBS += -luser32 -lole32 -ladvapi32
diff --git a/qt5-use-win32-g++-mkspecs-profile.patch b/qt5-use-win32-g++-mkspecs-profile.patch
index 8743e34..cef490f 100644
--- a/qt5-use-win32-g++-mkspecs-profile.patch
+++ b/qt5-use-win32-g++-mkspecs-profile.patch
@@ -28,9 +28,10 @@
  QMAKE_LIBS              =
 -QMAKE_LIBS_CORE         = -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32
 -QMAKE_LIBS_GUI          = -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lws2_32 -lole32 -luuid -luser32 -ladvapi32
+-QMAKE_LIBS_NETWORK      = -lws2_32
 +QMAKE_LIBS_CORE         = -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32 -lz -lpcre16
 +QMAKE_LIBS_GUI          = -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lws2_32 -lole32 -luuid -luser32 -ladvapi32 -ljpeg -lpng
- QMAKE_LIBS_NETWORK      = -lws2_32
++QMAKE_LIBS_NETWORK      = -lws2_32 -lcrypt32 -ldnsapi
  QMAKE_LIBS_OPENGL       = -lglu32 -lopengl32 -lgdi32 -luser32
 -QMAKE_LIBS_OPENGL_ES2   = -llibEGL -llibGLESv2 -lgdi32 -luser32
 -QMAKE_LIBS_OPENGL_ES2_DEBUG = -llibEGLd -llibGLESv2d -lgdi32 -luser32


More information about the scm-commits mailing list