# Description: Suite complète de office en logiciel libre
# URL: http://www.openoffice.org
# Packager: lesibel at free dot fr
# Maintainer: NuTyX packager team
# Depends on: rpmextract, libmspack, gconf, nss, pstoedit, poppler, openldap, kdelibs, qt, lpsolve, libmythes, hyphen, hunspell, redland, libgraphite, sane, xulrunner, unixodbc, vigra, lucene, hsqldb-java, beanshell, imagemagick, linux-pam, libart_lgpl, xorg-libxtst, p5-archive-zip, cairo, libwpd, cups, curl, python, xorg-libxaw, neon, dbus-glib, icu, libxslt, hicolor-icon-theme, desktop-file-utils, boost, gtk, libsndfile

name=openoffice
version=3.2.1
release=3
OOdir=OOO320_m19
CARCH=`uname -m`

source=(http://download.services.openoffice.org/files/stable/$version/OOo_${version}_src_{core,system,l10n,extensions,binfilter}.tar.bz2 \
	http://tools.openoffice.org/unowinreg_prebuild/680/unowinreg.dll
        startcenter.desktop
        default-no-startup-wizard.diff
        default-system-fpicker.diff
        soffice-detect-mozilla-certificates.diff
        buildfix-gcc44.diff
        buildfix_FormulaMissingHeader.diff
        buildfix_system_db48.diff
        http://cgit.freedesktop.org/ooo-build/ooo-build/plain/patches/dev300/cppu-lbnames-enable-gcc-4.5.diff
        http://cgit.freedesktop.org/ooo-build/ooo-build/plain/patches/dev300/vcl-system-graphite-with-stlport.diff
        http://cgit.freedesktop.org/ooo-build/ooo-build/plain/patches/dev300/fix-system-mythes-for-mythes-1.2.diff
        http://cgit.freedesktop.org/ooo-build/ooo-build/plain/patches/dev300/redland-remove-patches.diff?h=ooo-build-3-2-1
        openoffice.profile
	http://download.services.openoffice.org/files/localized/fr/$version/OOo_3.2.1_Linux_x86_langpack-rpm_fr.tar.gz)

build() {
	# Extraction langage pack
	cd $SRC/OOO320_m18_native_packed-1_fr.9502/RPMS
	for i in *; do sh rpmextract.sh $i; done
	rm *.rpm
	mkdir -p $SRC/fr
	mv opt/ $SRC/fr/

	# Debut 
	cd $SRC/$OOdir

        # some speedups
        export SMP="6"
        MAXMODULESFLAG="-P${SMP}"
        MAXPROCESSESFLAG="-P${SMP}"
        export nodep=true
        export NO_HIDS=true

        # build fixes
        patch -Np0 -i $SRC/buildfix-gcc44.diff 
        patch -Np0 -i $SRC/buildfix_FormulaMissingHeader.diff 
        patch -Np0 -i $SRC/buildfix_system_db48.diff 
        patch -Np0 -i $SRC/cppu-lbnames-enable-gcc-4.5.diff 

        # allow build with system mythes
        patch -Np0 -i $SRC/fix-system-mythes-for-mythes-1.2.diff 
        # allow build with system redland and cppunit
        # should also workaround all known bugs with plain upstream redland
        patch -Np0 -i $SRC/redland-remove-patches.diff?h=ooo-build-3-2-1        
        # allow system graphite with stlport
        patch -Np0 -i $SRC/vcl-system-graphite-with-stlport.diff 

        # allows soffice to find the user's firefox profile so that it can read
        # its digital certificates. Nss stores digital certificates in your mozilla firefox profile. 
        patch -Np0 -i $SRC/soffice-detect-mozilla-certificates.diff 

        # remove the startup wizard
        patch -Np0 -i $SRC/default-no-startup-wizard.diff 
        # enables the default system-file-picker in case we have that built
        patch -Np0 -i $SRC/default-system-fpicker.diff 

        if [ "$CARCH" = "x86_64" ]; then
          EXTRAOPTS="--without-stlport"
          # fix to build with SUN jdk/jre and OpenJDK
          # http://qa.openoffice.org/issues/show_bug.cgi?id=74749
          sed -i "s:lib64\/libjpeg.so:lib\/libjpeg.so:g" $SRC/$OOdir/solenv/inc/libs.mk 
         else EXTRAOPTS="--with-stlport"
        fi

        cd $SRC/$OOdir

        # needed to build the OO-SDK
        mv $SRC/unowinreg.dll external/unowinreg 

        # export C(XX)FLAGS
        # http://www.openoffice.org/issues/show_bug.cgi?id=103205
        unset CFLAGS
        unset CXXFLAGS

        # Need to recreate the configure script because of patches
        autoreconf -v 

        ./configure --with-build-version="$version NuTyX build-$release ($OOdir)" \
        --with-vendor="NuTyX"\
        --prefix=/usr --exec-prefix=/usr\
        --with-lang="fr"\
        --with-dict=ALL\
        --disable-gnome-vfs\
        --disable-qadevooo\
        --disable-reportdesign\
        --disable-systray\
        --disable-mathmldtd\
        --enable-binfilter\
        --enable-cairo\
        --enable-crashdump=yes\
        --enable-cups\
        --enable-dbus\
        --enable-evolution2\
        --enable-gio\
        --enable-gtk\
	--enable-kde4 \
        --enable-graphite\
        --enable-ldap\
        --enable-lockdown\
        --enable-mediawiki\
        --enable-minimizer\
        --enable-odk\
        --enable-opengl\
        --enable-pdfimport\
        --enable-presenter-console\
        --enable-report-builder\
        --enable-vba\
        --enable-verbose\
        --enable-wiki-publisher\
        --with-package-format=native\
        --without-fonts\
        --without-afms\
        --without-gpc\
        --without-nas\
        --without-ppds\
        --without-system-agg\
        --with-system-cppunit\
        --with-system-redland\
        --without-system-saxon\
        --with-openldap\
        --with-system-stdlibs\
        --with-system-libs\
        --with-system-sane-header\
        --with-system-mozilla=libxul\
        --with-system-mythes\
        --with-system-unixodbc-headers\
        --with-system-xrender-headers\
        --with-system-headers\
        --with-alloc=system\
        --with-jdk-home=${JAVA_HOME}\
        --with-lucene-core-jar=/usr/share/java/lucene-core.jar\
        --with-lucene-analyzers-jar=/usr/share/java/lucene-analyzers.jar\
        --with-use-shell=bash\
         $EXTRAOPTS 

        # Setup environment for build
        
	if [ "$CARCH" = "x86_64" ]; then
          source LinuxX86-64Env.Set.sh
         else source LinuxX86Env.Set.sh
        fi
        # Build dmake utility
        ./bootstrap 

        cd instsetoo_native
        build.pl -P${SMP} ${MAXMODULESFLAG} ${MAXPROCESSESFLAG} --dlv_switch -link --all 

	cd $SRC/$OOdir

        # install binaries
        if [ "$CARCH" = "x86_64" ]; then
                cp -R instsetoo_native/unxlngx6.pro/OpenOffice/native/install/en-US/linux-2.6-x86_64/buildroot/* $PKG/
         else   cp -R instsetoo_native/unxlngi6.pro/OpenOffice/native/install/en-US/linux-2.6-intel/buildroot/* $PKG/
        fi

        # move all to /usr/lib
        mkdir -p $PKG/usr/lib
        mv $PKG/opt/* $PKG/usr/lib/
        rmdir $PKG/opt
        
        ## Step 1 
	mkdir -p $PKG/usr/lib/openoffice.org
        cd $PKG/usr/lib/openoffice.org 
        mv ure/ basis3.2/ 
        cd basis3.2 
        rm ure-link && mv ure ure-link 
        ## Step 2
        cd $PKG/usr/lib/ 
        mv openoffice.org/basis3.2/ openoffice.org3/ 
        cd openoffice.org3/ 
        rm basis-link && mv basis3.2 basis-link 

        ## Step 3        
        cd $PKG/usr/lib/ 
        rmdir $PKG/usr/lib/openoffice.org 
        mv openoffice.org3 openoffice 

        # install all built dictionaries from source tree
        pushd $SRC/$OOdir/dictionaries/unxlng?6.pro/bin
        for i in `ls -1 dict-??.oxt`; do
          install -D -m644 $i $PKG/usr/lib/openoffice/share/extension/install/$i 
        done
        popd
        
        # install extensions
       pushd $SRC/$OOdir/solver/320/unxlng?6.pro/bin
         install -D -m644 report-builder.oxt $PKG/usr/lib/openoffice/share/extension/install/report-builder.oxt 
         install -D -m644 swext/wiki-publisher.oxt $PKG/usr/lib/openoffice/share/extension/install/wiki-publisher.oxt 
         install -D -m644 minimizer/presentation-minimizer.oxt $PKG/usr/lib/openoffice/share/extension/install/presentation-minimizer.oxt 
         install -D -m644 presenter/presenter-screen.oxt $PKG/usr/lib/openoffice/share/extension/install/presenter-screen.oxt 
         install -D -m644 pdfimport/pdfimport.oxt $PKG/usr/lib/openoffice/share/extension/install/pdfimport.oxt 
       popd
        
        # prepare filesystem entries
        mkdir -p $PKG/usr/{bin,share/applications}
        mkdir -p $PKG/usr/share/icons/{hicolor,locolor}

        # install shortcuts
        mv $PKG/usr/lib/openoffice/share/xdg/*.desktop  $PKG/usr/share/applications
        # add startcenter desktop file
        install -D -m644 $SRC/startcenter.desktop $PKG/usr/share/applications/startcenter.desktop 

        cd $PKG/usr/share/applications
        sed -i -e 's|Exec=openoffice.org3|Exec=/usr/bin/soffice|g' *.desktop 
        sed -i -e 's|Exec=/usr/bin/soffice-printeradmin|Exec=/usr/bin/spadmin|g' printeradmin.desktop 
        # fix exec commands in shortcuts for Xfce menu
        sed -i -e 's|base %U|base|g' base.desktop 
        sed -i -e 's|calc %U|calc|g' calc.desktop 
        sed -i -e 's|draw %U|draw|g' draw.desktop 
        sed -i -e 's|impress %U|impress|g' impress.desktop 
        sed -i -e 's|math %U|math|g' math.desktop 
        sed -i -e 's|writer %U|writer|g' writer.desktop 
        # remove quickstarter, we disabled it above
        rm -rf $PKG/usr/share/applications/qstart.desktop
        # fix icons in desktop files
        sed -i -e 's|Icon=openofficeorg3-|Icon=|g' *.desktop

        # install icons
        cd $SRC/$OOdir/sysui/desktop/icons
        cp -a -v hicolor/*x* $PKG/usr/share/icons/hicolor
        cp -a -v locolor/*x* $PKG/usr/share/icons/locolor

        # just in case icon calc is used by calculator :)
        find $PKG/usr/share/icons -type d -name apps -exec mv {}/calc.png  {}/ooocalc.png \;
        sed -i -e 's|Icon=calc|Icon=ooocalc|g' $PKG/usr/share/applications/calc.desktop # already done above

        # fix ownership and permissions
        chown root.root -R $PKG/
        chmod +rX -R $PKG/usr

        # set desktop variable to force gtk/gnome vcl usage
        install -m755 -d $PKG/etc/profile.d
        install -m755 $SRC/openoffice.profile $PKG/etc/profile.d/openoffice.sh 

        # make symlinks
        cd $PKG/usr/bin
        ln -s /usr/lib/openoffice/program/soffice soffice
        ln -s /usr/lib/openoffice/program/spadmin spadmin

        # link the mozilla-plugin
        mkdir -p $PKG/usr/lib/mozilla/plugins/
        cd $PKG/usr/lib/mozilla/plugins/
        ln -v -s /usr/lib/openoffice/program/libnpsoplugin.so .
	
	# Installation Interface fr
	cp -a $SRC/fr/opt/openoffice.org/basis3.2/* $PKG/usr/lib/openoffice/basis-link/
}