Hello community,
here is the log from the commit of package libqt4.1378 for openSUSE:12.1:Update checked in at 2013-03-07 11:44:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:12.1:Update/libqt4.1378 (Old)
and /work/SRC/openSUSE:12.1:Update/.libqt4.1378.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libqt4.1378", Maintainer is ""
Changes:
--------
New Changes file:
--- /dev/null 2013-02-26 18:15:11.936010755 +0100
+++ /work/SRC/openSUSE:12.1:Update/.libqt4.1378.new/libqt4-devel-doc.changes 2013-03-07 11:44:06.000000000 +0100
@@ -0,0 +1,2057 @@
+-------------------------------------------------------------------
+Mon Feb 25 09:41:10 UTC 2013 - dmueller@suse.com
+
+- fix bnc#802634: information disclosure via QSharedMemory (CVE-2013-0254)
+ * libqt4-CVE-2013-0254.patch
+
+-------------------------------------------------------------------
+Mon Jan 7 16:09:50 UTC 2013 - dmueller@suse.com
+
+- Add cert-blacklist-more.diff, cert-blacklist-tuerktrust.diff:
+ * blacklist more evil certificates
+- Add weak-ssl-certificates.diff:
+ * blacklist weak certificates
+
+-------------------------------------------------------------------
+Mon Jan 7 12:38:48 UTC 2013 - dmueller@suse.com
+
+- enable linked support for OpenSSL
+
+-------------------------------------------------------------------
+Fri Jan 4 15:16:33 UTC 2013 - dmueller@suse.com
+
+- openssl-incompatibility-fix.diff: Fix wrong error reporting when using
+ a binary incompatible version of openSSL (bnc#797006, CVE-2012-6093)
+
+-------------------------------------------------------------------
+Thu Dec 27 12:31:57 UTC 2012 - dmueller@suse.com
+
+- add CVE-2012-5624.diff (CVE-2012-5624, bnc#793194)
+
+-------------------------------------------------------------------
+Thu Nov 15 18:01:13 UTC 2012 - hrvoje.senjan@gmail.com
+
+- add qt-everywhere-opensource-src-4.7.4-filter_event.patch from
+ upstream for fixing the "ghost taskbar" issue
+ (bnc#748908, kde#27546)
+
+-------------------------------------------------------------------
+Thu Oct 4 09:25:36 UTC 2012 - dmueller@suse.com
+
+- add disable-ssl-compression-by-default.diff:
+ * Disable compression by default to mitigate CRIME attack (CVE-2012-4929)
+
+-------------------------------------------------------------------
+Fri Jan 6 17:06:22 CET 2012 - dmueller@suse.de
+
+- add patch for rare stack based overflow in harbuzz parser
+ (bnc#739904, CVE-2011-3922).
+
+-------------------------------------------------------------------
+Wed Dec 14 00:26:42 CET 2011 - dmueller@suse.de
+
+- fix license to SUSE-LGPL-2.1-with-nokia-exception-1.1 or GPL-3.0 (bnc#736425)
+
+-------------------------------------------------------------------
+Tue Nov 22 12:11:29 UTC 2011 - llunak@suse.com
+
+- do not assert on QPixmap usage in non-GUI threads
+ if XInitThreads() has been called (bnc#731455)
+
+-------------------------------------------------------------------
+Fri Oct 21 16:25:23 CEST 2011 - mls@suse.de
+
+- do not use /usr/src/packages in specfile
+
+-------------------------------------------------------------------
+Fri Oct 21 12:11:43 CEST 2011 - tiwai@suse.de
+
+- disable IM for password entry (bnc#725471)
+
+-------------------------------------------------------------------
+Tue Oct 11 23:11:43 CEST 2011 - dmueller@suse.de
+
+- require the right QtWebKit version again
+
+-------------------------------------------------------------------
+Fri Oct 7 15:57:50 UTC 2011 - adrian@suse.de
+
+- fix arm assembler when using thumb2
+- disable neon support, seems we lack header definitions atm
+
+-------------------------------------------------------------------
+Fri Oct 7 08:17:25 UTC 2011 - coolo@suse.com
+
+- do not require specific QtWebKit versions - they are different now
+
+-------------------------------------------------------------------
+Thu Oct 6 11:24:29 UTC 2011 - coolo@suse.com
+
+- reenable fix for bnc#656144 - I reviewed the patch one more time
+
+-------------------------------------------------------------------
+Sun Sep 25 10:54:07 UTC 2011 - tittiatcoke@gmail.com
+
+- libQtWebKit4 is now delivered through its separate package,
+ therefore libqt4 should not build it from the qt4 sources anymore
+
+-------------------------------------------------------------------
+Sat Sep 17 14:27:00 UTC 2011 - embar@users.berlios.de
+
+- Add qt_lt.ts - Lithuanian translation (bnc#713143)
+
+-------------------------------------------------------------------
+Sat Sep 10 18:19:37 UTC 2011 - idonmez@suse.com
+
+- Revert fix for bnc#656144, it causes bnc#717127
+
+-------------------------------------------------------------------
+Thu Sep 8 10:18:57 CEST 2011 - dmueller@suse.de
+
+- blacklist DigiNotar intermediate certificates (bnc#714931)
+
+-------------------------------------------------------------------
+Tue Sep 6 09:59:13 UTC 2011 - coolo@suse.com
+
+- assume KDE session if KDE_FULL_SESSION is set as xatom
+- use Oxygen if kdelibs is installed (bnc#656144)
+
+-------------------------------------------------------------------
+Tue Sep 6 02:04:57 UTC 2011 - crrodriguez@opensuse.org
+
+- Respect user provided openssl.cnf,so configured engines
+ can be used automatically, requires no source changes, but
+ build with -DOPENSSL_LOAD_CONF see OPENSSL_config(3ssl) for
+ details
+
+-------------------------------------------------------------------
+Sat Sep 3 16:49:36 UTC 2011 - idonmez@suse.com
+
+- Remove executable permissions from *.cpp *.h files
+
+-------------------------------------------------------------------
+Fri Sep 2 07:57:17 UTC 2011 - stephan.binner@basyskom.de
+
+- update to 4.7.4 release (CVE-2011-3193, bnc#714984):
+ - Qt 4.7.4 is a bug-fix release. It maintains both forward and backward
+ compatibility (source and binary) with Qt 4.7.0. For more details,
+ refer to the online documentation included in this distribution. The
+ documentation is also available online:
+
+ http://qt.nokia.com/doc/4.7
+
+ A detailed list of the over 140 individual code bug fixes
+ since 4.7.3 can be found in the included changes-4.7.4 file.
+
+-------------------------------------------------------------------
+Fri Aug 19 21:22:49 CEST 2011 - dmueller@suse.de
+
+- add crashfix for broken fonts
+- remove patch which causes slow render paths (bnc#689489)
+- change a few defines to make merging of the snapshot
+ spec files easier
+- require make for qmake
+- build + install qvfb
+- refresh and rediff patches
+- remove konsole / nvidia font rendering workaround as
+ it causes regressions (bnc#689489)
+
+-------------------------------------------------------------------
+Mon Aug 15 04:28:53 UTC 2011 - crrodriguez@opensuse.org
+
+- Add fix for QTBUG-14985.
+
+-------------------------------------------------------------------
+Fri Aug 12 15:29:24 CEST 2011 - dmueller@suse.de
+
+- do not generate documentation in libqt4, it is supposed
+ to be in libqt4-devel-doc
+
+-------------------------------------------------------------------
+Thu Aug 11 19:29:31 UTC 2011 - aj@suse.de
+
+- Fix provides/obsoletes.
+- There are no jpegs, so remove line to make them non-executable.
+- Properly run fdupes in libqt4-devel-doc to save 29 MB.
+
+-------------------------------------------------------------------
+Thu Aug 11 10:13:06 CEST 2011 - munix9@googlemail.com
+
+- added libjscore.* from 3rdparty dir into libQtWebKit-devel package
+ (currently needed to compile eg. gambas3)
+
+-------------------------------------------------------------------
+Tue Aug 9 09:41:57 UTC 2011 - meissner@novell.com
+
+- run fdupes, images should not be executable
+
+-------------------------------------------------------------------
+Sat Jul 9 10:23:56 CEST 2011 - dmueller@suse.de
+
+- fix reading of tiff images with multiple samples (bnc#637275)
+
+-------------------------------------------------------------------
+Mon Jun 20 16:05:53 UTC 2011 - dmueller@suse.de
+
+- build a libqt4-private-headers-devel for qt-creator build
+
++++ 1860 more lines (skipped)
++++ between /dev/null
++++ and /work/SRC/openSUSE:12.1:Update/.libqt4.1378.new/libqt4-devel-doc.changes
New Changes file:
libqt4-sql-plugins.changes: same change
New Changes file:
libqt4.changes: same change
New:
----
0180-window-role.diff
0188-fix-moc-parser-same-name-header.diff
0191-listview-alternate-row-colors.diff
0195-compositing-properties.diff
0225-invalidate-tabbar-geometry-on-refresh.patch
CVE-2011-3922.diff
CVE-2012-5624.diff
assistant.png
assistant4.desktop
baselibs.conf
blacklist-diginotar-certs.diff
build-qvfb-tool.diff
cert-blacklist-more.diff
cert-blacklist-tuerktrust.diff
designer.png
designer4.desktop
disable-im-for-password.diff
disable-ssl-compression-by-default.diff
fix-arm-assembler-for-thumb2.diff
hppa_ldcw_fix.diff
hppa_unaligned_access_fix_458133.diff
libqt4-CVE-2013-0254.patch
libqt4-devel-doc.changes
libqt4-devel-doc.spec
libqt4-devel-doc.spec.in
libqt4-libtool-nodate.diff
libqt4-sql-plugins.changes
libqt4-sql-plugins.spec
libqt4-sql-plugins.spec.in
libqt4.changes
libqt4.spec
linguist.png
linguist4.desktop
link-tools-shared.diff
no-moc-date.diff
openssl-incompatibility-fix.diff
pass-compressed-mouse-events-through-filters.diff
plastik-default.diff
ppc64-webkit-link-fix.diff
pre_checkin.sh
qfatal-noreturn.diff
qsslsocket-QTBUG-14985.patch
qt-debug-timer.diff
qt-everywhere-opensource-src-4.7.4-filter_event.patch
qt-everywhere-opensource-src-4.7.4.tar.bz2
qt-never-strip.diff
qt4-fake-bold.patch
qt4config.desktop
qt_lt.ts
rcc-stable-dirlisting.diff
use-cups-default-print-settings-bnc552218.diff
use-freetype-default-legacy.diff
use-freetype-default.diff
weak-ssl-certificates.diff
webkit-ia64_s390x.patch
webkit-sparc64.diff
x11-init-threads.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libqt4-devel-doc.spec ++++++
#
# spec file for package libqt4-devel-doc
#
# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# nodebuginfo
Name: libqt4-devel-doc
BuildRequires: Mesa-devel
BuildRequires: alsa-devel
BuildRequires: cups-devel
BuildRequires: freeglut-devel
BuildRequires: gtk2-devel
BuildRequires: libjpeg-devel
BuildRequires: libpng-devel
BuildRequires: sqlite3-devel
%if 0%{?suse_version} > 1020
BuildRequires: fdupes
%endif
%if 0%{?suse_version}
BuildRequires: update-desktop-files
%endif
# COMMON-VERSION-BEGIN
# COMMON-VERSION-BEGIN
Version: 4.7.4
Release: 0
%define base_name libqt4
%define tar_version everywhere-opensource-src-%{version}
# COMMON-VERSION-END
# COMMON-VERSION-END
BuildRequires: libQtWebKit-devel >= %version
BuildRequires: libqt4-devel >= %version
Url: http://www.trolltech.com
Summary: Qt documentation
License: SUSE-LGPL-2.1-with-nokia-exception-1.1 or GPL-3.0
Group: Documentation/HTML
Requires: libqt4 = %version
Requires: libqt4-devel-doc-data = %version
Requires: libqt4-sql-sqlite >= %version
Provides: libqt4-examples = 4.4.0
Obsoletes: libqt4-examples < 4.4.0
Provides: qt-devel-doc = 4.4.0
Obsoletes: qt-devel-doc < 4.4.0
# COMMON-BEGIN
# COMMON-BEGIN
Source: qt-%tar_version.tar.bz2
# to get mtime of file:
Source1: libqt4.changes
Source2: baselibs.conf
Source10: qt4config.desktop
Source11: designer4.desktop
Source12: linguist4.desktop
Source13: assistant4.desktop
Source14: assistant.png
Source15: designer.png
Source16: linguist.png
Source17: qt_lt.ts
Patch2: qt-never-strip.diff
Patch3: plastik-default.diff
Patch6: use-freetype-default.diff
Patch1006: use-freetype-default-legacy.diff
Patch8: link-tools-shared.diff
Patch39: 0191-listview-alternate-row-colors.diff
Patch40: 0188-fix-moc-parser-same-name-header.diff
Patch43: 0195-compositing-properties.diff
Patch60: 0180-window-role.diff
Patch61: qt4-fake-bold.patch
Patch70: 0225-invalidate-tabbar-geometry-on-refresh.patch
Patch75: qt-debug-timer.diff
Patch87: qfatal-noreturn.diff
Patch101: no-moc-date.diff
Patch107: webkit-ia64_s390x.patch
Patch109: libqt4-libtool-nodate.diff
Patch113: ppc64-webkit-link-fix.diff
Patch118: rcc-stable-dirlisting.diff
Patch119: hppa_ldcw_fix.diff
Patch120: hppa_unaligned_access_fix_458133.diff
Patch121: webkit-sparc64.diff
Patch123: use-cups-default-print-settings-bnc552218.diff
Patch126: qsslsocket-QTBUG-14985.patch
Patch128: build-qvfb-tool.diff
Patch129: blacklist-diginotar-certs.diff
Patch130: fix-arm-assembler-for-thumb2.diff
Patch131: disable-im-for-password.diff
Patch132: CVE-2011-3922.diff
Patch133: x11-init-threads.diff
Patch134: qt-everywhere-opensource-src-4.7.4-filter_event.patch
Patch135: disable-ssl-compression-by-default.diff
Patch136: CVE-2012-5624.diff
Patch137: openssl-incompatibility-fix.diff
Patch138: weak-ssl-certificates.diff
Patch139: cert-blacklist-tuerktrust.diff
Patch140: cert-blacklist-more.diff
Patch141: libqt4-CVE-2013-0254.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%define common_options --opensource -fast -no-separate-debug-info -shared -xkb -xrender -xcursor -dbus-linked -xfixes -xrandr -xinerama -sm -no-nas-sound -no-rpath -system-libjpeg -system-libpng -accessibility -cups -stl -nis -system-zlib -prefix /usr -L %_libdir -libdir %_libdir -docdir %_docdir/%{base_name} -examplesdir %_libdir/qt4/examples -demosdir %_libdir/qt4/demos -plugindir %plugindir -translationdir /usr/share/qt4/translations -iconv -sysconfdir /etc/settings -datadir /usr/share/qt4/ -no-pch -reduce-relocations -exceptions -system-libtiff -glib -optimized-qmake -no-webkit -no-xmlpatterns -system-sqlite -qt3support -no-sql-mysql -importdir %plugindir/imports -xsync -xinput -gtkstyle
%define check_config \
grep '# define' src/corelib/global/qconfig.h | egrep -v 'QT_(ARCH|USE)'; \
if test -f /usr/share/qt4/mkspecs/qconfig.pri ; then \
diff -u /usr/share/qt4/mkspecs/qconfig.pri mkspecs/qconfig.pri || exit 1; \
fi \
%description
Qt is a set of libraries for developing applications.
This package contains base tools, like string, xml, and network
handling.
%prep
%define plugindir %_libdir/qt4/plugins
%setup -q -n qt-%tar_version
%patch2
%patch3
%if %suse_version > 1010
%patch6
%else
%patch1006
%endif
# needs rediffing
#%patch8
%patch39
%patch40
%patch43
%patch60
# bnc#374073 comment #8
# %patch61
%patch70
%patch75
%patch87
%patch101
# ### 47 rediff
# %patch107
%patch109
%patch113
%patch118 -p1
%ifarch hppa
%patch119
%patch120
%endif
%patch123
cp %{SOURCE17} translations/
%patch126
%patch128
%patch129 -p1
%patch130
%patch131 -p1
%patch132
%patch133
%patch134 -p1
%patch135 -p1
%patch136
%patch137
%patch138 -p1
%patch139 -p1
%patch140 -p1
%patch141 -p1
# ### 47 rediff
#%patch121 -p1
# be sure not to use them
rm -rf src/3rdparty/{libjpeg,freetype,libpng,zlib,libtiff,fonts}
# COMMON-END
# COMMON-END
%package -n qt4-x11-tools
Summary: C++ Program Library, Core Components
Group: System/Libraries
Requires: libqt4-x11 >= %version
%description -n qt4-x11-tools
Qt is a set of libraries for developing applications.
This package contains base tools, like string, xml, and network
handling.
%package data
%if %suse_version > 1110
BuildArch: noarch
%endif
Summary: C++ Program Library, Core Components
Group: System/Libraries
Requires: %name = %version
%description data
The architecture independent data files for the documentation.
%build
%ifarch ppc64
export RPM_OPT_FLAGS="$RPM_OPT_FLAGS -mminimal-toc"
%endif
export QTDIR=$PWD
export PATH=$PWD/bin:$PATH
export LD_LIBRARY_PATH=$PWD/lib/
export CXXFLAGS="$RPM_OPT_FLAGS"
export CFLAGS="$RPM_OPT_FLAGS"
export MAKEFLAGS="%{?_smp_mflags}"
%ifarch sparc64
platform="-platform linux-g++-64"
%else
platform=""
%endif
echo yes | ./configure %common_options $platform \
-webkit -xmlpatterns -no-sql-sqlite -no-sql-sqlite2 -no-sql-mysql
%check_config
%if 0
make %{?_smp_mflags} sub-src
%else # simply use the binaries from the -devel package instead of building it again
rpm -ql libqt4-devel | grep %{_bindir}/ | sed 's#%{_bindir}/##' | \
( while read file; do test -e bin/$file || ln -s %{_bindir}/$file bin/ ; done )
rpm -ql libqt4-devel | grep %{_libdir}/lib | sed 's#%{_libdir}/##' | \
( while read file; do test -e lib/$file || ln -s %{_libdir}/$file lib/ ; done )
rpm -ql libQtWebKit-devel | grep %{_bindir}/ | sed 's#%{_bindir}/##' | \
( while read file; do test -e bin/$file || ln -s %{_bindir}/$file bin/ ; done )
rpm -ql libQtWebKit-devel | grep %{_libdir}/lib | sed 's#%{_libdir}/##' | \
( while read file; do test -e lib/$file || ln -s %{_libdir}/$file lib/ ; done )
%endif
make %{?_smp_mflags} -C tools/assistant
make %{?_smp_mflags} -C demos
make %{?_smp_mflags} -C examples
make %{?_smp_mflags} docs
%install
export QTDIR=$PWD
make INSTALL_ROOT=$RPM_BUILD_ROOT -C tools/assistant install
make INSTALL_ROOT=$RPM_BUILD_ROOT -C demos install
make INSTALL_ROOT=$RPM_BUILD_ROOT -C examples install
mv $RPM_BUILD_ROOT/%_libdir/qt4/examples/painting/svgviewer/svgviewer $RPM_BUILD_ROOT/%_bindir
mv $RPM_BUILD_ROOT/%_libdir/qt4/demos/browser/browser $RPM_BUILD_ROOT/%_bindir/qt4-browser
ln -s %_bindir/svgviewer $RPM_BUILD_ROOT/%_libdir/qt4/examples/painting/svgviewer/svgviewer
ln -s %_bindir/qt4-browser $RPM_BUILD_ROOT/%_libdir/qt4/demos/browser/browser
# htmldocs are not generated - why?
for d in docimages qchdocs htmldocs ; do
make INSTALL_ROOT=$RPM_BUILD_ROOT install_${d}
done
# remove some executable flags from image files:
find $RPM_BUILD_ROOT/usr/share -name "*.png" -print0 | xargs -0 chmod a-x
find $RPM_BUILD_ROOT/usr/share -name "*.css" -print0 | xargs -0 chmod a-x
find $RPM_BUILD_ROOT/usr/share -name "*.js" -print0 | xargs -0 chmod a-x
# remove executable flags from source files:
find %{buildroot}/usr/%_lib/qt4/examples -name "*.h" -print0 | xargs -0 chmod a-x
find %{buildroot}/usr/%_lib/qt4/examples -name "*.cpp" -print0 | xargs -0 chmod a-x
# reduce fileconflicts
for f in $(rpm -ql libqt4-devel) $(rpm -ql libqt4-x11) $(rpm -ql libqt4); do
test -f $RPM_BUILD_ROOT/$f && rm $RPM_BUILD_ROOT/$f
done
find $RPM_BUILD_ROOT -type d -print0 | xargs -0 --no-run-if-empty rmdir --ignore-fail-on-non-empty
# argggh, qmake is such a piece of <censored>
mkdir -p $RPM_BUILD_ROOT/%_libdir/pkgconfig
find $RPM_BUILD_ROOT/%_libdir -type f -name '*.pc' -exec mv {} $RPM_BUILD_ROOT/%_libdir/pkgconfig \;
# fix more qmake errors
mkdir -p $RPM_BUILD_ROOT/%_libdir/qt
find $RPM_BUILD_ROOT/%_libdir -type f -name '*la' -print -exec perl -pi -e 's, -L%{_builddir}/\S+,,g' {} \;
find $RPM_BUILD_ROOT/%_libdir/pkgconfig -type f -name '*pc' -print -exec perl -pi -e 's, -L%{_builddir}/\S+,,g' {} \;
mkdir -p $RPM_BUILD_ROOT/%_docdir/%base_name/
ln -s %_libdir/qt4/demos $RPM_BUILD_ROOT/%_docdir/%base_name/demos
ln -s %_libdir/qt4/examples $RPM_BUILD_ROOT/%_docdir/%base_name/examples
rm -f $RPM_BUILD_ROOT/%_libdir/libQt{3,A,C,G,H,N,S,T}*
rm -f $RPM_BUILD_ROOT/%_libdir/libQtXml.*
rm -rf $RPM_BUILD_ROOT/%_libdir/qt4/plugins
%if %suse_version > 1020
%fdupes $RPM_BUILD_ROOT/usr/include
%fdupes $RPM_BUILD_ROOT/usr/%_lib/qt4/
%fdupes $RPM_BUILD_ROOT%_docdir/%base_name
%endif
# remove some executable flags from source files:
chmod ugo-x %{buildroot}/usr/%_lib/qt4/examples/tutorials/modelview/*/*.h
chmod ugo-x %{buildroot}/usr/%_lib/qt4/examples/tutorials/modelview/*/*.cpp
%suse_update_desktop_file -i assistant4 Qt Development Documentation
%clean
rm -rf $RPM_BUILD_ROOT
# no baselibs supplements for older distros
%if %suse_version < 1110
sed -i -e 's, supplements .*,,' $RPM_SOURCE_DIR/baselibs.conf
%endif
%files
%defattr(-,root,root,755)
/usr/bin/assistant
/usr/bin/qcollectiongenerator
/usr/bin/qtdemo
/usr/share/applications/assistant4.desktop
/usr/share/pixmaps/assistant.png
#/usr/share/qt4/translations/assistant_*.qm
/usr/%_lib/qt4/demos
%dir %_docdir/%base_name
%_docdir/%base_name/demos
%_docdir/%base_name/examples
%_libdir/qt4/examples
%files -n qt4-x11-tools
%defattr(-,root,root,755)
/usr/bin/svgviewer
/usr/bin/qt4-browser
%files data
%defattr(-,root,root,755)
%dir /usr/share/doc/packages/%base_name
/usr/share/doc/packages/%base_name/qch
/usr/share/doc/packages/%base_name/html*
/usr/share/doc/packages/%base_name/src
%changelog
++++++ libqt4-sql-plugins.spec ++++++
#
# spec file for package libqt4-sql-plugins
#
# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# nodebuginfo
Name: libqt4-sql-plugins
BuildRequires: Mesa-devel
BuildRequires: alsa-devel
BuildRequires: cups-devel
BuildRequires: gtk2-devel
BuildRequires: libmysqlclient-devel
BuildRequires: pkgconfig
BuildRequires: postgresql-devel
BuildRequires: unixODBC-devel
%if 0%{?suse_version}
BuildRequires: update-desktop-files
%endif
# COMMON-VERSION-BEGIN
# COMMON-VERSION-BEGIN
Version: 4.7.4
Release: 0
%define base_name libqt4
%define tar_version everywhere-opensource-src-%{version}
# COMMON-VERSION-END
# COMMON-VERSION-END
BuildRequires: libqt4-devel >= %version
Url: http://www.trolltech.com
Summary: Qt 4 SQL related libraries
License: SUSE-LGPL-2.1-with-nokia-exception-1.1 or GPL-3.0
Group: System/Libraries
# COMMON-BEGIN
# COMMON-BEGIN
Source: qt-%tar_version.tar.bz2
# to get mtime of file:
Source1: libqt4.changes
Source2: baselibs.conf
Source10: qt4config.desktop
Source11: designer4.desktop
Source12: linguist4.desktop
Source13: assistant4.desktop
Source14: assistant.png
Source15: designer.png
Source16: linguist.png
Source17: qt_lt.ts
Patch2: qt-never-strip.diff
Patch3: plastik-default.diff
Patch6: use-freetype-default.diff
Patch1006: use-freetype-default-legacy.diff
Patch8: link-tools-shared.diff
Patch39: 0191-listview-alternate-row-colors.diff
Patch40: 0188-fix-moc-parser-same-name-header.diff
Patch43: 0195-compositing-properties.diff
Patch60: 0180-window-role.diff
Patch61: qt4-fake-bold.patch
Patch70: 0225-invalidate-tabbar-geometry-on-refresh.patch
Patch75: qt-debug-timer.diff
Patch87: qfatal-noreturn.diff
Patch101: no-moc-date.diff
Patch107: webkit-ia64_s390x.patch
Patch109: libqt4-libtool-nodate.diff
Patch113: ppc64-webkit-link-fix.diff
Patch118: rcc-stable-dirlisting.diff
Patch119: hppa_ldcw_fix.diff
Patch120: hppa_unaligned_access_fix_458133.diff
Patch121: webkit-sparc64.diff
Patch123: use-cups-default-print-settings-bnc552218.diff
Patch126: qsslsocket-QTBUG-14985.patch
Patch128: build-qvfb-tool.diff
Patch129: blacklist-diginotar-certs.diff
Patch130: fix-arm-assembler-for-thumb2.diff
Patch131: disable-im-for-password.diff
Patch132: CVE-2011-3922.diff
Patch133: x11-init-threads.diff
Patch134: qt-everywhere-opensource-src-4.7.4-filter_event.patch
Patch135: disable-ssl-compression-by-default.diff
Patch136: CVE-2012-5624.diff
Patch137: openssl-incompatibility-fix.diff
Patch138: weak-ssl-certificates.diff
Patch139: cert-blacklist-tuerktrust.diff
Patch140: cert-blacklist-more.diff
Patch141: libqt4-CVE-2013-0254.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%define common_options --opensource -fast -no-separate-debug-info -shared -xkb -xrender -xcursor -dbus-linked -xfixes -xrandr -xinerama -sm -no-nas-sound -no-rpath -system-libjpeg -system-libpng -accessibility -cups -stl -nis -system-zlib -prefix /usr -L %_libdir -libdir %_libdir -docdir %_docdir/%{base_name} -examplesdir %_libdir/qt4/examples -demosdir %_libdir/qt4/demos -plugindir %plugindir -translationdir /usr/share/qt4/translations -iconv -sysconfdir /etc/settings -datadir /usr/share/qt4/ -no-pch -reduce-relocations -exceptions -system-libtiff -glib -optimized-qmake -no-webkit -no-xmlpatterns -system-sqlite -qt3support -no-sql-mysql -importdir %plugindir/imports -xsync -xinput -gtkstyle
%define check_config \
grep '# define' src/corelib/global/qconfig.h | egrep -v 'QT_(ARCH|USE)'; \
if test -f /usr/share/qt4/mkspecs/qconfig.pri ; then \
diff -u /usr/share/qt4/mkspecs/qconfig.pri mkspecs/qconfig.pri || exit 1; \
fi \
%description
Qt is a set of libraries for developing applications.
This package contains base tools, like string, xml, and network
handling.
%prep
%define plugindir %_libdir/qt4/plugins
%setup -q -n qt-%tar_version
%patch2
%patch3
%if %suse_version > 1010
%patch6
%else
%patch1006
%endif
# needs rediffing
#%patch8
%patch39
%patch40
%patch43
%patch60
# bnc#374073 comment #8
# %patch61
%patch70
%patch75
%patch87
%patch101
# ### 47 rediff
# %patch107
%patch109
%patch113
%patch118 -p1
%ifarch hppa
%patch119
%patch120
%endif
%patch123
cp %{SOURCE17} translations/
%patch126
%patch128
%patch129 -p1
%patch130
%patch131 -p1
%patch132
%patch133
%patch134 -p1
%patch135 -p1
%patch136
%patch137
%patch138 -p1
%patch139 -p1
%patch140 -p1
%patch141 -p1
# ### 47 rediff
#%patch121 -p1
# be sure not to use them
rm -rf src/3rdparty/{libjpeg,freetype,libpng,zlib,libtiff,fonts}
# COMMON-END
# COMMON-END
%package -n libqt4-sql-unixODBC
Summary: Qt 4 unixODBC plugin
Group: Development/Libraries/C and C++
Requires: libqt4-sql = %version
Provides: libqt4_sql_backend = %version
Obsoletes: qt-sql-unixODBC < 4.6.0
Provides: qt-sql-unixODBC = 4.6.0
%description -n libqt4-sql-unixODBC
Qt unixODBC plugin to support databases via unixODBC within Qt
applications.
%package -n libqt4-sql-postgresql
Summary: Qt 4 PostgreSQL plugin
Group: Development/Libraries/C and C++
Requires: libqt4-sql = %version
Provides: libqt4_sql_backend = %version
Obsoletes: qt-sql-postgresql < 4.6.0
Provides: qt-sql-postgresql = 4.6.0
%description -n libqt4-sql-postgresql
Qt SQL plugin to support PostgreSQL servers in Qt applications.
%package -n libqt4-sql-mysql
Summary: Qt 4 MySQL support
Group: Development/Libraries/C and C++
Requires: libqt4-sql = %version
Provides: libqt4_sql_backend = %version
Obsoletes: qt-sql-mysql < 4.6.0
Provides: qt-sql-mysql = 4.6.0
%description -n libqt4-sql-mysql
A plugin to support MySQL server in Qt applications.
%build
export QTDIR=$PWD
export PATH=$PWD/bin:$PATH
export LD_LIBRARY_PATH=$PWD/lib/
%ifarch ppc64
export RPM_OPT_FLAGS="$RPM_OPT_FLAGS -mminimal-toc"
%endif
export CXXFLAGS="$RPM_OPT_FLAGS"
export CFLAGS="$RPM_OPT_FLAGS"
export MAKEFLAGS="%{?_smp_mflags}"
%ifarch sparc64
platform="-platform linux-g++-64"
%else
platform=""
%endif
echo yes | ./configure %common_options $platform \
-no-webkit -no-xmlpatterns -nomake examples \
-plugin-sql-psql -I/usr/include -I/usr/include/pgsql/ -I/usr/include/pgsql/server \
-plugin-sql-odbc \
-plugin-sql-mysql -I/usr/include/mysql/ -no-sql-sqlite -no-sql-sqlite2
%if 0
make %{?_smp_mflags} sub-src
%else
rpm -ql libqt4-devel | grep %{_bindir}/ | sed 's#%{_bindir}/##' | \
( while read file; do test -e bin/$file || ln -s %{_bindir}/$file bin/ ; done )
rpm -ql libqt4-devel | grep %{_libdir}/lib | sed 's#%{_libdir}/##' | \
( while read file; do test -e lib/$file || ln -s %{_libdir}/$file lib/ ; done )
make %{?_smp_mflags} -C src/sql
make %{?_smp_mflags} -C src/plugins/sqldrivers
%endif
%install
export QTDIR=$PWD
%if 0
make INSTALL_ROOT=$RPM_BUILD_ROOT -C src install_subtargets
%else
make INSTALL_ROOT=$RPM_BUILD_ROOT -C src/sql install
make INSTALL_ROOT=$RPM_BUILD_ROOT -C src/plugins/sqldrivers install
%endif
# argggh, qmake is such a piece of <censored>
mkdir -p $RPM_BUILD_ROOT/%_libdir/pkgconfig
find $RPM_BUILD_ROOT/%_libdir -type f -name '*.pc' -exec mv {} $RPM_BUILD_ROOT/%_libdir/pkgconfig \;
# fix more qmake errors
mkdir -p $RPM_BUILD_ROOT/%_libdir/qt
find $RPM_BUILD_ROOT/%_libdir -type f -name '*la' -print -exec perl -pi -e 's, -L%{_builddir}/\S+,,g' {} \;
find $RPM_BUILD_ROOT/%_libdir/pkgconfig -type f -name '*pc' -print -exec perl -pi -e 's, -L%{_builddir}/\S+,,g' {} \;
rm -rf $RPM_BUILD_ROOT/usr/include
rm -rf $RPM_BUILD_ROOT/usr/%_lib/pkgconfig
mkdir $RPM_BUILD_ROOT/%_libdir/backup
mv $RPM_BUILD_ROOT/%_libdir/libQtSql*.so.* $RPM_BUILD_ROOT/%_libdir/backup
rm -f $RPM_BUILD_ROOT/%_libdir/lib*
mv $RPM_BUILD_ROOT/%_libdir/backup/libQtSql*.so.* $RPM_BUILD_ROOT/%_libdir
rmdir $RPM_BUILD_ROOT/%_libdir/backup
rm -rf $RPM_BUILD_ROOT/usr/bin
for i in $RPM_BUILD_ROOT/%plugindir/*; do
case "$i" in
*sqldriv*): ;;
*) rm -rf $i
esac
done
rm -f $RPM_BUILD_ROOT/%_libdir/libQtSql*
%clean
rm -rf $RPM_BUILD_ROOT
# no baselibs supplements for older distros
%if %suse_version < 1110
sed -i -e 's, supplements .*,,' $RPM_SOURCE_DIR/baselibs.conf
%endif
%files -n libqt4-sql-unixODBC
%defattr(-,root,root,755)
%dir %plugindir/sqldrivers
%plugindir/sqldrivers/libqsqlodbc*.so
%files -n libqt4-sql-postgresql
%defattr(-,root,root,755)
%dir %plugindir/sqldrivers
%plugindir/sqldrivers/libqsqlpsql*.so
%files -n libqt4-sql-mysql
%defattr(-,root,root,755)
%dir %plugindir/sqldrivers
%plugindir/sqldrivers/libqsqlmysql*.so
%changelog
++++++ libqt4.spec ++++++
++++ 790 lines (skipped)
++++++ 0180-window-role.diff ++++++
--- src/corelib/kernel/qobject.cpp
+++ src/corelib/kernel/qobject.cpp
@@ -1099,10 +1099,19 @@ void QObject::setObjectName(const QStrin
d->objectName = name;
+#if defined(Q_WS_X11)
+ d->checkWindowRole();
+#endif
+
if (objectNameChanged)
d->declarativeData->objectNameChanged(d->declarativeData, this);
}
+#if defined(Q_WS_X11)
+void QObjectPrivate::checkWindowRole()
+{
+}
+#endif
#ifdef QT3_SUPPORT
/*! \internal
--- src/corelib/kernel/qobject_p.h
+++ src/corelib/kernel/qobject_p.h
@@ -156,6 +156,9 @@ public:
void sendPendingChildInsertedEvents();
void removePendingChildInsertedEvents(QObject *child);
#endif
+#if defined(Q_WS_X11)
+ virtual void checkWindowRole();
+#endif
static inline Sender *setCurrentSender(QObject *receiver,
Sender *sender);
--- src/gui/kernel/qwidget_p.h
+++ src/gui/kernel/qwidget_p.h
@@ -762,6 +762,7 @@ public:
static QWidget *keyboardGrabber;
void setWindowRole();
+ virtual void checkWindowRole();
void sendStartupMessage(const char *message) const;
void setNetWmWindowTypes();
void x11UpdateIsOpaque();
--- src/gui/kernel/qwidget_x11.cpp
+++ src/gui/kernel/qwidget_x11.cpp
@@ -837,13 +837,17 @@ void QWidgetPrivate::create_sys(WId wind
// declare the widget's window role
+ QByteArray windowRole;
if (QTLWExtra *topData = maybeTopData()) {
- if (!topData->role.isEmpty()) {
- QByteArray windowRole = topData->role.toUtf8();
- XChangeProperty(dpy, id,
- ATOM(WM_WINDOW_ROLE), XA_STRING, 8, PropModeReplace,
- (unsigned char *)windowRole.constData(), windowRole.length());
- }
+ if (!topData->role.isEmpty())
+ windowRole = topData->role.toUtf8();
+ }
+ if (windowRole.isEmpty()) // use object name as a fallback
+ windowRole = objectName.toUtf8();
+ if (!windowRole.isEmpty()) {
+ XChangeProperty(dpy, id,
+ ATOM(WM_WINDOW_ROLE), XA_STRING, 8, PropModeReplace,
+ (unsigned char *)windowRole.constData(), windowRole.length());
}
// set client leader property
@@ -2957,6 +2961,17 @@ void QWidgetPrivate::setWindowRole()
XChangeProperty(X11->display, q->internalWinId(),
ATOM(WM_WINDOW_ROLE), XA_STRING, 8, PropModeReplace,
(unsigned char *)windowRole.constData(), windowRole.length());
+}
+
+void QWidgetPrivate::checkWindowRole()
+{
+ Q_Q(QWidget);
+ if( !q->windowRole().isEmpty() || !q->internalWinId())
+ return;
+ QByteArray windowRole = objectName.toUtf8(); // use as a fallback
+ XChangeProperty(X11->display, q->internalWinId(),
+ ATOM(WM_WINDOW_ROLE), XA_STRING, 8, PropModeReplace,
+ (unsigned char *)windowRole.constData(), windowRole.length());
}
Q_GLOBAL_STATIC(QX11PaintEngine, qt_widget_paintengine)
++++++ 0188-fix-moc-parser-same-name-header.diff ++++++
qt-bugs@ issue : none
Trolltech task ID : none
applied: yes
author: Helio Chissini de Castro
os: unix
In situations where included header have same name as their parent dir, i.e.
include/QtMyModule/QtMyModule and #include <QtMyModule> on code. moc will fail if parent dir was
added in front of includepath.
moc -Iinclude -Iinclude/QtMyModule fails
moc -Iinclude/QtMyModule works
This patch move dir test to proper place, as entry is validated only if is a real file, not a dir.
Detected by qca2 plugins code that uses QtCrypto/QtCrypto
Thanks to Thiago to find proper syntax
Index: src/tools/moc/preprocessor.cpp
===================================================================
--- src/tools/moc/preprocessor.cpp.orig
+++ src/tools/moc/preprocessor.cpp
@@ -799,7 +799,7 @@ void Preprocessor::preprocess(const QByt
QFileInfo fi;
if (local)
fi.setFile(QFileInfo(QString::fromLocal8Bit(filename)).dir(), QString::fromLocal8Bit(include));
- for (int j = 0; j < Preprocessor::includes.size() && !fi.exists(); ++j) {
+ for (int j = 0; j < Preprocessor::includes.size() && ( !fi.exists() || fi.isDir() ); ++j) {
const IncludePath &p = Preprocessor::includes.at(j);
if (p.isFrameworkPath) {
const int slashPos = include.indexOf('/');
@@ -819,7 +819,7 @@ void Preprocessor::preprocess(const QByt
}
}
- if (!fi.exists() || fi.isDir())
+ if ( !fi.exists() )
continue;
include = fi.canonicalFilePath().toLocal8Bit();
++++++ 0191-listview-alternate-row-colors.diff ++++++
qt-bugs@ issue : 178507
Trolltech task ID : 179170
applied: no
author: Matthew Woehlke
This patch fixes incorrect setting of the palette color group in
QListView that resulted in alternate rows being drawn with the Active
AlternateBase color even for inactive widgets (while the rest of the
widget is drawn correctly). Please let me know if QListView is not
the only culprit. (QTreeView was fixed by TT already.)
Index: src/gui/itemviews/qlistview.cpp
===================================================================
--- src/gui/itemviews/qlistview.cpp.orig
+++ src/gui/itemviews/qlistview.cpp
@@ -989,7 +989,7 @@ void QListView::paintEvent(QPaintEvent *
option.state &= ~QStyle::State_Enabled;
cg = QPalette::Disabled;
} else {
- cg = QPalette::Normal;
+ cg = window()->isActiveWindow() ? QPalette::Active : QPalette::Inactive;
}
option.palette.setCurrentColorGroup(cg);
}
++++++ 0195-compositing-properties.diff ++++++
qt-bugs@ issue : none
bugs.kde.org number : none
applied: no
author: Lubos Lunak
This patch makes override-redirect windows (popup menu, dropdown menu,
tooltip, combobox, etc.) also have more window properties like WM_CLASS,
so they can be used when compositing.
Index: src/gui/kernel/qwidget_x11.cpp
===================================================================
--- src/gui/kernel/qwidget_x11.cpp.orig
+++ src/gui/kernel/qwidget_x11.cpp
@@ -762,6 +762,11 @@ void QWidgetPrivate::create_sys(WId wind
Q_ASSERT(id);
XChangeWindowAttributes(dpy, id, CWOverrideRedirect | CWSaveUnder,
&wsa);
+ XClassHint class_hint;
+ QByteArray appName = qAppName().toLatin1();
+ class_hint.res_name = appName.data(); // application name
+ class_hint.res_class = const_cast(QX11Info::appClass()); // application class
+ XSetWMProperties(dpy, id, 0, 0, 0, 0, 0, 0, &class_hint);
} else if (topLevel && !desktop) { // top-level widget
if (!X11->wm_client_leader)
create_wm_client_leader();
@@ -815,13 +820,21 @@ void QWidgetPrivate::create_sys(WId wind
// set EWMH window types
setNetWmWindowTypes();
+ // when we create a toplevel widget, the frame strut should be dirty
+ data.fstrut_dirty = 1;
+
+ } else {
+ // non-toplevel widgets don't have a frame, so no need to
+ // update the strut
+ data.fstrut_dirty = 0;
+ }
+
+ if (initializeWindow && (popup || (topLevel && !desktop))) { // properties set on all toplevel windows
// set _NET_WM_PID
long curr_pid = getpid();
XChangeProperty(dpy, id, ATOM(_NET_WM_PID), XA_CARDINAL, 32, PropModeReplace,
(unsigned char *) &curr_pid, 1);
- // when we create a toplevel widget, the frame strut should be dirty
- data.fstrut_dirty = 1;
// declare the widget's window role
if (QTLWExtra *topData = maybeTopData()) {
@@ -837,10 +850,6 @@ void QWidgetPrivate::create_sys(WId wind
XChangeProperty(dpy, id, ATOM(WM_CLIENT_LEADER),
XA_WINDOW, 32, PropModeReplace,
(unsigned char *)&X11->wm_client_leader, 1);
- } else {
- // non-toplevel widgets don't have a frame, so no need to
- // update the strut
- data.fstrut_dirty = 0;
}
if (initializeWindow && q->internalWinId()) {
++++++ 0225-invalidate-tabbar-geometry-on-refresh.patch ++++++
qt-bugs@ issue : None
Trolltech task ID : None
bugs.kde.org number : 159014
applied: no
author: Robert Knight
When tabs are inserted or removed in a QTabBar, QTabBarPrivate::refresh()
is called to update the layout. If the tabbar widget is hidden, this
just sets a boolean variable (layoutDirty) and returns, so the parent widget's layout
is not notified about the possible geometry change.
Prior to Qt 4.4 this was not a problem because the geometry was recalculated
in QTabBar::sizeHint() if the layoutDirty variable was set. In Qt 4.4 however the layout
caches size hint information in QWidgetItemV2. Since the cache information is not invalidated,
the layout may end up using out-of-date size hint information to compute the widget size.
If the QTabBar is empty when QTabBar::sizeHint() is called, it will return a size with a height
of 0, which will be kept in the cache and so the tab bar will never be shown.
This patch fixes the problem by calling updateGeometry() whenever the tab bar's layout is refreshed.
Index: src/gui/widgets/qtabbar.cpp
===================================================================
--- src/gui/widgets/qtabbar.cpp.orig
+++ src/gui/widgets/qtabbar.cpp
@@ -723,8 +723,8 @@ void QTabBarPrivate::refresh()
layoutTabs();
makeVisible(currentIndex);
q->update();
- q->updateGeometry();
}
+ q->updateGeometry();
}
/*!
++++++ CVE-2011-3922.diff ++++++
--- src/3rdparty/harfbuzz/src/harfbuzz-myanmar.c
+++ src/3rdparty/harfbuzz/src/harfbuzz-myanmar.c
@@ -359,7 +359,8 @@
if (kinzi >= 0 && i > base && (cc & Mymr_CF_AFTER_KINZI)) {
reordered[len] = Mymr_C_NGA;
reordered[len+1] = Mymr_C_VIRAMA;
- properties[len-1] = AboveForm;
+ if (len > 0)
+ properties[len-1] = AboveForm;
properties[len] = AboveForm;
len += 2;
kinzi = -1;
++++++ CVE-2012-5624.diff ++++++
commit 96311def2466dd44de64d77a1c815b22fbf68f71
Author: Richard Moore
Date: Mon Nov 19 20:48:39 2012 +0000
Make the rules for redirects a bit stricter.
Change-Id: I7a3cec664aa028202de3d3bda9f499e4deb2998d
Reviewed-by: Lars Knoll
--- src/declarative/qml/qdeclarativexmlhttprequest.cpp 2011-08-23 14:02:27.000000000 +0200
+++ src/declarative/qml/qdeclarativexmlhttprequest.cpp 2012-12-27 13:31:12.569067610 +0100
@@ -1269,9 +1269,11 @@
QVariant redirect = m_network->attribute(QNetworkRequest::RedirectionTargetAttribute);
if (redirect.isValid()) {
QUrl url = m_network->url().resolved(redirect.toUrl());
- destroyNetwork();
- requestFromUrl(url);
- return;
+ if (url.scheme().toLower() != QLatin1String("file")) {
+ destroyNetwork();
+ requestFromUrl(url);
+ return;
+ }
}
}
++++++ assistant4.desktop ++++++
[Desktop Entry]
Categories=Qt;Development;Documentation
Encoding=UTF-8
Exec=/usr/bin/assistant
Name=Qt 4 Assistant
GenericName=Document Browser
X-KDE-StartupNotify=true
Icon=assistant
Terminal=false
Type=Application
++++++ baselibs.conf ++++++
libqt4
obsoletes "libqt4-dbus-1-<targettype> <= <version>"
provides "libqt4-dbus-1-<targettype> = <version>"
conflicts "libqt4-x11-<targettype> <= 4.5.1-2.5"
libqt4-x11
libqt4-qt3support
supplements "packageand(libqt4-qt3support:libqt4-x11-<targettype>)"
libqt4-sql
libqt4-sql-sqlite
supplements "packageand(libqt4-sql-sqlite:libqt4-sql-<targettype>)"
libqt4-sql-unixODBC
supplements "packageand(libqt4-sql-unixODBC:libqt4-sql-<targettype>)"
libqt4-sql-postgresql
supplements "packageand(libqt4-sql-postgresql:libqt4-sql-<targettype>)"
libqt4-sql-mysql
supplements "packageand(libqt4-sql-mysql:libqt4-sql-<targettype>)"
++++++ blacklist-diginotar-certs.diff ++++++
diff --git a/src/network/ssl/qsslcertificate.cpp b/src/network/ssl/qsslcertificate.cpp
index 328c5c2..1ae98f4 100644
--- a/src/network/ssl/qsslcertificate.cpp
+++ b/src/network/ssl/qsslcertificate.cpp
@@ -803,22 +803,47 @@ QList<QSslCertificate> QSslCertificatePrivate::certificatesFromDer(const QByteAr
// These certificates are known to be fraudulent and were created during the comodo
// compromise. See http://www.comodo.com/Comodo-Fraud-Incident-2011-03-23.html
static const char *certificate_blacklist[] = {
- "04:7e:cb:e9:fc:a5:5f:7b:d0:9e:ae:36:e1:0c:ae:1e",
- "f5:c8:6a:f3:61:62:f1:3a:64:f5:4f:6d:c9:58:7c:06",
- "d7:55:8f:da:f5:f1:10:5b:b2:13:28:2b:70:77:29:a3",
- "39:2a:43:4f:0e:07:df:1f:8a:a3:05:de:34:e0:c2:29",
- "3e:75:ce:d4:6b:69:30:21:21:88:30:ae:86:a8:2a:71",
- "e9:02:8b:95:78:e4:15:dc:1a:71:0a:2b:88:15:44:47",
- "92:39:d5:34:8f:40:d1:69:5a:74:54:70:e1:f2:3f:43",
- "b0:b7:13:3e:d0:96:f9:b5:6f:ae:91:c8:74:bd:3a:c0",
- "d8:f3:5f:4e:b7:87:2b:2d:ab:06:92:e3:15:38:2f:b0",
+ "04:7e:cb:e9:fc:a5:5f:7b:d0:9e:ae:36:e1:0c:ae:1e", "mail.google.com", // Comodo
+ "f5:c8:6a:f3:61:62:f1:3a:64:f5:4f:6d:c9:58:7c:06", "www.google.com", // Comodo
+ "d7:55:8f:da:f5:f1:10:5b:b2:13:28:2b:70:77:29:a3", "login.yahoo.com", // Comodo
+ "39:2a:43:4f:0e:07:df:1f:8a:a3:05:de:34:e0:c2:29", "login.yahoo.com", // Comodo
+ "3e:75:ce:d4:6b:69:30:21:21:88:30:ae:86:a8:2a:71", "login.yahoo.com", // Comodo
+ "e9:02:8b:95:78:e4:15:dc:1a:71:0a:2b:88:15:44:47", "login.skype.com", // Comodo
+ "92:39:d5:34:8f:40:d1:69:5a:74:54:70:e1:f2:3f:43", "addons.mozilla.org", // Comodo
+ "b0:b7:13:3e:d0:96:f9:b5:6f:ae:91:c8:74:bd:3a:c0", "login.live.com", // Comodo
+ "d8:f3:5f:4e:b7:87:2b:2d:ab:06:92:e3:15:38:2f:b0", "global trustee", // Comodo
+
+ "05:e2:e6:a4:cd:09:ea:54:d6:65:b0:75:fe:22:a2:56", "*.google.com", // leaf certificate issued by DigiNotar
+ "0c:76:da:9c:91:0c:4e:2c:9e:fe:15:d0:58:93:3c:4c", "DigiNotar Root CA", // DigiNotar root
+ "f1:4a:13:f4:87:2b:56:dc:39:df:84:ca:7a:a1:06:49", "DigiNotar Services CA", // DigiNotar intermediate signed by DigiNotar Root
+ "36:16:71:55:43:42:1b:9d:e6:cb:a3:64:41:df:24:38", "DigiNotar Services 1024 CA", // DigiNotar intermediate signed by DigiNotar Root
+ "0a:82:bd:1e:14:4e:88:14:d7:5b:1a:55:27:be:bf:3e", "DigiNotar Root CA G2", // other DigiNotar Root CA
+ "a4:b6:ce:e3:2e:d3:35:46:26:3c:b3:55:3a:a8:92:21", "CertiID Enterprise Certificate Authority", // DigiNotar intermediate signed by "DigiNotar Root CA G2"
+ "5b:d5:60:9c:64:17:68:cf:21:0e:35:fd:fb:05:ad:41", "DigiNotar Qualified CA", // DigiNotar intermediate signed by DigiNotar Root
+
+ "1184640176", "DigiNotar Services 1024 CA", // DigiNotar intermediate cross-signed by Entrust
+ "120000525", "DigiNotar Cyber CA", // DigiNotar intermediate cross-signed by CyberTrust
+ "120000505", "DigiNotar Cyber CA", // DigiNotar intermediate cross-signed by CyberTrust
+ "120000515", "DigiNotar Cyber CA", // DigiNotar intermediate cross-signed by CyberTrust
+ "20015536", "DigiNotar PKIoverheid CA Overheid en Bedrijven", // DigiNotar intermediate cross-signed by the Dutch government
+ "20001983", "DigiNotar PKIoverheid CA Organisatie - G2", // DigiNotar intermediate cross-signed by the Dutch government
+ "d6:d0:29:77:f1:49:fd:1a:83:f2:b9:ea:94:8c:5c:b4", "DigiNotar Extended Validation CA", // DigiNotar intermediate signed by DigiNotar EV Root
+ "1e:7d:7a:53:3d:45:30:41:96:40:0f:71:48:1f:45:04", "DigiNotar Public CA 2025", // DigiNotar intermediate
+// "(has not been seen in the wild so far)", "DigiNotar Public CA - G2", // DigiNotar intermediate
+// "(has not been seen in the wild so far)", "Koninklijke Notariele Beroepsorganisatie CA", // compromised during DigiNotar breach
+// "(has not been seen in the wild so far)", "Stichting TTP Infos CA," // compromised during DigiNotar breach
+ "1184640175", "DigiNotar Root CA", // DigiNotar intermediate cross-signed by Entrust
+ "1184644297", "DigiNotar Root CA", // DigiNotar intermediate cross-signed by Entrust
0
};
bool QSslCertificatePrivate::isBlacklisted(const QSslCertificate &certificate)
{
for (int a = 0; certificate_blacklist[a] != 0; a++) {
- if (certificate.serialNumber() == certificate_blacklist[a])
+ QString blacklistedCommonName = QString::fromUtf8(certificate_blacklist[(a+1)]);
+ if (certificate.serialNumber() == certificate_blacklist[a++] &&
+ (certificate.subjectInfo(QSslCertificate::CommonName) == blacklistedCommonName ||
+ certificate.issuerInfo(QSslCertificate::CommonName) == blacklistedCommonName))
return true;
}
return false;
diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp
index 141d80a..b8e6c4c 100644
--- a/src/network/ssl/qsslsocket_openssl.cpp
+++ b/src/network/ssl/qsslsocket_openssl.cpp
@@ -1193,12 +1193,16 @@ bool QSslSocketBackendPrivate::startHandshake()
X509 *x509 = q_SSL_get_peer_certificate(ssl);
configuration.peerCertificate = QSslCertificatePrivate::QSslCertificate_from_X509(x509);
q_X509_free(x509);
- if (QSslCertificatePrivate::isBlacklisted(configuration.peerCertificate)) {
- q->setErrorString(QSslSocket::tr("The peer certificate is blacklisted"));
- q->setSocketError(QAbstractSocket::SslHandshakeFailedError);
- emit q->error(QAbstractSocket::SslHandshakeFailedError);
- plainSocket->disconnectFromHost();
- return false;
+
+ // check the whole chain for blacklisting (including root, as we check for subjectInfo and issuer)
+ foreach (const QSslCertificate &cert, configuration.peerCertificateChain) {
+ if (QSslCertificatePrivate::isBlacklisted(cert)) {
+ q->setErrorString(QSslSocket::tr("The peer certificate is blacklisted"));
+ q->setSocketError(QAbstractSocket::SslHandshakeFailedError);
+ emit q->error(QAbstractSocket::SslHandshakeFailedError);
+ plainSocket->disconnectFromHost();
+ return false;
+ }
}
// Start translating errors.
++++++ build-qvfb-tool.diff ++++++
--- tools/tools.pro
+++ tools/tools.pro
@@ -34,6 +34,8 @@
embedded:SUBDIRS += kmap2qmap
+SUBDIRS += qvfb
+
contains(QT_CONFIG, dbus):SUBDIRS += qdbus
# We don't need these command line utilities on embedded platforms.
!wince*:!symbian:contains(QT_CONFIG, xmlpatterns): SUBDIRS += xmlpatterns xmlpatternsvalidator
++++++ cert-blacklist-more.diff ++++++
commit 180bf94c241728dd6d6f100437914d3cb11cbc30
Author: Martin Petersson
Date: Wed Mar 7 12:05:59 2012 +0100
QtNetwork: blacklist two more certificates
The comodogate 72:03:21:05:c5:0c:08:57:3d:8e:a5:30:4e:fe:e8:b0
certificate is a test certificate and the MD5 Collisions was created
as a proof of concept deliberately made to be expired at the time
of it's creation.
Task-number: QTBUG-24654
(cherry picked from commit 4c0df9feb2b44d0c4fcaa5076f00aa08fbc1dda5)
Signed-off-by: Peter Hartmann
Apparently this commit was forgotten to cherry-pick to Qt 4.
Change-Id: I86949eaa3c02483b0b66b4a620bfa88aaa9aa99b
Reviewed-by: Richard J. Moore
diff --git a/src/network/ssl/qsslcertificate.cpp b/src/network/ssl/qsslcertificate.cpp
index 37799d1..300a261 100644
--- a/src/network/ssl/qsslcertificate.cpp
+++ b/src/network/ssl/qsslcertificate.cpp
@@ -825,6 +825,8 @@ static const char *certificate_blacklist[] = {
"120001705", "Digisign Server ID (Enrich)", // (Malaysian) Digicert Sdn. Bhd. cross-signed by Verizon CyberTrust
"1276011370", "Digisign Server ID - (Enrich)", // (Malaysian) Digicert Sdn. Bhd. cross-signed by Entrust
+ "72:03:21:05:c5:0c:08:57:3d:8e:a5:30:4e:fe:e8:b0", "UTN-USERFirst-Hardware", // comodogate test certificate
+ "41", "MD5 Collisions Inc. (http://www.phreedom.org/md5)", // http://www.phreedom.org/research/rogue-ca/
"2087", "*.EGO.GOV.TR", // Turktrust mis-issued intermediate certificate
"2148", "e-islem.kktcmerkezbankasi.org", // Turktrust mis-issued intermediate certificate
++++++ cert-blacklist-tuerktrust.diff ++++++
commit 451462b1e0304e0cb6c2872e4f5688bc2e556dca
Author: Peter Hartmann
Date: Fri Jan 4 11:06:14 2013 +0100
SSL certificates: blacklist mis-issued Turktrust certificates
Those certificates have erroneously set the CA attribute to true,
meaning everybody in possesion of their keys can issue certificates on
their own.
backport of bf5e7fb2652669599a508e049b46ebd5cd3206e5 from qtbase
Task-number: QTBUG-28937
Change-Id: Iee57c6f983fee61c13c3b66ed874300ef8e80c23
Reviewed-by: Richard J. Moore
diff --git a/src/network/ssl/qsslcertificate.cpp b/src/network/ssl/qsslcertificate.cpp
index 038187f..37799d1 100644
--- a/src/network/ssl/qsslcertificate.cpp
+++ b/src/network/ssl/qsslcertificate.cpp
@@ -825,6 +825,9 @@ static const char *certificate_blacklist[] = {
"120001705", "Digisign Server ID (Enrich)", // (Malaysian) Digicert Sdn. Bhd. cross-signed by Verizon CyberTrust
"1276011370", "Digisign Server ID - (Enrich)", // (Malaysian) Digicert Sdn. Bhd. cross-signed by Entrust
+
+ "2087", "*.EGO.GOV.TR", // Turktrust mis-issued intermediate certificate
+ "2148", "e-islem.kktcmerkezbankasi.org", // Turktrust mis-issued intermediate certificate
0
};
++++++ designer4.desktop ++++++
[Desktop Entry]
Categories=Qt;Development;GUIDesigner
Encoding=UTF-8
Exec=/usr/bin/designer
Name=Qt 4 Designer
GenericName=Interface Designer
X-KDE-StartupNotify=true
MimeType=application/x-designer;
Icon=designer
Terminal=false
Type=Application
++++++ disable-im-for-password.diff ++++++
---
src/gui/widgets/qlineedit.cpp | 5 +++++
1 file changed, 5 insertions(+)
--- a/src/gui/widgets/qlineedit.cpp
+++ b/src/gui/widgets/qlineedit.cpp
@@ -554,6 +554,11 @@
}
setInputMethodHints(imHints);
d->control->setEchoMode(mode);
+ // disable IM for password or noecho
+ if (mode == Password || mode == NoEcho)
+ setAttribute(Qt::WA_InputMethodEnabled, false);
+ else
+ setAttribute(Qt::WA_InputMethodEnabled, d->shouldEnableInputMethod());
update();
#ifdef Q_WS_MAC
if (hasFocus())
++++++ disable-ssl-compression-by-default.diff ++++++
commit 3488f1db96dbf70bb0486d3013d86252ebf433e0
Author: Richard Moore
Date: Tue Sep 18 22:06:15 2012 +0100
Disable SSL compression by default.
Disable SSL compression by default since this appears to be the a likely
cause of the currently hyped CRIME attack.
This is a backport of 5ea896fbc63593f424a7dfbb11387599c0025c74
from qt5.
Change-Id: I8fd01c2a230804d88ffa4599e7fd9293a8af9e0f
Reviewed-by: Thiago Macieira
Reviewed-by: Shane Kearns
--- a/src/network/ssl/qsslsocket_openssl.cpp
+++ b/src/network/ssl/qsslsocket_openssl.cpp
@@ -277,7 +277,14 @@
}
// Enable all bug workarounds.
+#ifdef SSL_OP_NO_COMPRESSION
+ // If compression is available, then disable it to avoid the CRIME attack
+ // if it is not available then we're not vulnerable anyway.
+ q_SSL_CTX_set_options(ctx, SSL_OP_ALL|SSL_OP_NO_COMPRESSION);
+#else
q_SSL_CTX_set_options(ctx, SSL_OP_ALL);
+#endif
+
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
// Tell OpenSSL to release memory early
// http://www.openssl.org/docs/ssl/SSL_CTX_set_mode.html
++++++ fix-arm-assembler-for-thumb2.diff ++++++
Index: src/corelib/arch/qatomic_armv6.h
===================================================================
--- src/corelib/arch/qatomic_armv6.h.orig
+++ src/corelib/arch/qatomic_armv6.h
@@ -144,6 +144,9 @@ inline bool QBasicAtomicInt::testAndSetO
asm volatile("0:\n"
"ldrex %[result], [%[_q_value]]\n"
"eors %[result], %[result], %[expectedValue]\n"
+
+ "itt eq\n"
+
"strexeq %[result], %[newValue], [%[_q_value]]\n"
"teqeq %[result], #1\n"
"beq 0b\n"
@@ -202,6 +205,9 @@ Q_INLINE_TEMPLATE bool QBasicAtomicPoint
asm volatile("0:\n"
"ldrex %[result], [%[_q_value]]\n"
"eors %[result], %[result], %[expectedValue]\n"
+
+ "itt eq\n"
+
"strexeq %[result], %[newValue], [%[_q_value]]\n"
"teqeq %[result], #1\n"
"beq 0b\n"
Index: src/corelib/arch/qatomic_arm.h
===================================================================
--- src/corelib/arch/qatomic_arm.h.orig
+++ src/corelib/arch/qatomic_arm.h
@@ -355,10 +355,7 @@ template <typename T>
Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreOrdered(T *newValue)
{
T *originalValue;
- asm volatile("swp %0,%2,[%3]"
- : "=&r"(originalValue), "=m" (_q_value)
- : "r"(newValue), "r"(&_q_value)
- : "cc", "memory");
+ originalValue = __sync_lock_test_and_set(&_q_value, newValue);
return originalValue;
}
++++++ hppa_ldcw_fix.diff ++++++
author: LaMont Jones
patch from Ubuntu to properly support hppa.
--- src/corelib/arch/parisc/q_ldcw.s
+++ src/corelib/arch/parisc/q_ldcw.s
@@ -38,20 +38,10 @@
;** $QT_END_LICENSE$
;**
;****************************************************************************/
- .SPACE $PRIVATE$
- .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
- .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
- .SPACE $TEXT$
- .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
- .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
- .IMPORT $global$,DATA
- .IMPORT $$dyncall,MILLICODE
- .SPACE $TEXT$
- .SUBSPA $CODE$
-
+ .text
.align 4
.EXPORT q_ldcw,ENTRY,PRIV_LEV=3,ARGW0=GR,RTNVAL=GR
-q_ldcw
+ .label q_ldcw
.PROC
.CALLINFO FRAME=0,CALLS,SAVE_RP
.ENTRY
++++++ hppa_unaligned_access_fix_458133.diff ++++++
author: Bernhard R. Link
Fix unaligned access on hppa
--- src/3rdparty/sha1/sha1.cpp
+++ src/3rdparty/sha1/sha1.cpp
@@ -149,10 +149,10 @@ static inline void sha1ProcessChunk(Sha1
quint32 d = state->h3;
quint32 e = state->h4;
- quint8 chunkBuffer[64];
- memcpy(chunkBuffer, buffer, 64);
+ Sha1Chunk chunkBuffer;
+ memcpy(chunkBuffer.bytes, buffer, 64);
- Sha1Chunk *chunk = reinterpret_cast(&chunkBuffer);
+ Sha1Chunk *chunk = &chunkBuffer;
for (int i = 0; i < 16; ++i)
chunk->words[i] = qFromBigEndian(chunk->words[i]);
@@ -188,7 +188,7 @@ static inline void sha1ProcessChunk(Sha1
// Wipe variables
#ifdef SHA1_WIPE_VARIABLES
a = b = c = d = e = 0;
- memset(chunkBuffer, 0, 64);
+ memset(chunkBuffer.bytes, 0, 64);
#endif
}
++++++ libqt4-CVE-2013-0254.patch ++++++
commit 57756e72adf2081137b97f0e689dd16c770d10b1
Author: Thiago Macieira
Date: Sat Dec 22 08:32:12 2012 -0800
Change all shmget calls to user-only memory
Drop the read and write permissions for group and other users in the
system.
Change-Id: I8fc753f09126651af3fb82df3049050f0b14e876
(cherry-picked from Qt 5 commit 856f209fb63ae336bfb389a12d2a75fa886dc1c5)
Reviewed-by: Richard J. Moore
(cherry picked from commit 20b26bdb3dd5e46b01b9a7e1ce8342074df3c89c)
diff --git a/src/corelib/kernel/qsharedmemory_unix.cpp b/src/corelib/kernel/qsharedmemory_unix.cpp
index 004ff71..6b99d47 100644
--- a/src/corelib/kernel/qsharedmemory_unix.cpp
+++ b/src/corelib/kernel/qsharedmemory_unix.cpp
@@ -199,7 +199,7 @@ bool QSharedMemoryPrivate::create(int size)
}
// create
- if (-1 == shmget(unix_key, size, 0666 | IPC_CREAT | IPC_EXCL)) {
+ if (-1 == shmget(unix_key, size, 0600 | IPC_CREAT | IPC_EXCL)) {
QString function = QLatin1String("QSharedMemory::create");
switch (errno) {
case EINVAL:
@@ -220,7 +220,7 @@ bool QSharedMemoryPrivate::create(int size)
bool QSharedMemoryPrivate::attach(QSharedMemory::AccessMode mode)
{
// grab the shared memory segment id
- int id = shmget(unix_key, 0, (mode == QSharedMemory::ReadOnly ? 0444 : 0660));
+ int id = shmget(unix_key, 0, (mode == QSharedMemory::ReadOnly ? 0400 : 0600));
if (-1 == id) {
setErrorString(QLatin1String("QSharedMemory::attach (shmget)"));
return false;
@@ -265,7 +265,7 @@ bool QSharedMemoryPrivate::detach()
size = 0;
// Get the number of current attachments
- int id = shmget(unix_key, 0, 0444);
+ int id = shmget(unix_key, 0, 0400);
cleanHandle();
struct shmid_ds shmid_ds;
diff --git a/src/corelib/kernel/qsystemsemaphore_unix.cpp b/src/corelib/kernel/qsystemsemaphore_unix.cpp
index 579d60a..7324c96 100644
--- a/src/corelib/kernel/qsystemsemaphore_unix.cpp
+++ b/src/corelib/kernel/qsystemsemaphore_unix.cpp
@@ -143,10 +143,10 @@ key_t QSystemSemaphorePrivate::handle(QSystemSemaphore::AccessMode mode)
}
// Get semaphore
- semaphore = semget(unix_key, 1, 0666 | IPC_CREAT | IPC_EXCL);
+ semaphore = semget(unix_key, 1, 0600 | IPC_CREAT | IPC_EXCL);
if (-1 == semaphore) {
if (errno == EEXIST)
- semaphore = semget(unix_key, 1, 0666 | IPC_CREAT);
+ semaphore = semget(unix_key, 1, 0600 | IPC_CREAT);
if (-1 == semaphore) {
setErrorString(QLatin1String("QSystemSemaphore::handle"));
cleanHandle();
diff --git a/src/gui/image/qnativeimage.cpp b/src/gui/image/qnativeimage.cpp
index b78bc29..4b31f98 100644
--- a/src/gui/image/qnativeimage.cpp
+++ b/src/gui/image/qnativeimage.cpp
@@ -173,7 +173,7 @@ QNativeImage::QNativeImage(int width, int height, QImage::Format format,bool /*
bool ok;
xshminfo.shmid = shmget(IPC_PRIVATE, xshmimg->bytes_per_line * xshmimg->height,
- IPC_CREAT | 0777);
+ IPC_CREAT | 0700);
ok = xshminfo.shmid != -1;
if (ok) {
xshmimg->data = (char*)shmat(xshminfo.shmid, 0, 0);
diff --git a/src/gui/image/qpixmap_x11.cpp b/src/gui/image/qpixmap_x11.cpp
index fd38ac4..80bf18c 100644
--- a/src/gui/image/qpixmap_x11.cpp
+++ b/src/gui/image/qpixmap_x11.cpp
@@ -193,7 +193,7 @@ static bool qt_create_mitshm_buffer(const QPaintDevice* dev, int w, int h)
bool ok;
xshminfo.shmid = shmget(IPC_PRIVATE,
xshmimg->bytes_per_line * xshmimg->height,
- IPC_CREAT | 0777);
+ IPC_CREAT | 0700);
ok = xshminfo.shmid != -1;
if (ok) {
xshmimg->data = (char*)shmat(xshminfo.shmid, 0, 0);
--- a/tools/qvfb/qvfbshmem.cpp
+++ b/tools/qvfb/qvfbshmem.cpp
@@ -174,13 +174,13 @@ QShMemViewProtocol::QShMemViewProtocol(int displayid, const QSize &s,
uint data_offset_value = sizeof(QVFbHeader);
int dataSize = bpl * h + data_offset_value;
- shmId = shmget(key, dataSize, IPC_CREAT | 0666);
+ shmId = shmget(key, dataSize, IPC_CREAT | 0600);
if (shmId != -1)
data = (unsigned char *)shmat(shmId, 0, 0);
else {
struct shmid_ds shm;
shmctl(shmId, IPC_RMID, &shm);
- shmId = shmget(key, dataSize, IPC_CREAT | 0666);
+ shmId = shmget(key, dataSize, IPC_CREAT | 0600);
if (shmId == -1) {
perror("QShMemViewProtocol::QShMemViewProtocol");
qFatal("Cannot get shared memory 0x%08x", key);
++++++ libqt4-devel-doc.spec.in ++++++
#
# spec file for package libqt4-devel-doc
#
# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# nodebuginfo
Name: libqt4-devel-doc
BuildRequires: Mesa-devel
BuildRequires: alsa-devel
BuildRequires: cups-devel
BuildRequires: freeglut-devel
BuildRequires: gtk2-devel
BuildRequires: libjpeg-devel
BuildRequires: libpng-devel
BuildRequires: sqlite3-devel
%if 0%{?suse_version} > 1020
BuildRequires: fdupes
%endif
%if 0%{?suse_version}
BuildRequires: update-desktop-files
%endif
# COMMON-VERSION-BEGIN
# COMMON-VERSION-END
BuildRequires: libQtWebKit-devel >= %version
BuildRequires: libqt4-devel >= %version
Url: http://www.trolltech.com
Summary: Qt documentation
License: SUSE-LGPL-2.1-with-nokia-exception-1.1 or GPL-3.0
Group: Documentation/HTML
Requires: libqt4 = %version
Requires: libqt4-devel-doc-data = %version
Requires: libqt4-sql-sqlite >= %version
Provides: libqt4-examples = 4.4.0
Obsoletes: libqt4-examples < 4.4.0
Provides: qt-devel-doc = 4.4.0
Obsoletes: qt-devel-doc < 4.4.0
# COMMON-BEGIN
# COMMON-END
%package -n qt4-x11-tools
Summary: C++ Program Library, Core Components
Group: System/Libraries
Requires: libqt4-x11 >= %version
%description -n qt4-x11-tools
Qt is a set of libraries for developing applications.
This package contains base tools, like string, xml, and network
handling.
%package data
%if %suse_version > 1110
BuildArch: noarch
%endif
Summary: C++ Program Library, Core Components
Group: System/Libraries
Requires: %name = %version
%description data
The architecture independent data files for the documentation.
%build
%ifarch ppc64
export RPM_OPT_FLAGS="$RPM_OPT_FLAGS -mminimal-toc"
%endif
export QTDIR=$PWD
export PATH=$PWD/bin:$PATH
export LD_LIBRARY_PATH=$PWD/lib/
export CXXFLAGS="$RPM_OPT_FLAGS"
export CFLAGS="$RPM_OPT_FLAGS"
export MAKEFLAGS="%{?_smp_mflags}"
%ifarch sparc64
platform="-platform linux-g++-64"
%else
platform=""
%endif
echo yes | ./configure %common_options $platform \
-webkit -xmlpatterns -no-sql-sqlite -no-sql-sqlite2 -no-sql-mysql
%check_config
%if 0
make %{?_smp_mflags} sub-src
%else # simply use the binaries from the -devel package instead of building it again
rpm -ql libqt4-devel | grep %{_bindir}/ | sed 's#%{_bindir}/##' | \
( while read file; do test -e bin/$file || ln -s %{_bindir}/$file bin/ ; done )
rpm -ql libqt4-devel | grep %{_libdir}/lib | sed 's#%{_libdir}/##' | \
( while read file; do test -e lib/$file || ln -s %{_libdir}/$file lib/ ; done )
rpm -ql libQtWebKit-devel | grep %{_bindir}/ | sed 's#%{_bindir}/##' | \
( while read file; do test -e bin/$file || ln -s %{_bindir}/$file bin/ ; done )
rpm -ql libQtWebKit-devel | grep %{_libdir}/lib | sed 's#%{_libdir}/##' | \
( while read file; do test -e lib/$file || ln -s %{_libdir}/$file lib/ ; done )
%endif
make %{?_smp_mflags} -C tools/assistant
make %{?_smp_mflags} -C demos
make %{?_smp_mflags} -C examples
make %{?_smp_mflags} docs
%install
export QTDIR=$PWD
make INSTALL_ROOT=$RPM_BUILD_ROOT -C tools/assistant install
make INSTALL_ROOT=$RPM_BUILD_ROOT -C demos install
make INSTALL_ROOT=$RPM_BUILD_ROOT -C examples install
mv $RPM_BUILD_ROOT/%_libdir/qt4/examples/painting/svgviewer/svgviewer $RPM_BUILD_ROOT/%_bindir
mv $RPM_BUILD_ROOT/%_libdir/qt4/demos/browser/browser $RPM_BUILD_ROOT/%_bindir/qt4-browser
ln -s %_bindir/svgviewer $RPM_BUILD_ROOT/%_libdir/qt4/examples/painting/svgviewer/svgviewer
ln -s %_bindir/qt4-browser $RPM_BUILD_ROOT/%_libdir/qt4/demos/browser/browser
# htmldocs are not generated - why?
for d in docimages qchdocs htmldocs ; do
make INSTALL_ROOT=$RPM_BUILD_ROOT install_${d}
done
# remove some executable flags from image files:
find $RPM_BUILD_ROOT/usr/share -name "*.png" -print0 | xargs -0 chmod a-x
find $RPM_BUILD_ROOT/usr/share -name "*.css" -print0 | xargs -0 chmod a-x
find $RPM_BUILD_ROOT/usr/share -name "*.js" -print0 | xargs -0 chmod a-x
# remove executable flags from source files:
find %{buildroot}/usr/%_lib/qt4/examples -name "*.h" -print0 | xargs -0 chmod a-x
find %{buildroot}/usr/%_lib/qt4/examples -name "*.cpp" -print0 | xargs -0 chmod a-x
# reduce fileconflicts
for f in $(rpm -ql libqt4-devel) $(rpm -ql libqt4-x11) $(rpm -ql libqt4); do
test -f $RPM_BUILD_ROOT/$f && rm $RPM_BUILD_ROOT/$f
done
find $RPM_BUILD_ROOT -type d -print0 | xargs -0 --no-run-if-empty rmdir --ignore-fail-on-non-empty
# argggh, qmake is such a piece of <censored>
mkdir -p $RPM_BUILD_ROOT/%_libdir/pkgconfig
find $RPM_BUILD_ROOT/%_libdir -type f -name '*.pc' -exec mv {} $RPM_BUILD_ROOT/%_libdir/pkgconfig \;
# fix more qmake errors
mkdir -p $RPM_BUILD_ROOT/%_libdir/qt
find $RPM_BUILD_ROOT/%_libdir -type f -name '*la' -print -exec perl -pi -e 's, -L%{_builddir}/\S+,,g' {} \;
find $RPM_BUILD_ROOT/%_libdir/pkgconfig -type f -name '*pc' -print -exec perl -pi -e 's, -L%{_builddir}/\S+,,g' {} \;
mkdir -p $RPM_BUILD_ROOT/%_docdir/%base_name/
ln -s %_libdir/qt4/demos $RPM_BUILD_ROOT/%_docdir/%base_name/demos
ln -s %_libdir/qt4/examples $RPM_BUILD_ROOT/%_docdir/%base_name/examples
rm -f $RPM_BUILD_ROOT/%_libdir/libQt{3,A,C,G,H,N,S,T}*
rm -f $RPM_BUILD_ROOT/%_libdir/libQtXml.*
rm -rf $RPM_BUILD_ROOT/%_libdir/qt4/plugins
%if %suse_version > 1020
%fdupes $RPM_BUILD_ROOT/usr/include
%fdupes $RPM_BUILD_ROOT/usr/%_lib/qt4/
%fdupes $RPM_BUILD_ROOT%_docdir/%base_name
%endif
# remove some executable flags from source files:
chmod ugo-x %{buildroot}/usr/%_lib/qt4/examples/tutorials/modelview/*/*.h
chmod ugo-x %{buildroot}/usr/%_lib/qt4/examples/tutorials/modelview/*/*.cpp
%suse_update_desktop_file -i assistant4 Qt Development Documentation
%clean
rm -rf $RPM_BUILD_ROOT
# no baselibs supplements for older distros
%if %suse_version < 1110
sed -i -e 's, supplements .*,,' $RPM_SOURCE_DIR/baselibs.conf
%endif
%files
%defattr(-,root,root,755)
/usr/bin/assistant
/usr/bin/qcollectiongenerator
/usr/bin/qtdemo
/usr/share/applications/assistant4.desktop
/usr/share/pixmaps/assistant.png
#/usr/share/qt4/translations/assistant_*.qm
/usr/%_lib/qt4/demos
%dir %_docdir/%base_name
%_docdir/%base_name/demos
%_docdir/%base_name/examples
%_libdir/qt4/examples
%files -n qt4-x11-tools
%defattr(-,root,root,755)
/usr/bin/svgviewer
/usr/bin/qt4-browser
%files data
%defattr(-,root,root,755)
%dir /usr/share/doc/packages/%base_name
/usr/share/doc/packages/%base_name/qch
/usr/share/doc/packages/%base_name/html*
/usr/share/doc/packages/%base_name/src
%changelog
++++++ libqt4-libtool-nodate.diff ++++++
Index: qmake/generators/unix/unixmake2.cpp
===================================================================
--- qmake/generators/unix/unixmake2.cpp.orig
+++ qmake/generators/unix/unixmake2.cpp
@@ -1276,7 +1276,7 @@ UnixMakefileGenerator::writeLibtoolFile(
QTextStream t(&ft);
t << "# " << lname << " - a libtool library file\n";
t << "# Generated by qmake/libtool (" << qmake_version() << ") (Qt "
- << QT_VERSION_STR << ") on: " << QDateTime::currentDateTime().toString();
+ << QT_VERSION_STR << ")";
t << "\n";
t << "# The name that we can dlopen(3).\n"
++++++ libqt4-sql-plugins.spec.in ++++++
#
# spec file for package libqt4-sql-plugins
#
# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# nodebuginfo
Name: libqt4-sql-plugins
BuildRequires: Mesa-devel
BuildRequires: alsa-devel
BuildRequires: cups-devel
BuildRequires: gtk2-devel
BuildRequires: libmysqlclient-devel
BuildRequires: pkgconfig
BuildRequires: postgresql-devel
BuildRequires: unixODBC-devel
%if 0%{?suse_version}
BuildRequires: update-desktop-files
%endif
# COMMON-VERSION-BEGIN
# COMMON-VERSION-END
BuildRequires: libqt4-devel >= %version
Url: http://www.trolltech.com
Summary: Qt 4 SQL related libraries
License: SUSE-LGPL-2.1-with-nokia-exception-1.1 or GPL-3.0
Group: System/Libraries
# COMMON-BEGIN
# COMMON-END
%package -n libqt4-sql-unixODBC
Summary: Qt 4 unixODBC plugin
Group: Development/Libraries/C and C++
Requires: libqt4-sql = %version
Provides: libqt4_sql_backend = %version
Obsoletes: qt-sql-unixODBC < 4.6.0
Provides: qt-sql-unixODBC = 4.6.0
%description -n libqt4-sql-unixODBC
Qt unixODBC plugin to support databases via unixODBC within Qt
applications.
%package -n libqt4-sql-postgresql
Summary: Qt 4 PostgreSQL plugin
Group: Development/Libraries/C and C++
Requires: libqt4-sql = %version
Provides: libqt4_sql_backend = %version
Obsoletes: qt-sql-postgresql < 4.6.0
Provides: qt-sql-postgresql = 4.6.0
%description -n libqt4-sql-postgresql
Qt SQL plugin to support PostgreSQL servers in Qt applications.
%package -n libqt4-sql-mysql
Summary: Qt 4 MySQL support
Group: Development/Libraries/C and C++
Requires: libqt4-sql = %version
Provides: libqt4_sql_backend = %version
Obsoletes: qt-sql-mysql < 4.6.0
Provides: qt-sql-mysql = 4.6.0
%description -n libqt4-sql-mysql
A plugin to support MySQL server in Qt applications.
%build
export QTDIR=$PWD
export PATH=$PWD/bin:$PATH
export LD_LIBRARY_PATH=$PWD/lib/
%ifarch ppc64
export RPM_OPT_FLAGS="$RPM_OPT_FLAGS -mminimal-toc"
%endif
export CXXFLAGS="$RPM_OPT_FLAGS"
export CFLAGS="$RPM_OPT_FLAGS"
export MAKEFLAGS="%{?_smp_mflags}"
%ifarch sparc64
platform="-platform linux-g++-64"
%else
platform=""
%endif
echo yes | ./configure %common_options $platform \
-no-webkit -no-xmlpatterns -nomake examples \
-plugin-sql-psql -I/usr/include -I/usr/include/pgsql/ -I/usr/include/pgsql/server \
-plugin-sql-odbc \
-plugin-sql-mysql -I/usr/include/mysql/ -no-sql-sqlite -no-sql-sqlite2
%if 0
make %{?_smp_mflags} sub-src
%else
rpm -ql libqt4-devel | grep %{_bindir}/ | sed 's#%{_bindir}/##' | \
( while read file; do test -e bin/$file || ln -s %{_bindir}/$file bin/ ; done )
rpm -ql libqt4-devel | grep %{_libdir}/lib | sed 's#%{_libdir}/##' | \
( while read file; do test -e lib/$file || ln -s %{_libdir}/$file lib/ ; done )
make %{?_smp_mflags} -C src/sql
make %{?_smp_mflags} -C src/plugins/sqldrivers
%endif
%install
export QTDIR=$PWD
%if 0
make INSTALL_ROOT=$RPM_BUILD_ROOT -C src install_subtargets
%else
make INSTALL_ROOT=$RPM_BUILD_ROOT -C src/sql install
make INSTALL_ROOT=$RPM_BUILD_ROOT -C src/plugins/sqldrivers install
%endif
# argggh, qmake is such a piece of <censored>
mkdir -p $RPM_BUILD_ROOT/%_libdir/pkgconfig
find $RPM_BUILD_ROOT/%_libdir -type f -name '*.pc' -exec mv {} $RPM_BUILD_ROOT/%_libdir/pkgconfig \;
# fix more qmake errors
mkdir -p $RPM_BUILD_ROOT/%_libdir/qt
find $RPM_BUILD_ROOT/%_libdir -type f -name '*la' -print -exec perl -pi -e 's, -L%{_builddir}/\S+,,g' {} \;
find $RPM_BUILD_ROOT/%_libdir/pkgconfig -type f -name '*pc' -print -exec perl -pi -e 's, -L%{_builddir}/\S+,,g' {} \;
rm -rf $RPM_BUILD_ROOT/usr/include
rm -rf $RPM_BUILD_ROOT/usr/%_lib/pkgconfig
mkdir $RPM_BUILD_ROOT/%_libdir/backup
mv $RPM_BUILD_ROOT/%_libdir/libQtSql*.so.* $RPM_BUILD_ROOT/%_libdir/backup
rm -f $RPM_BUILD_ROOT/%_libdir/lib*
mv $RPM_BUILD_ROOT/%_libdir/backup/libQtSql*.so.* $RPM_BUILD_ROOT/%_libdir
rmdir $RPM_BUILD_ROOT/%_libdir/backup
rm -rf $RPM_BUILD_ROOT/usr/bin
for i in $RPM_BUILD_ROOT/%plugindir/*; do
case "$i" in
*sqldriv*): ;;
*) rm -rf $i
esac
done
rm -f $RPM_BUILD_ROOT/%_libdir/libQtSql*
%clean
rm -rf $RPM_BUILD_ROOT
# no baselibs supplements for older distros
%if %suse_version < 1110
sed -i -e 's, supplements .*,,' $RPM_SOURCE_DIR/baselibs.conf
%endif
%files -n libqt4-sql-unixODBC
%defattr(-,root,root,755)
%dir %plugindir/sqldrivers
%plugindir/sqldrivers/libqsqlodbc*.so
%files -n libqt4-sql-postgresql
%defattr(-,root,root,755)
%dir %plugindir/sqldrivers
%plugindir/sqldrivers/libqsqlpsql*.so
%files -n libqt4-sql-mysql
%defattr(-,root,root,755)
%dir %plugindir/sqldrivers
%plugindir/sqldrivers/libqsqlmysql*.so
%changelog
++++++ linguist4.desktop ++++++
[Desktop Entry]
Categories=Qt;Development;Translation
Encoding=UTF-8
Exec=/usr/bin/linguist
Name=Qt 4 Linguist
GenericName=Translation Tool
X-KDE-StartupNotify=true
MimeType=application/x-linguist;
Terminal=false
Type=Application
Icon=linguist
++++++ link-tools-shared.diff ++++++
--- src/src.pro
+++ src/src.pro
@@ -49,7 +49,7 @@ src_plugins.target = sub-plugins
#CONFIG += ordered
!ordered {
- src_corelib.depends = src_tools_moc src_tools_rcc
+ src_corelib.depends = src_tools_moc
src_gui.depends = src_corelib src_tools_uic
src_xml.depends = src_corelib
src_svg.depends = src_xml src_gui
@@ -58,7 +58,9 @@ src_plugins.target = sub-plugins
src_opengl.depends = src_gui
src_sql.depends = src_corelib
src_qt3support.depends = src_gui src_xml src_network src_sql
+ src_tools_rcc.depends = src_corelib src_xml
src_tools_uic3.depends = src_qt3support src_xml
+ src_tools_uic.depends = src_corelib src_xml
src_tools_idc.depends = src_corelib
src_tools_activeqt.depends = src_tools_idc src_gui
src_plugins.depends = src_gui src_sql src_svg
--- src/tools/uic/uic.pro
+++ src/tools/uic/uic.pro
@@ -1,14 +1,12 @@
TEMPLATE = app
-QT = xml core
-CONFIG += warn_on console no_batch
+QT = core xml
+CONFIG += warn_on console no_batch core
CONFIG -= app_bundle
build_all:!build_pass {
CONFIG -= build_all
CONFIG += release
}
-unix:!contains(QT_CONFIG, zlib):LIBS += -lz
-
TARGET = uic
DESTDIR = ../../../bin
@@ -17,7 +15,6 @@ DEFINES += QT_BOOTSTRAPPED QT_UIC
QT_NO_SYSTEMLOCALE QT_NO_GEOM_VARIANT
win32:DEFINES += QT_NODLL
-CONFIG -= qt
INCLUDEPATH = ../../corelib/arch/generic $$QT_BUILD_TREE/include . \
$$QT_BUILD_TREE/include/QtCore $$QT_BUILD_TREE/include/QtXml
DEPENDPATH += $$INCLUDEPATH ../../corelib/base ../../corelib/tools ../../corelib/io ../../corelib/codecs ../../xml
@@ -27,76 +24,11 @@ include(cpp/cpp.pri)
SOURCES += main.cpp
-
-# Qt tools needed to link rcc
-SOURCES += ../../corelib/global/qglobal.cpp \
- ../../corelib/global/qnumeric.cpp \
- ../../corelib/io/qbuffer.cpp \
- ../../corelib/io/qdir.cpp \
- ../../corelib/io/qdiriterator.cpp \
- ../../corelib/io/qfile.cpp \
- ../../corelib/io/qfileinfo.cpp \
- ../../corelib/io/qfsfileengine.cpp \
- ../../corelib/io/qfsfileengine_iterator.cpp \
- ../../corelib/io/qiodevice.cpp \
- ../../corelib/io/qtemporaryfile.cpp \
- ../../corelib/io/qtextstream.cpp \
- ../../corelib/io/qurl.cpp \
- ../../corelib/tools/qbytearraymatcher.cpp \
- ../../corelib/tools/qdatetime.cpp \
- ../../corelib/tools/qhash.cpp \
- ../../corelib/tools/qlistdata.cpp \
- ../../corelib/tools/qlocale.cpp \
- ../../corelib/tools/qmap.cpp \
- ../../corelib/tools/qstring.cpp \
- ../../corelib/tools/qstringlist.cpp \
- ../../corelib/tools/qvector.cpp \
- ../../corelib/io/qabstractfileengine.cpp \
- ../../corelib/tools/qbytearray.cpp \
- ../../corelib/tools/qbitarray.cpp \
- ../../corelib/tools/qvsnprintf.cpp \
- ../../corelib/tools/qregexp.cpp \
- ../../corelib/kernel/qmetatype.cpp \
- ../../corelib/kernel/qvariant.cpp \
- ../../corelib/codecs/qtextcodec.cpp \
- ../../corelib/codecs/qutfcodec.cpp \
- ../../corelib/codecs/qisciicodec.cpp \
- ../../corelib/codecs/qtsciicodec.cpp \
- ../../corelib/codecs/qlatincodec.cpp \
- ../../corelib/codecs/qsimplecodec.cpp \
- ../../xml/qdom.cpp \
- ../../xml/qxmlutils_p.cpp \
- ../../xml/qxml.cpp
-
-unix:SOURCES += ../../corelib/io/qfsfileengine_unix.cpp ../../corelib/io/qfsfileengine_iterator_unix.cpp
-
-win32:SOURCES += ../../corelib/io/qfsfileengine_win.cpp ../../corelib/io/qfsfileengine_iterator_win.cpp
-
macx: {
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.3 #enables weak linking for 10.3 (exported)
- SOURCES += ../../corelib/kernel/qcore_mac.cpp
LIBS += -framework CoreServices
}
-contains(QT_CONFIG, zlib) {
- INCLUDEPATH += ../../3rdparty/zlib
- SOURCES+= \
- ../3rdparty/zlib/adler32.c \
- ../3rdparty/zlib/compress.c \
- ../3rdparty/zlib/crc32.c \
- ../3rdparty/zlib/deflate.c \
- ../3rdparty/zlib/gzio.c \
- ../3rdparty/zlib/inffast.c \
- ../3rdparty/zlib/inflate.c \
- ../3rdparty/zlib/inftrees.c \
- ../3rdparty/zlib/trees.c \
- ../3rdparty/zlib/uncompr.c \
- ../3rdparty/zlib/zutil.c
-} else:!contains(QT_CONFIG, no-zlib) {
- unix:LIBS += -lz
-# win32:LIBS += libz.lib
-}
-
target.path=$$[QT_INSTALL_BINS]
INSTALLS += target
--- src/tools/rcc/rcc.pro
+++ src/tools/rcc/rcc.pro
@@ -1,5 +1,6 @@
TARGET = rcc
-CONFIG += console
+QT = core xml
+CONFIG += console core
mac:CONFIG -= app_bundle
build_all:!build_pass {
CONFIG -= build_all
@@ -12,7 +13,6 @@ DEFINES += QT_BOOTSTRAPPED \
win32:DEFINES += QT_NODLL
-CONFIG -= qt
INCLUDEPATH = ../../corelib/arch/generic $$QT_BUILD_TREE/include . \
$$QT_BUILD_TREE/include/QtCore $$QT_BUILD_TREE/include/QtXml
DEPENDPATH += $$INCLUDEPATH ../../corelib/base ../../corelib/tools ../../corelib/io ../../corelib/codecs ../../xml
@@ -20,75 +20,12 @@ DEPENDPATH += $$INCLUDEPATH ../../coreli
HEADERS += rcc.h
SOURCES += main.cpp rcc.cpp
-# Qt tools needed to link rcc
-SOURCES += ../../corelib/global/qglobal.cpp \
- ../../corelib/global/qnumeric.cpp \
- ../../corelib/io/qbuffer.cpp \
- ../../corelib/io/qdir.cpp \
- ../../corelib/io/qdiriterator.cpp \
- ../../corelib/io/qfile.cpp \
- ../../corelib/io/qfileinfo.cpp \
- ../../corelib/io/qfsfileengine.cpp \
- ../../corelib/io/qfsfileengine_iterator.cpp \
- ../../corelib/io/qiodevice.cpp \
- ../../corelib/io/qtemporaryfile.cpp \
- ../../corelib/io/qtextstream.cpp \
- ../../corelib/tools/qbytearraymatcher.cpp \
- ../../corelib/tools/qdatetime.cpp \
- ../../corelib/tools/qhash.cpp \
- ../../corelib/tools/qlistdata.cpp \
- ../../corelib/tools/qlocale.cpp \
- ../../corelib/tools/qmap.cpp \
- ../../corelib/tools/qstring.cpp \
- ../../corelib/tools/qstringlist.cpp \
- ../../corelib/kernel/qvariant.cpp \
- ../../corelib/kernel/qmetatype.cpp \
- ../../corelib/io/qurl.cpp \
- ../../corelib/tools/qvector.cpp \
- ../../corelib/io/qabstractfileengine.cpp \
- ../../corelib/tools/qbytearray.cpp \
- ../../corelib/tools/qbitarray.cpp \
- ../../corelib/tools/qvsnprintf.cpp \
- ../../corelib/tools/qregexp.cpp \
- ../../corelib/codecs/qtextcodec.cpp \
- ../../corelib/codecs/qutfcodec.cpp \
- ../../corelib/codecs/qisciicodec.cpp \
- ../../corelib/codecs/qtsciicodec.cpp \
- ../../corelib/codecs/qlatincodec.cpp \
- ../../corelib/codecs/qsimplecodec.cpp \
- ../../xml/qdom.cpp \
- ../../xml/qxmlutils_p.cpp \
- ../../xml/qxml.cpp
-
-unix:SOURCES += ../../corelib/io/qfsfileengine_unix.cpp ../../corelib/io/qfsfileengine_iterator_unix.cpp
-
-win32:SOURCES += ../../corelib/io/qfsfileengine_win.cpp ../../corelib/io/qfsfileengine_iterator_win.cpp
-
macx: {
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.3 #enables weak linking for 10.3 (exported)
SOURCES += ../../corelib/kernel/qcore_mac.cpp
LIBS += -framework CoreServices
}
-contains(QT_CONFIG, zlib) {
- INCLUDEPATH += ../../3rdparty/zlib
- SOURCES+= \
- ../3rdparty/zlib/adler32.c \
- ../3rdparty/zlib/compress.c \
- ../3rdparty/zlib/crc32.c \
- ../3rdparty/zlib/deflate.c \
- ../3rdparty/zlib/gzio.c \
- ../3rdparty/zlib/inffast.c \
- ../3rdparty/zlib/inflate.c \
- ../3rdparty/zlib/inftrees.c \
- ../3rdparty/zlib/trees.c \
- ../3rdparty/zlib/uncompr.c \
- ../3rdparty/zlib/zutil.c
-} else:!contains(QT_CONFIG, no-zlib) {
- unix:LIBS += -lz
-# win32:LIBS += libz.lib
-}
-
target.path=$$[QT_INSTALL_BINS]
INSTALLS += target
--- src/src.pro
+++ src/src.pro
@@ -3,7 +3,7 @@ TEMPLATE = subdirs
# this order is important
unset(SRC_SUBDIRS)
win32:SRC_SUBDIRS += src_winmain
-SRC_SUBDIRS += src_tools_moc src_tools_rcc src_tools_uic src_corelib src_xml src_gui src_sql src_network src_svg src_script
+SRC_SUBDIRS += src_tools_moc src_corelib src_xml src_tools_rcc src_tools_uic src_gui src_sql src_network src_svg src_script
contains(QT_CONFIG, opengl): SRC_SUBDIRS += src_opengl
contains(QT_CONFIG, qt3support): SRC_SUBDIRS += src_qt3support
!cross_compile {
++++++ no-moc-date.diff ++++++
--- src/tools/moc/moc.cpp
+++ src/tools/moc/moc.cpp
@@ -738,9 +738,6 @@ void Moc::parse()
void Moc::generate(FILE *out)
{
-
- QDateTime dt = QDateTime::currentDateTime();
- QByteArray dstr = dt.toString().toLatin1();
QByteArray fn = filename;
int i = filename.length()-1;
while (i>0 && filename[i-1] != '/' && filename[i-1] != '\\')
@@ -749,8 +746,8 @@ void Moc::generate(FILE *out)
fn = filename.mid(i);
fprintf(out, "/****************************************************************************\n"
"** Meta object code from reading C++ file '%s'\n**\n" , (const char*)fn);
- fprintf(out, "** Created: %s\n"
- "** by: The Qt Meta Object Compiler version %d (Qt %s)\n**\n" , dstr.data(), mocOutputRevision, QT_VERSION_STR);
+ fprintf(out, "** Created:\n"
+ "** by: The Qt Meta Object Compiler version %d (Qt %s)\n**\n" , mocOutputRevision, QT_VERSION_STR);
fprintf(out, "** WARNING! All changes made in this file will be lost!\n"
"*****************************************************************************/\n\n");
--- src/tools/rcc/rcc.cpp
+++ src/tools/rcc/rcc.cpp
@@ -732,7 +732,6 @@ bool RCCResourceLibrary::writeHeader()
writeString("** Resource object code\n");
writeString("**\n");
writeString("** Created: ");
- writeByteArray(QDateTime::currentDateTime().toString().toLatin1());
writeString("\n** by: The Resource Compiler for Qt version ");
writeByteArray(QT_VERSION_STR);
writeString("\n**\n");
--- src/tools/uic/uic.cpp
+++ src/tools/uic/uic.cpp
@@ -139,7 +139,7 @@ void Uic::writeCopyrightHeader(DomUI *ui
out << "/********************************************************************************\n";
out << "** Form generated from reading UI file '" << QFileInfo(opt.inputFile).fileName() << "'\n";
out << "**\n";
- out << "** Created: " << QDateTime::currentDateTime().toString() << "\n";
+ out << "** Created\n";
out << "** " << QString::fromLatin1("by: Qt User Interface Compiler version %1\n").arg(QLatin1String(QT_VERSION_STR));
out << "**\n";
out << "** WARNING! All changes made in this file will be lost when recompiling UI file!\n";
--- tools/qdbus/qdbusxml2cpp/qdbusxml2cpp.cpp
+++ tools/qdbus/qdbusxml2cpp/qdbusxml2cpp.cpp
@@ -520,9 +520,11 @@ static void writeProxy(const QString &fi
} else {
includeGuard = QLatin1String("QDBUSXML2CPP_PROXY");
}
+#if 0
includeGuard = QString(QLatin1String("%1_%2"))
.arg(includeGuard)
.arg(QDateTime::currentDateTime().toTime_t());
+#endif
hs << "#ifndef " << includeGuard << endl
<< "#define " << includeGuard << endl
<< endl;
@@ -826,9 +828,11 @@ static void writeAdaptor(const QString &
} else {
includeGuard = QLatin1String("QDBUSXML2CPP_ADAPTOR");
}
+#if 0
includeGuard = QString(QLatin1String("%1_%2"))
.arg(includeGuard)
.arg(QDateTime::currentDateTime().toTime_t());
+#endif
hs << "#ifndef " << includeGuard << endl
<< "#define " << includeGuard << endl
<< endl;
++++++ openssl-incompatibility-fix.diff ++++++
commit 691e78e5061d4cbc0de212d23b06c5dffddf2098
Author: Shane Kearns
Date: Thu Dec 6 17:03:18 2012 +0000
Fix binary incompatibility between openssl versions
OpenSSL changed the layout of X509_STORE_CTX between 0.9 and 1.0
So we have to consider this struct as private implementation, and use
the access functions instead.
This bug would cause certificate verification problems if a different
version of openssl is loaded at runtime to the headers Qt was compiled
against.
Task-number: QTBUG-28343
Change-Id: I47fc24336f7d9c80f08f9c8ba6debc51a5591258
Reviewed-by: Richard J. Moore
(cherry picked from commit eb2688c4c4f257d0a4d978ba4bf57d6347b15252)
--- src/network/ssl/qsslsocket_openssl.cpp
+++ src/network/ssl/qsslsocket_openssl.cpp
@@ -236,7 +236,7 @@ static int q_X509Callback(int ok, X509_STORE_CTX *ctx)
{
if (!ok) {
// Store the error and at which depth the error was detected.
- _q_sslErrorList()->errors << qMakePair(ctx->error, ctx->error_depth);
+ _q_sslErrorList()->errors << qMakePair(q_X509_STORE_CTX_get_error(ctx), q_X509_STORE_CTX_get_error_depth(ctx));
}
// Always return OK to allow verification to continue. We're handle the
// errors gracefully after collecting all errors, after verification has
--- src/network/ssl/qsslsocket_openssl_symbols.cpp
+++ src/network/ssl/qsslsocket_openssl_symbols.cpp
@@ -267,6 +267,10 @@ DEFINEFUNC2(int, X509_STORE_add_cert, X509_STORE *a, a, X509 *b, b, return 0, re
DEFINEFUNC(void, X509_STORE_CTX_free, X509_STORE_CTX *a, a, return, DUMMYARG)
DEFINEFUNC4(int, X509_STORE_CTX_init, X509_STORE_CTX *a, a, X509_STORE *b, b, X509 *c, c, STACK_OF(X509) *d, d, return -1, return)
DEFINEFUNC2(int, X509_STORE_CTX_set_purpose, X509_STORE_CTX *a, a, int b, b, return -1, return)
+DEFINEFUNC(int, X509_STORE_CTX_get_error, X509_STORE_CTX *a, a, return -1, return)
+DEFINEFUNC(int, X509_STORE_CTX_get_error_depth, X509_STORE_CTX *a, a, return -1, return)
+DEFINEFUNC(X509 *, X509_STORE_CTX_get_current_cert, X509_STORE_CTX *a, a, return 0, return)
+DEFINEFUNC(STACK_OF(X509) *, X509_STORE_CTX_get_chain, X509_STORE_CTX *a, a, return 0, return)
DEFINEFUNC(X509_STORE_CTX *, X509_STORE_CTX_new, DUMMYARG, DUMMYARG, return 0, return)
#ifdef SSLEAY_MACROS
DEFINEFUNC2(int, i2d_DSAPrivateKey, const DSA *a, a, unsigned char **b, b, return -1, return)
@@ -832,6 +836,10 @@ bool q_resolveOpenSslSymbols()
RESOLVEFUNC(X509_STORE_CTX_init)
RESOLVEFUNC(X509_STORE_CTX_new)
RESOLVEFUNC(X509_STORE_CTX_set_purpose)
+ RESOLVEFUNC(X509_STORE_CTX_get_error)
+ RESOLVEFUNC(X509_STORE_CTX_get_error_depth)
+ RESOLVEFUNC(X509_STORE_CTX_get_current_cert)
+ RESOLVEFUNC(X509_STORE_CTX_get_chain)
RESOLVEFUNC(X509_cmp)
#ifndef SSLEAY_MACROS
RESOLVEFUNC(X509_dup)
--- src/network/ssl/qsslsocket_openssl_symbols_p.h
+++ src/network/ssl/qsslsocket_openssl_symbols_p.h
@@ -374,6 +374,10 @@ int q_X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store,
X509 *x509, STACK_OF(X509) *chain);
X509_STORE_CTX *q_X509_STORE_CTX_new();
int q_X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose);
+int q_X509_STORE_CTX_get_error(X509_STORE_CTX *ctx);
+int q_X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx);
+X509 *q_X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx);
+STACK_OF(X509) *q_X509_STORE_CTX_get_chain(X509_STORE_CTX *ctx);
#define q_BIO_get_mem_data(b, pp) (int)q_BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)pp)
#define q_BIO_pending(b) (int)q_BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL)
++++++ pass-compressed-mouse-events-through-filters.diff ++++++
commit 69ada23a75bb51b4efc90c6128cce22d5ee6a779
Author: John Stanley
Date: Tue Jan 17 20:04:55 2012 -0500
When doing mouse move compression, pass non-MotionNotify events to installed event dispatcher event filters
Change-Id: Ia71f23458b9a6bc728f3e05592f530e317ae453c
Reviewed-by: Bradley T. Hughes
--- src/gui/kernel/qapplication_x11.cpp
+++ src/gui/kernel/qapplication_x11.cpp
@@ -4234,7 +4234,10 @@ bool QETWidget::translateMouseEvent(const XEvent *event)
&& (nextEvent.xclient.message_type == ATOM(_QT_SCROLL_DONE) ||
(nextEvent.xclient.message_type == ATOM(WM_PROTOCOLS) &&
(Atom)nextEvent.xclient.data.l[0] == ATOM(_NET_WM_SYNC_REQUEST))))) {
- qApp->x11ProcessEvent(&nextEvent);
+ // Pass the event through the event dispatcher filter so that applications
+ // which install an event filter on the dispatcher get to handle it first.
+ if (!QAbstractEventDispatcher::instance()->filterEvent(&nextEvent))
+ qApp->x11ProcessEvent(&nextEvent);
continue;
} else if (nextEvent.type != MotionNotify ||
nextEvent.xmotion.window != event->xmotion.window ||
++++++ plastik-default.diff ++++++
Index: src/gui/kernel/qguiplatformplugin.cpp
===================================================================
--- src/gui/kernel/qguiplatformplugin.cpp.orig
+++ src/gui/kernel/qguiplatformplugin.cpp
@@ -92,6 +92,7 @@ QGuiPlatformPlugin *qt_guiPlatformPlugin
break;
default:
key = QString::fromLocal8Bit(qgetenv("DESKTOP_SESSION"));
+ key.replace(QLatin1String("kde-plasma"), QLatin1String("kde"));
break;
}
}
@@ -180,7 +181,15 @@ QString QGuiPlatformPlugin::styleName()
stylename = QLatin1String("cde");
break;
default:
- // Don't do anything
+ if (X11->use_xrender) {
+ QStringList availableStyles = QStyleFactory::keys();
+ QString kdeStyleKey = QLatin1String("Oxygen");
+ if (availableStyles.contains(kdeStyleKey))
+ stylename = kdeStyleKey;
+ else
+ stylename = QLatin1String("Plastique");
+ } else
+ stylename = QLatin1String("windows");
break;
}
return stylename;
Index: src/gui/kernel/qapplication_x11.cpp
===================================================================
--- src/gui/kernel/qapplication_x11.cpp.orig
+++ src/gui/kernel/qapplication_x11.cpp
@@ -2285,12 +2285,23 @@ void qt_init(QApplicationPrivate *priv,
int rc;
do {
- if (!qgetenv("KDE_FULL_SESSION").isEmpty()) {
+ if (!qgetenv("KDE_SESSION_VERSION").isEmpty()) {
X11->desktopEnvironment = DE_KDE;
X11->desktopVersion = qgetenv("KDE_SESSION_VERSION").toInt();
break;
}
+ rc = XGetWindowProperty(X11->display, QX11Info::appRootWindow(), ATOM(KDE_FULL_SESSION),
+ 0, 2, False, XA_STRING, &type, &format, &length,
+ &after, &data);
+ if (rc == Success && length) {
+ X11->desktopEnvironment = DE_KDE;
+ // We got the property but it wasn't xfce4. Free data before it gets overwritten.
+ XFree(data);
+ data = 0;
+ break;
+ }
+
if (qgetenv("DESKTOP_SESSION") == "gnome") {
X11->desktopEnvironment = DE_GNOME;
break;
Index: src/gui/kernel/qt_x11_p.h
===================================================================
--- src/gui/kernel/qt_x11_p.h.orig
+++ src/gui/kernel/qt_x11_p.h
@@ -684,6 +684,8 @@ struct QX11Data
XTabletStylus,
XTabletEraser,
+ KDE_FULL_SESSION,
+
NPredefinedAtoms,
_QT_SETTINGS_TIMESTAMP = NPredefinedAtoms,
++++++ ppc64-webkit-link-fix.diff ++++++
--- src/3rdparty/webkit/WebCore/WebCore.pro
+++ src/3rdparty/webkit/WebCore/WebCore.pro
@@ -90,7 +90,6 @@ unix {
}
unix:!mac:*-g++*:QMAKE_CXXFLAGS += -ffunction-sections -fdata-sections
-unix:!mac:*-g++*:QMAKE_LFLAGS += -Wl,--gc-sections
linux*-g++*:QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF
CONFIG(release):!CONFIG(standalone_package) {
++++++ pre_checkin.sh ++++++
#!/bin/bash
# This script is called automatically during autobuild checkin.
ln -f libqt4.changes libqt4-sql-plugins.changes
ln -f libqt4.changes libqt4-devel-doc.changes
for spec in libqt4-sql-plugins.spec libqt4-devel-doc.spec; do
{ sed -n -e '1,/COMMON-VERSION-BEGIN/p' $spec.in
sed -n -e '/COMMON-VERSION-BEGIN/,/COMMON-VERSION-END/p' libqt4.spec
sed -n -e '/COMMON-VERSION-END/,/COMMON-BEGIN/p' $spec.in
sed -n -e '/COMMON-BEGIN/,/COMMON-END/p' libqt4.spec
sed -n -e '/COMMON-END/,$p' $spec.in;
} > $spec.tmp && mv $spec.tmp $spec
done
osc service localrun format_spec_file
++++++ qfatal-noreturn.diff ++++++
--- src/corelib/global/qglobal.h
+++ src/corelib/global/qglobal.h
@@ -1635,6 +1635,7 @@ Q_CORE_EXPORT void qCritical(const char
Q_CORE_EXPORT void qFatal(const char *, ...) /* print fatal message and exit */
#if defined(Q_CC_GNU) && !defined(__INSURE__)
__attribute__ ((format (printf, 1, 2)))
+ __attribute__ ((noreturn))
#endif
;
++++++ qsslsocket-QTBUG-14985.patch ++++++
--- src/network/ssl/qsslsocket_openssl.cpp.orig
+++ src/network/ssl/qsslsocket_openssl.cpp
@@ -278,7 +278,13 @@ init_context:
// Enable all bug workarounds.
q_SSL_CTX_set_options(ctx, SSL_OP_ALL);
-
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L
+ // Tell OpenSSL to release memory early
+ // http://www.openssl.org/docs/ssl/SSL_CTX_set_mode.html
+ // FIXME also do runtime SSL version checking or make Qt require 1.0.0
+ // http://www.openssl.org/docs/crypto/OPENSSL_VERSION_NUMBER.html
+ q_SSL_CTX_set_mode(ctx, SSL_MODE_RELEASE_BUFFERS);
+#endif
// Initialize ciphers
QByteArray cipherString;
int first = true;
--- src/network/ssl/qsslsocket_openssl_symbols_p.h.orig
+++ src/network/ssl/qsslsocket_openssl_symbols_p.h
@@ -389,6 +389,7 @@ DSA *q_d2i_DSAPrivateKey(DSA **a, unsign
bp,(char *)x,enc,kstr,klen,cb,u)
#endif
#define q_SSL_CTX_set_options(ctx,op) q_SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,(op),NULL)
+#define q_SSL_CTX_set_mode(ctx,op) q_SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,(op),NULL)
#define q_SKM_sk_num(type, st) ((int (*)(const STACK_OF(type) *))q_sk_num)(st)
#define q_SKM_sk_value(type, st,i) ((type * (*)(const STACK_OF(type) *, int))q_sk_value)(st, i)
#define q_sk_GENERAL_NAME_num(st) q_SKM_sk_num(GENERAL_NAME, (st))
++++++ qt-debug-timer.diff ++++++
--- src/corelib/kernel/qeventdispatcher_unix.cpp
+++ src/corelib/kernel/qeventdispatcher_unix.cpp
@@ -575,6 +575,21 @@ int QTimerInfoList::activateTimers()
if (!firstTimerInfo) {
firstTimerInfo = currentTimerInfo;
+ QObject* o = firstTimerInfo->obj;
+ static int debug_timer = -1;
+ if (debug_timer < 0)
+ debug_timer = getenv("QT_DEBUG_TIMER") ? 1 : 0;
+ if (debug_timer > 0) {
+ QString objPath = o->objectName();
+ if(objPath.isEmpty()) objPath = QLatin1String("<") + o->parent()->metaObject()->className() + QLatin1String(">");
+ for (; o->parent(); o = o->parent())
+ if (!o->parent()->objectName().isEmpty())
+ objPath.prepend(o->parent()->objectName() + "/");
+ else
+ objPath.prepend(QLatin1String("<") + o->parent()->metaObject()->className() + QLatin1String(">/"));
+ qDebug("activating %d ms timer for %s", firstTimerInfo->interval.tv_sec * 1000
+ + firstTimerInfo->interval.tv_usec / 1000, qPrintable(objPath));
+ }
} else if (firstTimerInfo == currentTimerInfo) {
// avoid sending the same timer multiple times
break;
++++++ qt-everywhere-opensource-src-4.7.4-filter_event.patch ++++++
--- qt-opensource-4.7.4.old/src/gui/kernel/qapplication_x11.cpp 2011-08-23 08:02:27.000000000 -0400
+++ qt-opensource-4.7.4.new/src/gui/kernel/qapplication_x11.cpp 2012-01-07 18:19:21.978248791 -0500
@@ -4190,7 +4151,12 @@ bool QETWidget::translateMouseEvent(cons
&& (nextEvent.xclient.message_type == ATOM(_QT_SCROLL_DONE) ||
(nextEvent.xclient.message_type == ATOM(WM_PROTOCOLS) &&
(Atom)nextEvent.xclient.data.l[0] == ATOM(_NET_WM_SYNC_REQUEST))))) {
- qApp->x11ProcessEvent(&nextEvent);
+ // As we may run through a significant number of a large class of non-MotionNotify
+ // events here, without returning to the event loop, first pass nextEvent to
+ // QAbstractEventDispatcher::filterEvent() to allow applications which override
+ // QAbstractEventDispatcher::filterEvent() to handle the event first.
+ if (!QAbstractEventDispatcher::instance()->filterEvent(&nextEvent))
+ qApp->x11ProcessEvent(&nextEvent);
continue;
} else if (nextEvent.type != MotionNotify ||
nextEvent.xmotion.window != event->xmotion.window ||
--- qt-opensource-4.7.4.old/src/gui/kernel/qclipboard_x11.cpp 2011-08-23 08:02:27.000000000 -0400
+++ qt-opensource-4.7.4.new/src/gui/kernel/qclipboard_x11.cpp 2012-01-07 18:30:51.266288560 -0500
@@ -573,7 +573,11 @@ bool QX11Data::clipboardWaitForEvent(Win
// process other clipboard events, since someone is probably requesting data from us
XEvent e;
- if (XCheckIfEvent(X11->display, &e, checkForClipboardEvents, 0))
+ // Some applications may override QAbstractEventDispatcher::filterEvent(), so
+ // pass event to QAbstractEventDispatcher::filterEvent() before processing in
+ // x11ProcessEvent().
+ if (XCheckIfEvent(X11->display, &e, checkForClipboardEvents, 0) &&
+ !QAbstractEventDispatcher::instance()->filterEvent(&e))
qApp->x11ProcessEvent(&e);
now.start();
--- qt-opensource-4.7.4.old/src/gui/kernel/qdnd_x11.cpp 2011-08-23 08:02:27.000000000 -0400
+++ qt-opensource-4.7.4.new/src/gui/kernel/qdnd_x11.cpp 2012-01-07 18:28:56.115281917 -0500
@@ -42,6 +42,7 @@
#include "qplatformdefs.h"
#include "qapplication.h"
+#include "qabstracteventdispatcher.h"
#ifndef QT_NO_DRAGANDDROP
@@ -1940,7 +1941,11 @@ Qt::DropAction QDragManager::drag(QDrag
timer.start();
do {
XEvent event;
- if (XCheckTypedEvent(X11->display, ClientMessage, &event))
+ // Some applications may override QAbstractEventDispatcher::filterEvent(), so
+ // pass event to QAbstractEventDispatcher::filterEvent() before processing in
+ // x11ProcessEvent().
+ if (XCheckTypedEvent(X11->display, ClientMessage, &event) &&
+ !QAbstractEventDispatcher::instance()->filterEvent(&event))
qApp->x11ProcessEvent(&event);
// sleep 50 ms, so we don't use up CPU cycles all the time.
--- qt-opensource-4.7.4.old/src/gui/kernel/qwidget_x11.cpp 2011-08-23 08:02:27.000000000 -0400
+++ qt-opensource-4.7.4.new/src/gui/kernel/qwidget_x11.cpp 2012-01-07 18:29:41.915284562 -0500
@@ -44,6 +44,7 @@
#include "qdesktopwidget.h"
#include "qapplication.h"
#include "qapplication_p.h"
+#include "qabstracteventdispatcher.h"
#include "qnamespace.h"
#include "qpainter.h"
#include "qbitmap.h"
@@ -375,17 +376,22 @@ Q_GUI_EXPORT void qt_x11_wait_for_window
do {
if (XEventsQueued(X11->display, QueuedAlready)) {
XNextEvent(X11->display, &ev);
- qApp->x11ProcessEvent(&ev);
-
- switch (state) {
- case Initial:
- if (ev.type == MapNotify && ev.xany.window == winid)
- state = Mapped;
- break;
- case Mapped:
- if (ev.type == Expose && ev.xany.window == winid)
- return;
- break;
+ // Some applications may override QAbstractEventDispatcher::filterEvent(), so
+ // pass event to QAbstractEventDispatcher::filterEvent() before processing in
+ // x11ProcessEvent().
+ if (!QAbstractEventDispatcher::instance()->filterEvent(&ev)) {
+ qApp->x11ProcessEvent(&ev);
+
+ switch (state) {
+ case Initial:
+ if (ev.type == MapNotify && ev.xany.window == winid)
+ state = Mapped;
+ break;
+ case Mapped:
+ if (ev.type == Expose && ev.xany.window == winid)
+ return;
+ break;
+ }
}
} else {
if (!XEventsQueued(X11->display, QueuedAfterFlush))
++++++ qt-never-strip.diff ++++++
--- configure
+++ configure
@@ -65,7 +65,6 @@ OPT_CMDLINE=`echo $@ | sed "s,-v ,,g; s,
# initialize global variables
QMAKE_SWITCHES=
-QMAKE_VARS=
QMAKE_CONFIG=
QTCONFIG_CONFIG=
QT_CONFIG=
@@ -1417,7 +1416,7 @@ while [ "$#" -gt 0 ]; do
QMakeVar add QMAKE_CFLAGS -pg
QMakeVar add QMAKE_CXXFLAGS -pg
QMakeVar add QMAKE_LFLAGS -pg
- QMAKE_VARS="$QMAKE_VARS CONFIG+=nostrip"
+ QMakeVar add CONFIG nostrip
else
UNKNOWN_OPT=yes
fi
@@ -3080,6 +3079,8 @@ if [ "$OPT_VERBOSE" = "yes" ]; then
fi
fi
+QMakeVar add CONFIG nostrip
+
#-------------------------------------------------------------------------------
# tests that don't need qmake (must be run before displaying help)
#-------------------------------------------------------------------------------
++++++ qt4-fake-bold.patch ++++++
--- src/gui/text/qfontdatabase_x11.cpp
+++ src/gui/text/qfontdatabase_x11.cpp
@@ -783,6 +783,13 @@
? QFont::StyleOblique
: QFont::StyleNormal);
+ FcBool embolden;
+#ifdef FC_EMBOLDEN
+ if (FcPatternGetBool(pattern, FC_EMBOLDEN, 0, &embolden) != FcResultMatch)
+#endif
+ embolden = false;
+ if(embolden)
+ fontDef.weight=QFont::Bold;
FcBool scalable;
if (FcPatternGetBool(pattern, FC_SCALABLE, 0, &scalable) != FcResultMatch)
@@ -1329,10 +1336,25 @@
if (! enc) continue; // should not happen either
QtFontStyle::Key key = style->key;
-
+ // does this style have a bold equivalent?
+ key.weight = QFont::Bold;
+ QtFontStyle *equiv = foundry->style(key);
+ if (!equiv) {
+ // let's fake one...
+ equiv = foundry->style(key, true);
+ equiv->smoothScalable = true;
+
+ QtFontSize *equiv_size = equiv->pixelSize(SMOOTH_SCALABLE, true);
+ QtFontEncoding *equiv_enc = equiv_size->encodingID(-1, 0, 0, 0, 0, true);
+
+ // keep the same pitch
+ equiv_enc->pitch = enc->pitch;
+ key.weight = QFont::Normal;
+ }
// does this style have an italic equivalent?
key.style = QFont::StyleItalic;
- QtFontStyle *equiv = foundry->style(key);
+// QtFontStyle *equiv = foundry->style(key);
+ equiv = foundry->style( key );
if (equiv) continue;
// does this style have an oblique equivalent?
@@ -1449,7 +1471,10 @@
else if (request.weight < (QFont::Bold + QFont::Black) / 2)
weight_value = FC_WEIGHT_BOLD;
FcPatternAddInteger(pattern, FC_WEIGHT, weight_value);
-
+#ifdef FC_EMBOLDEN
+ if(request.weight == QFont::Bold)
+ FcPatternAddBool(pattern, FC_EMBOLDEN, true);
+#endif
int slant_value = FC_SLANT_ROMAN;
if (request.style == QFont::StyleItalic)
slant_value = FC_SLANT_ITALIC;
--- src/gui/text/qfontengine_ft.cpp
+++ src/gui/text/qfontengine_ft.cpp
@@ -65,7 +65,10 @@
#include FT_TRUETYPE_TABLES_H
#include FT_TYPE1_TABLES_H
#include FT_GLYPH_H
-
+#ifdef FT_SYNTHESIS_H
+#define HAVE_FT_GLYPHSLOT_EMBOLDEN 1
+#include FT_SYNTHESIS_H
+#endif
QT_BEGIN_NAMESPACE
/*
@@ -516,6 +519,7 @@
kerning_pairs_loaded = false;
transform = false;
antialias = true;
+ embolden = false;
default_load_flags = FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH;
subpixelType = Subpixel_None;
defaultGlyphFormat = Format_None;
@@ -536,10 +540,11 @@
freeServerGlyphSet(transformedGlyphSets.at(i).id);
}
-bool QFontEngineFT::init(FaceId faceId, bool antialias, GlyphFormat defaultFormat)
+bool QFontEngineFT::init(FaceId faceId, bool antialias, GlyphFormat defaultFormat, bool embolden)
{
defaultGlyphFormat = defaultFormat;
this->antialias = antialias;
+ this->embolden = embolden;
face_id = faceId;
freetype = QFreetypeFace::getFace(face_id);
if (!freetype) {
@@ -680,7 +685,52 @@
return 0;
FT_GlyphSlot slot = face->glyph;
-
+ if(embolden && (face->style_flags & FT_STYLE_FLAG_BOLD) == 0)
+ {
+ //if not antialias and no bitmap, for example, dongwensong English characters.
+ //for DongWenSong Chinese character, if it not antialias, it will use bitmap output.
+ if(!antialias && slot->format == FT_GLYPH_FORMAT_OUTLINE)
+ {
+ int left = slot->metrics.horiBearingX;
+ int right = slot->metrics.horiBearingX + slot->metrics.width;
+ int top = slot->metrics.horiBearingY;
+ int bottom = slot->metrics.horiBearingY - slot->metrics.height;
+ int hpixels = TRUNC(right - left)+4;
+ if (hsubpixel)
+ hpixels = hpixels*3 + 8;
+ int width = hpixels;
+ int height = TRUNC(top - bottom);
+ if (hsubpixel) {
+ width /= 3;
+ }
+ int pitch = (format == Format_Mono ? ((width + 31) & ~31) >> 3 :
+ (format == Format_A8 ? (width + 3) & ~3 : width * 4));
+ int size = pitch * height;
+ uchar *glyph_buffer = new uchar[size];
+
+ slot->bitmap.rows = height*vfactor;
+ slot->bitmap.width = hpixels;
+ slot->bitmap.pitch = format == Format_Mono ? (((width + 31) & ~31) >> 3) : ((slot->bitmap.width + 3) & ~3);
+ slot->bitmap.buffer = new uchar[slot->bitmap.rows*slot->bitmap.pitch];
+ if (!hsubpixel && vfactor == 1)
+ slot->bitmap.buffer = glyph_buffer;
+ else
+ slot->bitmap.buffer = new uchar[slot->bitmap.rows*slot->bitmap.pitch];
+ memset(slot->bitmap.buffer, 0, slot->bitmap.rows*slot->bitmap.pitch);
+ slot->bitmap.pixel_mode = ft_pixel_mode_mono;
+ FT_Matrix matrix;
+ matrix.xx = (hsubpixel ? 3 : 1) << 16;
+ matrix.yy = vfactor << 16;
+ matrix.yx = matrix.xy = 0;
+ FT_Outline_Transform(&slot->outline, &matrix);
+ FT_Outline_Translate (&slot->outline, (hsubpixel ? -3*left +(4<<6) : -left), -bottom*vfactor);
+ FT_Outline_Get_Bitmap(qt_getFreetype(), &slot->outline, &slot->bitmap);
+ slot->format = FT_GLYPH_FORMAT_BITMAP;
+ FT_GlyphSlot_Embolden(slot);
+ }
+ else
+ FT_GlyphSlot_Embolden(slot);
+ }
int left = slot->metrics.horiBearingX;
int right = slot->metrics.horiBearingX + slot->metrics.width;
int top = slot->metrics.horiBearingY;
@@ -725,6 +775,8 @@
top = CEIL(top);
int hpixels = TRUNC(right - left);
+ if(!antialias && embolden && (face->style_flags & FT_STYLE_FLAG_BOLD) == 0 && transform)
+ hpixels += 4;
if (hsubpixel)
hpixels = hpixels*3 + 8;
info.width = hpixels;
@@ -1301,6 +1353,8 @@
FT_GlyphSlot g = face->glyph;
if (g->format != FT_GLYPH_FORMAT_OUTLINE)
continue;
+ if (embolden && (face->style_flags & FT_STYLE_FLAG_BOLD) == 0)
+ FT_GlyphSlot_Embolden (g);
QFreetypeFace::addGlyphToPath(face, g, positions[gl], path, xsize, ysize);
}
unlockFace();
--- src/gui/text/qfontengine_ft_p.h
+++ src/gui/text/qfontengine_ft_p.h
@@ -257,7 +257,7 @@
QFontEngineFT(const QFontDef &fd);
virtual ~QFontEngineFT();
- bool init(FaceId faceId, bool antiaalias, GlyphFormat defaultFormat = Format_None);
+ bool init(FaceId faceId, bool antiaalias, GlyphFormat defaultFormat = Format_None, bool embolden=false);
virtual HB_Error getPointInOutline(HB_Glyph glyph, int flags, hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints);
@@ -273,6 +273,7 @@
int default_load_flags;
bool antialias;
+ bool embolden;
bool outline_drawing;
bool transform;
SubpixelAntialiasingType subpixelType;
--- src/gui/text/qfontengine_x11.cpp
+++ src/gui/text/qfontengine_x11.cpp
@@ -878,7 +878,7 @@
-Q_GUI_EXPORT void qt_x11ft_convert_pattern(FcPattern *pattern, QByteArray *file_name, int *index, bool *antialias)
+static void qt_x11ft_convert_pattern(FcPattern *pattern, QByteArray *file_name, int *index, bool *antialias, bool *embolden)
{
FcChar8 *fileName;
FcPatternGetString(pattern, FC_FILE, 0, &fileName);
@@ -888,6 +888,11 @@
FcBool b;
if (FcPatternGetBool(pattern, FC_ANTIALIAS, 0, &b) == FcResultMatch)
*antialias = b;
+ b = false;
+#ifdef FC_EMBOLDEN
+ if (FcPatternGetBool (pattern,FC_EMBOLDEN, 0, &b) == FcResultMatch)
+#endif
+ *embolden = b;
}
@@ -897,9 +902,10 @@
// FcPatternPrint(pattern);
bool antialias = X11->fc_antialias;
+ bool embolden = false;
QByteArray file_name;
int face_index;
- qt_x11ft_convert_pattern(pattern, &file_name, &face_index, &antialias);
+ qt_x11ft_convert_pattern(pattern, &file_name, &face_index, &antialias, &embolden);
QFontEngine::FaceId face_id;
face_id.filename = file_name;
face_id.index = face_index;
@@ -972,8 +978,7 @@
defaultFormat = Format_Mono;
}
#endif
-
- if (!init(face_id, antialias, defaultFormat)) {
+ if (!init(face_id, antialias, defaultFormat, embolden)) {
FcPatternDestroy(pattern);
return;
}
++++++ qt4config.desktop ++++++
[Desktop Entry]
Categories=Qt;Settings
Encoding=UTF-8
Exec=/usr/bin/qtconfig
Name=Qt 4 Settings
X-KDE-StartupNotify=true
Icon=designer
Terminal=false
Type=Application
++++++ rcc-stable-dirlisting.diff ++++++
diff --git a/src/tools/rcc/rcc.cpp b/src/tools/rcc/rcc.cpp
index 1f6e58f..51cdd18 100644
--- a/src/tools/rcc/rcc.cpp
+++ b/src/tools/rcc/rcc.cpp
@@ -477,24 +477,30 @@ bool RCCResourceLibrary::interpretResourceFile(QIODevice *inputDevice,
if (!alias.endsWith(slash))
alias += slash;
QDirIterator it(dir, QDirIterator::FollowSymlinks|QDirIterator::Subdirectories);
+ QStringList fileList;
while (it.hasNext()) {
- it.next();
- QFileInfo child(it.fileInfo());
- if (child.fileName() != QLatin1String(".") && child.fileName() != QLatin1String("..")) {
- const bool arc =
- addFile(alias + child.fileName(),
- RCCFileInfo(child.fileName(),
- child,
- language,
- country,
- RCCFileInfo::NoFlags,
- compressLevel,
- compressThreshold)
- );
- if (!arc)
- m_failedResources.push_back(child.fileName());
+ QString child = it.next();
+ if (!child.endsWith(QLatin1String("."))
+ && !child.endsWith(QLatin1String(".."))) {
+ fileList << it.filePath();
}
}
+ fileList.sort();
+ for (QStringListIterator it(fileList); it.hasNext();) {
+ QFileInfo child(it.next());
+ const bool arc =
+ addFile(alias + child.fileName(),
+ RCCFileInfo(child.fileName(),
+ child,
+ language,
+ country,
+ RCCFileInfo::NoFlags,
+ compressLevel,
+ compressThreshold)
+ );
+ if (!arc)
+ m_failedResources.push_back(child.fileName());
+ }
}
}
}
++++++ use-cups-default-print-settings-bnc552218.diff ++++++
Subject: Makes the Qt print dialog use the default settings of the cups print queue
From: Kevin Koffler
Bug: bnc#552218, bko#180051
Patch-upstream: no
--- src/gui/dialogs/qprintdialog_unix.cpp
+++ src/gui/dialogs/qprintdialog_unix.cpp
@@ -579,6 +579,32 @@
void QPrintDialogPrivate::selectPrinter(QCUPSSupport *cups)
{
options.duplex->setEnabled(cups && cups->ppdOption("Duplex"));
+
+ if (cups) {
+ const ppd_option_t* duplex = cups->ppdOption("Duplex");
+ if (duplex) {
+ // copy default ppd duplex to qt dialog
+ if (qstrcmp(duplex->defchoice, "DuplexTumble") == 0)
+ options.duplexShort->setChecked(true);
+ else if (qstrcmp(duplex->defchoice, "DuplexNoTumble") == 0)
+ options.duplexLong->setChecked(true);
+ else
+ options.noDuplex->setChecked(true);
+ }
+
+ if (cups->currentPPD()) {
+ // set default color
+ if (cups->currentPPD()->color_device)
+ options.color->setChecked(true);
+ else
+ options.grayscale->setChecked(true);
+ }
+
+ // set collation
+ const ppd_option_t *collate = cups->ppdOption("Collate");
+ if (collate)
+ options.collate->setChecked(qstrcmp(collate->defchoice, "True")==0);
+ }
}
#endif
--- src/gui/painting/qprinter.cpp
+++ src/gui/painting/qprinter.cpp
@@ -609,6 +609,44 @@
&& d_ptr->paintEngine->type() != QPaintEngine::MacPrinter) {
setOutputFormat(QPrinter::PdfFormat);
}
+
+#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY)
+ // fill in defaults from ppd file
+ QCUPSSupport cups;
+
+ int printernum = -1;
+ for (int i = 0; i < cups.availablePrintersCount(); i++) {
+ if (printerName().toLocal8Bit() == cups.availablePrinters()[i].name)
+ printernum = i;
+ }
+ if (printernum >= 0) {
+ cups.setCurrentPrinter(printernum);
+
+ const ppd_option_t* duplex = cups.ppdOption("Duplex");
+ if (duplex) {
+ // copy default ppd duplex to qt dialog
+ if (qstrcmp(duplex->defchoice, "DuplexTumble") == 0)
+ setDuplex(DuplexShortSide);
+ else if (qstrcmp(duplex->defchoice, "DuplexNoTumble") == 0)
+ setDuplex(DuplexLongSide);
+ else
+ setDuplex(DuplexNone);
+ }
+
+ if (cups.currentPPD()) {
+ // set default color
+ if (cups.currentPPD()->color_device)
+ setColorMode(Color);
+ else
+ setColorMode(GrayScale);
+ }
+
+ // set collation
+ const ppd_option_t *collate = cups.ppdOption("Collate");
+ if (collate)
+ setCollateCopies(qstrcmp(collate->defchoice, "True")==0);
+ }
+#endif
}
/*!
++++++ use-freetype-default-legacy.diff ++++++
--- src/gui/text/qfontengine_x11.cpp
+++ src/gui/text/qfontengine_x11.cpp
@@ -809,6 +809,7 @@ Q_GUI_EXPORT void qt_x11ft_convert_patte
*antialias = b;
}
+#include
QFontEngineX11FT::QFontEngineX11FT(FcPattern *pattern, const QFontDef &fd, int screen)
: QFontEngineFT(fd)
@@ -824,6 +825,7 @@ QFontEngineX11FT::QFontEngineX11FT(FcPat
face_id.index = face_index;
subpixelType = Subpixel_None;
+#ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
if (antialias) {
int subpixel = 0;
if (FcPatternGetInteger(pattern, FC_RGBA, 0, &subpixel) == FcResultNoMatch
@@ -841,6 +843,7 @@ QFontEngineX11FT::QFontEngineX11FT(FcPat
default: break;
}
}
+#endif
#ifdef FC_HINT_STYLE
{
++++++ use-freetype-default.diff ++++++
Index: src/gui/text/qfontengine_x11.cpp
===================================================================
--- src/gui/text/qfontengine_x11.cpp.orig
+++ src/gui/text/qfontengine_x11.cpp
@@ -978,6 +978,26 @@ Q_GUI_EXPORT void qt_x11ft_convert_patte
*antialias = b;
}
+#include
+#include FT_FREETYPE_H
+#include FT_LCD_FILTER_H
+
+static bool subpixel_rendering_available()
+{
+ static int implemented = -1;
+
+ if (implemented >= 0)
+ return implemented;
+
+ extern FT_Library qt_getFreetype();
+ FT_Library lib = qt_getFreetype();
+
+ if (FT_Err_Unimplemented_Feature ==
+ FT_Library_SetLcdFilter(lib, FT_LCD_FILTER_DEFAULT ))
+ return (implemented = false);
+
+ return (implemented = true);
+}
QFontEngineX11FT::QFontEngineX11FT(FcPattern *pattern, const QFontDef &fd, int screen)
: QFontEngineFT(fd)
@@ -995,7 +1015,7 @@ QFontEngineX11FT::QFontEngineX11FT(FcPat
canUploadGlyphsToServer = qApp->thread() == QThread::currentThread();
subpixelType = Subpixel_None;
- if (antialias) {
+ if (subpixel_rendering_available() && antialias) {
int subpixel = X11->display ? X11->screens[screen].subpixel : FC_RGBA_UNKNOWN;
if (subpixel == FC_RGBA_UNKNOWN)
(void) FcPatternGetInteger(pattern, FC_RGBA, 0, &subpixel);
++++++ weak-ssl-certificates.diff ++++++
commit e1d6df4e5931ee49b4b68dd5a33146f5639268b7
Author: Peter Hartmann
Date: Fri Nov 4 16:56:12 2011 +0100
SSL: blacklist intermediate certificates that issued weak certs
... as did browser vendors.
Tested manually with affected CA certificates.
Reviewed-by: Richard J. Moore
diff --git a/src/network/ssl/qsslcertificate.cpp b/src/network/ssl/qsslcertificate.cpp
index 2a2ad55..85cd06c 100644
--- a/src/network/ssl/qsslcertificate.cpp
+++ b/src/network/ssl/qsslcertificate.cpp
@@ -814,6 +814,9 @@ static const char *certificate_blacklist[] = {
// "(has not been seen in the wild so far)", "Stichting TTP Infos CA," // compromised during DigiNotar breach
"1184640175", "DigiNotar Root CA", // DigiNotar intermediate cross-signed by Entrust
"1184644297", "DigiNotar Root CA", // DigiNotar intermediate cross-signed by Entrust
+
+ "120001705", "Digisign Server ID (Enrich)", // (Malaysian) Digicert Sdn. Bhd. cross-signed by Verizon CyberTrust
+ "1276011370", "Digisign Server ID - (Enrich)", // (Malaysian) Digicert Sdn. Bhd. cross-signed by Entrust
0
};
++++++ webkit-ia64_s390x.patch ++++++
--- src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h
+++ src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h
@@ -322,6 +322,11 @@
#define WTF_PLATFORM_ALPHA 1
#endif
+/* PLATFORM(S390X) */
+#if defined(__s390x__)
+#define WTF_PLATFORM_S390X 1
+#endif
+
/* PLATFORM(SH4) */
#if defined(__SH4__)
#define WTF_PLATFORM_SH4 1
@@ -725,7 +730,7 @@
#if !defined(WTF_USE_JSVALUE64) && !defined(WTF_USE_JSVALUE32) && !defined(WTF_USE_JSVALUE32_64)
#if PLATFORM(X86_64) && (PLATFORM(DARWIN) || PLATFORM(LINUX) || PLATFORM(SOLARIS) || PLATFORM(HPUX))
#define WTF_USE_JSVALUE64 1
-#elif (PLATFORM(IA64) && !PLATFORM(IA64_32)) || PLATFORM(SPARC64) || PLATFORM(ALPHA)
+#elif (PLATFORM(IA64) && !PLATFORM(IA64_32)) || PLATFORM(SPARC64) || PLATFORM(ALPHA) || PLATFORM(S390X)
#define WTF_USE_JSVALUE64 1
#elif PLATFORM(AIX64)
#define WTF_USE_JSVALUE64 1
--- src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h
+++ src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h
@@ -367,6 +367,11 @@
#define WTF_PLATFORM_ALPHA 1
#endif
+/* PLATFORM(S390X) */
+#if defined(__s390x__)
+#define WTF_PLATFORM_S390X 1
+#endif
+
/* PLATFORM(SH4) */
#if defined(__SH4__)
#define WTF_PLATFORM_SH4 1
@@ -729,7 +734,7 @@
#endif
#if !defined(WTF_USE_JSVALUE64) && !defined(WTF_USE_JSVALUE32) && !defined(WTF_USE_JSVALUE32_64)
-#if (PLATFORM(X86_64) && (PLATFORM(UNIX) || PLATFORM(WIN_OS))) || PLATFORM(IA64) || PLATFORM(ALPHA)
+#if (PLATFORM(X86_64) && (PLATFORM(UNIX) || PLATFORM(WIN_OS))) || PLATFORM(IA64) || PLATFORM(ALPHA) || PLATFORM(S390X)
#define WTF_USE_JSVALUE64 1
#elif PLATFORM(ARM) || PLATFORM(PPC64)
#define WTF_USE_JSVALUE32 1
++++++ webkit-sparc64.diff ++++++
Select JSVALUE64 for 64-bit sparc to avoid compile errors
("conversion from JSVALUE32 to void* loses precision" or
something it was).
Similar to webkit-ia64_s390x.patch.
---
src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: qt-everywhere-opensource-src-4.6.3/src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h
===================================================================
--- qt-everywhere-opensource-src-4.6.3.orig/src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h
+++ qt-everywhere-opensource-src-4.6.3/src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h
@@ -734,7 +734,7 @@
#endif
#if !defined(WTF_USE_JSVALUE64) && !defined(WTF_USE_JSVALUE32) && !defined(WTF_USE_JSVALUE32_64)
-#if (PLATFORM(X86_64) && (PLATFORM(UNIX) || PLATFORM(WIN_OS))) || PLATFORM(IA64) || PLATFORM(ALPHA) || PLATFORM(S390X)
+#if (PLATFORM(X86_64) && (PLATFORM(UNIX) || PLATFORM(WIN_OS))) || PLATFORM(IA64) || PLATFORM(ALPHA) || PLATFORM(S390X) || PLATFORM(SPARC64)
#define WTF_USE_JSVALUE64 1
#elif PLATFORM(ARM) || PLATFORM(PPC64)
#define WTF_USE_JSVALUE32 1
++++++ x11-init-threads.diff ++++++
--- src/corelib/global/qnamespace.qdoc.sav 2011-08-23 14:02:27.000000000 +0200
+++ src/corelib/global/qnamespace.qdoc 2011-11-22 13:06:00.879288001 +0100
@@ -167,6 +167,10 @@
attribute is true. This attribute must be set after QApplication is
constructed. This is only supported in Symbian^3 and later Symbian releases.
+ \value AA_X11InitThreads Calls XInitThreads() as part of the QApplication
+ construction in order to make Xlib calls thread-safe.
+
+
\omitvalue AA_AttributeCount
*/
--- src/corelib/global/qnamespace.h.sav 2011-08-23 14:02:27.000000000 +0200
+++ src/corelib/global/qnamespace.h 2011-11-22 13:07:35.925288002 +0100
@@ -544,6 +544,7 @@ public:
AA_MacDontSwapCtrlAndMeta = 7,
AA_S60DontConstructApplicationPanes = 8,
AA_S60DisablePartialScreenInputMode = 9,
+ AA_X11InitThreads = 10,
// Add new attributes before this line
AA_AttributeCount
--- src/gui/kernel/qapplication_x11.cpp.sav 2011-08-23 14:02:27.000000000 +0200
+++ src/gui/kernel/qapplication_x11.cpp 2011-11-22 13:06:00.881288001 +0100
@@ -1739,6 +1739,9 @@ void qt_init(QApplicationPrivate *priv,
} else {
// Qt controls everything (default)
+ if (QApplication::testAttribute(Qt::AA_X11InitThreads))
+ XInitThreads();
+
// Set application name and class
char *app_class = 0;
if (argv && argv[0]) {
--- src/gui/image/qpixmap.cpp.sav 2011-08-23 14:02:27.000000000 +0200
+++ src/gui/image/qpixmap.cpp 2011-11-22 13:06:39.723288001 +0100
@@ -99,7 +99,7 @@ static bool qt_pixmap_thread_test()
return false;
}
#ifndef Q_WS_WIN
- if (qApp->thread() != QThread::currentThread()) {
+ if (!QApplication::testAttribute(Qt::AA_X11InitThreads) && qApp->thread() != QThread::currentThread()) {
qWarning("QPixmap: It is not safe to use pixmaps outside the GUI thread");
return false;
}
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org