LinuxQuestions.org
Help answer threads with 0 replies.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Distributions > Slackware
User Name
Password
Slackware This Forum is for the discussion of Slackware Linux.

Notices


Reply
  Search this Thread
Old 05-17-2009, 02:32 AM   #1
grissiom
Member
 
Registered: Apr 2008
Location: China, Beijing
Distribution: Slackware
Posts: 423

Rep: Reputation: 45
[Call for testing] ibus SlackBuild


Hello,

I have wrote a SlackBuild for ibus(http://code.google.com/p/ibus/) which may become the successor of scim. This script is port from scim.SlackBuild in the official source/x/scim folder. But I only have KDE4 environment and I don't use XFce or csh. So I put my script here to call for wider testings. Thanks in advance!~

Code:
#!/bin/sh

# Slackware build script for pycurl

# Written by Grissiom chaos.proton@gmail.com

# If you want to use ibus as your primary input method, you'd better uninstall
# scim package.

# This SlackBuild is modified from Eric Hameleers's SlackBuild for scim. It
# has not been finished porting but works for me. So more testing and debugging
# is needed. If you see "SCIM" or commented out blocks in this script, that
# means I don't know the corresponding part in ibus or I don't have the
# debugging environment(e.g., I don't use csh and XFce).Feel free to mail me if
# you have brilliant idea or suggestions.
# Thanks in advance!

PRGNAM=ibus
VERSION=${VERSION:-1.1.0.20090508}
ARCH=${ARCH:-i486}
NUMJOBS=${NUMJOBS:-" -j3 "}
BUILD=${BUILD:-1}

if [ "$ARCH" = "i486" ]; then
  SLKCFLAGS="-O2 -march=i486 -mtune=i686"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "s390" ]; then
  SLKCFLAGS="-O2"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2 -fPIC"
  LIBDIRSUFFIX="64"
elif [ "$ARCH" = "arm" ]; then
  SLKCFLAGS="-O2 -march=armv4 -mtune=xscale"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "armel" ]; then
  SLKCFLAGS="-O2 -march=armv4t"
  LIBDIRSUFFIX=""
fi

CWD=$(pwd)
TMP=${TMP:-/tmp}
PKG=$TMP/package-$PRGNAM

rm -rf $PKG
mkdir -p $TMP $PKG

cd $TMP
rm -rf ${PRGNAM}-${VERSION}
tar -xvf $CWD/${PRGNAM}-${VERSION}.tar.gz
cd ${PRGNAM}-${VERSION} || exit 1
chown -R root:root .
find . \
  \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
  -exec chmod 755 {} \; -o \
  \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
  -exec chmod 644 {} \;

CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure --prefix=/usr \
            --libdir=/usr/lib${LIBDIRSUFFIX} \
            --localstatedir=/var \
            --sysconfdir=/etc \
            --program-prefix= \
            --program-suffix= \
            --build=$ARCH-slackware-linux

make $NUMJOBS || make || exit 1
make DESTDIR=$PKG install || exit 1

# Add a profile script that sets up the environment:
mkdir -p $PKG/etc/profile.d

cat <<EOT > $PKG/etc/profile.d/ibus.sh.new
#!/bin/sh

# ibus - Intelligent Input Bus for Linux / Unix OS. This is used to support the
# entering of text in non-US-English languages.

# For SCIM to work, you need to use a UTF-8 locale.  Make sure it ends on
# ".UTF-8", not "utf-8"!  As an example, you would need to use en_US.UTF-8
# for a US locale (export LANG=en_US.UTF-8), not en_US.
#
# The locale (LANG variable) is set in /etc/profile.d/lang.sh.

if [ -x /usr/bin/ibus-daemon ]; then
  # Enable legacy X applications to use ibus:
  export XMODIFIERS="@im=ibus"
  # Enable Qt/KDE applications to use ibus. qt4 immodule hasn't finished
  # working yet, so Qt programs could only use ibus through xim. In this
  # manner, make sure you start ibus-daemon with --xim(or -x) option.
  export QT_IM_MODULE="xim"
  # Enable GTK applications to use ibus:
  export GTK_IM_MODULE="ibus"
  # Make ibus start automatically if the "magic key" Ctrl-Space is pressed:
  export XIM_PROGRAM="/usr/bin/ibus-daemon -xdrt"
fi

# This ensures scim starts when you logon.
# This will only work if you login through runlevel 4 (graphical login)!!!
# Better is to have it start through Ctrl-Space like configured higher up ^^.
#if [ ! \`ls /tmp/scim-socket*\` ]; then
#  /usr/bin/scim -d
#fi

# GTK+ environments such as XFce should support SCIM automatically, BUT
# if the first app you run is a Qt one, you'll run into problems.  This
# can be avoided by going into Menu -> Settings -> Autostarted Applications
# and adding SCIM:  /usr/bin/scim -d

