#!/bin/sh NAME='ibus' VERSION='1.5.18' ARCH=$(uname -m) BUILD_DIR="/tmp/${NAME}_build" OUTPUTDIR='/tmp/out' SOURCEDIR="${BUILD_DIR}/source" ## build dependencies ## # on i686, gobject-introspection depends on python2 # on x86_64, gobject-introspection depends on python3 #DEPS_i686='python3.5-dev.tcz' #DEPS_x86_64='python3.6-dev.tcz' #eval BUILD_DEPS="\$DEPS_${ARCH}" #BUILD_DEPS="${BUILD_DEPS} BUILD_DEPS="autogen-dev.tcz automake.tcz compiletc.tcz ca-certificates.tcz dconf-dev.tcz gettext-dev.tcz gnome-common.tcz gobject-introspection-dev.tcz gtk2-dev.tcz gtk2-gir.tcz gtk3-dev.tcz gtk3-gir.tcz gtk-doc.tcz intltool.tcz iso-codes.tcz libnotify-dev.tcz libxkbcommon-dev.tcz qt-5.x-dev.tcz squashfs-tools.tcz vala-dev.tcz xmlto.tcz wayland-dev.tcz " echo tce-load -w $BUILD_DEPS tce-load -w $BUILD_DEPS > /dev/null 2>&1 echo tce-load -i $BUILD_DEPS tce-load -i $BUILD_DEPS > /dev/null 2>&1 || exit 1 rm -fr $OUTPUTDIR mkdir -p $OUTPUTDIR ## get source ## sudo rm -fr $BUILD_DIR mkdir -p $BUILD_DIR && cd $BUILD_DIR || { echo Can not create $BUILD_DIR >&2; exit 1; } [ $1 ] && tar xf ${1}/${NAME}-${VERSION}.tar.gz || { mkdir -p $SOURCEDIR [ -f ${SOURCEDIR}/${NAME}-${VERSION}.tar.gz ] || wget -P $SOURCEDIR https://github.com/ibus/ibus/releases/download/${VERSION}/ibus-${VERSION}.tar.gz tar xf ${SOURCEDIR}/${NAME}-${VERSION}.tar.gz } cd ${NAME}-${VERSION} || exit 1 # Fix an issue with deprecated schema entries: sed -i 's@/desktop/ibus@/org/freedesktop/ibus@g' \ data/ibus.schemas.in \ data/dconf/org.freedesktop.ibus.gschema.xml.in ## compile flags ## FLAGS_i686='-march=i486 -mtune=i686 ' FLAGS_x86_64='-mtune=generic ' eval CFLAGS="\$FLAGS_${ARCH}" eval CXXFLAGS="\$FLAGS_${ARCH}" CFLAGS="${CFLAGS}-Os -pipe -fno-exceptions -flto -fuse-linker-plugin" CXXFLAGS="${CXXFLAGS}-Os -pipe -fno-exceptions -flto -fuse-linker-plugin -fno-rtti" LDFLAGS="-Wl,-O1" export CFLAGS CXXFLAGS LDFLAGS ## configure ## ## in case emoji is added in the future # --with-unicode-emoji-dir=/usr/local/share/unicode/emoji \ # --with-emoji-annotation-dir=/usr/local/share/unicode/cldr/common/annotations \ ./configure --prefix=/usr/local \ --sysconfdir=/usr/local/etc \ --libdir=/usr/local/lib \ --libexecdir=/usr/local/lib/ibus \ --enable-vala=yes \ --enable-python-library \ --enable-wayland \ --enable-static \ --enable-shared \ --enable-gtk-doc-html \ --disable-emoji-dict \ --disable-unicode-dict \ 2> ${BUILD_DIR}/configure2 | tee ${BUILD_DIR}/configure1 ## make ## make -j 2> ${BUILD_DIR}/make2 | tee ${BUILD_DIR}/make1 make DESTDIR=${BUILD_DIR}/${NAME}-base install [ $? != 0 ] && { echo Error occur, make install failed >&2 exit 1 } ## strip ## find ${BUILD_DIR}/${NAME}-base -type f -exec file {} + | \ grep 'not stripped' | cut -d : -f 1 | \ xargs strip --strip-unneeded ## packing up ## cd ${BUILD_DIR}/${NAME}-base ## dev ## EXT='-dev' ### Vala API file, depends on gir extension ### mkdir -p ${BUILD_DIR}/${NAME}${EXT}/usr/local/share mv usr/local/share/vala ${BUILD_DIR}/${NAME}${EXT}/usr/local/share for dev in $(find . -name *.a -o -name *.la -o -name *.h -o -name *.m4 -o -name *.pc); do path=${dev#./} path=${path%/*} mkdir -p ${BUILD_DIR}/${NAME}${EXT}/$path mv $dev ${BUILD_DIR}/${NAME}${EXT}/$path done 2> /dev/null sudo chown root:root -R ${BUILD_DIR}/${NAME}${EXT} mksquashfs ${BUILD_DIR}/${NAME}${EXT} ${OUTPUTDIR}/${NAME}${EXT}.tcz printf 'libnotify-dev.tcz dconf-dev.tcz gnome-common.tcz intltool.tcz gettext-dev.tcz gtk2-dev.tcz gtk2-gir.tcz gtk3-dev.tcz gtk3-gir.tcz iso-codes.tcz vala-dev.tcz wayland-dev.tcz libxkbcommon-dev.tcz gobject-introspection-dev.tcz xmlto.tcz qt-5.x-dev.tcz ' > ${OUTPUTDIR}/${NAME}${EXT}.tcz.dep ## gir ## EXT='-gir' for gir in $(find . -type d -name gir*); do path=${gir#./} path=${path%/*} mkdir -p ${BUILD_DIR}/${NAME}${EXT}/$path mv $gir ${BUILD_DIR}/${NAME}${EXT}/$path done 2> /dev/null sudo chown root:root -R ${BUILD_DIR}/${NAME}${EXT} mksquashfs ${BUILD_DIR}/${NAME}${EXT} ${OUTPUTDIR}/${NAME}${EXT}.tcz printf 'gsettings-desktop-schemas-gir.tcz gtk3-gir.tcz ibus.tcz ' > ${OUTPUTDIR}/${NAME}${EXT}.tcz.dep [ "$ARCH" = "i686" ] && \ echo pygobject.tcz >> ${OUTPUTDIR}/${NAME}.tcz.dep || \ echo py3.6gobject.tcz >> ${OUTPUTDIR}/${NAME}.tcz.dep ## wayland ## EXT='-wayland' mkdir -p ${BUILD_DIR}/${NAME}${EXT}/usr/local/lib/ibus mv ./usr/local/lib/ibus/ibus-wayland ${BUILD_DIR}/${NAME}${EXT}/usr/local/lib/ibus sudo chown root:root -R ${BUILD_DIR}/${NAME}${EXT} mksquashfs ${BUILD_DIR}/${NAME}${EXT} ${OUTPUTDIR}/${NAME}${EXT}.tcz printf 'glib2.tcz ibus.tcz libxkbcommon.tcz wayland.tcz ' > ${OUTPUTDIR}/${NAME}${EXT}.tcz.dep ## locale ## EXT='-locale' for locale in $(find . -name *.mo); do path=${locale#./} path=${path%/*} mkdir -p ${BUILD_DIR}/${NAME}${EXT}/$path mv $locale ${BUILD_DIR}/${NAME}${EXT}/$path done 2> /dev/null sudo chown root:root -R ${BUILD_DIR}/${NAME}${EXT} mksquashfs ${BUILD_DIR}/${NAME}${EXT} ${OUTPUTDIR}/${NAME}${EXT}.tcz echo ibus.tcz > ${OUTPUTDIR}/${NAME}${EXT}.tcz.dep ## gtk2 ## EXT='-gtk2' mkdir -p ${BUILD_DIR}/${NAME}${EXT}/usr/local/lib mv usr/local/lib/gtk-2.0 ${BUILD_DIR}/${NAME}${EXT}/usr/local/lib mkdir -p ${BUILD_DIR}/${NAME}${EXT}/usr/local/tce.installed printf '#!/bin/sh # GTK2 /usr/local/bin/gtk-query-immodules-2.0 --update-cache & ' > ${BUILD_DIR}/${NAME}${EXT}/usr/local/tce.installed/${NAME}${EXT} sudo chown root:root -R ${BUILD_DIR}/${NAME}${EXT} sudo chown root:staff -R ${BUILD_DIR}/${NAME}${EXT}/usr/local/tce.installed sudo chmod -R 775 ${BUILD_DIR}/${NAME}${EXT}/usr/local/tce.installed mksquashfs ${BUILD_DIR}/${NAME}${EXT} ${OUTPUTDIR}/${NAME}${EXT}.tcz printf 'gtk2.tcz ibus.tcz ' > ${OUTPUTDIR}/${NAME}${EXT}.tcz.dep ### optional stuff ### ### doc, man, bytecode, bash-completion ### ## doc ## EXT='-doc' mkdir -p ${BUILD_DIR}/${NAME}${EXT}/usr/local/share mv ./usr/local/share/gtk-doc ${BUILD_DIR}/${NAME}${EXT}/usr/local/share sudo chown root:root -R ${BUILD_DIR}/${NAME}${EXT} mksquashfs ${BUILD_DIR}/${NAME}${EXT} ${OUTPUTDIR}/${NAME}${EXT}.tcz ## man ## EXT='-man' mkdir -p ${BUILD_DIR}/${NAME}${EXT}/usr/local/share mv ./usr/local/share/man ${BUILD_DIR}/${NAME}${EXT}/usr/local/share sudo chown root:root -R ${BUILD_DIR}/${NAME}${EXT} mksquashfs ${BUILD_DIR}/${NAME}${EXT} ${OUTPUTDIR}/${NAME}${EXT}.tcz ## bytecode ## EXT='-bytecode' for bytecode in $(find . -name *.pyo -o -name *.pyc); do path=${bytecode#./} path=${path%/*} mkdir -p ${BUILD_DIR}/${NAME}${EXT}/$path mv $bytecode ${BUILD_DIR}/${NAME}${EXT}/$path done sudo chown root:root -R ${BUILD_DIR}/${NAME}${EXT} mksquashfs ${BUILD_DIR}/${NAME}${EXT} ${OUTPUTDIR}/${NAME}${EXT}.tcz echo ibus.tcz > ${OUTPUTDIR}/${NAME}${EXT}.tcz.dep ## site-packages ## EXT='-python' path=$(find . -name site-packages -type d) path=${path#./} path=${path%/*} mkdir -p ${BUILD_DIR}/${NAME}${EXT}/${path%/*} mv $path ${BUILD_DIR}/${NAME}${EXT}/${path%/*} sudo chown root:root -R ${BUILD_DIR}/${NAME}${EXT} mksquashfs ${BUILD_DIR}/${NAME}${EXT} ${OUTPUTDIR}/${NAME}${EXT}.tcz echo ibus.tcz > ${OUTPUTDIR}/${NAME}${EXT}.tcz.dep ## base ## EXT='-base' # remove empty directory find . -depth -type d -exec rmdir {} \; 2> /dev/null mkdir -p usr/local/tce.installed printf '#!/bin/sh # GTK3 /usr/local/bin/gtk-query-immodules-3.0 --update-cache & # ICON /usr/local/bin/gtk-update-icon-cache -q -f -t /usr/local/share/icons/hicolor & # DCONF /usr/local/bin/dconf update & # schemas /usr/local/bin/glib-compile-schemas /usr/local/share/glib-2.0/schemas 2> /dev/null & ' > ${BUILD_DIR}/${NAME}${EXT}/usr/local/tce.installed/${NAME} mkdir -p etc/profile.d etc/dconf/profile etc/dconf/db/ibus.d printf 'export XMODIFIERS="@im=ibus" export XIM="ibus" export XIM_PROGRAM="/usr/local/bin/ibus-daemon" export ICON="/usr/local/share/icons/hicolor/scalable/apps/ibus.svg" export XIM_ARGS="-r --xim" export PREFFERENCE_PROGRAM="/usr/local/bin/ibus-setup" export SHORT_DESC="IBus" export GTK_IM_MODULE="ibus" [ -f /usr/local/lib/qt4/plugins/inputmethods/libqtim-ibus.so ] && export QT_IM_MODULE="ibus" || export QT_IM_MODULE="xim" ' > etc/profile.d/ibus.sh ln -s /usr/local/etc/dconf/profile/ibus etc/dconf/profile ln -s /usr/local/etc/dconf/db/ibus.d/00-upstream-settings etc/dconf/db/ibus.d sudo chown root:root -R ${BUILD_DIR}/${NAME}${EXT} sudo chown root:staff -R ${BUILD_DIR}/${NAME}${EXT}/usr/local/tce.installed sudo chmod -R 775 ${BUILD_DIR}/${NAME}${EXT}/usr/local/tce.installed mksquashfs ${BUILD_DIR}/${NAME}${EXT} ${OUTPUTDIR}/${NAME}.tcz printf 'dconf.tcz iso-codes.tcz libnotify.tcz ' > ${OUTPUTDIR}/${NAME}.tcz.dep [ "$ARCH" = "i686" ] && \ echo python.tcz >> ${OUTPUTDIR}/${NAME}.tcz.dep || \ echo python3.6.tcz >> ${OUTPUTDIR}/${NAME}.tcz.dep