You are not logged in.
I'm using oxim which like gcin(Chinese Input Method),
but oxim need qinputcontextplugin.h to make qt-immodule,
and Fedora 7 had the patch which include qinputcontextplugin.h,
so I hope the maintainer to add the patch, thanks!
Offline
Try build Qt with this PKGBUILD. I can't remember where I downloaded the extra patches from, but they are not too difficult to find on google.
You will have qt-immodule after installing this.
pkgname=qt
pkgver=3.3.8
pkgrel=3
pkgdesc="The QT gui toolkit."
arch=(i686 x86_64)
url="http://www.trolltech.com/products/qt/index.html"
pkgfqn=${pkgname}-x11-free-${pkgver}
install=qt.install
depends=('libpng' 'libjpeg' 'libxmu' 'libxcursor' 'libxinerama' 'mesa' \
'libxft' 'libxrandr')
makedepends=('mysql' 'postgresql>=8.2.3' 'sqlite3' 'unixodbc' 'libmng')
source=(ftp://ftp.trolltech.com/qt/source/${pkgfqn}.tar.gz qt.profile \
qt-copy-kde-patches.tar.bz2 qt-patches.tar.bz2 utf8-bug-qt3.diff \
qt-font-default-subst.diff \
qt-x11-immodule-unified-qt3.3.8-20070321-gentoo.diff.bz2 \
qt-add-bold-style-for-missing-font.patch.gz)
# qt-copy-kde-patches come from http://websvn.kde.org/trunk/qt-copy/patches/
# other qt-patches come from fedora and gentoo
build() {
export QTDIR=$startdir/src/$pkgfqn
export PATH=${QTDIR}/bin:${PATH}
export LD_LIBRARY_PATH=${QTDIR}/lib:${LD_LIBRARY_PATH}
cd $startdir/src/$pkgfqn
# apply qt patches from kde.org
for i in ../qt-copy-kde-patches/*; do
patch -Np0 -i $i || return 1
done
# apply other qt patches and one security fix from debian/gentoo
for i in ../qt-patches/*; do
patch -Np1 -i $i || return 1
done
# fix utf8 bug
patch -Np0 -i ../utf8-bug-qt3.diff || return 1
# fix asia fonts
patch -Np0 -i ../qt-font-default-subst.diff || return 1
# apply immodule patch
patch -Np1 -i ../qt-x11-immodule-unified-qt3.3.8-20070321-gentoo.diff
# add bold style for fonts missing it
patch -Np1 -i ../qt-add-bold-style-for-missing-font.patch
# start compiling qt
sed -i 's|-cp -P -f|-cp -L -f|' qmake/Makefile.unix
rm -rf doc/html examples tutorial
sed -i "s|sub-tutorial sub-examples||" Makefile
sed -i "s|-O2|$CXXFLAGS|" mkspecs/linux-g++/qmake.conf
sed -i "s|-I. |$CXXFLAGS -I. |" qmake/Makefile.unix
sed -i "s|read acceptance|acceptance=yes|" configure
if [ "$CARCH" = "x86_64" ]; then
export ARCH="-64"
else unset ARCH
fi
sh make-symlinks.sh
./configure -prefix /opt/qt -platform linux-g++$ARCH \
-system-zlib -qt-gif -release -shared -sm -nis -thread -stl \
-{system-lib,plugin-imgfmt-}{png,jpeg,mng} \
-no-g++-exceptions -plugin-sql-{mysql,psql,sqlite,odbc}
# fix /opt/qt/lib path
[ "$CARCH" = "x86_64" ] && sed -i "s|/opt/qt/lib64|/opt/qt/lib|g" $startdir/src/$pkgfqn/src/Makefile
[ "$CARCH" = "x86_64" ] && sed -i "s|/opt/qt/lib64|/opt/qt/lib|g" $startdir/src/$pkgfqn/tools/designer/designer/Makefile
[ "$CARCH" = "x86_64" ] && sed -i "s|/opt/qt/lib64|/opt/qt/lib|g" $startdir/src/$pkgfqn/tools/designer/editor/Makefile
[ "$CARCH" = "x86_64" ] && sed -i "s|/opt/qt/lib64|/opt/qt/lib|g" $startdir/src/$pkgfqn/tools/assistant/lib/Makefile
[ "$CARCH" = "x86_64" ] && sed -i "s|/opt/qt/lib64|/opt/qt/lib|g" $startdir/src/$pkgfqn/tools/designer/uilib/Makefile
cd $startdir/src/$pkgfqn
make -C qmake || return 1
cd $startdir/src/$pkgfqn/plugins/src/sqldrivers/mysql
$startdir/src/$pkgfqn/bin/qmake -o Makefile "INCPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/mysql -lmysqlclient" mysql.pro
cd $startdir/src/$pkgfqn/plugins/src/sqldrivers/psql
$startdir/src/$pkgfqn/bin/qmake -o Makefile "INCPATH+=/usr/src/include /usr/include/postgresql/server" "LIBS+=-L/usr/lib -lpq" psql.pro
cd $startdir/src/$pkgfqn
# fix the broken makefiles
#sed -i 's|[[:space:]]*strip.*doc/html.*$|#|g' src/Makefile
make || return 1
make INSTALL_ROOT=$startdir/pkg install
rm -rf `find $startdir/pkg/opt/qt/mkspecs/* | grep -v linux-g++$ARCH`
rm -rf $startdir/pkg/opt/qt/{phrasebooks,templates,translations}
sed -i "s|-L$startdir/src/$pkgfqn/lib ||g" $startdir/pkg/opt/qt/lib/*.prl
install -D -m755 qmake/qmake $startdir/pkg/opt/qt/bin/qmake
install -D -m755 $startdir/qt.profile $startdir/pkg/etc/profile.d/qt.sh
[ "$CARCH" = "x86_64" ] && sed -i "s|linux-g++|linux-g++-64|g" $startdir/pkg/etc/profile.d/qt.sh
rm -f $startdir/pkg/opt/qt/mkspecs/linux-g++$ARCH/linux-g++$ARCH
# install man pages
mkdir -p $startdir/pkg/opt/qt/man
cp -r $startdir/src/$pkgfqn/doc/man/{man1,man3} $startdir/pkg/opt/qt/man/
#libtoolslay
find $startdir/pkg -name '*.la' -exec rm {} \;
# Arch64 fix
if [ "$CARCH" = "x86_64" ]; then
mkdir $startdir/pkg/opt/qt/mkspecs/linux-g++
cd $startdir/pkg/opt/qt/mkspecs/linux-g++
ln -s -v ../linux-g++-64/* .
fi
}
Offline
I have this problem too.
But when I rebuild qt with the above PKGBUILD, I get an error.
g++ -c -pipe -fno-exceptions -Wall -W -march=i686 -mtune=generic -O2 -pipe -D_REENTRANT -fPIC -DQT_SHARED -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_THREAD_SUPPORT -D_LARGEFILE_SOURCE -D_LARGE_FILES -D_FILE_OFFSET_BITS=64 -DQT_NO_IMAGEIO_MNG -DQT_NO_IMAGEIO_JPEG -DQT_NO_IMAGEIO_PNG -DQT_BUILTIN_GIF_READER=1 -DQT_NO_STYLE_MAC -DQT_NO_STYLE_AQUA -DQT_NO_STYLE_INTERLACE -DQT_NO_STYLE_WINDOWSXP -DQT_NO_STYLE_COMPACT -DQT_NO_STYLE_POCKETPC -I/home/hjq/Desktop/qt3/src/qt-x11-free-3.3.8/mkspecs/linux-g++ -I. -I/usr/include/freetype2 -I3rdparty/opentype -I../include -I/usr/X11R6/include -I/usr/X11R6/include -I.moc/release-shared-mt/ -o .obj/release-shared-mt/qwidget_x11.o kernel/qwidget_x11.cpp
kernel/qwidget_x11.cpp:66:34: 错误:qinputcontextfactory.h:没有那个文件或目录
kernel/qwidget_x11.cpp: In member function 'void QWidget::changeInputContext(const QString&)':
kernel/qwidget_x11.cpp:2837: 错误:'QInputContextFactory'未声明
kernel/qwidget_x11.cpp: In member function 'void QWidget::createInputContext()':
kernel/qwidget_x11.cpp:2875: 错误:'QInputContextFactory'未声明
make[2]: *** [.obj/release-shared-mt/qwidget_x11.o] 错误 1
make[2]: Leaving directory `/home/hjq/Desktop/qt3/src/qt-x11-free-3.3.8/src'
make[1]: *** [sub-src] 错误 2
make[1]: Leaving directory `/home/hjq/Desktop/qt3/src/qt-x11-free-3.3.8'
make: *** [init] 错误 2
==> 错误: 创建失败。
正在中断……
Last edited by struq (2008-04-05 04:43:48)
Offline
I had a look at the gentoo qt3 ebuild and found that it would have to execute make-symlinks.sh, which is in the patch.
I made PKGBUILD like this, I'll have another try...
#
# KDEmod : a modular kde package set for arch linux
# based on the official KDE PKGBUILDs by Tobias Powalowski <tpowa @ archlinux.org>
#
# maintainer (i686): Jan Mette (funkyou) <funkyou @ kdemod.ath.cx>
# maintainer (x86_64): Johannes Schriewer (dunkelstern) <dunkelstern @ kdemod.ath.cx>
#
# USE MAKEPKG-ARCH INSIDE THE _BUILDSYSTEM DIRECTORY!!!
#
# EXTRA VARIABLES (NEED TO DEFINED FIRST)
# THIS BITES THE ARCH PACKAGING STANDARD, BUT EASES MAINTENANCE A LOT
#
pkgname=qt3-enhanced
_origname=qt
pkgver=3.3.8
pkgrel=21
pkgdesc="The Qt GUI toolkit (KDEmod)"
conflicts=('qt3')
provides=('qt3=3.3.8' 'qt-enhanced=3.3.8')
replaces=('qt-enhanced')
groups=('kdemod' 'kdemod-complete' 'kdemod-vanilla' 'kdemod-base')
arch=(i686 x86_64)
url="http://www.trolltech.com/products/qt/index.html"
license="GPL"
pkgfqn=${_origname}-x11-free-3.3.8b
install=qt.install
depends=('libpng' 'libjpeg' 'libxmu' 'libxcursor' 'libxinerama' 'mesa' \
'libxft' 'libxrandr')
makedepends=('mysql' 'postgresql>=8.2.6' 'sqlite3' 'unixodbc' 'libmng')
source=(http://ftp.qtopia.org.cn/ftp/mirror/ftp.trolltech.com/qt/source/${pkgfqn}.tar.gz \
qt.profile \
qt-copy-kde-patches.tar.bz2 \
qt-patches.tar.bz2 \
qt-3.3.8-xmms-dynamic.patch \
qt-3.3.8-xinerama.patch \
qt-3.3.8-eyecandy.patch \
qt-x11-immodule-unified-qt3.3.8-20071116.diff \
)
# qt-copy-kde-patches come from http://websvn.kde.org/trunk/qt-copy/patches/
# other qt-patches come from fedora and gentoo
build() {
export QTDIR=$startdir/src/$pkgfqn
export PATH=${QTDIR}/bin:${PATH}
export LD_LIBRARY_PATH=${QTDIR}/lib:${LD_LIBRARY_PATH}
cd $startdir/src/$pkgfqn
# apply qt patches from kde.org
for i in ../qt-copy-kde-patches/*; do
patch -Np0 -i $i || return 1
done
# apply other qt patches and one security fix from debian/gentoo
for i in ../qt-patches/*; do
patch -Np1 -i $i || return 1
done
# apply eycandy patch(es)
patch -Np1 -i ../qt-3.3.8-eyecandy.patch || return 1
# apply extra fixes
patch -Np1 -i ../qt-3.3.8-xmms-dynamic.patch || return 1
# apply xinerama stuff
patch -Np0 -i ../qt-3.3.8-xinerama.patch || return 1
# qt immodule patch
patch -Np1 -i ../qt-x11-immodule-unified-qt3.3.8-20071116.diff || return 1
sh make-symlinks.sh || return 1
cd $startdir/src/$pkgfqn
# start compiling qt
sed -i 's|-cp -P -f|-cp -L -f|' qmake/Makefile.unix
rm -rf doc/html examples tutorial
sed -i "s|sub-tutorial sub-examples||" Makefile
sed -i "s|-O2|$CXXFLAGS|" mkspecs/linux-g++/qmake.conf
sed -i "s|-I. |$CXXFLAGS -I. |" qmake/Makefile.unix
sed -i "s|read acceptance|acceptance=yes|" configure
if [ "$CARCH" = "x86_64" ]; then
export ARCH="-64"
else unset ARCH
fi
./configure -prefix /opt/qt -platform linux-g++$ARCH \
-system-zlib -qt-gif -release -shared -sm -nis -thread -stl \
-{system-lib,plugin-imgfmt-}{png,jpeg,mng} -tablet \
-no-g++-exceptions -plugin-sql-{mysql,psql,sqlite,odbc} \
-dlopen-opengl -no-ipv6 -xinerama -xcursor -xrender -xft
# fix /opt/qt/lib path
[ "$CARCH" = "x86_64" ] && sed -i "s|/opt/qt/lib64|/opt/qt/lib|g" $startdir/src/$pkgfqn/src/Makefile
[ "$CARCH" = "x86_64" ] && sed -i "s|/opt/qt/lib64|/opt/qt/lib|g" $startdir/src/$pkgfqn/tools/designer/designer/Makefile
[ "$CARCH" = "x86_64" ] && sed -i "s|/opt/qt/lib64|/opt/qt/lib|g" $startdir/src/$pkgfqn/tools/designer/editor/Makefile
[ "$CARCH" = "x86_64" ] && sed -i "s|/opt/qt/lib64|/opt/qt/lib|g" $startdir/src/$pkgfqn/tools/assistant/lib/Makefile
[ "$CARCH" = "x86_64" ] && sed -i "s|/opt/qt/lib64|/opt/qt/lib|g" $startdir/src/$pkgfqn/tools/designer/uilib/Makefile
cd $startdir/src/$pkgfqn/plugins/src/sqldrivers/mysql
qmake -o Makefile "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-L/usr/lib/mysql -lmysqlclient" mysql.pro
cd $startdir/src/$pkgfqn/plugins/src/sqldrivers/psql
qmake -o Makefile "INCLUDEPATH+=/usr/src/include /usr/include/postgresql/server" "LIBS+=-L/usr/lib -lpq" psql.pro
cd $startdir/src/$pkgfqn
# fix the broken makefiles
#sed -i 's|[[:space:]]*strip.*doc/html.*$|#|g' src/Makefile
make || return 1
make INSTALL_ROOT=$startdir/pkg install
rm -rf `find $startdir/pkg/opt/qt/mkspecs/* | grep -v linux-g++$ARCH`
rm -rf $startdir/pkg/opt/qt/{phrasebooks,templates,translations}
sed -i "s|-L$startdir/src/$pkgfqn/lib ||g" $startdir/pkg/opt/qt/lib/*.prl
install -D -m755 qmake/qmake $startdir/pkg/opt/qt/bin/qmake
install -D -m644 $startdir/qt.profile $startdir/pkg/etc/profile.d/qt3.sh
[ "$CARCH" = "x86_64" ] && sed -i "s|linux-g++|linux-g++-64|g" $startdir/pkg/etc/profile.d/qt.sh
rm -f $startdir/pkg/opt/qt/mkspecs/linux-g++$ARCH/linux-g++$ARCH
# install man pages
mkdir -p $startdir/pkg/opt/qt/man
cp -r $startdir/src/$pkgfqn/doc/man/{man1,man3} $startdir/pkg/opt/qt/man/
#libtoolslay
find $startdir/pkg -name '*.la' -exec rm {} \;
# Arch64 fix
if [ "$CARCH" = "x86_64" ]; then
mkdir $startdir/pkg/opt/qt/mkspecs/linux-g++
cd $startdir/pkg/opt/qt/mkspecs/linux-g++
ln -s -v ../linux-g++-64/* .
fi
}
md5sums=('9f05b4125cfe477cc52c9742c3c09009'
'90d6eeb2ec44b14a51f2ccba9b13be35'
'49eb3cf6f786563272494b6bb69b6c2c'
'c8937968e9807b3cdcdf0505728d99ce'
'9891f88dfa25a6cdf90aed3bede70211'
'6e1f3841969fd98490e278b35d76c6ab'
'4e298a2093394ffe54a9cbd93fe435e1'
'c2285ee7f91c75e1d2714c9a5c78fbfb')
Offline