# KDE will not start ibus automatically, so you will need a script such as
# this one in your $HOME/.kde/Autostart:

#!/bin/bash
#if [ -x /usr/bin/ibus-daemon]; then
#  /usr/bin/ibus-daemon -xdrt
#fi

# Obviously, uncomment all but the first line.  :-)

EOT

#cat <<EOT > $PKG/etc/profile.d/scim.csh.new
##!/bin/csh
#
## SCIM (Smart Common Input Method platform).  This is used to support the
## entering of text in non-US-English languages.
#
## For SCIM to work, you need to use a UTF-8 locale.  Make sure it ends on
## ".UTF-8", not "utf-8"!  As an example, you would need to use en_US.UTF-8
## for a US locale (setenv LANG en_US.UTF-8), not en_US.
##
## The locale (LANG variable) is set in /etc/profile.d/lang.csh.
#
#[ -x /usr/bin/scim ]
#if (\$status == 0) then
#  # Enable legacy X applications to use scim:
#  setenv XMODIFIERS "@im=SCIM"
#  ## Enable Qt/KDE applications to use scim (does not work for kde4):
#  #setenv QT_IM_MODULE "scim"
#  # Make scim start automatically if the "magic key" Ctrl-Space is pressed:
#  setenv XIM_PROGRAM "/usr/bin/scim -d"
#endif
#
#[ -x /usr/bin/scim-bridge ]
#if (\$status == 0) then
#  # Let GTK applications like Firefox/Thunderbird use scim-bridge as
#  # default immodule:
#  setenv GTK_IM_MODULE "scim-bridge"
#  # Enable Qt4/KDE4 applications to use scim:
#  setenv QT_IM_MODULE "scim-bridge"
#endif
#
## This ensures scim starts when you logon.
## This will only work if you login through runlevel 4 (graphical login)!!!
## Better is to have it start through Ctrl-Space like configured higher up ^^.
##[ ! \`ls /tmp/scim-socket*\` ]
##if (\$status == 0) then
##  /usr/bin/scim -d
##endif
#
## GTK+ environments such as XFce should support SCIM automatically, BUT
## if the first app you run is a Qt one, you'll run into problems.  This
## can be avoided by going into Menu -> Settings -> Autostarted Applications
## and adding SCIM:  /usr/bin/scim -d
#
## KDE will not start SCIM automatically, so you will need a script such as
## this one in your $HOME/.kde/Autostart:
#
##!/bin/csh
##[ -x /usr/bin/scim ]
##if (\$status == 0) then
##  /usr/bin/scim -d &
##endif
#
## Obviously, uncomment all but the first line.  :-)
#
#EOT

chmod 755 $PKG/etc/profile.d/ibus.sh.new
#chmod 755 $PKG/etc/profile.d/scim.csh.new

#mkdir -p $PKG/usr/share/applications
#cat $CWD/scim.desktop > $PKG/usr/share/applications/scim.desktop
#cat $CWD/scim-setup.desktop > $PKG/usr/share/applications/scim-setup.desktop

# Protect config files from being overwritten:
mv $PKG/etc/gconf/schemas/ibus.schemas{,.new}

# Add this to the doinst.sh
mkdir -p $PKG/install
cat <<EOINS >> $PKG/install/doinst.sh

## Handle the incoming configuration files:
#config() {
#  for infile in \$1; do
#    NEW="\$infile"
#    OLD="\`dirname \$NEW\`/\`basename \$NEW .new\`"
#    # If there's no config file by that name, mv it over:
#    if [ ! -r \$OLD ]; then
#      mv \$NEW \$OLD
#    elif [ "\`cat \$OLD | md5sum\`" = "\`cat \$NEW | md5sum\`" ]; then
#      # toss the redundant copy
#      rm \$NEW
#    fi
#    # Otherwise, we leave the .new copy for the admin to consider...
#  done
#}

## Prepare the new configuration files
#for file in etc/scim/config.new etc/scim/global.new etc/profile.d/scim.sh.new etc/profile.d/scim.csh.new ; do
#  if [ -e \$(dirname \$file)/\$(basename \$file .new) -a -x \$(dirname \$file)/\$(basename \$file .new) ]; then
#    chmod 755 \$file
#  else
#    chmod 644 \$file
#  fi
#  config \$file
#done

# Run gtk-query-immodules so that "scim" will appear under Imput Method
# when you right- click your mouse in a text box.
if [ -x /usr/bin/update-gtk-immodules ]; then
  /usr/bin/update-gtk-immodules --verbose
fi

EOINS

# Add documentation:
cp -a \
  ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL NEWS README \
  $PKG/usr/doc/$PRGNAM-$VERSION

# Strip binaries:
find $PKG | xargs file | grep -e "executable" -e "shared object" \
  | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null

# Add a package description:
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc

