[mingw32-qt/f16] Update to 4.8.1 and make QSSL work (RHBZ #813064)

Erik van Pienbroek epienbro at fedoraproject.org
Tue May 1 15:05:18 UTC 2012


commit e6ead3885f8f722b6c6529552a3c94ea6e42a9e9
Author: Erik van Pienbroek <epienbro at fedoraproject.org>
Date:   Thu Apr 19 18:56:38 2012 +0200

    Update to 4.8.1 and make QSSL work (RHBZ #813064)

 .gitignore                         |    1 +
 mingw32-qt.spec                    |   57 +++++++++++++++++++++++++++++++++++-
 qt-4.7.3-fix-loading-openssl.patch |   35 ++++++++++++++++++++++
 sources                            |    2 +-
 4 files changed, 93 insertions(+), 2 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index ed919ef..667e2f5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@
 /qt-everywhere-opensource-src-4.7.4.tar.gz
 /qt-everywhere-opensource-src-4.8.0-rc1.tar.gz
 /qt-everywhere-opensource-src-4.8.0.tar.gz
+/qt-everywhere-opensource-src-4.8.1.tar.gz
diff --git a/mingw32-qt.spec b/mingw32-qt.spec
index ce071f0..29e7c48 100644
--- a/mingw32-qt.spec
+++ b/mingw32-qt.spec
@@ -6,8 +6,11 @@
 
 %global platform win32-g++-cross
 
+# Helper macro to retrieve the name of the openssl library
+%global openssl_soname %(rpm -ql mingw32-openssl | grep -Eo 'libssl.*$' | grep -Eo '[0-9]+')
+
 Name:           mingw32-qt
-Version:        4.8.0
+Version:        4.8.1
 Release:        1%{?pre}%{?dist}
 Summary:        Qt for Windows
 
@@ -27,6 +30,9 @@ Patch10:        mingw32-qt-4.8.0-no-webkit-tests.patch
 # The debug build tries to link against libdbus-1d which doesn't exist
 Patch15:        qt-dbus-dont-link-to-dbus-1d.patch
 
+# Openssl is loaded at runtime
+Patch19:         qt-4.7.3-fix-loading-openssl.patch
+
 BuildArch:      noarch
 
 BuildRequires:  mingw32-filesystem >= 68
@@ -65,6 +71,12 @@ Fedora Windows cross-compiler.
 
 %patch10 -p1 -b .no_webkit_tests
 %patch15 -p0
+%patch19 -p1
+
+# Patch 19 (openssl) needs an additional change
+# qt loads openssl libraries (ssleay32, libeay32)  at runtime, but they are called libssl-OPENSSL_SONAME
+# and libcrypto-OPENSSL_SONAME in our cross build, so qt is patched to look for them additionally
+sed -i "s/OPENSSL_SONAME/%{openssl_soname}/" src/network/ssl/qsslsocket_openssl_symbols.cpp
 
 # Cross-compilation qmake target.
 mkdir mkspecs/%{platform}
@@ -205,6 +217,10 @@ rm -rf $RPM_BUILD_ROOT%{_mingw32_prefix}/imports
 %{_mingw32_bindir}/QtTestd4.dll
 %{_mingw32_bindir}/QtWebKit4.dll
 %{_mingw32_bindir}/QtWebKitd4.dll
+%{_mingw32_libdir}/libQAxContainer.a
+%{_mingw32_libdir}/libQAxContainerd.a
+%{_mingw32_libdir}/libQAxServer.a
+%{_mingw32_libdir}/libQAxServerd.a
 %{_mingw32_libdir}/libQt3Support4.a
 %{_mingw32_libdir}/libQt3Supportd4.a
 %{_mingw32_libdir}/libQtCore4.a
@@ -298,6 +314,41 @@ rm -rf $RPM_BUILD_ROOT%{_mingw32_prefix}/imports
 %{_mingw32_libdir}/qt4/plugins/sqldrivers/qsqlited4.dll
 %{_mingw32_libdir}/qt4/plugins/sqldrivers/qsqlodbc4.dll
 %{_mingw32_libdir}/qt4/plugins/sqldrivers/qsqlodbcd4.dll
+%{_mingw32_libdir}/pkgconfig/Qt3Support.pc
+%{_mingw32_libdir}/pkgconfig/Qt3Supportd.pc
+%{_mingw32_libdir}/pkgconfig/QtCore.pc
+%{_mingw32_libdir}/pkgconfig/QtCored.pc
+%{_mingw32_libdir}/pkgconfig/QtDBus.pc
+%{_mingw32_libdir}/pkgconfig/QtDBusd.pc
+%{_mingw32_libdir}/pkgconfig/QtDeclarative.pc
+%{_mingw32_libdir}/pkgconfig/QtDeclaratived.pc
+%{_mingw32_libdir}/pkgconfig/QtGui.pc
+%{_mingw32_libdir}/pkgconfig/QtGuid.pc
+%{_mingw32_libdir}/pkgconfig/QtMultimedia.pc
+%{_mingw32_libdir}/pkgconfig/QtMultimediad.pc
+%{_mingw32_libdir}/pkgconfig/QtNetwork.pc
+%{_mingw32_libdir}/pkgconfig/QtNetworkd.pc
+%{_mingw32_libdir}/pkgconfig/QtOpenGL.pc
+%{_mingw32_libdir}/pkgconfig/QtOpenGLd.pc
+%{_mingw32_libdir}/pkgconfig/QtScript.pc
+%{_mingw32_libdir}/pkgconfig/QtScriptTools.pc
+%{_mingw32_libdir}/pkgconfig/QtScriptToolsd.pc
+%{_mingw32_libdir}/pkgconfig/QtScriptd.pc
+%{_mingw32_libdir}/pkgconfig/QtSql.pc
+%{_mingw32_libdir}/pkgconfig/QtSqld.pc
+%{_mingw32_libdir}/pkgconfig/QtSvg.pc
+%{_mingw32_libdir}/pkgconfig/QtSvgd.pc
+%{_mingw32_libdir}/pkgconfig/QtTest.pc
+%{_mingw32_libdir}/pkgconfig/QtTestd.pc
+%{_mingw32_libdir}/pkgconfig/QtWebKit.pc
+%{_mingw32_libdir}/pkgconfig/QtWebKitd.pc
+%{_mingw32_libdir}/pkgconfig/QtXml.pc
+%{_mingw32_libdir}/pkgconfig/QtXmlPatterns.pc
+%{_mingw32_libdir}/pkgconfig/QtXmlPatternsd.pc
+%{_mingw32_libdir}/pkgconfig/QtXmld.pc
+%{_mingw32_libdir}/pkgconfig/qtmain.pc
+%{_mingw32_libdir}/pkgconfig/qtmaind.pc
+%{_mingw32_includedir}/ActiveQt/
 %{_mingw32_includedir}/Qt/
 %{_mingw32_includedir}/Qt3Support/
 %{_mingw32_includedir}/QtCore/
@@ -319,6 +370,10 @@ rm -rf $RPM_BUILD_ROOT%{_mingw32_prefix}/imports
 
 
 %changelog
+* Mon Apr 16 2012 Erik van Pienbroek <epienbro at fedoraproject.org> - 4.8.1-1
+- Update to 4.8.1
+- Make QSSL work (patch from Dominik Schmidt, RHBZ #813064)
+
 * Wed Dec 21 2011 Erik van Pienbroek <epienbro at fedoraproject.org> - 4.8.0-1
 - Update to 4.8.0
 
diff --git a/qt-4.7.3-fix-loading-openssl.patch b/qt-4.7.3-fix-loading-openssl.patch
new file mode 100644
index 0000000..26fb386
--- /dev/null
+++ b/qt-4.7.3-fix-loading-openssl.patch
@@ -0,0 +1,35 @@
+diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp
+index a4cc3c4..5e052ac 100644
+--- a/src/network/ssl/qsslsocket_openssl_symbols.cpp
++++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp
+@@ -369,14 +369,27 @@ static QPair<QSystemLibrary*, QSystemLibrary*> loadOpenSslWin32()
+     if (!ssleay32->load(false)) {
+         // Cannot find ssleay32.dll
+         delete ssleay32;
+-        return pair;
++        ssleay32 = new QSystemLibrary(QLatin1String("libssl-OPENSSL_SONAME"));
++        if (!ssleay32->load(false)) {
++            // Cannot find libssl-OPENSSL_SONAME.dll
++            // in our cross-build that's the same as ssleay32.dll
++            delete ssleay32;
++            return pair;
++        }
+     }
+
+     QSystemLibrary *libeay32 = new QSystemLibrary(QLatin1String("libeay32"));
+     if (!libeay32->load(false)) {
+-        delete ssleay32;
++        // Cannot find libeay32.dll
+         delete libeay32;
+-        return pair;
++        libeay32 = new QSystemLibrary(QLatin1String("libcrypto-OPENSSL_SONAME"));
++        if (!libeay32->load(false)) {
++            // Cannot find libcrypto-OPENSSL_SONAME.dll
++            // in our cross-build that's the same as libeay32.dll
++            delete libeay32;
++            delete ssleay32;
++            return pair;
++        }
+     }
+
+     pair.first = ssleay32;
diff --git a/sources b/sources
index fd3c0a4..d0aea56 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-e8a5fdbeba2927c948d9f477a6abe904  qt-everywhere-opensource-src-4.8.0.tar.gz
+7960ba8e18ca31f0c6e4895a312f92ff  qt-everywhere-opensource-src-4.8.1.tar.gz


More information about the scm-commits mailing list