Merge branch 'master' of http://scm.trinitydesktop.org/scm/git/tde-packaging
commit
11bfc1adba
@ -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
|
@ -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
|
Binary file not shown.
Binary file not shown.
@ -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
|
||||
|
@ -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 )))
|
@ -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);
|
@ -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
|
||||
}
|
@ -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
|
||||
|
@ -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()
|
@ -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
|
@ -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 ) {
|
@ -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;
|
@ -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;
|
@ -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;
|
@ -0,0 +1 @@
|
||||
../qt3/qt-3.1.0-makefile.patch
|
@ -0,0 +1 @@
|
||||
../qt3/qt-3.3.4-print-CJK.patch
|
@ -0,0 +1 @@
|
||||
../qt3/qt-3.3.6-fontrendering-gu-228452.patch
|
@ -0,0 +1 @@
|
||||
../qt3/qt-3.3.6-fontrendering-ml_IN-209974.patch
|
@ -0,0 +1 @@
|
||||
../qt3/qt-3.3.6-fontrendering-te_IN-211259.patch
|
@ -0,0 +1 @@
|
||||
../qt3/qt-3.3.8-fontrendering-as_IN-209972.patch
|
@ -0,0 +1 @@
|
||||
../qt3/qt-x11-free-3.3.4-fullscreen.patch
|
@ -0,0 +1 @@
|
||||
../qt3/qt-x11-free-3.3.6-qfontdatabase_x11.patch
|
@ -0,0 +1 @@
|
||||
../qt3/qt-x11-free-3.3.6-strip.patch
|
@ -0,0 +1 @@
|
||||
../qt3/qt-x11-free-3.3.7-arm.patch
|
@ -0,0 +1 @@
|
||||
../qt3/qt-x11-free-3.3.8b-typo.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();
|
||||
}
|
||||
|
Binary file not shown.
@ -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
|
@ -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
|
@ -0,0 +1 @@
|
||||
../qt3/qt3-3.3.8.d-updates_zh-tw_translations.patch
|
@ -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;
|
@ -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
|
||||
+
|
@ -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;
|
@ -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) {
|
@ -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:");
|
@ -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 );
|
@ -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() ) );
|
||||
+*/
|
||||
}
|
||||
}
|
||||
}
|
@ -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
|
@ -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 );
|
@ -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
|
||||
|
@ -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.";
|
@ -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",
|
@ -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'
|
Loading…
Reference in new issue