diff options
Diffstat (limited to 'redhat')
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 Binary files differnew file mode 100644 index 000000000..ba1d19308 --- /dev/null +++ b/redhat/extras/kdebluetooth/kdebluetooth_1.0~beta9~r769275-0ubuntu1.diff.gz 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 Binary files differnew file mode 100644 index 000000000..e9b080342 --- /dev/null +++ b/redhat/extras/kdebluetooth/kdebluetooth_1.0~beta9~r769275.orig.tar.gz 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 Binary files differnew file mode 100644 index 000000000..7c122a375 --- /dev/null +++ b/redhat/tqt3/qt-x11-immodule-unified-qt3.3.8-20071116.diff.bz2 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' |