# Build the package:
cd $PKG
/sbin/makepkg --prepend --linkadd y --chown n $TMP/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}.txz
ibus depend on GConf and pyxdg which both are available in slackbuilds.org . Actually ibus is only the engine, you may need ibus-pinyin for inputting Chinese or ibus-Anthy to inputting Japanese. But the SlackBuilds for them is quite easy. The attachment is the SlackBuilds for ibus-pinyin that I wrote. Have fun!
Attached Files
File Type: txt ibus-pinyin.SlackBuild.txt (2.1 KB, 18 views)

Last edited by grissiom; 05-17-2009 at 02:33 AM.
 
Old 05-18-2009, 12:27 PM   #2
rworkman
Slackware Contributor
 
Registered: Oct 2004
Location: Tuscaloosa, Alabama (USA)
Distribution: Slackware
Posts: 2,559

Rep: Reputation: 1351Reputation: 1351Reputation: 1351Reputation: 1351Reputation: 1351Reputation: 1351Reputation: 1351Reputation: 1351Reputation: 1351Reputation: 1351
As long as it depends on GConf, it won't be the successor to scim in Slackware.
 
Old 05-18-2009, 07:24 PM   #3
grissiom
Member
 
Registered: Apr 2008
Location: China, Beijing
Distribution: Slackware
Posts: 423

Original Poster
Rep: Reputation: 45
Quote:
Originally Posted by rworkman View Post
As long as it depends on GConf, it won't be the successor to scim in Slackware.
Yes, I have to admit that this dependency made me headache... I hope the ibus dev could get rid of this in the future.(Someone is suggesting using KConfig which may available in Slackware) I will keep an eye for this. Thanks~
 
Old 05-18-2009, 08:49 PM   #4
rworkman
Slackware Contributor
 
Registered: Oct 2004
Location: Tuscaloosa, Alabama (USA)
Distribution: Slackware
Posts: 2,559

Rep: Reputation: 1351Reputation: 1351Reputation: 1351Reputation: 1351Reputation: 1351Reputation: 1351Reputation: 1351Reputation: 1351Reputation: 1351Reputation: 1351
What's wrong with a flat text config file?
 
Old 05-18-2009, 10:14 PM   #5
lumak
Member
 
Registered: Aug 2008
Location: Phoenix
Distribution: Arch
Posts: 799
Blog Entries: 32

Rep: Reputation: 111Reputation: 111
Where did GNU get the idea that they can put a registry into their Gui. Honestly! there are standards for a reason. It's as if they don't want to be Linux... Ohhhh.... It's all so clear now....
 
Old 05-18-2009, 10:51 PM   #6
rworkman
Slackware Contributor
 
Registered: Oct 2004
Location: Tuscaloosa, Alabama (USA)
Distribution: Slackware
Posts: 2,559

Rep: Reputation: 1351Reputation: 1351Reputation: 1351Reputation: 1351Reputation: 1351Reputation: 1351Reputation: 1351Reputation: 1351Reputation: 1351Reputation: 1351
Grissiom,
Just in case it's not clear (I know that English isn't your native language), please don't interpret anything I say as a criticism of *your* effort. I'm glad you are looking at ibus -- catching stuff like the GConf dependency early in the development cycle might help efforts to eliminate it :-)
 
Old 05-19-2009, 10:39 AM   #7
grissiom
Member
 
Registered: Apr 2008
Location: China, Beijing
Distribution: Slackware
Posts: 423

Original Poster
Rep: Reputation: 45
Quote:
Originally Posted by rworkman View Post
Grissiom,
Just in case it's not clear (I know that English isn't your native language), please don't interpret anything I say as a criticism of *your* effort.
No, I didn't ;-) I know as I' using Slackware, I'm standing on the shoulders of giants. I'd like to contribute something back. So any discussion is strongly welcome. Just as you said, English is not my native language, so if there is a word that make any of you confused, feel free to point it out. I will try my best to learn English as well :-)

Quote:
I'm glad you are looking at ibus -- catching stuff like the GConf dependency early in the development cycle might help efforts to eliminate it :-)
Yes, I will fire issues on the project's page or even mail the author if I have the passion someday. But it depends.
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
How can i make centos 4.5's system call using vDSO(call *%gs:0x10) instead of int80 tclwp Red Hat 3 08-06-2007 12:07 AM
Replace 'etch' with 'testing' in /etc/apt/sources.list to track 'testing' branch? Akhran Debian 3 04-09-2007 10:45 AM
How can I script an autologin, automatically call kde(or simillar) and call an app aboaventura Slackware 8 02-03-2007 11:00 PM
LXer: Call for testing/battering: sysjail LXer Syndicated Linux News 0 08-15-2006 03:03 PM
Setup as getting debian testing files from ftp - will it stay with testing BrianHenderson Debian 2 09-02-2004 06:06 PM

LinuxQuestions.org > Forums > Linux Forums > Linux - Distributions > Slackware

All times are GMT -5. The time now is 08:34 AM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration