You are not logged in.

#1 2007-05-25 06:36:21

jemann.chen
Member
From: taiwan
Registered: 2003-06-06
Posts: 34

Qt need qinputcontextplugin.h

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

#2 2007-05-25 23:45:22

Si
Member
Registered: 2006-09-11
Posts: 57

Re: Qt need qinputcontextplugin.h

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

#3 2008-04-04 04:24:48

struq
Member
From: Guangzhou
Registered: 2007-12-29
Posts: 16

Re: Qt need qinputcontextplugin.h

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

#4 2008-04-05 07:30:48

struq
Member
From: Guangzhou
Registered: 2007-12-29
Posts: 16

Re: Qt need qinputcontextplugin.h

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

Board footer

Powered by FluxBB