summaryrefslogtreecommitdiffstats
path: root/redhat
diff options
context:
space:
mode:
Diffstat (limited to 'redhat')
-rw-r--r--redhat/components.txt1
-rwxr-xr-xredhat/dependencies/arts/trinity-arts-3.5.13.spec1
-rw-r--r--redhat/extras/kdebluetooth/kdebluetooth-1.0_beta8-gcc43.patch110
-rw-r--r--redhat/extras/kdebluetooth/kdebluetooth-trinity.patch131
-rw-r--r--redhat/extras/kdebluetooth/kdebluetooth_1.0~beta9~r769275-0ubuntu1.diff.gzbin0 -> 29602 bytes
-rw-r--r--redhat/extras/kdebluetooth/kdebluetooth_1.0~beta9~r769275.orig.tar.gzbin0 -> 2045030 bytes
-rw-r--r--redhat/extras/kdebluetooth/trinity-kdebluetooth.spec365
-rw-r--r--redhat/kdebase/kdebase-3.5.13-fix_kdm_cpu_usage.patch47
-rw-r--r--redhat/kdebase/kdebase-3.5.13-replicate_led_status_on_virtual_keyboard.patch95
-rw-r--r--redhat/kdebase/kdebase-3.5.13-tsak_keyboard_hotplug.patch641
-rw-r--r--redhat/kdebase/trinity-kdebase-3.5.13.spec26
-rw-r--r--redhat/kdelibs/kdelibs-3.5.13-fix_UTF8_encoding_for_WebDAV_directories.patch45
-rw-r--r--redhat/kdelibs/kdelibs-3.5.13-fix_add_printer.patch20
-rwxr-xr-xredhat/kdelibs/trinity-kdelibs-3.5.13.spec13
-rw-r--r--redhat/kdemultimedia/kdemultimedia-3.5.13-fix_mmx_detection.patch12
-rw-r--r--redhat/kdemultimedia/trinity-kdemultimedia-3.5.13.spec5
-rw-r--r--redhat/kdenetwork/trinity-kdenetwork-3.5.13.spec2
-rw-r--r--redhat/tqt3/0084-compositing-properties.patch80
-rw-r--r--redhat/tqt3/assistant3.desktop9
-rw-r--r--redhat/tqt3/designer3.desktop11
-rw-r--r--redhat/tqt3/linguist3.desktop10
l---------redhat/tqt3/qt-3.1.0-makefile.patch1
l---------redhat/tqt3/qt-3.3.4-print-CJK.patch1
l---------redhat/tqt3/qt-3.3.6-fontrendering-gu-228452.patch1
l---------redhat/tqt3/qt-3.3.6-fontrendering-ml_IN-209974.patch1
l---------redhat/tqt3/qt-3.3.6-fontrendering-te_IN-211259.patch1
l---------redhat/tqt3/qt-3.3.8-fontrendering-as_IN-209972.patch1
l---------redhat/tqt3/qt-x11-free-3.3.4-fullscreen.patch1
l---------redhat/tqt3/qt-x11-free-3.3.6-qfontdatabase_x11.patch1
l---------redhat/tqt3/qt-x11-free-3.3.6-strip.patch1
l---------redhat/tqt3/qt-x11-free-3.3.7-arm.patch1
l---------redhat/tqt3/qt-x11-free-3.3.8b-typo.patch1
-rw-r--r--redhat/tqt3/qt-x11-immodule-unified-qt3.3.5-20051012-quiet.patch134
-rw-r--r--redhat/tqt3/qt-x11-immodule-unified-qt3.3.8-20071116.diff.bz2bin0 -> 99943 bytes
-rwxr-xr-xredhat/tqt3/qt.csh34
-rwxr-xr-xredhat/tqt3/qt.sh32
l---------redhat/tqt3/qt3-3.3.8.d-updates_zh-tw_translations.patch1
-rw-r--r--redhat/tqt3/qtconfig3.desktop9
-rw-r--r--redhat/tqt3/tqt3-3.4.0-embed.patch10
-rw-r--r--redhat/tqt3/tqt3-3.4.0-fontrendering-#214570.patch23
-rw-r--r--redhat/tqt3/tqt3-3.4.0-fontrendering-214371.patch15
-rw-r--r--redhat/tqt3/tqt3-3.4.0-fontrendering-ml_IN-209097.patch60
-rw-r--r--redhat/tqt3/tqt3-3.4.0-fontrendering-ml_IN-217657.patch11
-rw-r--r--redhat/tqt3/tqt3-3.4.0-nodebug.patch15
-rw-r--r--redhat/tqt3/tqt3-3.4.0-odbc.patch18
-rw-r--r--redhat/tqt3/tqt3-3.4.0-qt-x11-immodule-unified-qt3.3.5-20060318-resetinputcontext.patch92
-rw-r--r--redhat/tqt3/tqt3-3.4.0-quiet.patch13
-rw-r--r--redhat/tqt3/tqt3-3.4.0-uic-nostdlib.patch12
-rw-r--r--redhat/tqt3/tqt3-3.4.0-umask.patch14
-rw-r--r--redhat/tqt3/tqt3-3.4.0.spec678
50 files changed, 2799 insertions, 7 deletions
diff --git a/redhat/components.txt b/redhat/components.txt
index 3bb77eea2..f8b06c9aa 100644
--- a/redhat/components.txt
+++ b/redhat/components.txt
@@ -36,6 +36,7 @@ extras/kasablanca
extras/ksensors
extras/libkarma
#extras/libkexif
+extras/kdebluetooth
extras/trinity-desktop
extras/trinity-live
applications/k3b
diff --git a/redhat/dependencies/arts/trinity-arts-3.5.13.spec b/redhat/dependencies/arts/trinity-arts-3.5.13.spec
index 7e032efef..8b639a8f0 100755
--- a/redhat/dependencies/arts/trinity-arts-3.5.13.spec
+++ b/redhat/dependencies/arts/trinity-arts-3.5.13.spec
@@ -42,6 +42,7 @@ BuildRequires: glib2-devel
BuildRequires: libtool-ltdl-devel
BuildRequires: gsl-devel
BuildRequires: libvorbis-devel
+BuildRequires: esound-devel
BuildRequires: jack-audio-connection-kit-devel
Requires: tqtinterface
diff --git a/redhat/extras/kdebluetooth/kdebluetooth-1.0_beta8-gcc43.patch b/redhat/extras/kdebluetooth/kdebluetooth-1.0_beta8-gcc43.patch
new file mode 100644
index 000000000..abe24f805
--- /dev/null
+++ b/redhat/extras/kdebluetooth/kdebluetooth-1.0_beta8-gcc43.patch
@@ -0,0 +1,110 @@
+diff -up kdebluetooth-1.0_beta8/kdebluetooth/kcm_btpaired/pairedtab.h~ kdebluetooth-1.0_beta8/kdebluetooth/kcm_btpaired/pairedtab.h
+--- kdebluetooth-1.0_beta8/kdebluetooth/kcm_btpaired/pairedtab.h~ 2007-09-17 19:52:30.000000000 +0300
++++ kdebluetooth-1.0_beta8/kdebluetooth/kcm_btpaired/pairedtab.h 2008-01-06 15:45:56.000000000 +0200
+@@ -29,6 +29,7 @@
+ #define PAIREDTAB_H
+
+ #include "pairedtabbase.h"
++#include <stdint.h>
+ #include <qcstring.h>
+ #include <qdatastream.h>
+ #include <qstringlist.h>
+diff -up kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexserverops.cpp~ kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexserverops.cpp
+--- kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexserverops.cpp~ 2007-09-17 19:52:31.000000000 +0300
++++ kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexserverops.cpp 2008-01-06 15:58:29.000000000 +0200
+@@ -28,6 +28,7 @@
+ #include "qobexserverops.h"
+ #include "qobexauth.h"
+
++#undef myDebug
+ #undef DEBUG
+ // #define DEBUG
+ #ifdef DEBUG
+diff -up kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexserverconnection.cpp~ kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexserverconnection.cpp
+--- kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexserverconnection.cpp~ 2007-09-17 19:52:31.000000000 +0300
++++ kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexserverconnection.cpp 2008-01-06 15:57:54.000000000 +0200
+@@ -42,6 +42,7 @@
+ #include "qobexnullserverops.h"
+ #include "qobexserverops.h"
+
++#undef myDebug
+ #undef DEBUG
+ #define DEBUG
+ #ifdef DEBUG
+diff -up kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexclient.cpp~ kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexclient.cpp
+--- kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexclient.cpp~ 2007-09-17 19:52:31.000000000 +0300
++++ kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexclient.cpp 2008-01-06 15:56:55.000000000 +0200
+@@ -31,6 +31,7 @@
+
+ #include "qobexclient.h"
+
++#undef myDebug
+ //#undef DEBUG
+ #define DEBUG
+ #ifdef DEBUG
+diff -up kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexserialtransport.cpp~ kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexserialtransport.cpp
+--- kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexserialtransport.cpp~ 2007-09-17 19:52:31.000000000 +0300
++++ kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexserialtransport.cpp 2008-01-06 15:59:12.000000000 +0200
+@@ -31,6 +31,7 @@
+
+ #include "qobexserialtransport.h"
+
++#undef myDebug
+ #undef DEBUG
+ // #define DEBUG
+ #ifdef DEBUG
+diff -up kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobextransport.cpp~ kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobextransport.cpp
+--- kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobextransport.cpp~ 2007-09-17 19:52:31.000000000 +0300
++++ kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobextransport.cpp 2008-01-06 15:57:32.000000000 +0200
+@@ -46,6 +46,7 @@
+
+ #include "qobextransport.h"
+
++#undef myDebug
+ //#undef DEBUG
+ #define DEBUG
+ #ifdef DEBUG
+diff -up kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qserialdevice.cpp~ kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qserialdevice.cpp
+--- kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qserialdevice.cpp~ 2007-09-17 19:52:31.000000000 +0300
++++ kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qserialdevice.cpp 2008-01-06 15:58:59.000000000 +0200
+@@ -43,6 +43,7 @@
+ #include "qttylock.h"
+ #include "qserialdevice.h"
+
++#undef myDebug
+ #undef DEBUG
+ // #define DEBUG
+ #ifdef DEBUG
+diff -up kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexbase.cpp~ kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexbase.cpp
+--- kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexbase.cpp~ 2007-09-17 19:52:31.000000000 +0300
++++ kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexbase.cpp 2008-01-06 15:58:05.000000000 +0200
+@@ -23,6 +23,7 @@
+
+ #include "qobexbase.h"
+
++#undef myDebug
+ #undef DEBUG
+ // #define DEBUG
+ #ifdef DEBUG
+diff -up kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexserver.cpp~ kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexserver.cpp
+--- kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexserver.cpp~ 2007-09-17 19:52:31.000000000 +0300
++++ kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexserver.cpp 2008-01-06 15:57:13.000000000 +0200
+@@ -31,6 +31,7 @@
+
+ #include "qobexserver.h"
+
++#undef myDebug
+ #undef DEBUG
+ // #define DEBUG
+ #ifdef DEBUG
+diff -up kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexericssontransport.cpp~ kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexericssontransport.cpp
+--- kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexericssontransport.cpp~ 2007-09-17 19:52:31.000000000 +0300
++++ kdebluetooth-1.0_beta8/kdebluetooth/libqobex/qobex/qobexericssontransport.cpp 2008-01-06 15:58:44.000000000 +0200
+@@ -31,6 +31,7 @@
+
+ #include "qobexericssontransport.h"
+
++#undef myDebug
+ #undef DEBUG
+ #define DEBUG
+ #ifdef DEBUG
diff --git a/redhat/extras/kdebluetooth/kdebluetooth-trinity.patch b/redhat/extras/kdebluetooth/kdebluetooth-trinity.patch
new file mode 100644
index 000000000..db62a3b8c
--- /dev/null
+++ b/redhat/extras/kdebluetooth/kdebluetooth-trinity.patch
@@ -0,0 +1,131 @@
+diff -Nuar kdebluetooth.ORI/admin/acinclude.m4.in kdebluetooth.P/admin/acinclude.m4.in
+--- kdebluetooth.ORI/admin/acinclude.m4.in 2012-02-12 14:10:33.093808915 +0100
++++ kdebluetooth.P/admin/acinclude.m4.in 2012-02-12 14:13:57.437558226 +0100
+@@ -483,10 +483,10 @@
+ fi
+ fi
+ if test -z "$kde_styledir"; then
+- kde_styledir='\${libdir}/kde3/plugins/styles'
++ kde_styledir='\${libdir}/trinity/plugins/styles'
+ fi
+ if test -z "$kde_widgetdir"; then
+- kde_widgetdir='\${libdir}/kde3/plugins/designer'
++ kde_widgetdir='\${libdir}/trinity/plugins/designer'
+ fi
+ if test -z "$xdg_appsdir"; then
+ xdg_appsdir='\${datadir}/applications/kde'
+@@ -1813,7 +1813,7 @@
+
+ kde_widgetdir=NO
+ dnl this might be somewhere else
+-AC_FIND_FILE("kde3/plugins/designer/kdewidgets.la", $kde_libdirs, kde_widgetdir)
++AC_FIND_FILE("trinity/plugins/designer/kdewidgets.la", $kde_libdirs, kde_widgetdir)
+
+ if test -n "$ac_kde_libraries" && test ! -r "$ac_kde_libraries/$kde_check_lib"; then
+ AC_MSG_ERROR([
+@@ -1821,14 +1821,14 @@
+ So, check this please and use another prefix!])
+ fi
+
+-if test -n "$kde_widgetdir" && test ! -r "$kde_widgetdir/kde3/plugins/designer/kdewidgets.la"; then
++if test -n "$kde_widgetdir" && test ! -r "$kde_widgetdir/trinity/plugins/designer/kdewidgets.la"; then
+ AC_MSG_ERROR([
+ I can't find the designer plugins. These are required and should have been installed
+ by kdelibs])
+ fi
+
+ if test -n "$kde_widgetdir"; then
+- kde_widgetdir="$kde_widgetdir/kde3/plugins/designer"
++ kde_widgetdir="$kde_widgetdir/trinity/plugins/designer"
+ fi
+
+
+diff -Nuar kdebluetooth.ORI/admin/cvs.sh kdebluetooth.P/admin/cvs.sh
+--- kdebluetooth.ORI/admin/cvs.sh 2012-02-12 14:10:33.093808915 +0100
++++ kdebluetooth.P/admin/cvs.sh 2012-02-12 14:11:27.951558154 +0100
+@@ -68,7 +68,7 @@
+ echo "*** KDE requires automake $required_automake_version"
+ exit 1
+ ;;
+- automake*1.6.* | automake*1.7* | automake*1.8* | automake*1.9* | automake*1.10*)
++ automake*1.6.* | automake*1.7* | automake*1.8* | automake*1.9* | automake*1.1[0-9]*)
+ echo "*** $AUTOMAKE_STRING found."
+ UNSERMAKE=no
+ ;;
+--- kdebluetooth-1.0~beta9~r769275/kdebluetooth/libkbluetooth/Makefile.am.ORI 2012-02-12 14:40:37.124683567 +0100
++++ kdebluetooth-1.0~beta9~r769275/kdebluetooth/libkbluetooth/Makefile.am 2012-02-12 14:41:13.572933231 +0100
+@@ -12,7 +12,7 @@
+ libkbluetooth_la_LIBADD = $(LIB_KDECORE) $(DBUS_LIBS) $(LIB_KIO) $(BLUETOOTH_LIBS) -ldbus-qt-1
+
+ libkbluetoothincludedir = $(includedir)/libkbluetooth
+-libkbluetoothinclude_HEADERS = adapter.h dbusinit.h dbussignal.h dbussignal.h manager.h inputdevice.h inputmanager.h \
++libkbluetoothinclude_HEADERS = adapter.h dbusinit.h dbussignal.h manager.h inputdevice.h inputmanager.h \
+ security.h dbusfilter.h service.h passkeyagent.h servicerecord.h devicemimeconverter.h \
+ deviceaddress.h rfcommsocket.h servicediscovery.h sdpservice.h namerequest.h adapter_old.h \
+ sdpdevice.h sdpattribute.h serviceselectionwidget.h inquiry.h hcisocket.h hcidefault.h \
+--- kdebluetooth-1.0~beta9~r769275/kdebluetooth/kbluetooth/Makefile.am.ORI 2012-02-12 15:23:53.713273076 +0100
++++ kdebluetooth-1.0~beta9~r769275/kdebluetooth/kbluetooth/Makefile.am 2012-02-12 15:24:04.547424194 +0100
+@@ -4,7 +4,7 @@
+ bin_PROGRAMS = kbluetooth
+
+ kbluetooth_SOURCES = adapterconfig.cpp adapterdialog.ui authorize.cpp authdialog.ui deviceconfig.cpp trayicon.cpp main.cpp application.cpp pindefdialog.ui pindialog.cpp confirmationdlgbase.ui confirmation.cpp rfcommportlistener.cpp procinheritsock.cpp portlistener.cpp sdprecord.cpp
+-kbluetooth_LDFLAGS = $(KDE_RPATH) $(DBUS_LIBS) -ldbus-qt-1 $(all_libraries)
++kbluetooth_LDFLAGS = $(KDE_RPATH) $(DBUS_LIBS) -ldbus-qt-1 $(all_libraries) -lDCOP -lkdefx
+ kbluetooth_LDADD = ../libkbluetooth/libkbluetooth.la $(LIB_KIO) $(LIB_KDEUI)
+
+ # this is where the desktop file will go
+--- kdebluetooth-1.0~beta9~r769275/kdebluetooth/kbluemon/Makefile.am.ORI 2012-02-12 15:27:57.544671388 +0100
++++ kdebluetooth-1.0~beta9~r769275/kdebluetooth/kbluemon/Makefile.am 2012-02-12 15:28:03.821758799 +0100
+@@ -4,7 +4,7 @@
+ bin_PROGRAMS = kbluemon
+
+ kbluemon_SOURCES = main.cpp monitor.cpp mondialog.ui
+-kbluemon_LDFLAGS = $(KDE_RPATH) $(DBUS_LIBS) -ldbus-qt-1 $(all_libraries)
++kbluemon_LDFLAGS = $(KDE_RPATH) $(DBUS_LIBS) -ldbus-qt-1 $(all_libraries) -lkdefx
+ kbluemon_LDADD = ../libkbluetooth/libkbluetooth.la $(LIB_KIO) $(LIB_KDEUI)
+
+ # this is where the desktop file will go
+--- kdebluetooth-1.0~beta9~r769275/kdebluetooth/kbluelock/Makefile.am.ORI 2012-02-12 15:29:34.900026701 +0100
++++ kdebluetooth-1.0~beta9~r769275/kdebluetooth/kbluelock/Makefile.am 2012-02-12 15:29:40.774108449 +0100
+@@ -4,7 +4,7 @@
+ bin_PROGRAMS = kbluelock
+
+ kbluelock_SOURCES = main.cpp kbluelock.cpp lockdialog.ui
+-kbluelock_LDFLAGS = $(KDE_RPATH) $(DBUS_LIBS) -ldbus-qt-1 $(all_libraries)
++kbluelock_LDFLAGS = $(KDE_RPATH) $(DBUS_LIBS) -ldbus-qt-1 $(all_libraries) -lDCOP -lkdefx
+ kbluelock_LDADD = ../libkbluetooth/libkbluetooth.la $(LIB_KIO) $(LIB_KDEUI)
+
+ # this is where the desktop file will go
+--- kdebluetooth-1.0~beta9~r769275/kdebluetooth/kinputwizard/Makefile.am.ORI 2012-02-12 15:31:54.069962658 +0100
++++ kdebluetooth-1.0~beta9~r769275/kdebluetooth/kinputwizard/Makefile.am 2012-02-12 15:32:00.579053161 +0100
+@@ -4,7 +4,7 @@
+ bin_PROGRAMS = kinputwizard
+
+ kinputwizard_SOURCES = main.cpp inputwizard.cpp inputdialog.ui inputdialog_ext.ui
+-kinputwizard_LDFLAGS = $(KDE_RPATH) $(DBUS_LIBS) -ldbus-qt-1 $(all_libraries)
++kinputwizard_LDFLAGS = $(KDE_RPATH) $(DBUS_LIBS) -ldbus-qt-1 $(all_libraries) -lkdefx
+ kinputwizard_LDADD = ../libkbluetooth/libkbluetooth.la $(LIB_KIO) $(LIB_KDEUI)
+
+
+--- kdebluetooth-1.0~beta9~r769275/kdebluetooth/kbtobexsrv/Makefile.am.ORI 2012-02-12 15:33:26.869242631 +0100
++++ kdebluetooth-1.0~beta9~r769275/kdebluetooth/kbtobexsrv/Makefile.am 2012-02-12 15:33:44.826485520 +0100
+@@ -19,7 +19,7 @@
+
+ # the application source, library search path, and link libraries
+ kbtobexsrv_SOURCES = main.cpp maindlg.cpp maindlgbase.ui myfileiconview.cpp
+-kbtobexsrv_LDFLAGS = $(KDE_RPATH) $(all_libraries)
++kbtobexsrv_LDFLAGS = $(KDE_RPATH) $(all_libraries) -lkdefx
+ kbtobexsrv_LDADD = ../libkbluetooth/libkbluetooth.la ../libkobex/libkobex.la $(LIB_KIO) $(OPENOBEX_LIBS) -lkio $(LIB_KDEUI) $(BLUETOOTH_LIBS)
+
+ # this is where the desktop file will go
+--- kdebluetooth-1.0~beta9~r769275/kdebluetooth/kbtobexclient/Makefile.am.ORI 2012-02-12 15:35:17.239735523 +0100
++++ kdebluetooth-1.0~beta9~r769275/kdebluetooth/kbtobexclient/Makefile.am 2012-02-12 15:35:25.381845659 +0100
+@@ -17,7 +17,7 @@
+
+ # the application source, library search path, and link libraries
+
+-kbtobexclient_LDFLAGS = $(KDE_RPATH) $(all_libraries)
++kbtobexclient_LDFLAGS = $(KDE_RPATH) $(all_libraries) -lkdefx
+ kbtobexclient_LDADD = ../libkbluetooth/libkbluetooth.la ../libkobex/libkobex.la $(LIB_KIO) $(OPENOBEX_LIBS) -lkio $(LIB_KDEUI) $(BLUETOOTH_LIBS) $(DBUS_LIBS) -ldbus-qt-1
+
+ # this is where the desktop file will go
diff --git a/redhat/extras/kdebluetooth/kdebluetooth_1.0~beta9~r769275-0ubuntu1.diff.gz b/redhat/extras/kdebluetooth/kdebluetooth_1.0~beta9~r769275-0ubuntu1.diff.gz
new file mode 100644
index 000000000..ba1d19308
--- /dev/null
+++ b/redhat/extras/kdebluetooth/kdebluetooth_1.0~beta9~r769275-0ubuntu1.diff.gz
Binary files differ
diff --git a/redhat/extras/kdebluetooth/kdebluetooth_1.0~beta9~r769275.orig.tar.gz b/redhat/extras/kdebluetooth/kdebluetooth_1.0~beta9~r769275.orig.tar.gz
new file mode 100644
index 000000000..e9b080342
--- /dev/null
+++ b/redhat/extras/kdebluetooth/kdebluetooth_1.0~beta9~r769275.orig.tar.gz
Binary files differ
diff --git a/redhat/extras/kdebluetooth/trinity-kdebluetooth.spec b/redhat/extras/kdebluetooth/trinity-kdebluetooth.spec
new file mode 100644
index 000000000..b9d3aa2b2
--- /dev/null
+++ b/redhat/extras/kdebluetooth/trinity-kdebluetooth.spec
@@ -0,0 +1,365 @@
+# If TDE is built in a specific prefix (e.g. /opt/trinity), the release will be suffixed with ".opt".
+%if "%{?_prefix}" != "/usr"
+%define _variant .opt
+%define _docdir %{_prefix}/share/doc
+%endif
+
+Name: trinity-kdebluetooth
+Version: 1.0_beta9_r769275
+Release: 1%{?dist}%{?_variant}
+
+Summary: The TDE Bluetooth Framework
+
+License: GPLv2+
+Group: Applications/Communications
+URL: http://bluetooth.kmobiletools.org/
+
+Source0: kdebluetooth_1.0~beta9~r769275.orig.tar.gz
+Patch0: kdebluetooth-1.0_beta8-gcc43.patch
+Patch1: kdebluetooth_1.0~beta9~r769275-0ubuntu1.diff.gz
+Patch2: kdebluetooth-trinity.patch
+
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+BuildRequires: gettext
+BuildRequires: desktop-file-utils
+BuildRequires: lockdev-devel
+BuildRequires: xmms-devel
+BuildRequires: bluez-libs-devel
+BuildRequires: trinity-kdelibs-devel
+BuildRequires: trinity-kdepim-devel
+BuildRequires: openobex-devel >= 1.1
+BuildRequires: libusb-devel
+BuildRequires: pkgconfig
+Buildrequires: libidn-devel
+Buildrequires: dbus-qt-devel
+BuildRequires: obexftp-devel
+BuildRequires: automake >= 1.6.1
+BuildRequires: autoconf >= 2.52
+Requires: %{name}-libs = %{version}-%{release}
+Requires: %{_bindir}/kdesu
+
+
+
+%description
+The KDE Bluetooth Framework is a set of tools built on top of Linux'
+Bluetooth (Bluez) stack. The goal is to provide easy access to the most
+common Bluetooth profiles and to make data exchange with Bluetooth
+enabled devices as straightforward as possible.
+
+
+%package libs
+Summary: Base libraries for %{name}
+Group: System Environment/Libraries
+Obsoletes: %{name} < %{version}-%{release}
+
+%if 0%{?fedora} >= 8
+Provides: dbus-bluez-pin-helper
+%endif
+
+
+%description libs
+KDE Bluetooth framework libraries.
+
+
+%package devel
+Summary: Development files for %{name}
+Group: Development/Libraries
+Requires: trinity-kdelibs-devel
+Requires: bluez-libs-devel
+Requires: %{name}-libs = %{version}-%{release}
+
+
+%description devel
+KDE Bluetooth framework development libraries and headers.
+
+
+%prep
+%setup -q -n kdebluetooth-1.0~beta9~r769275
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+
+%__cp -f "/usr/share/aclocal/libtool.m4" "admin/libtool.m4.in"
+if [ -r "/usr/share/libtool/config/ltmain.sh" ]; then
+ %__cp -f "/usr/share/libtool/config/ltmain.sh" "admin/ltmain.sh"
+else
+ %__cp -f "/usr/share/libtool/ltmain.sh" "admin/ltmain.sh"
+fi
+%__make -f "admin/Makefile.common"
+
+
+%build
+export PATH="%{_bindir}:${PATH}"
+export LDFLAGS="-L%{_libdir} -I%{_includedir}"
+export CXXFLAGS="-fpermissive"
+
+unset QTDIR || : ; . /etc/profile.d/qt.sh
+%configure \
+ --with-bluetooth-libraries=%{_libdir} \
+ --disable-rpath \
+ --enable-new-ldflags \
+ --disable-debug \
+ --disable-dependency-tracking \
+ --enable-final \
+ --enable-closure \
+ --with-extra-includes=%{_includedir}/tqt
+
+make %{?_smp_mflags} LIBTOOL=/usr/bin/libtool
+
+
+%install
+export PATH="%{_bindir}:${PATH}"
+rm -rf $RPM_BUILD_ROOT
+make install DESTDIR=$RPM_BUILD_ROOT
+
+for DESK_PATH in applications/kde applnk/Utilities ; do
+ desktop-file-install \
+ --mode=644 \
+ --vendor="" \
+ --dir=$RPM_BUILD_ROOT%{_datadir}/applications/kde \
+ --remove-category="Network" \
+ --add-category="System" \
+ --delete-original \
+ $RPM_BUILD_ROOT%{_datadir}/$DESK_PATH/*.desktop ||:
+done
+
+touch %{name}.lang
+PROG_LIST="kbluelock kbluemon kbluetooth kinputwizard
+ kcm_btpaired kio_bluetooth kio_obex2 kio_sdp
+ libkbluetooth kdebluetooth"
+for PROG in $PROG_LIST ; do
+ %find_lang $PROG && cat $PROG.lang >> %{name}.lang ||:
+done
+
+rm -f $RPM_BUILD_ROOT/%{_datadir}/applnk/Settings/Network/Bluetooth/.directory
+
+rm -f ${RPM_BUILD_ROOT}%{_libdir}/*.a
+rm -f ${RPM_BUILD_ROOT}%{_libdir}/kde3/*.a
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+
+%post
+/sbin/ldconfig
+touch --no-create %{_datadir}/icons/hicolor ||:
+gtk-update-icon-cache -qf %{_datadir}/icons/hicolor 2> /dev/null ||:
+
+
+%postun
+/sbin/ldconfig
+touch --no-create %{_datadir}/icons/hicolor ||:
+gtk-update-icon-cache -qf %{_datadir}/icons/hicolor 2> /dev/null ||:
+
+
+%files -f %{name}.lang
+%defattr(-,root,root,-)
+%doc AUTHORS ChangeLog COPYING INSTALL README
+%{_bindir}/kblue*
+%{_bindir}/kbtobexclient
+%{_bindir}/kioobex_start
+%{_bindir}/kinputwizard
+%{_datadir}/applications/kde/*.desktop
+%{_datadir}/applnk/.hidden/*.desktop
+%{_datadir}/apps/konqsidebartng/virtual_folders/services/*.desktop
+%{_datadir}/apps/*/*
+%{_datadir}/autostart/*
+%{_datadir}/desktop-directories/*
+%{_datadir}/icons/hicolor/*/*/*
+%{_datadir}/mimelnk/bluetooth/
+%{_datadir}/service*/*
+%lang(ca) %{_docdir}/HTML/ca/kdebluetooth/
+%lang(da) %{_docdir}/HTML/da/kdebluetooth/
+%lang(en) %{_docdir}/HTML/en/kdebluetooth/
+%lang(es) %{_docdir}/HTML/es/kdebluetooth/
+%lang(et) %{_docdir}/HTML/et/kdebluetooth/
+%lang(fr) %{_docdir}/HTML/fr/kdebluetooth/
+%lang(it) %{_docdir}/HTML/it/kdebluetooth/
+%lang(nl) %{_docdir}/HTML/nl/kdebluetooth/
+%lang(pt) %{_docdir}/HTML/pt/kdebluetooth/
+%lang(ru) %{_docdir}/HTML/ru/kdebluetooth/
+%lang(sv) %{_docdir}/HTML/sv/kdebluetooth/
+
+
+%files libs
+%defattr(-,root,root,-)
+%{_libdir}/*.la
+%{_libdir}/*.so.*
+%{_libdir}/kde3/*.so
+%{_libdir}/kde3/*.la
+%{_libdir}/kdebluetooth/
+
+
+%files devel
+%defattr(-,root,root,-)
+%{_includedir}/*
+%{_libdir}/*.so
+
+
+%changelog
+* Sun Feb 12 2012 Francois Andriot <francois.andriot@free.fr> - 1.0_beta9_r769275-1
+- Initial version for TDE 3.5.13
+- Updates base version to 1.0_beta9_r769275 (taken from Ubuntu Hardy)
+- Fix autotools detection
+
+* Tue Apr 1 2008 Rex Dieter <rdieter@fedoraproject.org> - 1.0-0.41.beta8
+- -devel: Requires: kdelibs3-devel
+
+* Sun Jan 6 2008 Ville Skyttä <ville.skytta at iki.fi> - 1.0-0.40.beta8
+- Fix build with gcc 4.3.
+
+* Sun Dec 9 2007 Ville Skyttä <ville.skytta at iki.fi> - 1.0-0.39.beta8
+- Require kdesu in main package.
+
+* Sun Dec 08 2007 Rex Dieter <rdieter[AT]fedoraproject.org> 1.0-0.38.beta8
+- BR: kdelibs3-devel kdepim3-devel
+- drop Requires: kdebase (?)
+
+* Wed Nov 08 2007 Gilboa Davara <gilboad[AT]gmail.com> 1.0-0.37.beta8
+- Missing BR: automake, autoconf.
+
+* Wed Nov 08 2007 Gilboa Davara <gilboad[AT]gmail.com> 1-0.0-36.beta8
+- Move BRs to main package to fix mock breakage.
+
+* Wed Nov 07 2007 Gilboa Davara <gilboad[AT]gmail.com> 1-0.0-35.beta8
+- Fix multi-lib conflicts (#341731).
+
+* Sat Oct 06 2007 Gilboa Davara <gilboad[AT]gmail.com> 1-0.0-34.beta8
+- Beta8. (First official release since beta3)
+- Remove redundant beta3 patches.
+- LANG support by Ville Skytta.
+- Virtual provides: dbus-bluez-pin-helper.
+
+* Sun Aug 26 2007 Gilboa Davara <gilboad[AT]gmail.com> 1-0.0-33.beta3
+- Re-Fix the license tag.
+
+* Sun Aug 26 2007 Gilboa Davara <gilboad[AT]gmail.com> 1-0.0-32.beta3
+- Fixed license tag.
+- Re-enable PPC64.
+
+* Tue Jul 31 2007 Gilboa Davara <gilboad[AT]gmail.com> 1-0.0-31.beta3
+- Fix error in ExcludeArch.
+
+* Tue Jul 31 2007 Gilboa Davara <gilboad[AT]gmail.com> 1-0.0-30.beta3
+- ExcludeArch ppc64 (obexftp, again)
+
+* Mon Jul 30 2007 Gilboa Davara <gilboad[AT]gmail.com> 1-0.0-29.beta3
+- ExcludeArch ppc/ppc64 (obexftp missing.)
+
+* Sun Jul 15 2007 Gilboa Davara <gilboad[AT]gmail.com> 1-0.0-28.beta3
+- Fix %%dist... again...
+
+* Thu Jul 12 2007 Gilboa Davara <gilboad[AT]gmail.com> 1-0.0-27.beta3
+- Add missing touch /icon/hicolor.
+- Menu items: Remove only-in-KDE.
+- BR: Remove libutempter-devel.
+- Fix project URL and source URL.
+- Add missing %%dist.
+
+* Sun Jul 08 2007 Gilboa Davara <gilboad[AT]gmail.com> 1-0.0-26.beta3
+- Remove the Nokia N70 patch. (Doesn't seem to work.)
+- OBEX Object push fix.
+
+* Sun Jul 08 2007 Gilboa Davara <gilboad[AT]gmail.com> 1-0.0-25.beta3
+- Adopted Ville Skyttä b2 patch to b3. (Hopefully) re-enable Nokia N7x obex support.
+- Patch out "Configure services". (Disabled in B3)
+
+* Mon Jun 25 2007 Gilboa Davara <gilboad[AT]gmail.com> 1-0.0-24.beta3
+- Added hex encoding patch by Thomas Davis.
+- Removed --enable-irmcsynckonnector (deprecated in b3)
+- Add missing docs. (Removed by mistake in b23)
+- Known issue - services menu doesn't seem to work. (Requires debugging / upstream )
+
+* Tue Jun 12 2007 Gilboa Davara <gilboad[AT]gmail.com> 1-0.0-23.beta3
+- Beta3.
+- Remove pin-helper. (No longer needed - beta3 has dbus support.)
+- Added BR dbus-qt.
+- Added BR obexftp-devel.
+- Remove b2 patches.
+
+* Sat May 26 2007 Gilboa Davara <gilboad[AT]gmail.com> 1-0-0.22.beta2
+- Use the bluez_pinhelper wrapper instead of modified bluez-utils.
+- Remove %%dist.
+- *rc should not be marked as config.
+- Prevent RPM from owning Network/Peripherals.
+
+* Mon Apr 23 2007 Gilboa Davara <gilboad[AT]gmail.com> 1-0-0.21.beta2
+- Patch list clean-up.
+- Add Nokia obex detection patch.
+- Fix 64bit compile due to bad default in configure. (with_bluetooth_dir)
+- Missing BR: libtempter-devel.
+- Missing BT: libidn-devel.
+- Added: kbluepin wrapper - configure kbluepin as the old-style pin helper.
+
+* Wed Apr 04 2007 Gilboa Davara <gilboad[AT]gmail.com> 1-0-0.20.beta2
+- Re-merge Ville Skytta's latest .spec. (Got dropped by mistake)
+- Summery, description clean-up.
+
+* Thu Mar 29 2007 Gilboa Davara <gilboad[AT]gmail.com> 1.0-0.19.beta2
+- Spec file clean-up.
+
+* Fri Oct 20 2006 Rex Dieter <rexdieter[AT]users.sf.net> 1.0-0.18.beta2
+- BR: gettext
+- include locales
+
+* Tue Oct 17 2006 Rex Dieter <rexdieter[AT]users.sf.net> 1.0-0.17.beta2
+- kdebluetooth-1.0_beta2
+
+* Fri Sep 08 2006 Rex Dieter <rexdieter[AT]users.sf.net> 1.0-0.16.20060908svn
+- kdebluetoooth-20060908svn
+
+* Thu Jul 13 2006 Rex Dieter <rexdieter[AT]users.sf.net> 1.0-0.15.20060621svn
+- put svn at end of Release tag (per packaging guidelines)
+
+* Wed Jun 21 2006 Rex Dieter <rexdieter[AT]users.sf.net> 1.0-0.14.svn20060621
+- kdebluetooth-20060621svn, fixes
+ compile error kdebluetooth libkobex obex.h not found (kde bug #94572)
+
+* Tue Jun 20 2006 Rex Dieter <rexdieter[AT]users.sf.net> 1.0-0.13.svn20060620
+- kdebluetooth-svn20060620, (re)fixes
+ konqueror bluetooth:/ returns error "Bad URL" (kde bug #123607)
+- --disable-dependency-tracking
+- own %%_datadir/applnk/Settings/Network
+
+* Mon Jun 19 2006 Rex Dieter <rexdieter[AT]users.sf.net> 1.0-0.12.svn20060619
+- document svn tarball creation
+- Requires: kdebase (for kcm bits, applnk dir ownership)
+- desktop-file-install --add-only-show-in=KDE
+
+* Mon Jun 19 2006 Rex Dieter <rexdieter[AT]users.sf.net> 1.0-0.11.svn20060619
+- kdebluetooth-svn20060619, making most patches obsolete
+
+* Fri Apr 28 2006 Rex Dieter <rexdieter[AT]users.sf.net> 1.0-0.10.beta1
+- -devel: Requires: qt-devel bluez-libs-devel
+- include libirmcsynckonnector.so in main pkg
+- .desktop: --remove-category=Network --add-category=System
+- remove zero length files
+- fix default hcid start/top command
+
+* Mon Apr 17 2006 Rex Dieter <rexdieter[AT]users.sf.net> 1.0-0.9.beta1
+- konqueror bluetooth:/ returns error "Bad URL" (kde bug #123607)
+
+* Tue Mar 28 2006 Rex Dieter 1.0-0.8.beta1
+- BR: kdepim-devel (for kitchensync)
+- kdebluetooth-1.0_beta1-gcc41.patch
+
+* Thu Mar 23 2006 Rex Dieter 1.0-0.7.beta1
+- cleanup openobex patch
+- fixup .desktop file(s)
+
+* Wed Mar 22 2006 Rex Dieter 1.0-0.6.beta1
+- cleanup for Extras
+- %%post: ldconfig, fdo icon spec
+
+* Mon Mar 06 2006 Rex Dieter 1.0-0.5.beta1
+- respin
+
+* Mon Mar 21 2005 Rex Dieter 1.0-0.3.beta1
+- --enable-irmcsynckonnector
+
+* Mon Mar 21 2005 Rex Dieter 1.0-0.1.beta1
+- 1.0_beta1
+
+* Wed Dec 29 2004 Rex Dieter <rexdieter[AT]users.sf.net> 0.0-0.1.cvs20050110
+- first try
+
diff --git a/redhat/kdebase/kdebase-3.5.13-fix_kdm_cpu_usage.patch b/redhat/kdebase/kdebase-3.5.13-fix_kdm_cpu_usage.patch
new file mode 100644
index 000000000..1a80c00f1
--- /dev/null
+++ b/redhat/kdebase/kdebase-3.5.13-fix_kdm_cpu_usage.patch
@@ -0,0 +1,47 @@
+commit 1e2983ad0107fb1d26e3e9931528701f30632c6d
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1326856834 -0600
+
+ Fix kdm_greet high CPU usage
+ Clean up a few build warnings
+
+diff --git a/kdm/kfrontend/kgreeter.cpp b/kdm/kfrontend/kgreeter.cpp
+index 9b974cc..5877cb6 100644
+--- a/kdm/kfrontend/kgreeter.cpp
++++ b/kdm/kfrontend/kgreeter.cpp
+@@ -273,6 +273,9 @@ void KGreeter::handleInputPipe(void) {
+ readbuf[numread] = 0;
+ readbuf[2047] = 0;
+ inputcommand += readbuf;
++ if (!tqApp->hasPendingEvents()) {
++ usleep(500);
++ }
+ tqApp->processEvents();
+ }
+ if (closingDown) {
+@@ -508,11 +511,11 @@ KGreeter::insertUsers(int limit_users)
+ int count = 0;
+ for (setpwent(); (ps = getpwent()) != 0;) {
+ if (*ps->pw_dir && *ps->pw_shell &&
+- (ps->pw_uid >= (unsigned)_lowUserId ||
+- !ps->pw_uid && _showRoot) &&
+- ps->pw_uid <= (unsigned)_highUserId &&
+- !noUsers.hasUser( ps->pw_name ) &&
+- !noUsers.hasGroup( ps->pw_gid ))
++ ((ps->pw_uid >= (unsigned)_lowUserId) ||
++ ((!ps->pw_uid) && _showRoot)) &&
++ (ps->pw_uid <= (unsigned)_highUserId) &&
++ (!noUsers.hasUser( ps->pw_name )) &&
++ (!noUsers.hasGroup( ps->pw_gid )))
+ {
+ TQString username( TQFile::decodeName( ps->pw_name ) );
+ if (!dupes.find( username )) {
+@@ -574,7 +577,7 @@ KGreeter::insertUsers(int limit_users)
+ for (setpwent(); (ps = getpwent()) != 0;) {
+ if (*ps->pw_dir && *ps->pw_shell &&
+ (ps->pw_uid >= (unsigned)_lowUserId ||
+- !ps->pw_uid && _showRoot) &&
++ ((!ps->pw_uid) && _showRoot)) &&
+ ps->pw_uid <= (unsigned)_highUserId &&
+ (users.hasUser( ps->pw_name ) ||
+ users.hasGroup( ps->pw_gid )))
diff --git a/redhat/kdebase/kdebase-3.5.13-replicate_led_status_on_virtual_keyboard.patch b/redhat/kdebase/kdebase-3.5.13-replicate_led_status_on_virtual_keyboard.patch
new file mode 100644
index 000000000..1d3f73ceb
--- /dev/null
+++ b/redhat/kdebase/kdebase-3.5.13-replicate_led_status_on_virtual_keyboard.patch
@@ -0,0 +1,95 @@
+commit 8468d9bd5c66fe402acbc06f728b12ea996848de
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1327049889 -0600
+
+ Replicate LED status from virtual keyboards to physical keyboards
+ Fix keyboard attribute cloning
+ This commit closes Bug 561
+
+diff --git a/tsak/main.cpp b/tsak/main.cpp
+index df485a0..26aad00 100644
+--- a/tsak/main.cpp
++++ b/tsak/main.cpp
+@@ -126,22 +126,23 @@ static void copy_features(int devin, int devout)
+ for(i=0;i<EV_MAX;++i) {
+ if (bit_set(i, evtypes)) {
+ switch(i) {
+- case EV_KEY: op = UI_SET_KEYBIT; break;
+- case EV_REL: op = UI_SET_RELBIT; break;
+- case EV_ABS: op = UI_SET_ABSBIT; break;
+- case EV_MSC: op = UI_SET_MSCBIT; break;
+- case EV_LED: op = UI_SET_LEDBIT; break;
+- case EV_SND: op = UI_SET_SNDBIT; break;
+- case EV_SW: op = UI_SET_SWBIT; break;
+- default: op = -1;
++ case EV_KEY: op = UI_SET_KEYBIT; break;
++ case EV_REL: op = UI_SET_RELBIT; break;
++ case EV_ABS: op = UI_SET_ABSBIT; break;
++ case EV_MSC: op = UI_SET_MSCBIT; break;
++ case EV_LED: op = UI_SET_LEDBIT; break;
++ case EV_SND: op = UI_SET_SNDBIT; break;
++ case EV_SW: op = UI_SET_SWBIT; break;
++ default: op = -1;
++ }
+ }
+- }
+- if (op == -1) continue;
+- ioctl(devout, UI_SET_EVBIT, i);
+- memset(codes,0,sizeof(codes));
+- if (ioctl(devin, EVIOCGBIT(i, sizeof(codes)), codes) < 0) return;
+- for(code=0;code<KEY_MAX;code++) {
+- if (bit_set(code, codes)) ioctl(devout, op, code);
++ if (op == -1) continue;
++ ioctl(devout, UI_SET_EVBIT, i);
++ memset(codes,0,sizeof(codes));
++ if (ioctl(devin, EVIOCGBIT(i, sizeof(codes)), codes) >= 0) {
++ for(code=0;code<KEY_MAX;code++) {
++ if (bit_set(code, codes)) ioctl(devout, op, code);
++ }
+ }
+ }
+ }
+@@ -342,6 +343,7 @@ int main (int argc, char *argv[])
+ {
+ struct input_event ev[64];
+ struct input_event event;
++ struct input_event revev;
+ struct uinput_user_dev devinfo={0};
+ int devout[MAX_KEYBOARDS], rd, i, value, size = sizeof (struct input_event);
+ char name[256] = "Unknown";
+@@ -416,9 +418,9 @@ int main (int argc, char *argv[])
+ fprintf(stderr, "Reading from keyboard: (%s)\n", name);
+
+ // Create filtered virtual output device
+- devout[current_keyboard]=open("/dev/misc/uinput",O_WRONLY|O_NONBLOCK);
++ devout[current_keyboard]=open("/dev/misc/uinput",O_RDWR|O_NONBLOCK);
+ if (devout[current_keyboard]<0) {
+- devout[current_keyboard]=open("/dev/uinput",O_WRONLY|O_NONBLOCK);
++ devout[current_keyboard]=open("/dev/uinput",O_RDWR|O_NONBLOCK);
+ if (devout[current_keyboard]<0) {
+ perror("open(\"/dev/misc/uinput\")");
+ }
+@@ -483,6 +485,14 @@ int main (int argc, char *argv[])
+ fprintf(stderr, "Read failed.\n");
+ break;
+ }
++
++ // Replicate LED events from the virtual keyboard to the physical keyboard
++ int rrd = read(devout[current_keyboard], &revev, size);
++ if (rrd >= size) {
++ if (revev.type == EV_LED) {
++ write(keyboard_fds[current_keyboard], &revev, sizeof(revev));
++ }
++ }
+
+ value = ev[0].value;
+
+@@ -506,7 +516,7 @@ int main (int argc, char *argv[])
+ }
+ }
+
+- if (hide_event == false) {
++ if ((hide_event == false) && (ev[0].type != EV_LED) && (ev[1].type != EV_LED)) {
+ // Pass the event on...
+ event = ev[0];
+ write(devout[current_keyboard], &event, sizeof event);
diff --git a/redhat/kdebase/kdebase-3.5.13-tsak_keyboard_hotplug.patch b/redhat/kdebase/kdebase-3.5.13-tsak_keyboard_hotplug.patch
new file mode 100644
index 000000000..8c8ab415f
--- /dev/null
+++ b/redhat/kdebase/kdebase-3.5.13-tsak_keyboard_hotplug.patch
@@ -0,0 +1,641 @@
+commit 5f413b26ebaab8a6478427e4125bda628058ff85
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1327015159 -0600
+
+ Add keyboard hotplug (add/remove) support to tsak
+ This closes Bug 587
+ Fix warning in kompmgr
+
+diff --git a/tsak/CMakeLists.txt b/tsak/CMakeLists.txt
+index 6aa5b49..4490636 100644
+--- a/tsak/CMakeLists.txt
++++ b/tsak/CMakeLists.txt
+@@ -23,5 +23,6 @@ link_directories(
+
+ tde_add_executable( tsak
+ SOURCES main.cpp
++ LINK udev
+ DESTINATION ${BIN_INSTALL_DIR}
+ )
+diff --git a/tsak/main.cpp b/tsak/main.cpp
+index 050d6c0..df485a0 100644
+--- a/tsak/main.cpp
++++ b/tsak/main.cpp
+@@ -1,8 +1,8 @@
+ /*
+ Copyright 2010 Adam Marchetti
+-Copyright 2011 Timothy Pearson <kb9vqf@pearsoncomputing.net>
++Copyright 2011-2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+
+-This file is part of tsak.
++This file is part of tsak, the TDE Secure Attention Key daemon
+
+ tsak is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as
+@@ -35,9 +35,15 @@ License along with tsak. If not, see http://www.gnu.org/licenses/.
+ #include <sys/time.h>
+ #include <termios.h>
+ #include <signal.h>
++#include <libudev.h>
++#include <libgen.h>
+
+ #define FIFO_DIR "/tmp/ksocket-global"
+ #define FIFO_FILE_OUT "/tmp/ksocket-global/tsak"
++#define FIFO_LOCKFILE_OUT "/tmp/ksocket-global/tsak.lock"
++
++#define MAX_KEYBOARDS 64
++#define MAX_INPUT_NODE 128
+
+ #define TestBit(bit, array) (array[(bit) / 8] & (1 << ((bit) % 8)))
+
+@@ -46,9 +52,18 @@ typedef unsigned char byte;
+ bool mPipeOpen_out = false;
+ int mPipe_fd_out = -1;
+
++int mPipe_lockfd_out = -1;
++
++char filename[32];
++char key_bitmask[(KEY_MAX + 7) / 8];
++
+ struct sigaction usr_action;
+ sigset_t block_mask;
+
++int keyboard_fd_num;
++int keyboard_fds[MAX_KEYBOARDS];
++int child_pids[MAX_KEYBOARDS];
++
+ const char *keycode[256] =
+ {
+ "", "<esc>", "1", "2", "3", "4", "5", "6", "7", "8",
+@@ -79,6 +94,26 @@ int bit_set(size_t i, const byte* a)
+ return a[i/CHAR_BIT] & (1 << i%CHAR_BIT);
+ }
+
++// --------------------------------------------------------------------------------------
++// Useful function from Stack Overflow
++// http://stackoverflow.com/questions/874134/find-if-string-endswith-another-string-in-c
++// --------------------------------------------------------------------------------------
++/* returns 1 iff str ends with suffix */
++int str_ends_with(const char * str, const char * suffix) {
++
++ if( str == NULL || suffix == NULL )
++ return 0;
++
++ size_t str_len = strlen(str);
++ size_t suffix_len = strlen(suffix);
++
++ if(suffix_len > str_len)
++ return 0;
++
++ return 0 == strncmp( str + str_len - suffix_len, suffix, suffix_len );
++}
++// --------------------------------------------------------------------------------------
++
+ /* Assign features (supported axes and keys) of the physical input device (devin)
+ * to the virtual input device (devout) */
+ static void copy_features(int devin, int devout)
+@@ -111,26 +146,40 @@ static void copy_features(int devin, int devout)
+ }
+ }
+
+-int find_keyboard() {
++int find_keyboards() {
+ int i, j;
+ int fd;
+- char filename[32];
+- char key_bitmask[(KEY_MAX + 7) / 8];
++ char name[256] = "Unknown";
++
++ keyboard_fd_num = 0;
++ for (i=0; i<MAX_KEYBOARDS; i++) {
++ keyboard_fds[i] = 0;
++ }
+
+- for (i=0; i<32; i++) {
++ for (i=0; i<MAX_INPUT_NODE; i++) {
+ snprintf(filename,sizeof(filename), "/dev/input/event%d", i);
+-
++
+ fd = open(filename, O_RDWR|O_SYNC);
+ ioctl(fd, EVIOCGBIT(EV_KEY, sizeof(key_bitmask)), key_bitmask);
+-
+- /* We assume that anything that has an alphabetic key in the
+- QWERTYUIOP range in it is the main keyboard. */
+- for (j = KEY_Q; j <= KEY_P; j++) {
+- if (TestBit(j, key_bitmask))
+- return fd;
++
++ // Ensure that we do not detect our own tsak faked keyboards
++ ioctl (fd, EVIOCGNAME (sizeof (name)), name);
++ if (str_ends_with(name, "+tsak") == 0) {
++ /* We assume that anything that has an alphabetic key in the
++ QWERTYUIOP range in it is the main keyboard. */
++ for (j = KEY_Q; j <= KEY_P; j++) {
++ if (TestBit(j, key_bitmask)) {
++ keyboard_fds[keyboard_fd_num] = fd;
++ }
++ }
++ }
++
++ if (keyboard_fds[keyboard_fd_num] == 0) {
++ close (fd);
++ }
++ else {
++ keyboard_fd_num++;
+ }
+-
+- close (fd);
+ }
+ return 0;
+ }
+@@ -144,6 +193,12 @@ void tearDownPipe()
+ }
+ }
+
++void tearDownLockingPipe()
++{
++ close(mPipe_lockfd_out);
++ unlink(FIFO_LOCKFILE_OUT);
++}
++
+ bool setFileLock(int fd, bool close_on_failure)
+ {
+ struct flock fl;
+@@ -154,8 +209,8 @@ bool setFileLock(int fd, bool close_on_failure)
+ fl.l_len = 1;
+
+ // Set the exclusive file lock
+- if (fcntl(mPipe_fd_out, F_SETLK, &fl) == -1) {
+- close(mPipe_fd_out);
++ if (fcntl(fd, F_SETLK, &fl) == -1) {
++ close(fd);
+ return false;
+ }
+
+@@ -171,7 +226,7 @@ bool checkFileLock()
+ fl.l_whence = SEEK_SET;
+ fl.l_len = 0;
+
+- int fd = open(FIFO_FILE_OUT, O_RDWR | O_NONBLOCK);
++ int fd = open(FIFO_LOCKFILE_OUT, O_RDWR | O_NONBLOCK);
+ fcntl(fd, F_GETLK, &fl); /* Overwrites lock structure with preventors. */
+
+ if (fd > -1) {
+@@ -202,6 +257,71 @@ bool setupPipe()
+ return setFileLock(mPipe_fd_out, true);
+ }
+
++bool setupLockingPipe()
++{
++ /* Create the FIFOs if they do not exist */
++ umask(0);
++ mkdir(FIFO_DIR,0644);
++
++ mknod(FIFO_LOCKFILE_OUT, S_IFIFO|0600, 0);
++ chmod(FIFO_LOCKFILE_OUT, 0600);
++
++ mPipe_lockfd_out = open(FIFO_LOCKFILE_OUT, O_RDWR | O_NONBLOCK);
++ if (mPipe_lockfd_out > -1) {
++ // Set the exclusive file lock
++ return setFileLock(mPipe_lockfd_out, true);
++ }
++
++ return false;
++}
++
++void broadcast_sak()
++{
++ // Let anyone listening to our interface know that an SAK keypress was received
++ // I highly doubt there are more than 255 VTs active at once...
++ int i;
++ for (i=0;i<255;i++) {
++ write(mPipe_fd_out, "SAK\n\r", 6);
++ }
++}
++
++void restart_tsak()
++{
++ int i;
++
++ fprintf(stderr, "Forcibly terminating...\n");
++
++ // Close down all child processes
++ for (i=0; i<MAX_KEYBOARDS; i++) {
++ if (child_pids[i] != 0) {
++ kill(child_pids[i], SIGKILL);
++ }
++ }
++
++ // Wait for process termination
++ sleep(1);
++
++ // Release all exclusive keyboard locks
++ for (int current_keyboard=0;current_keyboard<keyboard_fd_num;current_keyboard++) {
++ if(ioctl(keyboard_fds[current_keyboard], EVIOCGRAB, 0) < 0) {
++ fprintf(stderr, "Failed to release exclusive input device lock");
++ }
++ close(keyboard_fds[current_keyboard]);
++ }
++
++#if 1
++ // Restart now
++ // Note that the execl function never returns
++ char me[2048];
++ int chars = readlink("/proc/self/exe", me, sizeof(me));
++ me[chars] = 0;
++ me[2047] = 0;
++ execl(me, basename(me), (char*)NULL);
++#else
++ _exit(0);
++#endif
++}
++
+ class PipeHandler
+ {
+ public:
+@@ -215,7 +335,7 @@ PipeHandler::PipeHandler()
+
+ PipeHandler::~PipeHandler()
+ {
+- tearDownPipe();
++ tearDownLockingPipe();
+ }
+
+ int main (int argc, char *argv[])
+@@ -223,13 +343,19 @@ int main (int argc, char *argv[])
+ struct input_event ev[64];
+ struct input_event event;
+ struct uinput_user_dev devinfo={0};
+- int fd, devout, rd, value, size = sizeof (struct input_event);
++ int devout[MAX_KEYBOARDS], rd, i, value, size = sizeof (struct input_event);
+ char name[256] = "Unknown";
+ bool ctrl_down = false;
+ bool alt_down = false;
+ bool hide_event = false;
+ bool established = false;
+ bool testrun = false;
++ int current_keyboard;
++ bool can_proceed;
++
++ for (i=0; i<MAX_KEYBOARDS; i++) {
++ child_pids[i] = 0;
++ }
+
+ if (argc == 2) {
+ if (strcmp(argv[1], "checkactive") == 0) {
+@@ -239,7 +365,11 @@ int main (int argc, char *argv[])
+
+ // Check for existing file locks
+ if (!checkFileLock()) {
+- fprintf(stderr, "Another instance of this program is already running\n");
++ fprintf(stderr, "Another instance of this program is already running [1]\n");
++ return 8;
++ }
++ if (!setupLockingPipe()) {
++ fprintf(stderr, "Another instance of this program is already running [2]\n");
+ return 8;
+ }
+
+@@ -256,125 +386,227 @@ int main (int argc, char *argv[])
+ return 5;
+ }
+
+- // Open Device
+- fd = find_keyboard();
+- if (fd == -1) {
+- printf ("Could not find your keyboard!\n");
++ // Find keyboards
++ find_keyboards();
++ if (keyboard_fd_num == 0) {
++ printf ("Could not find any usable keyboard(s)!\n");
++ // Make sure everyone knows we physically can't detect a SAK
++ // Before we do this we broadcast one so that active dialogs are updated appropriately
++ // Also, we keep watching for a keyboard to be added via a forked child process...
++ broadcast_sak();
+ if (established)
+ sleep(1);
+- else
+- return 4;
++ else {
++ int i=fork();
++ if (i<0) return 12; // fork failed
++ if (i>0) {
++ return 4;
++ }
++ sleep(1);
++ restart_tsak();
++ }
+ }
+ else {
+- // Print Device Name
+- ioctl (fd, EVIOCGNAME (sizeof (name)), name);
+- fprintf(stderr, "Reading From : (%s)\n", name);
+-
+- // Create filtered virtual output device
+- devout=open("/dev/misc/uinput",O_WRONLY|O_NONBLOCK);
+- if (devout<0) {
+- perror("open(\"/dev/misc/uinput\")");
+- devout=open("/dev/uinput",O_WRONLY|O_NONBLOCK);
+- }
+- if (devout<0) {
+- fprintf(stderr,"Unable to open /dev/uinput or /dev/misc/uinput (char device 10:223).\nPossible causes:\n 1) Device node does not exist\n 2) Kernel not compiled with evdev [INPUT_EVDEV] and uinput [INPUT_UINPUT] user level driver support\n 3) Permission denied.\n");
+- perror("open(\"/dev/uinput\")");
+- if (established)
+- sleep(1);
+- else
+- return 3;
+- }
+- else {
+- if(ioctl(fd, EVIOCGRAB, 2) < 0) {
+- close(fd);
+- fprintf(stderr, "Failed to grab exclusive input device lock");
++ fprintf(stderr, "Found %d keyboard(s)\n", keyboard_fd_num);
++
++ can_proceed = true;
++ for (current_keyboard=0;current_keyboard<keyboard_fd_num;current_keyboard++) {
++ // Print Device Name
++ ioctl (keyboard_fds[current_keyboard], EVIOCGNAME (sizeof (name)), name);
++ fprintf(stderr, "Reading from keyboard: (%s)\n", name);
++
++ // Create filtered virtual output device
++ devout[current_keyboard]=open("/dev/misc/uinput",O_WRONLY|O_NONBLOCK);
++ if (devout[current_keyboard]<0) {
++ devout[current_keyboard]=open("/dev/uinput",O_WRONLY|O_NONBLOCK);
++ if (devout[current_keyboard]<0) {
++ perror("open(\"/dev/misc/uinput\")");
++ }
++ }
++ if (devout[current_keyboard]<0) {
++ can_proceed = false;
++ fprintf(stderr, "Unable to open /dev/uinput or /dev/misc/uinput (char device 10:223).\nPossible causes:\n 1) Device node does not exist\n 2) Kernel not compiled with evdev [INPUT_EVDEV] and uinput [INPUT_UINPUT] user level driver support\n 3) Permission denied.\n");
++ perror("open(\"/dev/uinput\")");
+ if (established)
+ sleep(1);
+ else
+- return 1;
++ return 3;
+ }
+- else {
+- ioctl(fd, EVIOCGNAME(UINPUT_MAX_NAME_SIZE), devinfo.name);
+- strncat(devinfo.name, "+tsak", UINPUT_MAX_NAME_SIZE-1);
+- fprintf(stderr, "%s\n", devinfo.name);
+- ioctl(fd, EVIOCGID, &devinfo.id);
+-
+- copy_features(fd, devout);
+- write(devout,&devinfo,sizeof(devinfo));
+- if (ioctl(devout,UI_DEV_CREATE)<0) {
+- fprintf(stderr,"Unable to create input device with UI_DEV_CREATE\n");
++ }
++
++ if (can_proceed == true) {
++ for (current_keyboard=0;current_keyboard<keyboard_fd_num;current_keyboard++) {
++ if(ioctl(keyboard_fds[current_keyboard], EVIOCGRAB, 2) < 0) {
++ close(keyboard_fds[current_keyboard]);
++ fprintf(stderr, "Failed to grab exclusive input device lock");
+ if (established)
+ sleep(1);
+ else
+- return 2;
++ return 1;
+ }
+ else {
+- fprintf(stderr,"Device created.\n");
+-
+- if (established == false) {
+- tearDownPipe();
+- int i=fork();
+- if (i<0) return 9; // fork failed
+- if (i>0) {
+- // close parent process
+- close(mPipe_fd_out);
+- return 0;
+- }
+- setupPipe();
++ ioctl(keyboard_fds[current_keyboard], EVIOCGNAME(UINPUT_MAX_NAME_SIZE), devinfo.name);
++ strncat(devinfo.name, "+tsak", UINPUT_MAX_NAME_SIZE-1);
++ fprintf(stderr, "%s\n", devinfo.name);
++ ioctl(keyboard_fds[current_keyboard], EVIOCGID, &devinfo.id);
++
++ copy_features(keyboard_fds[current_keyboard], devout[current_keyboard]);
++ write(devout[current_keyboard],&devinfo,sizeof(devinfo));
++ if (ioctl(devout[current_keyboard],UI_DEV_CREATE)<0) {
++ fprintf(stderr, "Unable to create input device with UI_DEV_CREATE\n");
++ if (established)
++ sleep(1);
++ else
++ return 2;
+ }
+-
+- established = true;
+-
+- if (testrun == true) {
+- return 0;
+- }
+-
+- while (1) {
+- if ((rd = read (fd, ev, size * 2)) < size) {
+- fprintf(stderr,"Read failed.\n");
+- break;
+- }
+-
+- value = ev[0].value;
+-
+- if (value != ' ' && ev[1].value == 0 && ev[1].type == 1){ // Read the key release event
+- if (keycode[(ev[1].code)]) {
+- if (strcmp(keycode[(ev[1].code)], "<control>") == 0) ctrl_down = false;
+- if (strcmp(keycode[(ev[1].code)], "<alt>") == 0) alt_down = false;
++ else {
++ fprintf(stderr, "Device created.\n");
++
++ if (established == false) {
++ int i=fork();
++ if (i<0) return 9; // fork failed
++ if (i>0) {
++ child_pids[current_keyboard] = i;
++ continue;
+ }
++ setupLockingPipe();
+ }
+- if (value != ' ' && ev[1].value == 1 && ev[1].type == 1){ // Read the key press event
+- if (keycode[(ev[1].code)]) {
+- if (strcmp(keycode[(ev[1].code)], "<control>") == 0) ctrl_down = true;
+- if (strcmp(keycode[(ev[1].code)], "<alt>") == 0) alt_down = true;
+- }
++
++ established = true;
++
++ if (testrun == true) {
++ return 0;
+ }
+
+- hide_event = false;
+- if (keycode[(ev[1].code)]) {
+- if (alt_down && ctrl_down && (strcmp(keycode[(ev[1].code)], "<del>") == 0)) {
+- hide_event = true;
++ while (1) {
++ if ((rd = read (keyboard_fds[current_keyboard], ev, size * 2)) < size) {
++ fprintf(stderr, "Read failed.\n");
++ break;
++ }
++
++ value = ev[0].value;
++
++ if (value != ' ' && ev[1].value == 0 && ev[1].type == 1){ // Read the key release event
++ if (keycode[(ev[1].code)]) {
++ if (strcmp(keycode[(ev[1].code)], "<control>") == 0) ctrl_down = false;
++ if (strcmp(keycode[(ev[1].code)], "<alt>") == 0) alt_down = false;
++ }
++ }
++ if (value != ' ' && ev[1].value == 1 && ev[1].type == 1){ // Read the key press event
++ if (keycode[(ev[1].code)]) {
++ if (strcmp(keycode[(ev[1].code)], "<control>") == 0) ctrl_down = true;
++ if (strcmp(keycode[(ev[1].code)], "<alt>") == 0) alt_down = true;
++ }
++ }
++
++ hide_event = false;
++ if (keycode[(ev[1].code)]) {
++ if (alt_down && ctrl_down && (strcmp(keycode[(ev[1].code)], "<del>") == 0)) {
++ hide_event = true;
++ }
++ }
++
++ if (hide_event == false) {
++ // Pass the event on...
++ event = ev[0];
++ write(devout[current_keyboard], &event, sizeof event);
++ event = ev[1];
++ write(devout[current_keyboard], &event, sizeof event);
++ }
++ if (hide_event == true) {
++ // Let anyone listening to our interface know that an SAK keypress was received
++ broadcast_sak();
+ }
+ }
++ }
++ }
++ }
++
++ // fork udev monitor process
++ int i=fork();
++ if (i<0) return 10; // fork failed
++ if (i>0) {
++ // Terminate parent
++ return 0;
++ }
++
++ // Prevent multiple process instances from starting
++ setupLockingPipe();
++
++ // Wait a little bit so that udev hotplug can stabilize before we start monitoring
++ sleep(1);
++
++ fprintf(stderr, "Hotplug monitoring process started\n");
++
++ // Monitor for hotplugged keyboards
++ int j;
++ int hotplug_fd;
++ bool is_new_keyboard;
++ struct udev *udev;
++ struct udev_device *dev;
++ struct udev_monitor *mon;
++
++ // Create the udev object
++ udev = udev_new();
++ if (!udev) {
++ fprintf(stderr, "Cannot connect to udev interface\n");
++ return 11;
++ }
++
++ // Set up a udev monitor to monitor input devices
++ mon = udev_monitor_new_from_netlink(udev, "udev");
++ udev_monitor_filter_add_match_subsystem_devtype(mon, "input", NULL);
++ udev_monitor_enable_receiving(mon);
++
++ while (1) {
++ // Watch for input from the monitoring process
++ dev = udev_monitor_receive_device(mon);
++ if (dev) {
++ // If a keyboard was removed we need to restart...
++ if (strcmp(udev_device_get_action(dev), "remove") == 0) {
++ udev_device_unref(dev);
++ udev_unref(udev);
++ restart_tsak();
++ }
++
++ is_new_keyboard = false;
++ snprintf(filename,sizeof(filename), "%s", udev_device_get_devnode(dev));
++ udev_device_unref(dev);
++
++ // Print name of keyboard
++ hotplug_fd = open(filename, O_RDWR|O_SYNC);
++ ioctl(hotplug_fd, EVIOCGBIT(EV_KEY, sizeof(key_bitmask)), key_bitmask);
+
+- if (hide_event == false) {
+- // Pass the event on...
+- event = ev[0];
+- write(devout, &event, sizeof event);
+- event = ev[1];
+- write(devout, &event, sizeof event);
+- }
+- if (hide_event == true) {
+- // Let anyone listening to our interface know that an SAK keypress was received
+- // I highly doubt there are more than 255 VTs active at once...
+- int i;
+- for (i=0;i<255;i++) {
+- write(mPipe_fd_out, "SAK\n\r", 6);
+- }
++ /* We assume that anything that has an alphabetic key in the
++ QWERTYUIOP range in it is the main keyboard. */
++ for (j = KEY_Q; j <= KEY_P; j++) {
++ if (TestBit(j, key_bitmask)) {
++ is_new_keyboard = true;
+ }
+ }
++ ioctl (hotplug_fd, EVIOCGNAME (sizeof (name)), name);
++ close(hotplug_fd);
++
++ // Ensure that we do not detect our own tsak faked keyboards
++ if (str_ends_with(name, "+tsak") == 1) {
++ is_new_keyboard = false;
++ }
++
++ // If a keyboard was added we need to restart...
++ if (is_new_keyboard == true) {
++ fprintf(stderr, "Hotplugged new keyboard: (%s)\n", name);
++ udev_unref(udev);
++ restart_tsak();
++ }
++ }
++ else {
++ fprintf(stderr, "No Device from receive_device(). An error occured.\n");
+ }
+ }
++
++ udev_unref(udev);
++
++ fprintf(stderr, "Hotplug monitoring process terminated\n");
+ }
+ }
+ }
+diff --git a/twin/kompmgr/kompmgr.c b/twin/kompmgr/kompmgr.c
+index 5daf8c2..8216676 100644
+--- a/kwin/kompmgr/kompmgr.c
++++ b/kwin/kompmgr/kompmgr.c
+@@ -60,6 +60,7 @@ check baghira.sf.net for more infos
+ #include <signal.h>
+ #include <time.h>
+ #include <unistd.h>
++#include <libgen.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+ #include <X11/Xatom.h>
+@@ -397,7 +398,7 @@ void delete_pid_file()
+ int chars = readlink("/proc/self/exe", me, sizeof(me));
+ me[chars] = 0;
+ me[2047] = 0;
+- execl(me, NULL);
++ execl(me, basename(me), (char*)NULL);
+ }
+ #endif
+ }
diff --git a/redhat/kdebase/trinity-kdebase-3.5.13.spec b/redhat/kdebase/trinity-kdebase-3.5.13.spec
index bc99f494d..7496f1ec9 100644
--- a/redhat/kdebase/trinity-kdebase-3.5.13.spec
+++ b/redhat/kdebase/trinity-kdebase-3.5.13.spec
@@ -2,7 +2,7 @@
%if "%{?version}" == ""
%define version 3.5.13
%endif
-%define release 15
+%define release 16
# If TDE is built in a specific prefix (e.g. /opt/trinity), the release will be suffixed with ".opt".
%if "%{?_prefix}" != "/usr"
@@ -99,6 +99,12 @@ Patch29: kdebase-3.5.13-fix_multihead_desktop_lock.patch
Patch30: kdebase-3.5.12-kdm_hide_menu_button.patch
## [kdebase/kxkb] Enables xtest support
Patch31: kdebase-3.5.13-enable_xtest_support.patch
+## [kdebase/kdm/kfrontend] fix KDM high CPU usage when inactive [Bug #690]
+Patch32: kdebase-3.5.13-fix_kdm_cpu_usage.patch
+## [kdebase/tsak] Add keyboard hotplug (add/remove) support to tsak [Bug #587]
+Patch33: kdebase-3.5.13-tsak_keyboard_hotplug.patch
+## [kdebase/tsak] Replicate LED status from virtual keyboards to physical keyboards [Bug #561]
+Patch34: kdebase-3.5.13-replicate_led_status_on_virtual_keyboard.patch
# Fedora 15 Theme: "Lovelock"
%if 0%{?fedora} == 15
@@ -169,11 +175,11 @@ BuildRequires: libXcomposite-devel
BuildRequires: libXtst-devel
BuildRequires: libXdamage-devel
BuildRequires: xorg-x11-font-utils
-
-# These dependancies are not met in RHEL
-%if 0%{?fedora}
BuildRequires: jack-audio-connection-kit-devel
BuildRequires: nas-devel
+
+%if 0%{?rhel} >= 6 || 0%{?fedora} >= 15
+BuildRequires: libudev-devel
%endif
Requires: tqtinterface
@@ -306,6 +312,11 @@ Protocol handlers (KIOslaves) for personal information management, including:
%patch29 -p0
%patch30 -p1
%patch31 -p1
+%patch32 -p1
+%if 0%{?fedora} >= 15
+%patch33 -p1
+%patch34 -p1
+%endif
# Applies an optional distro-specific graphical theme
%if "%{?tde_bg}" != ""
@@ -354,7 +365,7 @@ cd build
-DWITH_XCOMPOSITE=ON \
-DWITH_XCURSOR=ON \
-DWITH_XFIXES=ON \
-%if 0%{?fedora} || 0%{?rhel} > 5
+%if 0%{?fedora} || 0%{?rhel} >= 6
-DWITH_XRANDR=ON \
%else
-DWITH_XRANDR=OFF \
@@ -692,6 +703,11 @@ update-desktop-database %{_datadir}/applications > /dev/null 2>&1 || :
%{_datadir}/cmake/*.cmake
%changelog
+* Sat Jan 21 2012 Francois Andriot <francois.andriot@free.fr> - 3.5.13-16
+- Fix KDM high CPU usage when inactive [Bug #690]
+- Add keyboard hotplug (add/remove) support to tsak [Bug #587]
+- Replicate LED status from virtual keyboards to physical keyboards [Bug #561]
+
* Thu Jan 05 2012 Francois Andriot <francois.andriot@free.fr> - 3.5.13-15
- Add a KDM option to hide 'Menu' button on login prompt
- Fix corrupted PNG tiles [Bug #298]
diff --git a/redhat/kdelibs/kdelibs-3.5.13-fix_UTF8_encoding_for_WebDAV_directories.patch b/redhat/kdelibs/kdelibs-3.5.13-fix_UTF8_encoding_for_WebDAV_directories.patch
new file mode 100644
index 000000000..6fa9a085a
--- /dev/null
+++ b/redhat/kdelibs/kdelibs-3.5.13-fix_UTF8_encoding_for_WebDAV_directories.patch
@@ -0,0 +1,45 @@
+From 1f37c9cdb9bb47f8453cf26af8006c7c8d4ca3b3 Mon Sep 17 00:00:00 2001
+From: Thorsten Glaser <t.glaser@tarent.de>
+Date: Tue, 27 Dec 2011 14:28:27 +0100
+Subject: [PATCH] fix UTF-8 encoding for WebDAV directories
+
+idea derived from KIO slave http.cpp from KDE 4; reimplemented
+on top of Qt3/KDE3 APIs
+
+Bug: http://bugs.kde.org/show_bug.cgi?id=127251
+
+Signed-off-by: Thorsten Glaser <t.glaser@tarent.de>
+---
+ kioslave/http/http.cc | 6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+diff --git a/kioslave/http/http.cc b/kioslave/http/http.cc
+index a1495d7..16b785d 100644
+--- a/kioslave/http/http.cc
++++ b/kioslave/http/http.cc
+@@ -45,6 +45,7 @@
+ #include <tqregexp.h>
+ #include <tqdatetime.h>
+ #include <tqstringlist.h>
++#include <tqurl.h>
+
+ #include <kurl.h>
+ #include <kidna.h>
+@@ -750,9 +751,14 @@ void HTTPProtocol::davStatList( const KURL& url, bool stat )
+ entry.clear();
+
+ TQString urlStr = href.text();
++#if 0
+ int encoding = remoteEncoding()->encodingMib();
+ if ((encoding == 106) && (!KStringHandler::isUtf8(KURL::decode_string(urlStr, 4).latin1())))
+ encoding = 4; // Use latin1 if the file is not actually utf-8
++#else
++ TQUrl::decode(urlStr);
++ int encoding = 106;
++#endif
+
+ KURL thisURL ( urlStr, encoding );
+
+--
+1.7.2.3
+
diff --git a/redhat/kdelibs/kdelibs-3.5.13-fix_add_printer.patch b/redhat/kdelibs/kdelibs-3.5.13-fix_add_printer.patch
new file mode 100644
index 000000000..5fb5aa576
--- /dev/null
+++ b/redhat/kdelibs/kdelibs-3.5.13-fix_add_printer.patch
@@ -0,0 +1,20 @@
+commit 87201a3741bd9d4b4638be7b3d8c44a737115b0f
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1325899796 -0600
+
+ Fix make_driver_db_cups path
+ This closes Bug 383
+
+diff --git a/kdeprint/cups/kmcupsmanager.cpp b/tdeprint/cups/kmcupsmanager.cpp
+index 635cfd5..4a64248 100644
+--- a/kdeprint/cups/kmcupsmanager.cpp
++++ b/kdeprint/cups/kmcupsmanager.cpp
+@@ -95,7 +95,7 @@ KMCupsManager::~KMCupsManager()
+
+ TQString KMCupsManager::driverDbCreationProgram()
+ {
+- return TQString::tqfromLatin1("/opt/trinity/bin/make_driver_db_cups");
++ return TQString(__KDE_BINDIR).append(TQString::fromLatin1("/make_driver_db_cups"));
+ }
+
+ TQString KMCupsManager::driverDirectory()
diff --git a/redhat/kdelibs/trinity-kdelibs-3.5.13.spec b/redhat/kdelibs/trinity-kdelibs-3.5.13.spec
index 21e80ffd8..c6a44125f 100755
--- a/redhat/kdelibs/trinity-kdelibs-3.5.13.spec
+++ b/redhat/kdelibs/trinity-kdelibs-3.5.13.spec
@@ -2,7 +2,7 @@
%if "%{?version}" == ""
%define version 3.5.13
%endif
-%define release 6
+%define release 7
# If TDE is built in a specific prefix (e.g. /opt/trinity), the release will be suffixed with ".opt".
%if "%{?_prefix}" != "/usr"
@@ -48,6 +48,10 @@ Patch12: kdelibs-3.5.13-kate_syntax.patch.gz
Patch13: kdelibs-3.5.13-add_inotify_support.patch
## [kdelibs] Add fam/gamin support to tdelibs CMake (backport commit 2b035349c31fe64c31d2c050892b117a3a807179)
Patch14: kdelibs-3.5.13-enable_fam_gamin.patch
+## [kdelibs/kioslave/http] Fix UTF8 Encoding for WebDAV directories
+Patch15: kdelibs-3.5.13-fix_UTF8_encoding_for_WebDAV_directories.patch
+## [kdelibs/kdeprint] Fix add printer [Bug #383]
+Patch16: kdelibs-3.5.13-fix_add_printer.patch
BuildRequires: libtool
BuildRequires: tqtinterface-devel
@@ -69,6 +73,7 @@ BuildRequires: OpenEXR-devel
BuildRequires: libtool-ltdl-devel
BuildRequires: glib2-devel
BuildRequires: gamin-devel
+BuildRequires: xorg-x11-proto-devel
Requires: tqtinterface
Requires: trinity-arts
@@ -124,6 +129,8 @@ format for easy browsing
%patch12 -p1
%patch13 -p1
%patch14 -p1
+%patch15 -p1
+%patch16 -p1
%build
@@ -324,6 +331,10 @@ EOF
%changelog
+* Sat Jan 21 2012 Francois Andriot <francois.andriot@free.fr> - 3.5.13-7
+- Fix UTF8 Encoding for WebDAV directories
+- Fix hardcoded path in 'add printer' [Bug #383]
+
* Mon Jan 16 2012 Francois Andriot <francois.andriot@free.fr> - 3.5.13-6
- Adds 'fam' and 'gamin' support
diff --git a/redhat/kdemultimedia/kdemultimedia-3.5.13-fix_mmx_detection.patch b/redhat/kdemultimedia/kdemultimedia-3.5.13-fix_mmx_detection.patch
new file mode 100644
index 000000000..785b9d150
--- /dev/null
+++ b/redhat/kdemultimedia/kdemultimedia-3.5.13-fix_mmx_detection.patch
@@ -0,0 +1,12 @@
+diff -urN tdemultimedia/configure.in.in tdemultimedia.new/configure.in.in
+--- tdemultimedia/configure.in.in 2010-08-11 22:36:30.000000000 -0500
++++ tdemultimedia.new/configure.in.in 2012-01-12 22:54:04.000000000 -0600
+@@ -35,7 +35,7 @@
+ then
+ MMX_SUPPORT="no"
+ else
+- as_ver=`echo $as_ver |sed -e "s/.*version //;s/ .*//"`
++ as_ver=`echo|as -v 2>&1 | grep ".*version.*" | awk '{print $NF}'`
+ as_major=`echo $as_ver |cut -d. -f1`
+ if test $as_major -gt 2
+ then
diff --git a/redhat/kdemultimedia/trinity-kdemultimedia-3.5.13.spec b/redhat/kdemultimedia/trinity-kdemultimedia-3.5.13.spec
index 24dcdb176..d896d0a06 100644
--- a/redhat/kdemultimedia/trinity-kdemultimedia-3.5.13.spec
+++ b/redhat/kdemultimedia/trinity-kdemultimedia-3.5.13.spec
@@ -54,6 +54,9 @@ Provides: kdemultimedia3 = %{version}-%{release}
Patch3: kdemultimedia-3.4.0-xdg.patch
Patch5: kdemultimedia-3.5.7-pthread.patch
+# [kdemultimedia] Fix MMX detection [Bug #800]
+Patch10: kdemultimedia-3.5.13-fix_mmx_detection.patch
+
Requires: %{name}-libs = %{version}-%{release}
BuildRequires: trinity-arts-devel
@@ -132,6 +135,7 @@ Requires: %{name} = %{version}-%{release}
%setup -q -n kdemultimedia
%patch3 -p1 -b .xdg
%patch5 -p1 -b .pthread
+%patch10 -p1
# Ugly hack to modify TQT include directory inside autoconf files.
# If TQT detection fails, it fallbacks to TQT4 instead of TQT3 !
@@ -413,6 +417,7 @@ update-desktop-database %{_datadir}/applications > /dev/null 2>&1 || :
%changelog
* Mon Jan 16 2012 Francois Andriot <francois.andriot@free.fr> - 3.5.13-5
- Enables 'akode' support
+- Fix MMX support [Bug #800]
* Fri Nov 25 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.13-4
- Fix HTML directory location
diff --git a/redhat/kdenetwork/trinity-kdenetwork-3.5.13.spec b/redhat/kdenetwork/trinity-kdenetwork-3.5.13.spec
index a9171f867..82f176b5e 100644
--- a/redhat/kdenetwork/trinity-kdenetwork-3.5.13.spec
+++ b/redhat/kdenetwork/trinity-kdenetwork-3.5.13.spec
@@ -185,7 +185,7 @@ Requires: %{name} = %{version}-%{release}
%patch11 -p1
%patch12 -p1
%patch13 -p1
-%patch14 -p1
+%patch14 -p4
# TDE 3.5.13: missing 'dummy.cpp' in MSN protocol
diff --git a/redhat/tqt3/0084-compositing-properties.patch b/redhat/tqt3/0084-compositing-properties.patch
new file mode 100644
index 000000000..368b6c267
--- /dev/null
+++ b/redhat/tqt3/0084-compositing-properties.patch
@@ -0,0 +1,80 @@
+qt-bugs@ issue : none
+bugs.kde.org number : none
+applied: no
+author: Lubos Lunak <l.lunak@kde.org>
+
+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.
+
+--- src/kernel/qwidget_x11.cpp.sav 2007-06-25 10:36:42.000000000 +0200
++++ src/kernel/qwidget_x11.cpp 2007-10-02 15:30:13.000000000 +0200
+@@ -557,7 +557,10 @@ void QWidget::create( WId window, bool i
+ wsa.save_under = True;
+ XChangeWindowAttributes( dpy, id, CWOverrideRedirect | CWSaveUnder,
+ &wsa );
+- x11SetWindowType();
++ XClassHint class_hint;
++ class_hint.res_name = (char *) qAppName(); // application name
++ class_hint.res_class = (char *) qAppClass(); // application class
++ XSetClassHint( dpy, id, &class_hint );
+ } else if ( topLevel && !desktop ) { // top-level widget
+ QWidget *p = parentWidget(); // real parent
+ if (p)
+@@ -620,8 +623,6 @@ void QWidget::create( WId window, bool i
+ else
+ XDeleteProperty(dpy, id, qt_xa_motif_wm_hints);
+
+- x11SetWindowType();
+-
+ // set _NET_WM_WINDOW_STATE
+ if (curr_winstate > 0)
+ XChangeProperty(dpy, id, qt_net_wm_state, XA_ATOM, 32, PropModeReplace,
+@@ -629,11 +630,6 @@ void QWidget::create( WId window, bool i
+ else
+ XDeleteProperty(dpy, id, qt_net_wm_state);
+
+- // set _NET_WM_PID
+- long curr_pid = getpid();
+- XChangeProperty(dpy, id, qt_net_wm_pid, XA_CARDINAL, 32, PropModeReplace,
+- (unsigned char *) &curr_pid, 1);
+-
+ #ifndef QT_NO_XSYNC
+ // set _NET_WM_SYNC_COUNTER
+ createSyncCounter();
+@@ -645,19 +641,31 @@ void QWidget::create( WId window, bool i
+ // when we create a toplevel widget, the frame strut should be dirty
+ fstrut_dirty = 1;
+
++ } else {
++ // non-toplevel widgets don't have a frame, so no need to
++ // update the strut
++ fstrut_dirty = 0;
++ }
++
++ if (initializeWindow && (popup || (topLevel && !desktop))) { // properties set on all toplevel windows
++ x11SetWindowType();
++
++ // set _NET_WM_PID
++ long curr_pid = getpid();
++ XChangeProperty(dpy, id, qt_net_wm_pid, XA_CARDINAL, 32, PropModeReplace,
++ (unsigned char *) &curr_pid, 1);
++
+ // declare the widget's object name as window role
+ XChangeProperty( dpy, id,
+ qt_window_role, XA_STRING, 8, PropModeReplace,
+ (unsigned char *)name(), qstrlen( name() ) );
+
+ // set client leader property
++ if ( !qt_x11_wm_client_leader )
++ qt_x11_create_wm_client_leader();
+ XChangeProperty( dpy, id, qt_wm_client_leader,
+ XA_WINDOW, 32, PropModeReplace,
+ (unsigned char *)&qt_x11_wm_client_leader, 1 );
+- } else {
+- // non-toplevel widgets don't have a frame, so no need to
+- // update the strut
+- fstrut_dirty = 0;
+ }
+
+ if ( initializeWindow ) {
diff --git a/redhat/tqt3/assistant3.desktop b/redhat/tqt3/assistant3.desktop
new file mode 100644
index 000000000..49e718c5d
--- /dev/null
+++ b/redhat/tqt3/assistant3.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=Qt3 Assistant
+Comment=Add translations to Qt3 applications
+Exec=assistant
+Icon=assistant3
+Terminal=false
+Encoding=UTF-8
+Type=Application
+Categories=Qt;Development;
diff --git a/redhat/tqt3/designer3.desktop b/redhat/tqt3/designer3.desktop
new file mode 100644
index 000000000..23f1f549a
--- /dev/null
+++ b/redhat/tqt3/designer3.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Name=Qt3 Designer
+GenericName=Interface Designer
+Comment=Design GUIs for Qt3 applications
+Exec=designer
+Icon=designer3
+MimeType=application/x-designer;
+Terminal=false
+Encoding=UTF-8
+Type=Application
+Categories=Qt;Development;
diff --git a/redhat/tqt3/linguist3.desktop b/redhat/tqt3/linguist3.desktop
new file mode 100644
index 000000000..c6fce02c8
--- /dev/null
+++ b/redhat/tqt3/linguist3.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=Qt3 Linguist
+Comment=Add translations to Qt3 applications
+Exec=linguist
+Icon=linguist3
+MimeType=application/x-linguist;
+Terminal=false
+Encoding=UTF-8
+Type=Application
+Categories=Qt;Development;
diff --git a/redhat/tqt3/qt-3.1.0-makefile.patch b/redhat/tqt3/qt-3.1.0-makefile.patch
new file mode 120000
index 000000000..7d8ae65a2
--- /dev/null
+++ b/redhat/tqt3/qt-3.1.0-makefile.patch
@@ -0,0 +1 @@
+../qt3/qt-3.1.0-makefile.patch \ No newline at end of file
diff --git a/redhat/tqt3/qt-3.3.4-print-CJK.patch b/redhat/tqt3/qt-3.3.4-print-CJK.patch
new file mode 120000
index 000000000..99cdc6e1d
--- /dev/null
+++ b/redhat/tqt3/qt-3.3.4-print-CJK.patch
@@ -0,0 +1 @@
+../qt3/qt-3.3.4-print-CJK.patch \ No newline at end of file
diff --git a/redhat/tqt3/qt-3.3.6-fontrendering-gu-228452.patch b/redhat/tqt3/qt-3.3.6-fontrendering-gu-228452.patch
new file mode 120000
index 000000000..b015af122
--- /dev/null
+++ b/redhat/tqt3/qt-3.3.6-fontrendering-gu-228452.patch
@@ -0,0 +1 @@
+../qt3/qt-3.3.6-fontrendering-gu-228452.patch \ No newline at end of file
diff --git a/redhat/tqt3/qt-3.3.6-fontrendering-ml_IN-209974.patch b/redhat/tqt3/qt-3.3.6-fontrendering-ml_IN-209974.patch
new file mode 120000
index 000000000..388a5cbe5
--- /dev/null
+++ b/redhat/tqt3/qt-3.3.6-fontrendering-ml_IN-209974.patch
@@ -0,0 +1 @@
+../qt3/qt-3.3.6-fontrendering-ml_IN-209974.patch \ No newline at end of file
diff --git a/redhat/tqt3/qt-3.3.6-fontrendering-te_IN-211259.patch b/redhat/tqt3/qt-3.3.6-fontrendering-te_IN-211259.patch
new file mode 120000
index 000000000..93c6ba3d8
--- /dev/null
+++ b/redhat/tqt3/qt-3.3.6-fontrendering-te_IN-211259.patch
@@ -0,0 +1 @@
+../qt3/qt-3.3.6-fontrendering-te_IN-211259.patch \ No newline at end of file
diff --git a/redhat/tqt3/qt-3.3.8-fontrendering-as_IN-209972.patch b/redhat/tqt3/qt-3.3.8-fontrendering-as_IN-209972.patch
new file mode 120000
index 000000000..4ded8f792
--- /dev/null
+++ b/redhat/tqt3/qt-3.3.8-fontrendering-as_IN-209972.patch
@@ -0,0 +1 @@
+../qt3/qt-3.3.8-fontrendering-as_IN-209972.patch \ No newline at end of file
diff --git a/redhat/tqt3/qt-x11-free-3.3.4-fullscreen.patch b/redhat/tqt3/qt-x11-free-3.3.4-fullscreen.patch
new file mode 120000
index 000000000..09d41d4b3
--- /dev/null
+++ b/redhat/tqt3/qt-x11-free-3.3.4-fullscreen.patch
@@ -0,0 +1 @@
+../qt3/qt-x11-free-3.3.4-fullscreen.patch \ No newline at end of file
diff --git a/redhat/tqt3/qt-x11-free-3.3.6-qfontdatabase_x11.patch b/redhat/tqt3/qt-x11-free-3.3.6-qfontdatabase_x11.patch
new file mode 120000
index 000000000..f8342f9f9
--- /dev/null
+++ b/redhat/tqt3/qt-x11-free-3.3.6-qfontdatabase_x11.patch
@@ -0,0 +1 @@
+../qt3/qt-x11-free-3.3.6-qfontdatabase_x11.patch \ No newline at end of file
diff --git a/redhat/tqt3/qt-x11-free-3.3.6-strip.patch b/redhat/tqt3/qt-x11-free-3.3.6-strip.patch
new file mode 120000
index 000000000..7121216bc
--- /dev/null
+++ b/redhat/tqt3/qt-x11-free-3.3.6-strip.patch
@@ -0,0 +1 @@
+../qt3/qt-x11-free-3.3.6-strip.patch \ No newline at end of file
diff --git a/redhat/tqt3/qt-x11-free-3.3.7-arm.patch b/redhat/tqt3/qt-x11-free-3.3.7-arm.patch
new file mode 120000
index 000000000..b7682272a
--- /dev/null
+++ b/redhat/tqt3/qt-x11-free-3.3.7-arm.patch
@@ -0,0 +1 @@
+../qt3/qt-x11-free-3.3.7-arm.patch \ No newline at end of file
diff --git a/redhat/tqt3/qt-x11-free-3.3.8b-typo.patch b/redhat/tqt3/qt-x11-free-3.3.8b-typo.patch
new file mode 120000
index 000000000..4e2537345
--- /dev/null
+++ b/redhat/tqt3/qt-x11-free-3.3.8b-typo.patch
@@ -0,0 +1 @@
+../qt3/qt-x11-free-3.3.8b-typo.patch \ No newline at end of file
diff --git a/redhat/tqt3/qt-x11-immodule-unified-qt3.3.5-20051012-quiet.patch b/redhat/tqt3/qt-x11-immodule-unified-qt3.3.5-20051012-quiet.patch
new file mode 100644
index 000000000..5e5d9773a
--- /dev/null
+++ b/redhat/tqt3/qt-x11-immodule-unified-qt3.3.5-20051012-quiet.patch
@@ -0,0 +1,134 @@
+diff -Nur qt-x11-free-3.3.5.orig/plugins/src/inputmethods/imsw-multi/qmultiinputcontext.cpp qt-x11-free-3.3.5/plugins/src/inputmethods/imsw-multi/qmultiinputcontext.cpp
+--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/imsw-multi/qmultiinputcontext.cpp 2005-10-13 16:09:36.000000000 +0200
++++ qt-x11-free-3.3.5/plugins/src/inputmethods/imsw-multi/qmultiinputcontext.cpp 2005-10-13 16:09:31.000000000 +0200
+@@ -306,8 +306,8 @@
+
+ currentIMKey = key;
+
+- qDebug( "QMultiInputContext::changeInputMethod(): index=%d, slave=%s",
+- imIndex, (const char *)_slave->identifierName() );
++ /* qDebug( "QMultiInputContext::changeInputMethod(): index=%d, slave=%s",
++ imIndex, (const char *)_slave->identifierName() ); */
+ }
+ }
+
+diff -Nur qt-x11-free-3.3.5.orig/plugins/src/inputmethods/simple/qsimpleinputcontext.cpp qt-x11-free-3.3.5/plugins/src/inputmethods/simple/qsimpleinputcontext.cpp
+--- qt-x11-free-3.3.5.orig/plugins/src/inputmethods/simple/qsimpleinputcontext.cpp 2005-10-13 16:09:36.000000000 +0200
++++ qt-x11-free-3.3.5/plugins/src/inputmethods/simple/qsimpleinputcontext.cpp 2005-10-13 16:09:31.000000000 +0200
+@@ -140,7 +140,7 @@
+ // only one character. See description of
+ // QInputContext::filterEvent() about key compression.
+ val = text[0].unicode();
+- qDebug( "str = %s", (const char*)keyevent->text().local8Bit() );
++ // qDebug( "str = %s", (const char*)keyevent->text().local8Bit() );
+ }
+
+ // Store value
+@@ -164,14 +164,14 @@
+
+ void QSimpleInputContext::setFocus()
+ {
+- qDebug( "QSimpleInputContext: %p->setFocus(), focusWidget()=%p",
+- this, focusWidget() );
++ /* qDebug( "QSimpleInputContext: %p->setFocus(), focusWidget()=%p",
++ this, focusWidget() ); */
+ }
+
+ void QSimpleInputContext::unsetFocus()
+ {
+- qDebug( "QSimpleInputContext: %p->unsetFocus(), focusWidget()=%p",
+- this, focusWidget() );
++ /* qDebug( "QSimpleInputContext: %p->unsetFocus(), focusWidget()=%p",
++ this, focusWidget() ); */
+ reset();
+ }
+
+@@ -188,8 +188,8 @@
+ case QEvent::MouseButtonRelease:
+ case QEvent::MouseButtonDblClick:
+ case QEvent::MouseMove:
+- qDebug( "QSimpleInputContext::mouseHandler: "
+- "x=%d, type=%d, button=%d, state=%d", x, type, button, state );
++ /* qDebug( "QSimpleInputContext::mouseHandler: "
++ "x=%d, type=%d, button=%d, state=%d", x, type, button, state ); */
+ break;
+ default:
+ break;
+@@ -240,7 +240,7 @@
+
+ // no entries were found
+ if ( p == composeTable->data + composeTable->size ) {
+- qDebug( "no match" );
++ // qDebug( "no match" );
+ clearComposeBuffer();
+ return FALSE;
+ }
+@@ -250,18 +250,18 @@
+
+ // check if partial match
+ if ( composeBuffer[i] == 0 && p->keys[i] ) {
+- qDebug("partial match");
++ // qDebug("partial match");
+ return TRUE;
+ }
+
+ if ( composeBuffer[i] != p->keys[i] ) {
+- qDebug("different entry");
++ // qDebug("different entry");
+ clearComposeBuffer();
+ return i!=0;
+ }
+ }
+
+- qDebug("match exactly");
++ // qDebug("match exactly");
+
+ // match exactly
+ commitChar( p->value );
+diff -Nur qt-x11-free-3.3.5.orig/src/kernel/qinputcontext.cpp qt-x11-free-3.3.5/src/kernel/qinputcontext.cpp
+--- qt-x11-free-3.3.5.orig/src/kernel/qinputcontext.cpp 2005-10-13 16:09:37.000000000 +0200
++++ qt-x11-free-3.3.5/src/kernel/qinputcontext.cpp 2005-10-13 16:09:31.000000000 +0200
+@@ -526,17 +526,17 @@
+ return;
+
+ if ( type == QEvent::IMStart ) {
+- qDebug( "sending IMStart with %d chars to %p",
+- text.length(), receiver );
++ /* qDebug( "sending IMStart with %d chars to %p",
++ text.length(), receiver ); */
+ event = new QIMEvent( type, text, cursorPosition );
+ } else if ( type == QEvent::IMEnd ) {
+- qDebug( "sending IMEnd with %d chars to %p, text=%s",
+- text.length(), receiver, (const char*)text.local8Bit() );
++ /* qDebug( "sending IMEnd with %d chars to %p, text=%s",
++ text.length(), receiver, (const char*)text.local8Bit() ); */
+ event = new QIMEvent( type, text, cursorPosition );
+ } else if ( type == QEvent::IMCompose ) {
+- qDebug( "sending IMCompose to %p with %d chars, cpos=%d, sellen=%d, text=%s",
++ /* qDebug( "sending IMCompose to %p with %d chars, cpos=%d, sellen=%d, text=%s",
+ receiver, text.length(), cursorPosition, selLength,
+- (const char*)text.local8Bit() );
++ (const char*)text.local8Bit() ); */
+ event = new QIMComposeEvent( type, text, cursorPosition, selLength );
+ }
+
+--- qt-x11-free-3.3.5/plugins/src/inputmethods/xim/qximinputcontext_x11.cpp.quiet 2005-10-13 19:00:56.000000000 +0200
++++ qt-x11-free-3.3.5/plugins/src/inputmethods/xim/qximinputcontext_x11.cpp 2005-10-25 15:36:43.000000000 +0200
+@@ -356,7 +356,7 @@
+ #if !defined(QT_NO_XIM)
+ fontsetRefCount++;
+ if (! qt_xim) {
+- qWarning("QInputContext: no input method context available");
++ // qWarning("QInputContext: no input method context available");
+ return;
+ }
+
+@@ -742,7 +742,7 @@
+
+ void QXIMInputContext::close( const QString &errMsg )
+ {
+- qDebug( errMsg );
++ // qDebug( errMsg );
+ emit deletionRequested();
+ }
+
diff --git a/redhat/tqt3/qt-x11-immodule-unified-qt3.3.8-20071116.diff.bz2 b/redhat/tqt3/qt-x11-immodule-unified-qt3.3.8-20071116.diff.bz2
new file mode 100644
index 000000000..7c122a375
--- /dev/null
+++ b/redhat/tqt3/qt-x11-immodule-unified-qt3.3.8-20071116.diff.bz2
Binary files differ
diff --git a/redhat/tqt3/qt.csh b/redhat/tqt3/qt.csh
new file mode 100755
index 000000000..7efcd89c5
--- /dev/null
+++ b/redhat/tqt3/qt.csh
@@ -0,0 +1,34 @@
+# Qt initialization script (csh)
+
+# In multilib environments there is a preferred architecture, 64 bit over 32 bit in x86_64,
+# When a conflict is found between two packages corresponding with different arches,
+# the installed file is the one from the preferred arch. This is very common for executables
+# in /usr/bin, for example. If the file /usr/bin/foo is found in an x86_64 package and in an
+# i386 package, the executable from x86_64 will be installe
+
+if ( $?QTDIR ) then
+ exit
+endif
+
+switch (`uname -m`)
+ case x86_64:
+ case ia64:
+ case s390x:
+ case ppc64:
+ set QTPREFIXES = "/usr/lib64/qt-3.3 /usr/lib/qt-3.3"
+ breaksw
+ case *:
+ set QTPREFIXES = "/usr/lib/qt-3.3 /usr/lib64/qt-3.3"
+endsw
+
+foreach QTPREFIX ( $QTPREFIXES )
+ test -d "$QTPREFIX" && setenv QTDIR $QTPREFIX && break
+end
+unset QTPREFIX QTPREFIXES
+
+if ( "${path}" !~ *$QTDIR/bin* ) then
+ set path = ( $QTDIR/bin $path )
+endif
+
+setenv QTINC $QTDIR/include
+setenv QTLIB $QTDIR/lib
diff --git a/redhat/tqt3/qt.sh b/redhat/tqt3/qt.sh
new file mode 100755
index 000000000..88b3e0cea
--- /dev/null
+++ b/redhat/tqt3/qt.sh
@@ -0,0 +1,32 @@
+# Qt initialization script (sh)
+
+# In multilib environments there is a preferred architecture, 64 bit over 32 bit in x86_64,
+# When a conflict is found between two packages corresponding with different arches,
+# the installed file is the one from the preferred arch. This is very common for executables
+# in /usr/bin, for example. If the file /usr/bin/foo is found in an x86_64 package and in an
+# i386 package, the executable from x86_64 will be installe
+
+if [ -z "${QTDIR}" ]; then
+
+case `uname -m` in
+ x86_64 | ia64 | s390x | ppc64 )
+ QT_PREFIXES="/usr/lib64/qt-3.3 /usr/lib/qt-3.3" ;;
+ * )
+ QT_PREFIXES="/usr/lib/qt-3.3 /usr/lib64/qt-3.3" ;;
+esac
+
+for QTDIR in ${QT_PREFIXES} ; do
+ test -d "${QTDIR}" && break
+done
+unset QT_PREFIXES
+
+if ! echo ${PATH} | /bin/grep -q $QTDIR/bin ; then
+ PATH=$QTDIR/bin:${PATH}
+fi
+
+QTINC="$QTDIR/include"
+QTLIB="$QTDIR/lib"
+
+export QTDIR QTINC QTLIB PATH
+
+fi
diff --git a/redhat/tqt3/qt3-3.3.8.d-updates_zh-tw_translations.patch b/redhat/tqt3/qt3-3.3.8.d-updates_zh-tw_translations.patch
new file mode 120000
index 000000000..06a4852dc
--- /dev/null
+++ b/redhat/tqt3/qt3-3.3.8.d-updates_zh-tw_translations.patch
@@ -0,0 +1 @@
+../qt3/qt3-3.3.8.d-updates_zh-tw_translations.patch \ No newline at end of file
diff --git a/redhat/tqt3/qtconfig3.desktop b/redhat/tqt3/qtconfig3.desktop
new file mode 100644
index 000000000..11df0abab
--- /dev/null
+++ b/redhat/tqt3/qtconfig3.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=Qt3 Config
+Comment=Configure Qt3 behavior, styles, fonts
+Exec=qtconfig
+Icon=qtconfig3
+Terminal=false
+Encoding=UTF-8
+Type=Application
+Categories=Qt;Settings;
diff --git a/redhat/tqt3/tqt3-3.4.0-embed.patch b/redhat/tqt3/tqt3-3.4.0-embed.patch
new file mode 100644
index 000000000..10d7704ae
--- /dev/null
+++ b/redhat/tqt3/tqt3-3.4.0-embed.patch
@@ -0,0 +1,10 @@
+--- tqt3/tools/qembed/qembed.pro.qembed 2012-02-13 19:10:01.000000000 +0100
++++ tqt3/tools/qembed/qembed.pro 2012-02-13 21:26:57.417973392 +0100
+@@ -3,5 +3,7 @@
+ TARGET = qembed
+ REQUIRES=full-config nocrosscompiler
+
++DESTDIR = ../../bin
+ target.path = $$bins.path
+ INSTALLS += target
++
diff --git a/redhat/tqt3/tqt3-3.4.0-fontrendering-#214570.patch b/redhat/tqt3/tqt3-3.4.0-fontrendering-#214570.patch
new file mode 100644
index 000000000..77ca43101
--- /dev/null
+++ b/redhat/tqt3/tqt3-3.4.0-fontrendering-#214570.patch
@@ -0,0 +1,23 @@
+--- tqt3/src/kernel/qscriptengine_x11.cpp.fontrendering-#214570 2012-02-13 21:41:17.792005290 +0100
++++ tqt3/src/kernel/qscriptengine_x11.cpp 2012-02-13 21:42:38.785202528 +0100
+@@ -1243,7 +1243,7 @@
+ int script = item->script;
+ Q_ASSERT(script >= TQFont::Devanagari && script <= TQFont::Sinhala);
+ const unsigned short script_base = 0x0900 + 0x80*(script-TQFont::Devanagari);
+- const unsigned short ra = script_base + 0x30;
++ unsigned short ra = script_base + 0x30; //it was const unsigned short ra before modification
+ const unsigned short halant = script_base + 0x4d;
+ const unsigned short nukta = script_base + 0x3c;
+
+@@ -1291,6 +1291,11 @@
+ }
+ #endif
+
++ unsigned short *chkAssamese=reordered.data();
++ if((script == TQFont::Bengali) && (*chkAssamese==0x09F0)) //if it is assamese ra
++ {
++ ra = script_base + 0x70;
++ }
+ if (len != 1) {
+ unsigned short *uc = reordered.data();
+ bool beginsWithRa = FALSE;
diff --git a/redhat/tqt3/tqt3-3.4.0-fontrendering-214371.patch b/redhat/tqt3/tqt3-3.4.0-fontrendering-214371.patch
new file mode 100644
index 000000000..9dca7998d
--- /dev/null
+++ b/redhat/tqt3/tqt3-3.4.0-fontrendering-214371.patch
@@ -0,0 +1,15 @@
+diff -pruN qt-x11-free-3.3.6.org/src/kernel/qscriptengine_x11.cpp qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp
+--- qt-x11-free-3.3.6.org/src/kernel/qscriptengine_x11.cpp 2006-12-04 18:47:11.000000000 +0530
++++ qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp 2006-12-05 12:05:10.000000000 +0530
+@@ -1412,7 +1412,10 @@ static bool indic_shape_syllable(QOpenTy
+ toPos += 2;
+ if (script == QFont::Devanagari || script == QFont::Gujarati || script == QFont::Bengali) {
+ if (matra_position == Post || matra_position == Split) {
+- toPos = matra+1;
++ if (matra_position == Post )
++ toPos = matra;
++ else
++ toPos = matra+1;
+ matra -= 2;
+ }
+ } else if (script == QFont::Kannada) {
diff --git a/redhat/tqt3/tqt3-3.4.0-fontrendering-ml_IN-209097.patch b/redhat/tqt3/tqt3-3.4.0-fontrendering-ml_IN-209097.patch
new file mode 100644
index 000000000..cdb543b25
--- /dev/null
+++ b/redhat/tqt3/tqt3-3.4.0-fontrendering-ml_IN-209097.patch
@@ -0,0 +1,60 @@
+--- tqt3/src/kernel/qscriptengine_x11.cpp.fontrendering-ml_IN-bz#209097 2012-02-13 19:10:01.000000000 +0100
++++ tqt3/src/kernel/qscriptengine_x11.cpp 2012-02-13 21:36:07.227917886 +0100
+@@ -871,7 +871,7 @@
+ None, None, None, None,
+ None, None, None, Post,
+
+- Post, None, Below, None,
++ None, None, None, None,
+ None, Post, None, None,
+ None, None, None, None,
+ None, None, Post, Post,
+@@ -1274,6 +1274,16 @@
+ int base = 0;
+ int reph = -1;
+
++ //for the special conjuctions about Cons+0d4d+0d30 and Cons+0d40+0d31 of Malayalam
++ bool is_special_conjuction_malayalam = false;
++
++ if ((len == 3) &&
++ ((reordered[2] == 0x0d30) || (reordered[2] == 0x0d31)) &&
++ (reordered[1] == 0x0d4d) &&
++ ((reordered[0] >= 0x0d15) && (reordered[0] <= 0x0d39))) {
++ is_special_conjuction_malayalam = true;
++ }
++
+ #ifdef INDIC_DEBUG
+ IDEBUG("original:");
+ for (i = 0; i < len; i++) {
+@@ -1550,6 +1560,15 @@
+ reph = i;
+ }
+
++ //for the special conjuctions about Cons+0d4d+0d30 and Cons+0d40+0d31 of Malayalam
++ if (is_special_conjuction_malayalam) {
++ unsigned short temp;
++
++ temp = reordered[0];
++ reordered[0] = reordered[2];
++ reordered[2] = temp;
++ }
++
+ if (item->font->stringToCMap((const TQChar *)reordered.data(), len, item->glyphs, item->advances,
+ &item->num_glyphs, item->flags & TQTextEngine::RightToLeft) != TQFontEngine::NoError)
+ return FALSE;
+@@ -1661,6 +1680,15 @@
+
+ // halant always applies
+
++ //for the special conjuctions about Cons+0d4d+0d30 and Cons+0d40+0d31 of Malayalam
++ if (is_special_conjuction_malayalam) {
++ unsigned int temp;
++
++ temp = properties[0];
++ properties[0] = ~PreSubstProperty;
++ properties[2] = temp;
++ }
++
+ #ifdef INDIC_DEBUG
+ {
+ IDEBUG("OT properties:");
diff --git a/redhat/tqt3/tqt3-3.4.0-fontrendering-ml_IN-217657.patch b/redhat/tqt3/tqt3-3.4.0-fontrendering-ml_IN-217657.patch
new file mode 100644
index 000000000..276441c22
--- /dev/null
+++ b/redhat/tqt3/tqt3-3.4.0-fontrendering-ml_IN-217657.patch
@@ -0,0 +1,11 @@
+--- tqt3/src/kernel/qfont_x11.cpp.fontrendering-ml_IN-217657 2012-02-13 19:10:01.000000000 +0100
++++ tqt3/src/kernel/qfont_x11.cpp 2012-02-13 21:45:39.903520249 +0100
+@@ -712,7 +712,7 @@
+ if ( script >= TQFont::Arabic && script <= TQFont::Khmer ) {
+ // complex script shaping. Have to do some hard work
+ int from = TQMAX( 0, pos - 8 );
+- int to = TQMIN( (int)str.length(), pos + 8 );
++ int to = str.length();
+ TQConstString cstr( str.unicode()+from, to-from);
+ TQTextEngine layout( cstr.string(), d );
+ layout.itemize( TQTextEngine::WidthOnly );
diff --git a/redhat/tqt3/tqt3-3.4.0-nodebug.patch b/redhat/tqt3/tqt3-3.4.0-nodebug.patch
new file mode 100644
index 000000000..ccfd411ff
--- /dev/null
+++ b/redhat/tqt3/tqt3-3.4.0-nodebug.patch
@@ -0,0 +1,15 @@
+--- tqt3/src/tools/qgpluginmanager.cpp.ndebug 2012-02-13 19:10:01.000000000 +0100
++++ tqt3/src/tools/qgpluginmanager.cpp 2012-02-13 19:25:05.653477747 +0100
+@@ -506,10 +506,12 @@
+ (*f).latin1(),
+ (const char*) TQFile::encodeName( old->library() ) );
+ } else {
++/*
+ qWarning("%s: Feature %s already defined in %s!",
+ (const char*) TQFile::encodeName( old->library() ),
+ (*f).latin1(),
+ (const char*) TQFile::encodeName( plugin->library() ) );
++*/
+ }
+ }
+ }
diff --git a/redhat/tqt3/tqt3-3.4.0-odbc.patch b/redhat/tqt3/tqt3-3.4.0-odbc.patch
new file mode 100644
index 000000000..3a5aea885
--- /dev/null
+++ b/redhat/tqt3/tqt3-3.4.0-odbc.patch
@@ -0,0 +1,18 @@
+--- tqt3/src/sql/drivers/odbc/qsql_odbc.cpp.odbc 2012-02-13 19:10:01.000000000 +0100
++++ tqt3/src/sql/drivers/odbc/qsql_odbc.cpp 2012-02-13 21:47:25.232367854 +0100
+@@ -61,13 +61,13 @@
+ #endif
+
+ // newer platform SDKs use SQLLEN instead of SQLINTEGER
+-#ifdef SQLLEN
++#if defined(SQLLEN) || defined(Q_OS_WIN64) || defined(Q_OS_UNIX)
+ # define TQSQLLEN SQLLEN
+ #else
+ # define TQSQLLEN SQLINTEGER
+ #endif
+
+-#ifdef SQLULEN
++#if defined(SQLULEN) || defined(Q_OS_WIN64) || defined(Q_OS_UNIX)
+ # define TQSQLULEN SQLULEN
+ #else
+ # define TQSQLULEN SQLUINTEGER
diff --git a/redhat/tqt3/tqt3-3.4.0-qt-x11-immodule-unified-qt3.3.5-20060318-resetinputcontext.patch b/redhat/tqt3/tqt3-3.4.0-qt-x11-immodule-unified-qt3.3.5-20060318-resetinputcontext.patch
new file mode 100644
index 000000000..88e066aa9
--- /dev/null
+++ b/redhat/tqt3/tqt3-3.4.0-qt-x11-immodule-unified-qt3.3.5-20060318-resetinputcontext.patch
@@ -0,0 +1,92 @@
+--- qt-x11-free-3.3.6/src/widgets/qtextedit.cpp.preedit 2006-06-28 17:18:08.000000000 +0200
++++ qt-x11-free-3.3.6/src/widgets/qtextedit.cpp 2006-06-28 17:20:09.000000000 +0200
+@@ -1906,9 +1906,6 @@
+
+ void TQTextEdit::removeSelectedText( int selNum )
+ {
+- if(selNum != 0)
+- resetInputContext();
+-
+ TQTextCursor c1 = doc->selectionStartCursor( selNum );
+ c1.restoreState();
+ TQTextCursor c2 = doc->selectionEndCursor( selNum );
+@@ -3171,7 +3168,6 @@
+ return;
+ }
+ #endif
+- resetInputContext();
+ TQTextParagraph *p = doc->paragAt( para );
+ if ( !p )
+ return;
+@@ -3198,7 +3194,6 @@
+ return;
+ }
+ #endif
+- resetInputContext();
+ for ( int i = 0; i < (int)doc->numSelections(); ++i )
+ doc->removeSelection( i );
+
+@@ -3240,7 +3235,6 @@
+ if ( d->optimMode )
+ return;
+ #endif
+- resetInputContext();
+ TQTextParagraph *p = doc->paragAt( para );
+ if ( !p )
+ return;
+@@ -3285,7 +3279,6 @@
+ if ( isReadOnly() || !doc->commands()->isUndoAvailable() || !undoEnabled )
+ return;
+
+- resetInputContext();
+ for ( int i = 0; i < (int)doc->numSelections(); ++i )
+ doc->removeSelection( i );
+
+@@ -3336,7 +3329,6 @@
+ if ( isReadOnly() || !doc->commands()->isRedoAvailable() || !undoEnabled )
+ return;
+
+- resetInputContext();
+ for ( int i = 0; i < (int)doc->numSelections(); ++i )
+ doc->removeSelection( i );
+
+@@ -3450,7 +3442,6 @@
+ {
+ if ( isReadOnly() )
+ return;
+- resetInputContext();
+ normalCopy();
+ removeSelectedText();
+ updateMicroFocusHint();
+@@ -3938,7 +3929,6 @@
+ return;
+ }
+ #endif
+- resetInputContext();
+ if ( !isModified() && isReadOnly() &&
+ this->context() == context && this->text() == text )
+ return;
+@@ -4112,7 +4102,6 @@
+ if ( !p )
+ return;
+
+- resetInputContext();
+ if ( index > p->length() - 1 )
+ index = p->length() - 1;
+
+@@ -4169,7 +4158,6 @@
+ return;
+ }
+ #endif
+- resetInputContext();
+ if ( doc->hasSelection( selNum ) ) {
+ doc->removeSelection( selNum );
+ repaintChanged();
+@@ -5072,7 +5060,6 @@
+ {
+ if ( dc == doc )
+ return;
+- resetInputContext();
+ doc = dc;
+ delete cursor;
+ cursor = new QTextCursor( doc );
diff --git a/redhat/tqt3/tqt3-3.4.0-quiet.patch b/redhat/tqt3/tqt3-3.4.0-quiet.patch
new file mode 100644
index 000000000..cb6080ab5
--- /dev/null
+++ b/redhat/tqt3/tqt3-3.4.0-quiet.patch
@@ -0,0 +1,13 @@
+--- tqt3/src/kernel/qpixmap_x11.cpp.quiet 2012-02-13 19:10:01.000000000 +0100
++++ tqt3/src/kernel/qpixmap_x11.cpp 2012-02-13 21:24:08.190653338 +0100
+@@ -394,8 +394,8 @@
+ {
+ #if defined(QT_CHECK_STATE)
+ if ( qApp->type() == TQApplication::Tty ) {
+- qWarning( "TQPixmap: Cannot create a TQPixmap when no GUI "
+- "is being used" );
++// qWarning( "TQPixmap: Cannot create a TQPixmap when no GUI "
++// "is being used" );
+ }
+ #endif
+
diff --git a/redhat/tqt3/tqt3-3.4.0-uic-nostdlib.patch b/redhat/tqt3/tqt3-3.4.0-uic-nostdlib.patch
new file mode 100644
index 000000000..39a42e6f5
--- /dev/null
+++ b/redhat/tqt3/tqt3-3.4.0-uic-nostdlib.patch
@@ -0,0 +1,12 @@
+--- qt-x11-free-3.3.2/tools/designer/uic/main.cpp.sopwith 2004-06-16 17:14:17.000000000 -0400
++++ qt-x11-free-3.3.2/tools/designer/uic/main.cpp 2004-06-16 17:21:43.000000000 -0400
+@@ -149,6 +149,9 @@
+ } else {
+ trmacro = &opt[1];
+ }
++ } else if ( opt == "nostdlib") {
++ TQStringList x;
++ TQApplication::setLibraryPaths(x);
+ } else if ( opt == "L" ) {
+ if ( !(n < argc-1) ) {
+ error = "Missing plugin path.";
diff --git a/redhat/tqt3/tqt3-3.4.0-umask.patch b/redhat/tqt3/tqt3-3.4.0-umask.patch
new file mode 100644
index 000000000..9c24f9903
--- /dev/null
+++ b/redhat/tqt3/tqt3-3.4.0-umask.patch
@@ -0,0 +1,14 @@
+--- tqt3/src/tools/qsettings.cpp.umask 2012-02-13 19:10:01.000000000 +0100
++++ tqt3/src/tools/qsettings.cpp 2012-02-13 19:28:00.802555882 +0100
+@@ -997,7 +997,10 @@
+ #endif
+
+ TQFile file( filename + ".tmp" );
+- if (! file.open(IO_WriteOnly)) {
++ mode_t old_umask = umask(0022);
++ bool f = file.open(IO_WriteOnly);
++ umask(old_umask);
++ if (! f) {
+
+ #ifdef QT_CHECK_STATE
+ qWarning("TQSettings::sync: failed to open '%s' for writing",
diff --git a/redhat/tqt3/tqt3-3.4.0.spec b/redhat/tqt3/tqt3-3.4.0.spec
new file mode 100644
index 000000000..87d7d2bd4
--- /dev/null
+++ b/redhat/tqt3/tqt3-3.4.0.spec
@@ -0,0 +1,678 @@
+# Always install under standard prefix
+%define _prefix /usr
+
+# This allows the legacy RHEL/Fedora patches to apply in TDE version.
+%define _default_patch_fuzz 2
+
+# The following QT4 packages should NOT be installed to
+# allow QT3 compilation (please uninstall them prior to compile)
+# qt
+# qt-sqlite
+# qt-mysql
+# qt-x11
+# qt-devel
+# ...maybe others !!!!
+
+%define _default_patch_fuzz 2
+
+Summary: The shared library for the Qt 3 GUI toolkit
+Version: 3.4.0
+Release: 1%{?dist}
+Name: tqt3
+
+Obsoletes: qt < 1:%{version}-%{release}
+Provides: qt = 1:%{version}-%{release}
+Obsoletes: qt3 < 1:%{version}-%{release}
+Provides: qt3 = 1:%{version}-%{release}
+
+License: QPL or GPLv2 or GPLv3
+Group: System Environment/Libraries
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+Url: http://www.troll.no
+Source0: %{name}-%{version}.tar.gz
+Source2: qt.sh
+Source3: qt.csh
+Source4: designer3.desktop
+Source5: assistant3.desktop
+Source6: linguist3.desktop
+Source7: qtconfig3.desktop
+
+Patch1: qt-3.3.4-print-CJK.patch
+Patch2: tqt3-3.4.0-nodebug.patch
+Patch3: qt-3.1.0-makefile.patch
+Patch4: tqt3-3.4.0-umask.patch
+Patch5: qt-x11-free-3.3.6-strip.patch
+Patch7: tqt3-3.4.0-quiet.patch
+Patch8: tqt3-3.4.0-embed.patch
+Patch12: tqt3-3.4.0-uic-nostdlib.patch
+Patch13: qt-x11-free-3.3.6-qfontdatabase_x11.patch
+Patch27: tqt3-3.4.0-fontrendering-ml_IN-209097.patch
+Patch29: qt-3.3.8-fontrendering-as_IN-209972.patch
+Patch31: qt-3.3.6-fontrendering-te_IN-211259.patch
+Patch32: tqt3-3.4.0-fontrendering-214371.patch
+Patch33: tqt3-3.4.0-fontrendering-#214570.patch
+Patch34: qt-3.3.6-fontrendering-ml_IN-209974.patch
+Patch35: tqt3-3.4.0-fontrendering-ml_IN-217657.patch
+Patch37: qt-3.3.6-fontrendering-gu-228452.patch
+Patch38: tqt3-3.4.0-odbc.patch
+Patch39: qt-x11-free-3.3.7-arm.patch
+Patch40: qt-x11-free-3.3.8b-typo.patch
+
+# immodule patches
+Patch53: tqt3-3.4.0-qt-x11-immodule-unified-qt3.3.5-20060318-resetinputcontext.patch
+
+# qt-copy patches
+Patch110: 0084-compositing-properties.patch
+
+# upstream patches
+Patch200: qt-x11-free-3.3.4-fullscreen.patch
+
+# TDE 3.5.13 patches
+Patch300: qt3-3.3.8.d-updates_zh-tw_translations.patch
+
+%define qt_dirname qt-3.3
+%define qtdir %{_libdir}/%{qt_dirname}
+%define qt_docdir %{_docdir}/qt-devel-%{version}
+
+%define smp 1
+%define immodule 1
+%define debug 0
+
+# MySQL plugins
+%define plugin_mysql -plugin-sql-mysql
+%define mysql_include_dir %{_includedir}/mysql
+%define mysql_lib_dir %{_libdir}/mysql
+
+# Postgres plugins
+%define plugin_psql -plugin-sql-psql
+
+# ODBC plugins
+%define plugin_odbc -plugin-sql-odbc
+
+# sqlite plugins
+%define plugin_sqlite -plugin-sql-sqlite
+
+%define plugins_style -qt-style-cde -qt-style-motifplus -qt-style-platinum -qt-style-sgi -qt-style-windows -qt-style-compact -qt-imgfmt-png -qt-imgfmt-jpeg -qt-imgfmt-mng
+%define plugins %{plugin_mysql} %{plugin_psql} %{plugin_odbc} %{plugin_sqlite} %{plugins_style}
+
+Requires(post): /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+Requires: coreutils
+Requires: fontconfig >= 2.0
+Requires: /etc/ld.so.conf.d
+
+BuildRequires: desktop-file-utils
+BuildRequires: libmng-devel
+BuildRequires: glibc-devel
+BuildRequires: libjpeg-devel
+BuildRequires: libpng-devel
+BuildRequires: zlib-devel
+BuildRequires: giflib-devel
+BuildRequires: perl
+BuildRequires: sed
+BuildRequires: findutils
+BuildRequires: cups-devel
+BuildRequires: tar
+BuildRequires: freetype-devel
+BuildRequires: fontconfig-devel
+BuildRequires: libXrender-devel
+BuildRequires: libXrandr-devel
+BuildRequires: libXcursor-devel
+BuildRequires: libXinerama-devel
+BuildRequires: libXft-devel
+BuildRequires: libXext-devel
+BuildRequires: libX11-devel
+BuildRequires: libSM-devel
+BuildRequires: libICE-devel
+BuildRequires: libXt-devel
+BuildRequires: libXmu-devel
+BuildRequires: libXi-devel
+BuildRequires: xorg-x11-proto-devel
+BuildRequires: mesa-libGL-devel
+BuildRequires: mesa-libGLU-devel
+BuildRequires: desktop-file-utils
+BuildRequires: mysql-devel
+BuildRequires: postgresql-devel
+BuildRequires: unixODBC-devel
+BuildRequires: sqlite-devel
+
+
+%package config
+Summary: Graphical configuration tool for programs using Qt 3
+Group: User Interface/Desktops
+Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
+Obsoletes: qt-config < 1:%{version}-%{release}
+Provides: qt-config = 1:%{version}-%{release}
+Obsoletes: qt3-config < 1:%{version}-%{release}
+Provides: qt3-config = 1:%{version}-%{release}
+
+
+%package devel
+Summary: Development files for the Qt 3 GUI toolkit
+Group: Development/Libraries
+Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
+Requires: freetype-devel
+Requires: fontconfig-devel
+Requires: libXrender-devel
+Requires: libXrandr-devel
+Requires: libXcursor-devel
+Requires: libXinerama-devel
+Requires: libXft-devel
+Requires: libXext-devel
+Requires: libX11-devel
+Requires: libSM-devel
+Requires: libICE-devel
+Requires: libXt-devel
+Requires: xorg-x11-proto-devel
+Requires: libpng-devel
+Requires: libjpeg-devel
+Requires: libmng-devel
+Requires: mesa-libGL-devel
+Requires: mesa-libGLU-devel
+
+Obsoletes: qt-devel < 1:%{version}-%{release}
+Provides: qt-devel = 1:%{version}-%{release}
+Obsoletes: qt3-devel < 1:%{version}-%{release}
+Provides: qt3-devel = 1:%{version}-%{release}
+
+
+%package devel-docs
+Summary: Documentation for the Qt 3 GUI toolkit
+Group: Development/Libraries
+Requires: %{name}-devel = %{?epoch:%{epoch}:}%{version}-%{release}
+
+Obsoletes: qt-devel-docs < 1:%{version}-%{release}
+Provides: qt-devel-docs = 1:%{version}-%{release}
+Obsoletes: qt3-devel-docs < 1:%{version}-%{release}
+Provides: qt3-devel-docs = 1:%{version}-%{release}
+
+
+%package ODBC
+Summary: ODBC drivers for Qt 3's SQL classes
+Group: System Environment/Libraries
+Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
+
+Obsoletes: qt-ODBC < 1:%{version}-%{release}
+Provides: qt-ODBC = 1:%{version}-%{release}
+Obsoletes: qt3-ODBC < 1:%{version}-%{release}
+Provides: qt3-ODBC = 1:%{version}-%{release}
+
+
+%package MySQL
+Summary: MySQL drivers for Qt 3's SQL classes
+Group: System Environment/Libraries
+Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
+
+Obsoletes: qt-MySQL < 1:%{version}-%{release}
+Provides: qt-MySQL = 1:%{version}-%{release}
+Obsoletes: qt3-MySQL < 1:%{version}-%{release}
+Provides: qt3-MySQL = 1:%{version}-%{release}
+
+
+%package PostgreSQL
+Summary: PostgreSQL drivers for Qt 3's SQL classes
+Group: System Environment/Libraries
+Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
+
+Obsoletes: qt-PostgreSQL < 1:%{version}-%{release}
+Provides: qt-PostgreSQL = 1:%{version}-%{release}
+Obsoletes: qt3-PostgreSQL < 1:%{version}-%{release}
+Provides: qt3-PostgreSQL = 1:%{version}-%{release}
+
+
+%package sqlite
+Summary: sqlite drivers for Qt 3's SQL classes
+Group: System Environment/Libraries
+Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
+
+Obsoletes: qt-sqlite < 1:%{version}-%{release}
+Provides: qt-sqlite = 1:%{version}-%{release}
+Obsoletes: qt3-sqlite < 1:%{version}-%{release}
+Provides: qt3-sqlite = 1:%{version}-%{release}
+
+
+%package designer
+Summary: In3erface designer (IDE) for the Qt 3 toolkit
+Group: Development/Tools
+Requires: %{name}-devel = %{?epoch:%{epoch}:}%{version}-%{release}
+
+Obsoletes: qt-designer < 1:%{version}-%{release}
+Provides: qt-designer = 1:%{version}-%{release}
+Obsoletes: qt3-designer < 1:%{version}-%{release}
+Provides: qt3-designer = 1:%{version}-%{release}
+
+
+%description
+Qt is a GUI software toolkit which simplifies the task of writing and
+maintaining GUI (Graphical User Interface) applications
+for the X Window System.
+
+Qt is written in C++ and is fully object-oriented.
+
+This package contains the shared library needed to run Qt 3
+applications, as well as the README files for Qt 3.
+
+
+%description config
+Qt is a GUI software toolkit which simplifies the task of writing and
+maintaining GUI (Graphical User Interface) applications
+for the X Window System.
+
+Qt is written in C++ and is fully object-oriented.
+
+This package contains a graphical configuration tool for programs using Qt 3.
+
+
+%description devel
+The %{name}-devel package contains the files necessary to develop
+applications using the Qt GUI toolkit: the header files, the Qt meta
+object compiler.
+
+Install %{name}-devel if you want to develop GUI applications using the Qt 3
+toolkit.
+
+
+%description devel-docs
+The %{name}-devel-docs package contains the man pages, the HTML documentation and
+example programs for Qt 3.
+
+
+%description ODBC
+ODBC driver for Qt 3's SQL classes (QSQL)
+
+
+%description MySQL
+MySQL driver for Qt 3's SQL classes (QSQL)
+
+
+%description PostgreSQL
+PostgreSQL driver for Qt 3's SQL classes (QSQL)
+
+
+%description sqlite
+sqlite driver for Qt 3's SQL classes (QSQL)
+
+
+%description designer
+The %{name}-designer package contains an User Interface designer tool
+for the Qt 3 toolkit.
+
+
+%prep
+%setup -q -n %{name}
+%patch1 -p1 -b .cjk
+%patch2 -p1 -b .ndebug
+%patch3 -p1 -b .makefile
+%patch4 -p1 -b .umask
+%patch5 -p1
+%patch7 -p1 -b .quiet
+%patch8 -p1 -b .qembed
+%patch12 -p1 -b .nostdlib
+%patch13 -p1 -b .fonts
+%patch27 -p1 -b .fontrendering-ml_IN-bz#209097
+%patch29 -p1 -b .fontrendering-as_IN-bz#209972
+%patch31 -p1 -b .fontrendering-te_IN-bz#211259
+%patch32 -p1 -b .fontrendering-bz#214371
+%patch33 -p1 -b .fontrendering-#214570
+%patch34 -p1 -b .fontrendering-#209974
+%patch35 -p1 -b .fontrendering-ml_IN-217657
+%patch37 -p1 -b .fontrendering-gu-228452
+%patch38 -p1 -b .odbc
+# it's not 100% clear to me if this is safe for all archs -- Rex
+%ifarch armv5tel
+%patch39 -p1 -b .arm
+%endif
+%patch40 -p1
+
+# immodule patches
+%if %{immodule}
+%patch53 -p1 -b .resetinputcontext
+%endif
+
+# qt-copy patches
+%patch110 -p0 -b .0084-compositing-properties
+
+# upstream patches
+%patch200 -p1 -b .fullscreen
+
+# TDE 3.5.13 patches
+%patch300 -p1
+
+# convert to UTF-8
+iconv -f iso-8859-1 -t utf-8 < doc/man/man3/qdial.3qt > doc/man/man3/qdial.3qt_
+mv doc/man/man3/qdial.3qt_ doc/man/man3/qdial.3qt
+
+%build
+export QTDIR=`/bin/pwd`
+export LD_LIBRARY_PATH="$QTDIR/lib:$LD_LIBRARY_PATH"
+export PATH="$QTDIR/bin:$PATH"
+export QTDEST=%{qtdir}
+
+%if %{smp}
+ export SMP_MFLAGS="%{?_smp_mflags}"
+%endif
+
+%if %{immodule}
+ sh ./make-symlinks.sh
+%endif
+
+# set correct X11 prefix
+perl -pi -e "s,QMAKE_LIBDIR_X11.*,QMAKE_LIBDIR_X11\t=," mkspecs/*/qmake.conf
+perl -pi -e "s,QMAKE_INCDIR_X11.*,QMAKE_INCDIR_X11\t=," mkspecs/*/qmake.conf
+perl -pi -e "s,QMAKE_INCDIR_OPENGL.*,QMAKE_INCDIR_OPENGL\t=," mkspecs/*/qmake.conf
+perl -pi -e "s,QMAKE_LIBDIR_OPENGL.*,QMAKE_LIBDIR_OPENGL\t=," mkspecs/*/qmake.conf
+
+# don't use rpath
+perl -pi -e "s|-Wl,-rpath,| |" mkspecs/*/qmake.conf
+
+perl -pi -e "s|-O2|$INCLUDES %{optflags} -fno-strict-aliasing|g" mkspecs/*/qmake.conf
+
+# set correct lib path
+if [ "%{_lib}" == "lib64" ] ; then
+ perl -pi -e "s,/usr/lib /lib,/usr/%{_lib} /%{_lib},g" config.tests/{unix,x11}/*.test
+ perl -pi -e "s,/lib /usr/lib,/%{_lib} /usr/%{_lib},g" config.tests/{unix,x11}/*.test
+fi
+
+# build shared, threaded (default) libraries
+echo yes | ./configure \
+ -prefix $QTDEST \
+ -docdir %{qt_docdir} \
+%if %{_lib} == lib64
+ -platform linux-g++-64 \
+%else
+ -platform linux-g++ \
+%endif
+%if %{debug}
+ -debug \
+%else
+ -release \
+%endif
+ -shared \
+ -largefile \
+ -qt-gif \
+ -system-zlib \
+ -system-libpng \
+ -system-libmng \
+ -system-libjpeg \
+ -no-exceptions \
+ -enable-styles \
+ -enable-tools \
+ -enable-kernel \
+ -enable-widgets \
+ -enable-dialogs \
+ -enable-iconview \
+ -enable-workspace \
+ -enable-network \
+ -enable-canvas \
+ -enable-table \
+ -enable-xml \
+ -enable-opengl \
+ -enable-sql \
+ -qt-style-motif \
+ %{plugins} \
+ -stl \
+ -thread \
+ -cups \
+ -sm \
+ -xinerama \
+ -xrender \
+ -xkb \
+ -ipv6 \
+ -dlopen-opengl \
+ -xft \
+ -tablet
+
+make $SMP_MFLAGS src-qmake
+
+# build sqlite plugin
+pushd plugins/src/sqldrivers/sqlite
+qmake -o Makefile sqlite.pro
+popd
+
+# build psql plugin
+pushd plugins/src/sqldrivers/psql
+qmake -o Makefile "INCLUDEPATH+=%{_includedir}/pgsql %{_includedir}/pgsql/server %{_includedir}/pgsql/internal" "LIBS+=-lpq" psql.pro
+popd
+
+# build mysql plugin
+pushd plugins/src/sqldrivers/mysql
+qmake -o Makefile "INCLUDEPATH+=%{mysql_include_dir}" "LIBS+=-L%{mysql_lib_dir} -lmysqlclient" mysql.pro
+popd
+
+# build odbc plugin
+pushd plugins/src/sqldrivers/odbc
+qmake -o Makefile "LIBS+=-lodbc" odbc.pro
+popd
+
+make $SMP_MFLAGS src-moc
+make $SMP_MFLAGS sub-src
+make $SMP_MFLAGS sub-tools UIC="$QTDIR/bin/uic -nostdlib -L $QTDIR/plugins"
+
+%install
+rm -rf %{buildroot}
+
+export QTDIR=`/bin/pwd`
+export LD_LIBRARY_PATH="$QTDIR/lib:$LD_LIBRARY_PATH"
+export PATH="$QTDIR/bin:$PATH"
+export QTDEST=%{qtdir}
+
+make install INSTALL_ROOT=%{buildroot}
+
+for i in findtr qt20fix qtrename140 lrelease lupdate ; do
+ install bin/$i %{buildroot}%{qtdir}/bin/
+done
+
+mkdir -p %{buildroot}%{_libdir}/pkgconfig/
+mv %{buildroot}%{qtdir}/lib/pkgconfig/*.pc %{buildroot}%{_libdir}/pkgconfig/
+
+# install man pages
+mkdir -p %{buildroot}%{_mandir}
+cp -fR doc/man/* %{buildroot}%{_mandir}/
+
+# clean up
+make -C tutorial clean
+make -C examples clean
+
+# Make sure the examples can be built outside the source tree.
+# Our binaries fulfill all requirements, so...
+perl -pi -e "s,^DEPENDPATH.*,,g;s,^REQUIRES.*,,g" `find examples -name "*.pro"`
+
+# don't include Makefiles of qt examples/tutorials
+find examples -name "Makefile" | xargs rm -f
+find examples -name "*.obj" | xargs rm -rf
+find examples -name "*.moc" | xargs rm -rf
+find tutorial -name "Makefile" | xargs rm -f
+
+for a in */*/Makefile ; do
+ sed 's|^SYSCONF_MOC.*|SYSCONF_MOC = %{qtdir}/bin/moc|' < $a > ${a}.2
+ mv -v ${a}.2 $a
+done
+
+mkdir -p %{buildroot}/etc/profile.d
+install -m 644 %{SOURCE2} %{SOURCE3} %{buildroot}/etc/profile.d/
+
+# Add desktop files
+mkdir -p %{buildroot}%{_datadir}/applications
+desktop-file-install \
+ --dir %{buildroot}%{_datadir}/applications \
+ --vendor="qt" \
+ %{SOURCE4} %{SOURCE5} %{SOURCE6} %{SOURCE7}
+
+# Patch qmake to use qt-mt unconditionally
+perl -pi -e "s,-lqt ,-lqt-mt ,g;s,-lqt$,-lqt-mt,g" %{buildroot}%{qtdir}/mkspecs/*/qmake.conf
+
+# remove broken links
+rm -f %{buildroot}%{qtdir}/mkspecs/default/linux-g++*
+rm -f %{buildroot}%{qtdir}/lib/*.la
+
+mkdir -p %{buildroot}/etc/ld.so.conf.d
+echo "%{qtdir}/lib" > %{buildroot}/etc/ld.so.conf.d/qt-%{_arch}.conf
+
+# install icons
+mkdir %{buildroot}%{_datadir}/pixmaps
+install -m 644 tools/assistant/images/qt.png %{buildroot}%{_datadir}/pixmaps/qtconfig3.png
+install -m 644 tools/assistant/images/designer.png %{buildroot}%{_datadir}/pixmaps/designer3.png
+install -m 644 tools/assistant/images/assistant.png %{buildroot}%{_datadir}/pixmaps/assistant3.png
+install -m 644 tools/assistant/images/linguist.png %{buildroot}%{_datadir}/pixmaps/linguist3.png
+
+# own style directory
+mkdir -p %{buildroot}%{qtdir}/plugins/styles
+
+%clean
+rm -rf %{buildroot}
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%files
+%defattr(-,root,root,-)
+%doc FAQ LICENSE* README* changes*
+%dir %{qtdir}
+%dir %{qtdir}/bin
+%dir %{qtdir}/lib
+%dir %{qtdir}/plugins
+%dir %{qtdir}/plugins/sqldrivers
+%dir %{qtdir}/plugins/styles
+%{qtdir}/translations
+%{qtdir}/plugins/designer/
+%if %{immodule}
+%{qtdir}/plugins/inputmethods
+%endif
+%config /etc/profile.d/*
+/etc/ld.so.conf.d/*
+%{qtdir}/lib/libtqui.so.*
+%{qtdir}/lib/libtqt*.so.*
+
+# TQT 3.4.0: WTF is this file ??
+%exclude %{_mandir}/README
+
+%files config
+%defattr(-,root,root,-)
+%{qtdir}/bin/qtconfig
+%{_datadir}/applications/*qtconfig*.desktop
+%{_datadir}/pixmaps/qtconfig3.png
+
+%files devel
+%defattr(-,root,root,-)
+%{qt_docdir}/
+%{qtdir}/bin/moc
+%{qtdir}/bin/uic
+%{qtdir}/bin/findtr
+%{qtdir}/bin/qt20fix
+%{qtdir}/bin/qtrename140
+%{qtdir}/bin/assistant
+%{qtdir}/bin/qm2ts
+%{qtdir}/bin/qmake
+%{qtdir}/bin/qembed
+%{qtdir}/bin/linguist
+%{qtdir}/bin/lupdate
+%{qtdir}/bin/lrelease
+%{qtdir}/include
+%{qtdir}/mkspecs
+%{qtdir}/lib/libtqt*.so
+%{qtdir}/lib/libtqui.so
+%{qtdir}/lib/libeditor.a
+%{qtdir}/lib/libdesigner*.a
+%{qtdir}/lib/libqassistantclient.a
+%{qtdir}/lib/*.prl
+%{qtdir}/phrasebooks
+%{_libdir}/pkgconfig/*
+%{_datadir}/applications/*linguist*.desktop
+%{_datadir}/applications/*assistant*.desktop
+%{_datadir}/pixmaps/linguist3.png
+%{_datadir}/pixmaps/assistant3.png
+
+# QT 3.3.8.D (TDE): 4 binaries have appeared
+%{qtdir}/bin/createcw
+%{qtdir}/bin/makeqpf
+%{qtdir}/bin/mergetr
+%{qtdir}/bin/msg2qm
+
+# QT 3.3.8.D (TDE): removes lots of unnecessary include files
+# (where do they come from ??? They were not in 3.3.8b !)
+%exclude %{qtdir}/include/btree.h
+%exclude %{qtdir}/include/crc32.h
+%exclude %{qtdir}/include/debian_qsql_odbc.h
+%exclude %{qtdir}/include/deflate.h
+%exclude %{qtdir}/include/ftglue.h
+%exclude %{qtdir}/include/ftxgdef.h
+%exclude %{qtdir}/include/ftxgpos.h
+%exclude %{qtdir}/include/ftxgsub.h
+%exclude %{qtdir}/include/ftxopen.h
+%exclude %{qtdir}/include/ftxopenf.h
+%exclude %{qtdir}/include/hash.h
+%exclude %{qtdir}/include/inffast.h
+%exclude %{qtdir}/include/inffixed.h
+%exclude %{qtdir}/include/inflate.h
+%exclude %{qtdir}/include/inftrees.h
+%exclude %{qtdir}/include/jchuff.h
+%exclude %{qtdir}/include/jconfig.h
+%exclude %{qtdir}/include/jdct.h
+%exclude %{qtdir}/include/jdhuff.h
+%exclude %{qtdir}/include/jerror.h
+%exclude %{qtdir}/include/jinclude.h
+%exclude %{qtdir}/include/jmemsys.h
+%exclude %{qtdir}/include/jmorecfg.h
+%exclude %{qtdir}/include/jversion.h
+%exclude %{qtdir}/include/moc_yacc.h
+%exclude %{qtdir}/include/opcodes.h
+%exclude %{qtdir}/include/os.h
+%exclude %{qtdir}/include/otlbuffer.h
+%exclude %{qtdir}/include/pager.h
+%exclude %{qtdir}/include/parse.h
+%exclude %{qtdir}/include/pngasmrd.h
+%exclude %{qtdir}/include/pngconf.h
+%exclude %{qtdir}/include/sqlite.h
+%exclude %{qtdir}/include/sqliteInt.h
+%exclude %{qtdir}/include/trees.h
+%exclude %{qtdir}/include/vdbe.h
+%exclude %{qtdir}/include/vdbeInt.h
+%exclude %{qtdir}/mkspecs/linux-g++-sparc
+
+%files devel-docs
+%defattr(-,root,root,-)
+%doc examples
+%doc tutorial
+%{_mandir}/*/*
+
+%files sqlite
+%defattr(-,root,root,-)
+%{qtdir}/plugins/sqldrivers/libqsqlite.so
+
+%files ODBC
+%defattr(-,root,root,-)
+%{qtdir}/plugins/sqldrivers/libqsqlodbc.so
+
+%files PostgreSQL
+%defattr(-,root,root,-)
+%{qtdir}/plugins/sqldrivers/libqsqlpsql.so
+
+%files MySQL
+%defattr(-,root,root,-)
+%{qtdir}/plugins/sqldrivers/libqsqlmysql.so
+
+%files designer
+%defattr(-,root,root,-)
+%{qtdir}/templates
+%{qtdir}/bin/designer
+%{_datadir}/applications/*designer*.desktop
+%{_datadir}/pixmaps/designer3.png
+
+
+%changelog
+* Mon Feb 13 2012 Francois Andriot <francois.andriot@free.fr> - 3.4.0-1
+- Initial build for TDE R14
+- Renames 'qt3' to 'tqt3'
+- Spec file based on 'qt3-3.3.8b-30' from RHEL 6
+
+* Sun Dec 18 2011 Francois Andriot <francois.andriot@free.fr> - 3.3.8.d-3
+- Updates zh_TW translations, thanks to Wei-Lun Chao .
+
+* Thu Nov 03 2011 Francois Andriot <francois.andriot@free.fr> - 3.3.8.d-2
+- Add missing BuildRequires
+
+* Fri Sep 02 2011 Francois Andriot <francois.andriot@free.fr> - 3.3.8.d-1
+- Initial build for RHEL 6, RHEL 5, and Fedora 15
+- Switch to Trinity Version
+- Spec file based on RHEL 6 'qt3-3.3.8b-29'