summaryrefslogtreecommitdiff
path: root/extra/qt
diff options
context:
space:
mode:
Diffstat (limited to 'extra/qt')
-rw-r--r--extra/qt/PKGBUILD13
-rw-r--r--extra/qt/declarative-fix-sigbus.patch33
2 files changed, 43 insertions, 3 deletions
diff --git a/extra/qt/PKGBUILD b/extra/qt/PKGBUILD
index 1db4ad683..be87f4b35 100644
--- a/extra/qt/PKGBUILD
+++ b/extra/qt/PKGBUILD
@@ -6,7 +6,7 @@ pkgbase=qt
pkgname=('qt' 'qt-private-headers')
pkgver=4.8.1
pkgrel=2
-arch=('i686' 'x86_64')
+arch=('i686' 'x86_64' 'mips64el')
url='http://qt-project.org/'
license=('GPL3' 'LGPL')
makedepends=('libtiff' 'libpng' 'libmng' 'sqlite' 'ca-certificates' 'glib2' 'dbus'
@@ -21,7 +21,8 @@ source=("http://get.qt.nokia.com/qt/source/${_pkgfqn}.tar.gz"
'gcc47.patch'
'improve-cups-support.patch'
'fix-buffer-overflow.patch'
- 'fix-cursortox-crash.patch')
+ 'fix-cursortox-crash.patch'
+ 'declarative-fix-sigbus.patch')
md5sums=('7960ba8e18ca31f0c6e4895a312f92ff'
'fc211414130ab2764132e7370f8e5caa'
'85179f5e0437514f8639957e1d8baf62'
@@ -30,11 +31,15 @@ md5sums=('7960ba8e18ca31f0c6e4895a312f92ff'
'd8a0e81075b290ddc18ecd33b9b7ee22'
'c439c7731c25387352d8453ca7574971'
'c493dca3c11fffb9af6719c6735cb0d2'
- '13171b6aec2f240be05feb968178f70e')
+ '13171b6aec2f240be05feb968178f70e'
+ 'aac963d05a9d5733e2bfce9e26607f51')
build() {
cd "${srcdir}"/${_pkgfqn}
+ # MIPS N32-specific fix, shouldn't affect correctness on other platforms.
+ patch -Np1 -i "${srcdir}/declarative-fix-sigbus.patch"
+
patch -p1 -i "${srcdir}"/gcc47.patch
# (FS#29158)
@@ -49,6 +54,8 @@ build() {
export QT4DIR="${srcdir}"/${_pkgfqn}
export LD_LIBRARY_PATH=${QT4DIR}/lib:${LD_LIBRARY_PATH}
+ [ "${CARCH}" = "mips64el" ] && export CXXFLAGS="${CXXFLAGS} -fpermissive"
+
sed -i "s|-O2|${CXXFLAGS}|" mkspecs/common/{g++,gcc}-base.conf
sed -i "/^QMAKE_LFLAGS_RPATH/s| -Wl,-rpath,||g" mkspecs/common/gcc-base-unix.conf
sed -i "/^QMAKE_LFLAGS\s/s|+=|+= ${LDFLAGS}|g" mkspecs/common/gcc-base.conf
diff --git a/extra/qt/declarative-fix-sigbus.patch b/extra/qt/declarative-fix-sigbus.patch
new file mode 100644
index 000000000..0d446fce5
--- /dev/null
+++ b/extra/qt/declarative-fix-sigbus.patch
@@ -0,0 +1,33 @@
+--- qt-everywhere-opensource-src-4.8.0.orig/src/declarative/qml/qdeclarativevmemetaobject.cpp 2012-02-04 21:23:56.573395948 +0100
++++ qt-everywhere-opensource-src-4.8.0/src/declarative/qml/qdeclarativevmemetaobject.cpp 2012-02-04 23:32:44.900073230 +0100
+@@ -39,6 +39,7 @@
+ **
+ ****************************************************************************/
+
++#include <cstring>
+ #include "private/qdeclarativevmemetaobject_p.h"
+
+ #include "qdeclarative.h"
+@@ -191,10 +192,12 @@
+
+ double QDeclarativeVMEVariant::asDouble()
+ {
++ double result;
+ if (type != QMetaType::Double)
+ setValue(double(0));
+
+- return *(double *)(dataPtr());
++ std::memcpy(&result, (double *)(dataPtr()), sizeof(result));
++ return result;
+ }
+
+ const QString &QDeclarativeVMEVariant::asQString()
+@@ -298,7 +301,7 @@
+ cleanup();
+ type = QMetaType::Double;
+ }
+- *(double *)(dataPtr()) = v;
++ std::memcpy((double *)(dataPtr()), &v, sizeof(v));
+ }
+
+ void QDeclarativeVMEVariant::setValue(const QString &v)