Skip to content

Instantly share code, notes, and snippets.

@mk0x9
Created June 8, 2014 21:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mk0x9/b4f5e91e0222528ab2a4 to your computer and use it in GitHub Desktop.
Save mk0x9/b4f5e91e0222528ab2a4 to your computer and use it in GitHub Desktop.
mozc 1.13 w/ fcitx support
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-i18n/mozc/mozc-1.6.1187.102.ebuild,v 1.1 2012/10/02 02:47:18 naota Exp $
EAPI="5"
PYTHON_COMPAT=( python{2_6,2_7} )
inherit elisp-common eutils multilib multiprocessing python-single-r1 toolchain-funcs
DESCRIPTION="The Mozc engine for IBus Framework"
HOMEPAGE="http://code.google.com/p/mozc/"
PROTOBUF_VER="2.5.0"
GMOCK_VER="1.6.0"
GTEST_VER="1.6.0"
JSONCPP_VER="0.6.0-rc2"
GYP_DATE="20140602"
MOZC_URL="http://mozc.googlecode.com/files/${P}.tar.bz2"
PROTOBUF_URL="http://protobuf.googlecode.com/files/protobuf-${PROTOBUF_VER}.tar.bz2"
GMOCK_URL="https://googlemock.googlecode.com/files/gmock-${GMOCK_VER}.zip"
GTEST_URL="https://googletest.googlecode.com/files/gtest-${GTEST_VER}.zip"
JSONCPP_URL="mirror://sourceforge/jsoncpp/jsoncpp-src-${JSONCPP_VER}.tar.gz"
GYP_URL="http://dev.gentoo.org/~naota/files/gyp-${GYP_DATE}.tar.bz2"
SRC_URI="${MOZC_URL} ${PROTOBUF_URL} ${GYP_URL}
test? ( ${GMOCK_URL} ${GTEST_URL} ${JSONCPP_URL} )"
LICENSE="Apache-2.0 BSD Boost-1.0 ipadic public-domain unicode"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="emacs fcitx +ibus +qt4 renderer test"
RDEPEND="dev-libs/glib:2
dev-libs/openssl
>=dev-libs/protobuf-2.5.0
x11-libs/libxcb
emacs? ( virtual/emacs )
fcitx? ( app-i18n/fcitx )
ibus? ( >=app-i18n/ibus-1.4.1 )
renderer? ( x11-libs/gtk+:2 )
qt4? (
dev-qt/qtgui:4
app-i18n/zinnia
)
${PYTHON_DEPS}"
DEPEND="${RDEPEND}
virtual/pkgconfig"
BUILDTYPE="${BUILDTYPE:-Release}"
RESTRICT="test"
SITEFILE=50${PN}-gentoo.el
src_unpack() {
unpack $(basename ${MOZC_URL})
unpack $(basename ${GYP_URL})
mv gyp-${GYP_DATE}/* "${S}"/third_party/gyp || die
cd "${S}"/protobuf
unpack $(basename ${PROTOBUF_URL})
mv protobuf-${PROTOBUF_VER} files || die
if use test; then
cd "${S}"/third_party
unpack $(basename ${GMOCK_URL}) $(basename ${GTEST_URL}) \
$(basename ${JSONCPP_URL})
mv gmock-${GMOCK_VER} gmock || die
mv gtest-${GTEST_VER} gtest || die
mv jsoncpp-src-${JSONCPP_VER} jsoncpp || die
fi
}
src_prepare() {
epatch "${FILESDIR}"/${P}-gtk-renderer.patch
epatch_user
}
src_configure() {
local myconf="--server_dir=/usr/$(get_libdir)/mozc"
if use fcitx; then
EPATCH_OPTS="-p2" epatch "${FILESDIR}/fcitx-${P}.1.patch"
fi
if ! use qt4 ; then
myconf+=" --noqt"
export GYP_DEFINES="use_libzinnia=0"
fi
if ! use renderer ; then
export GYP_DEFINES="${GYP_DEFINES} enable_gtk_renderer=0"
fi
export GYP_DEFINES="${GYP_DEFINES} use_libprotobuf=1"
"${PYTHON}" build_mozc.py gyp ${myconf} || die "gyp failed"
}
src_compile() {
tc-export CC CXX AR AS RANLIB LD
local my_makeopts=$(makeopts_jobs)
# This is for a safety. -j without a number, makeopts_jobs returns 999.
local myjobs=-j${my_makeopts/999/1}
local mytarget="server/server.gyp:mozc_server"
use emacs && mytarget="${mytarget} unix/emacs/emacs.gyp:mozc_emacs_helper"
use fcitx && mytarget="${mytarget} unix/fcitx/fcitx.gyp:fcitx-mozc"
use ibus && mytarget="${mytarget} unix/ibus/ibus.gyp:ibus_mozc"
use renderer && mytarget="${mytarget} renderer/renderer.gyp:mozc_renderer"
if use qt4 ; then
export QTDIR="${EPREFIX}/usr"
mytarget="${mytarget} gui/gui.gyp:mozc_tool"
fi
V=1 "${PYTHON}" build_mozc.py build_tools -c "${BUILDTYPE}" ${myjobs} || die
V=1 "${PYTHON}" build_mozc.py build -c "${BUILDTYPE}" ${mytarget} ${myjobs} || die
if use emacs ; then
elisp-compile unix/emacs/*.el || die
fi
}
src_test() {
"$(PYTHON)" build_mozc.py runtests -c "${BUILDTYPE}" || die
}
src_install() {
if use emacs ; then
dobin "out_linux/${BUILDTYPE}/mozc_emacs_helper" || die
elisp-install ${PN} unix/emacs/*.{el,elc} || die
elisp-site-file-install "${FILESDIR}/${SITEFILE}" ${PN} || die
fi
if use fcitx; then
exeinto /usr/$(get_libdir)/fcitx || die
doexe "out_linux/${BUILDTYPE}/fcitx-mozc.so" || die
insinto /usr/share/fcitx/addon || die
doins "unix/fcitx/fcitx-mozc.conf" || die
insinto /usr/share/fcitx/inputmethod || die
doins "unix/fcitx/mozc.conf" || die
insinto /usr/share/fcitx/mozc/icon || die
(
cd data/images
newins product_icon_32bpp-128.png mozc.png || die
cd unix
for f in ui-*
do
newins ${f} "mozc-${f/ui-}" || die
done
)
for mofile in out_linux/${BUILDTYPE}/obj/gen/unix/fcitx/po/*.mo
do
filename=`basename $mofile` || die
lang=${filename/.mo/} || die
insinto /usr/share/locale/$lang/LC_MESSAGES/ || die
newins ${mofile} fcitx-mozc.mo || die
done
fi
if use ibus ; then
exeinto /usr/$(get_libdir)/ibus-mozc || die
newexe "out_linux/${BUILDTYPE}/ibus_mozc" ibus-engine-mozc || die
insinto /usr/share/ibus/component || die
doins "out_linux/${BUILDTYPE}/obj/gen/unix/ibus/mozc.xml" || die
insinto /usr/share/ibus-mozc || die
(
cd data/images/unix
newins ime_product_icon_opensource-32.png product_icon.png || die
for f in ui-*
do
newins ${f} ${f/ui-} || die
done
)
fi
exeinto "/usr/$(get_libdir)/mozc" || die
doexe "out_linux/${BUILDTYPE}/mozc_server" || die
if use qt4 ; then
exeinto "/usr/$(get_libdir)/mozc" || die
doexe "out_linux/${BUILDTYPE}/mozc_tool" || die
fi
if use renderer ; then
exeinto "/usr/$(get_libdir)/mozc" || die
doexe "out_linux/${BUILDTYPE}/mozc_renderer" || die
fi
}
pkg_postinst() {
if use emacs ; then
elisp-site-regen
elog "You can use mozc-mode via LEIM (Library of Emacs Input Method)."
elog "Write the following settings into your init file (~/.emacs.d/init.el"
elog "or ~/.emacs) in order to use mozc-mode by default, or you can call"
elog "\`set-input-method' and set \"japanese-mozc\" anytime you have loaded"
elog "mozc.el"
elog
elog " (require 'mozc)"
elog " (set-language-environment \"Japanese\")"
elog " (setq default-input-method \"japanese-mozc\")"
elog
elog "Having the above settings, just type C-\\ which is bound to"
elog "\`toggle-input-method' by default."
fi
}
pkg_postrm() {
use emacs && elisp-site-regen
}
@mk0x9
Copy link
Author

mk0x9 commented Jun 8, 2014

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment