# Copyright 1999-2006 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ inherit eutils OO_PATCHLEVEL="OOC680" OO_SRC="OOO_2_0_3" DESCRIPTION="Voikko—Free Finnish spell checking and hyphenation for OpenOffice" HOMEPAGE="http://www.lemi.fi/voikko/" IUSE="unobuild" SRC_URI="!unobuild? ( http://dev.gentoo.org/~flammie/${P}-bin.tar.bz2 ) unobuild? ( http://www.hunspell-fi.org/files/${P}.tar.gz http://mirrors.dotsrc.org/openoffice/stable/2.0.3_sdk/OOo_2.0.3_LinuxIntel_sdk.sh )" LICENSE="LGPL-2.1" SLOT="0" KEYWORDS="~x86" DEPEND="|| ( >=app-office/openoffice-2 >=app-office/openoffice-bin-2 ) app-text/voikko sys-apps/grep sys-apps/sed unobuild? ( app-arch/zip || ( app-arch/rpm2targz ) )" # ! app-office/oo2-soikko" RDEPEND="|| ( >=app-office/openoffice-2 >=app-office/openoffice-bin-2 ) app-text/voikko" pkg_setup() { if pidof soffice.bin >/dev/null; then die "Voikko can’t be installed while OpenOffice.org is running." # Or use the force #killall soffice.bin || killall -9 soffice.bin fi # if use unobuild ; then # if ! built_with_use app-office/openoffice odk ; then # ewarn "OpenOffice should be built with USE flag “odk”" # ewarn "for building uno package from source to work" # fi # fi } src_unpack() { if use unobuild ; then mkdir "${WORKDIR}/${OO_SRC}-SDK" # From OOo...sdk.sh: tail --lines=+88 "${DISTDIR}/OOo_2.0.3_LinuxIntel_sdk.sh" | \ (cd "${WORKDIR}/${OO_SRC}-SDK"; tar xf -) assert cd "${WORKDIR}/${OO_SRC}-SDK/RPMS" rpm2targz openoffice.org-sdk-2.0.3-?.i586.rpm || \ die "Unable to unrpm SDK" tar zxpf openoffice.org-sdk-2.0.3-?.i586.tar.gz || \ die "Unable to untar SDK" cd "${WORKDIR}" unpack ${P}.tar.gz else unpack ${P}-bin.tar.bz2 fi } src_compile() { if use unobuild ; then # From setsdkenvunix.sh: OO_SDK_NAME=odk OO_SDK_HOME="${WORKDIR}/${OO_SRC}-SDK/RPMS/opt/openoffice.org2.0_sdk/" OFFICE_HOME="${ROOT}/usr/lib/openoffice/" OO_SDK_URE_HOME="${ROOT}/usr/lib/openoffice/" OO_SDK_MAKE_HOME="${ROOT}/usr/bin" OO_SDK_ZIP_HOME="${ROOT}/usr/bin" OO_SDK_CPP_HOME="${ROOT}/usr/bin" # OO_SDK_JAVA_HOME="${ROOT}/opt/sun-jdk..." OO_SDK_OUTPUT_DIR=`pwd` SDK_AUTO_DEPLOYMENT=YES OFFICE_PROGRAM_PATH=${OFFICE_HOME}/program UNO_PATH=${OFFICE_PROGRAM_PATH} OO_SDK_URE_BIN_DIR=${OFFICE_PROGRAM_PATH} OO_SDK_URE_LIB_DIR=${OFFICE_PROGRAM_PATH} OO_SDK_URE_JAVA_DIR=${OFFICE_PROGRAM_PATH}/classes OO_EXAMPLE_OUT=$OO_SDK_OUTPUT_DIR/$OO_SDK_HOME sd_platform=`${OO_SDK_HOME}/config.guess | cut -d"-" -f3,4` #case $sd_platform in # linux-gnu) SDK_GXX_INCLUDE_PATH=`echo "#include " | $OO_SDK_CPP_HOME/g++ -E -xc++ - | sed -n '/.*1*"\(.*\)\/cstring".*/s//\1/p' | head -n 1` directoryname=linux comid=gcc3 pltfrm=gcc soext=so exampleout=LINUXexample.out platform=Linux LD_LIBRARY_PATH=$OO_SDK_HOME/$directoryname/lib:$OO_EXAMPLE_OUT/$exampleout/lib:${OO_SDK_URE_LIB_DIR}:.:$LD_LIBRARY_PATH # esac PATH=$OO_SDK_HOME/$directoryname/bin:$OO_EXAMPLE_OUT/$exampleout/bin:${OO_SDK_URE_BIN_DIR}:.:$PATH CLASSPATH=${OO_SDK_URE_JAVA_DIR}/juh.jar:${OO_SDK_URE_JAVA_DIR}/jurt.jar:${OO_SDK_URE_JAVA_DIR}/ridl.jar:${OO_SDK_URE_JAVA_DIR}/unoloader.jar${OFFICE_PROGRAM_PATH+:${OFFICE_PROGRAM_PATH}/classes/unoil.jar}${CLASSPATH+:${CLASSPATH}} PATH=$OO_SDK_MAKE_HOME:$PATH PATH=$OO_SDK_ZIP_HOME:$PATH PATH=$OO_SDK_CPP_HOME:$PATH PATH=$OO_SDK_JAVA_HOME/bin:$PATH echo " * SDK environment is prepared for ${platform}" echo " *" echo " * SDK = $OO_SDK_HOME" echo " * Office = $OFFICE_HOME" echo " * URE = $OO_SDK_URE_HOME" echo " * Make = $OO_SDK_MAKE_HOME" echo " * Zip = $OO_SDK_ZIP_HOME" echo " * C++ Compiler = $OO_SDK_CPP_HOME" echo " * Java = $OO_SDK_JAVA_HOME" echo " * Special Output directory = $OO_SDK_OUTPUT_DIR" echo " * Auto deployment = $SDK_AUTO_DEPLOYMENT" cd "${WORKDIR}/unopkg" # Variables needed to "export" are used in the *.mk files included OO_SDK_HOME=${OO_SDK_HOME} OFFICE_HOME=${OFFICE_HOME} \ OO_SDK_NAME=${OO_SDK_NAME} \ OO_SDK_MAKE_HOME=${OO_SDK_MAKE_HOME} \ OO_SDK_ZIP_HOME=${OO_SDK_ZIP_HOME} \ OO_SDK_CPP_HOME=${OO_SDK_CPP_HOME} \ OO_SDK_OUTPUT_DIR=${OO_SDK_OUTPUT_DIR} \ SDK_AUTO_DEPLOYMENT=${SDK_AUTO_DEPLOYMENT} \ LD_LIBRARY_PATH=${LD_LIBRARY_PATH} PATH=${PATH} \ OFFICE_PROGRAM_PATH=${OFFICE_PROGRAM_PATH} \ SDK_GXX_INCLUDE_PATH=${SDK_GXX_INCLUDE_PATH} \ emake || die "make uno package failed" mkdir "${WORKDIR}/${P}" cp build/oo2-voikko-*uno.pkg impl/doc/Linux_*/ASENNUS.txt \ linux-installer "${WORKDIR}/${P}" fi } src_install() { dodoc ASENNUS.txt insinto /usr/lib/openoffice/share/ doins linux-installer dodir /usr/lib/${P} insinto /usr/lib/${P} if use amd64 ; then doins oo2-voikko-Linux_x86_64-${PV}.uno.pkg else doins oo2-voikko-Linux_x86-${PV}.uno.pkg fi } find_unopkg() { if has_version '>=app-office/openoffice-bin'; then if use amd64 ; then UNOPKG="/usr/lib32/openoffice/program/unopkg" else UNOPKG="/usr/lib/openoffice/program/unopkg" fi else UNOPKG="/usr/lib/openoffice/program/unopkg" #verify! fi } pkg_postinst() { # N.B.: uno packages meddle with $HOME, let's fool it HOME="${S}" find_unopkg # select component if use amd64; then COMPONENT="${ROOT}/usr/lib/${P}/oo2-voikko-Linux_x86_64-${PV}.uno.pkg" else COMPONENT="${ROOT}/usr/lib/${P}/oo2-voikko-Linux_x86-${PV}.uno.pkg" fi PKG=$(basename "${COMPONENT}") # Global scope in install-oo2-voikko if [[ -e "${HOME}/.openoffice.org2/.lock" ]] ; then die "lockfile from previous failed installation attempt found in \ ${HOME}/.openoffice.org2/.lock, please clean and retry" fi # register() if [[ "${COMPONENT}" == "" ]] ; then die "UNO component not found" fi einfo "Trying to register uno package ${COMPONENT}..." "${UNOPKG}" add --shared "${COMPONENT}" if [[ $? == 0 ]] ; then einfo "Voikko package (${PKG}) registered succesfully" else die "Couldn't register Voikko package (${PKG})" fi elog "Please note that oo2-voikko is very dependent on ABI compatible " elog "version of OpenOffice.org to exist on system when removing voikko!" elog "Before incompatible update or removal of OpenOffice you must" elog "unmerge oo2-voikko!" } pkg_prerm() { find_unopkg #unregister() UNOPKG_LIST="$(${UNOPKG} list --shared 2> /dev/null)" if [[ $? != 0 ]] ; then die "Couldn't list existing packages" fi PKG=$(echo "${UNOPKG_LIST}" | egrep -m1 "^Name: oo2-voikko-Linux_x86(_64)?-${PV}" | sed -e "s/Name: //") if [ "${PKG}" != "" ]; then einfo "Removing uno package ${PKG}..." if "${UNOPKG}" remove --shared ${PKG} &>/dev/null then einfo "Voikko package (${PKG}) unregistered succesfully" else die "Couldn't uninstall existing Voikko packages" fi else ewarn "Couldn't find existing Voikko packages." ewarn "You may need to unopkg remove them manually." fi }