#!/bin/bash # # OpenOffice.org Build script for GNU/Linux on x86 and PPC, Solaris, # FreeBSD, MacOS X and Microsoft Windows 2003 Server # # Supported versions: OOO680_m3 and SRC680_m133 # # Czech Native-Lang team (http://cs.openoffice.org/) # # # (c) Pavel Janík , 2002 - 2005 # (c) Dan Ohnesorg , 2002 # (c) Josef Cacek , 2002 - 2004 # (c) Rudolf Cejka , 2004 # (c) Petr Vaníček , 2004 (Linux/PPC support) # # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # Echo commands to be executed set -x date # Additional functions are stored in separate file . build.functions # Set EXTRACT_GSI to yes to get all GSI extracted EXTRACT_GSI="no" # Set EXTRACT_PO to yes to convert all extracted GSI to PO files EXTRACT_PO="no" # Set EXTRACT_README to yes to get all README.html files generated EXTRACT_README="no" # Set BUILD_DEBUG_PACKAGES to yes to get debugging packages BUILD_DEBUG_PACKAGES="no" # Set DEVEL to yes to build developers' version DEVEL="no" # Set OOO_DEBUG to yes to build OOo with debugging OOO_DEBUG="no" # # Describe the build system # [ `uname -s` = "Linux" ] && export OOO_BUILD_SYSTEM=Linux [ `uname -s` = "Linux" -a "`uname -m`" = "x86_64" ] && export OOO_BUILD_SYSTEM=Linux64 [ `uname -s` = "Linux" -a "`uname -m`" = "ppc" ] && export OOO_BUILD_SYSTEM=LinuxPPC [ `uname -s` = "FreeBSD" ] && export OOO_BUILD_SYSTEM=FreeBSD [ `uname -s` = "SunOS" ] && export OOO_BUILD_SYSTEM=Solaris [ `uname -s` = "Darwin" ] && export OOO_BUILD_SYSTEM=MacOSX [ `uname -s | grep CYGWIN` ] && export OOO_BUILD_SYSTEM=Windows # On AMD64, always build development branch [ ${OOO_BUILD_SYSTEM} = "Linux64" ] && DEVEL="yes" if [ $DEVEL = "yes" ] then VERSION=SRC680_m133 BUILD_IDENTIFICATION="Build-0" BUILD_NUMBER=680 SUPPORTEDLANGUAGES="af bg bn br cs cy da de en-GB en-US et fi fr ga hr hu it km lt lv mk nb ne nl nn ns sk sl sr-CS sh-YU sv tn xh zu" # Build-0 is for experimental purposes only... [ "x${BUILD_IDENTIFICATION}" = "xBuild-0" ] && SUPPORTEDLANGUAGES="en-US" # Only selected languages for MacOS X [ ${OOO_BUILD_SYSTEM} = "MacOSX" ] && SUPPORTEDLANGUAGES="en-US cs et" else VERSION=OOO680_m3 BUILD_IDENTIFICATION="Build-1" BUILD_NUMBER=680 SUPPORTEDLANGUAGES="af bg bn br cs cy da de en-GB en-US et fi fr ga hr hu it km lt lv mk nb ne nl nn ns sk sl sr-CS sh-YU sv tn xh zu" # Build-0 is for experimental purposes only... [ "x${BUILD_IDENTIFICATION}" = "xBuild-0" ] && SUPPORTEDLANGUAGES="en-US cs" fi if [ ${OOO_BUILD_SYSTEM} = "Linux64" ] then BUILD_IDENTIFICATION="Build-4" SUPPORTEDLANGUAGES="en-US" fi BUILD_ID="${BUILD_IDENTIFICATION} (`LANG=C date`)" CCACHEVERSION=2.4 DPKGVERSION=1.10.27 ANTVERSION=1.6.2 if [ ${DEVEL} = "no" ] then TRANSLATEVERSION=0.8rc2test2 else TRANSLATEVERSION=0.8rc3.20051010 fi export BASE_DIRECTORY=${PWD} export PATCHES=${BASE_DIRECTORY}/Patches export FILES=${BASE_DIRECTORY}/Files export SOURCES=${BASE_DIRECTORY}/Sources export BUILD=${BASE_DIRECTORY}/BuildDir export BUILD_OUTPUT_DIRECTORY=${BUILD}/${VERSION}/${BUILD_IDENTIFICATION} export PATH=${BUILD}/bin:${PATH} # # Add correct paths for GCC # # GCC in the standard path/location if [ ${OOO_BUILD_SYSTEM} = "LinuxPPC" -o ${OOO_BUILD_SYSTEM} = "MacOSX" ] then export OOO_GCC_PATH="/usr" export PATH=${OOO_GCC_PATH}/bin/:${PATH} export LD_LIBRARY_PATH=${OOO_GCC_PATH}/lib:${LD_LIBRARY_PATH} fi if [ ${OOO_BUILD_SYSTEM} = "Linux64" ] then export OOO_GCC_PATH="/tmp/GCC341/" export PATH=${OOO_GCC_PATH}/bin/:${PATH} export LD_LIBRARY_PATH=${OOO_GCC_PATH}/lib64:${LD_LIBRARY_PATH} fi if [ ${OOO_BUILD_SYSTEM} = "Linux" ] then # Use GCC 3.4.1 export OOO_GCC_PATH="/disk2/OpenOffice.org/GCC341" # ... or default system gcc [ ! -d ${OOO_GCC_PATH} ] && OOO_GCC_PATH=/usr export PATH=${OOO_GCC_PATH}/bin/:${PATH} export LD_LIBRARY_PATH=${OOO_GCC_PATH}/lib:${LD_LIBRARY_PATH} GTKPREFIX=/disk2/OpenOffice.org/GTK # Add new pkg_config and library path export PKG_CONFIG_PATH=${GTKPREFIX}/lib/pkgconfig export LD_LIBRARY_PATH=${GTKPREFIX}/lib/:${LD_LIBRARY_PATH} fi if [ ${OOO_BUILD_SYSTEM} = "FreeBSD" ] then export OOO_GCC_PATH=~/GCC341 export PATH=${OOO_GCC_PATH}/bin/:${PATH} export LD_LIBRARY_PATH=${OOO_GCC_PATH}/lib:${LD_LIBRARY_PATH} fi if [ ${OOO_BUILD_SYSTEM} = "Windows" ] then # Use .NET 2003 compiler and to the right version of ConvertDSW and .NET Tools, NSIS export PATH="/cygdrive/c/PROGRA~1/CONVER~2:/cygdrive/c/PROGRA~1/MICROS~1.NET/Common7/Tools/Bin:/cygdrive/c/PROGRA~1/MICROS~1.NET/Common7/IDE:/cygdrive/c/PROGRA~1/MICROS~1.NET/Vc7/bin:/cygdrive/c/PROGRA~1/NSIS/:${PATH}" export DOTNET_PATH="/cygdrive/c/Program Files/Microsoft Visual Studio .NET 2003/SDK/v1.1" fi # # GNU tar, GNU patch and GNU cp # export TAR=`which tar` export PATCH=`which patch` export CP=`which cp` # Location of GNU utilities on Solaris if [ ${OOO_BUILD_SYSTEM} = "Solaris" ] then export TAR=/usr/local/bin/tar export PATCH=/usr/local/bin/patch # GNU patch can be installed as gpatch [ ! -x ${PATCH} ] && export PATCH=/usr/bin/gpatch export CP=/usr/local/bin/cp fi if [ ${OOO_BUILD_SYSTEM} = "FreeBSD" ] then export PATCH=/usr/local/bin/gpatch export CP=/usr/local/bin/gcp fi if [ ${OOO_BUILD_SYSTEM} = "MacOSX" ] then export CP=/sw/bin/cp fi # # Architecture specific settings # case ${OOO_BUILD_SYSTEM} in Linux) OOOUTPATH=unxlngi6 OOARCHENVIRONMENT=LinuxIntel JDKPATH=/usr/lib/SunJava2 ;; Linux64) OOOUTPATH=unxlngx6 OOARCHENVIRONMENT=LinuxAMD JDKPATH=/opt/java ;; LinuxPPC) OOOUTPATH=unxlngppc OOARCHENVIRONMENT=LinuxPPC JDKPATH=/opt/j2sdk1.3.1 ;; FreeBSD) OOOUTPATH=unxfbsd OOARCHENVIRONMENT=FreeBSD JDKPATH=/usr/local/jdk1.4.2 ;; Solaris) OOOUTPATH=unxsols4 OOARCHENVIRONMENT=SolarisSparc JDKPATH=/usr/java ;; Windows) OOOUTPATH=wntmsci10 OOARCHENVIRONMENT=Win32Intel JDKPATH=/cygdrive/c/j2sdk1.4.2_04 ;; MacOSX) OOOUTPATH=unxmacxp OOARCHENVIRONMENT=Macosx JDKPATH=/usr ;; *) echo "Operating system/CPU not supported yet. Please report this to Pavel Janík." exit ;; esac # # Prepare the build tree # rm -rf ${BUILD} mkdir -p ${BUILD} mkdir -p ${BUILD_OUTPUT_DIRECTORY} cd ${BUILD} # Prepare ccache [ ${OOO_BUILD_SYSTEM} != "Windows" ] && PrepareCCache # Prepare dpkg for Debian packages [ ${OOO_BUILD_SYSTEM} = "Linux" -o ${OOO_BUILD_SYSTEM} = "Linux64" ] && PrepareDpkg # Prepare translate tools [ ${OOO_BUILD_SYSTEM} != "Windows" ] && PrepareTranslate # Prepare Ant PrepareAnt ${TAR} xfz ${SOURCES}/OOo_${VERSION}_source.tar.gz cd ooo_${VERSION}_src # Additional files for different operating systems # FIXME: Issue #i27627#: Windows directory not needed now for devel tree? # Issue #iFIXME#: MacOS X need Windows system running! [ -d ${SOURCES}/${OOO_BUILD_SYSTEM} ] && cp -v -f -R ${SOURCES}/${OOO_BUILD_SYSTEM}/* . # Unpack external source files - GPC UnpackGPC # Copy Mozilla source to the final destination cp ${SOURCES}/mozilla-source-1.7.5.tar.gz moz/download ########################################################################### # # # Patches and fixes # # # ########################################################################### # # Linux/AMD64 specific fixes for development version # if [ ${OOO_BUILD_SYSTEM} = "Linux64" ] then # FIXME: workaround for qadevOOo build failure export ANT_OPTS="-Xmx512m" # Commented region # # Issue #i50482#: 64bit: crash while initializing fontconfig # # Fixed in gslpatches2 # ApplyCWSPatch psprint CWS-gslpatches2-psprint.diff # # Issue #i50483#: 64bit: Wrong getting of work area rectangle # # Fixed in gslpatches2 # ApplyCWSPatch vcl CWS-gslpatches2-vcl.diff # # Issue #i50485#: 64bit: Suspicious NULL pointer check in basegfx # # Fixed in canvas02 # ApplyCWSPatch basegfx i50485-basegfx-canvas02.diff # # Issue #i50696#: berkeleydb: build failed on AMD64 # # Fixed in pj30/SRC680_m116 # ApplyPatch i50696-berkeleydb.diff # # FIXME: report, http://www.go-oo.org/patches/64bit/buildfix-64bit-fpicker.diff # ApplyPatch iFIXME-fpicker.diff # # FIXME: report, http://www.go-oo.org/patches/64bit/buildfix-64bit-cppcanvas.diff # ApplyPatch iFIXME-cppcanvas.diff # # FIXME: report, http://www.go-oo.org/patches/64bit/buildfix-64bit-basic.diff # ApplyPatch iFIXME-basic.diff # # FIXME: http://www.go-oo.org/patches/64bit/buildfix-64bit-setup_native.diff # ApplyPatch iFIXME-setup_native.diff # # FIXME: http://www.go-oo.org/patches/64bit/buildfix-64bit-dbaccess.diff # ApplyPatch iFIXME-dbaccess.diff # # FIXME: http://www.go-oo.org/patches/64bit/buildfix-64bit-svx.diff # ApplyPatch iFIXME-svx.diff # # FIXME: http://www.go-oo.org/patches/64bit/buildfix-64bit-forms.diff # ApplyPatch iFIXME-forms.diff # # Issue #i31057#: 64bit: solenv - optimization off # ApplyPatch 64bit-i31057-solenv.diff # # Fix bridges: http://cvs.gnome.org/viewcvs/*checkout*/ooo-build/patches/64bit/fix-64bit-bridges.diff # ApplyPatch kendy-bridges.diff # # Issue #i50733#: Python registration failed (AMD64) # # TEMP: not proper solution # ApplyPatch i50733-scp2-no-python.diff # # Issue #i50781#: 64bit: pointer vs. ULONG (Focus) # ApplyPatch iFIXME-vcl-Focus.diff # # Issue #i50781#: 64bit: pointer vs. ULONG (Focus) # ApplyPatch iFIXME-svtools-Focus.diff # # FIXME: report # ApplyPatch iFIXME-Blackdown-Java-server.diff # # FIXME: http://www.go-oo.org/patches/64bit/fix-64bit-tools-svbt.diff # ApplyPatch fix-64bit-tools-svbt.diff -p0 # # Issue #i43598#: Make helpcontent2 work with images (still Read-Error though) # ApplyPatch i43598-svx-make-help-images-working.diff fi # Issue #i42516#: Use my name as OOO_VENDOR. ApplyPatch OOO_VENDOR.diff # # Generic fixes # # Do not build download files for MacOS X, only .dmg if [ $DEVEL = "no" -a ${OOO_BUILD_SYSTEM} = "MacOSX" ] then ApplyPatch do-not-build-download-files-MacOSX.diff fi # Issue #i55062#: ICU patch, cws locales201 [ $DEVEL = "no" ] && ApplyPatch i55062-icu.diff # Issue #i55502#: Use - instead of / for AL.EXE arguments # Ause will fix it on master for m134... [ $DEVEL = "yes" ] && ApplyPatch i55502-AL.EXE.diff if [ $DEVEL = "no" ] then # Issue #i54240#: Add ga (Irish) to setup_native's source/win32/msi-encodinglist.txt ApplyPatch i54240-add-Irish.diff # Issue #i48948#: Add Breton to postset.mk and setup_native.... # Issue #i54872#: Latvian, Macedonian ApplyPatch i48948-add-Breton-postset.diff # Issue #i55257#: Can't see macedonian characters in the installer wizard # Issue #i55449#: Welsh installer does not work on Windows < XPsp2 # Issue #i55837#: Irish l10n installation does not complete ApplyPatch i55257-i55449-i55837-installer.diff else ApplyCWS pj35 fi ApplyPatch i48948-add-Breton-MSI.diff # Issue #i50957#: Add Slovak to Letter Wizard [ ${DEVEL} = "no" ] && ApplyPatch i50957-Slovak-LetterWizard.diff # Issue #i47647#: Khmer font fallback # target 2.0.1, cws vcl39 [ ${DEVEL} = "no" ] && ApplyPatch i47647-Khmer-font-fallback.diff # Issue #i52786#: Diacritics corrupted in Word95 .DOC # Fixed in cws javapatch ApplyPatch i52786-word95-fixes.diff # Issue #i35873#: Turn kerning on by default for 2.0 ApplyPatch i35873-kerning-on.diff # Issue #i49433#: Base's Form wizard has a non localizable strings # Target 2.0.1, extracted from dbwizardpp1 ApplyCWSPatch officecfg i49433-missing-translation.diff # Issue #iFIXME#: Default fonts for sl and sk ApplyPatch officecfg-sl_sk_default_fonts.diff # Issue #i42014#: Add Czech calendar to awt (for agenda wizard) # Eike is working on correct fix in cws internatiodel ApplyPatch i42014-Czech-awt-calendar.diff # Add Danish dictionary [ ${DEVEL} = "no" ] && ApplyPatch add-danish-dictionary.diff if [ ${DEVEL} = "yes" ] then # Remaining bits from ooo64bit02 ApplyCWS ooo64bit02 fi # # Changes for supported languages # # Do not substitute fonts while printing # FIXME: report! ApplyPatch psprint-do-not-substitute.diff # # Preparing the compilation process # # We will use ccache on GNU/Linux (both x86 and x86_64), FreeBSD and MacOS X if [ ${OOO_BUILD_SYSTEM} = "Linux" -o ${OOO_BUILD_SYSTEM} = "Linux64" -o ${OOO_BUILD_SYSTEM} = "LinuxPPC" -o ${OOO_BUILD_SYSTEM} = "MacOSX" -o ${OOO_BUILD_SYSTEM} = "FreeBSD" ] then export CC="${BUILD}/bin/ccache ${OOO_GCC_PATH}/bin/gcc" export CXX="${BUILD}/bin/ccache ${OOO_GCC_PATH}/bin/g++" fi if [ ${OOO_BUILD_SYSTEM} = "Solaris" ] then # Default is to use gcc! Why? FIXME! export CC=cc export CXX=CC # FIXME: temporary! # Use GNU gcc # export OOO_GCC_PATH=/usr/local # export CC="ccache ${OOO_GCC_PATH}/bin/gcc" # export CXX="ccache ${OOO_GCC_PATH}/bin/g++" # OOARCHENVIRONMENT=SolarisSparcGcc fi # Configure OpenOffice.org ( cd config_office COMMON_CONFIG_FLAGS="--with-jdk-home=${JDKPATH} --with-dict=ALL --with-lang=\"${SUPPORTEDLANGUAGES}\" --with-gnu-patch=${PATCH} --with-gnu-cp=${CP} --enable-crashdump --with-ant-home=${BUILD}/apache-ant-${ANTVERSION} --with-mozilla-version=1.7.5 --enable-build-mozab --with-build-version=\"${BUILD_ID}\"" case ${OOO_BUILD_SYSTEM} in Linux) eval ./configure ${COMMON_CONFIG_FLAGS} --enable-gtk --enable-kde --with-package-format=\"rpm deb\" ;; Linux64) eval ./configure ${COMMON_CONFIG_FLAGS} --disable-binfilter --disable-cups --disable-gnome-vfs --without-java ;; LinuxPPC) eval ./configure ${COMMON_CONFIG_FLAGS} --enable-mozilla ;; FreeBSD) # Issue #i46979#: FreeBSD: portaudio eval ./configure ${COMMON_CONFIG_FLAGS} --disable-gnome-vfs --disable-pasf ;; Solaris) eval ./configure ${COMMON_CONFIG_FLAGS} ;; MacOSX) # FIXME: #i27584#: MacOS X and X includes detection eval ./configure ${COMMON_CONFIG_FLAGS} --enable-gtk --disable-crashdump --with-x --x-includes=/usr/X11R6/include/ --with-gnu-cp=/sw/bin/cp --disable-gnome-vfs ;; Windows) eval ./configure ${COMMON_CONFIG_FLAGS} --with-mozilla-version=1.7.5 --enable-build-mozab \ --with-frame-home=\"${DOTNET_PATH}\" --disable-directx ;; esac ) || { echo "Configure failed. Fix it!" exit } # # Localized extras # for ISOCODE in $SUPPORTEDLANGUAGES do [ -f ${FILES}/${VERSION}/extras_${ISOCODE}.tar.gz ] && ${TAR} xvfz ${FILES}/${VERSION}/extras_${ISOCODE}.tar.gz done for ISOCODE in $SUPPORTEDLANGUAGES do # Unpack all auxiliary files [ -f ${FILES}/${VERSION}/auxiliary_${ISOCODE}.tar.gz ] && ${TAR} xvfz ${FILES}/${VERSION}/auxiliary_${ISOCODE}.tar.gz # Unpack localized help images [ -f ${FILES}/${VERSION}/help_images_${ISOCODE}.tar.gz ] && ${TAR} xvfz ${FILES}/${VERSION}/help_images_${ISOCODE}.tar.gz # Unpack images for toolbars (B, U, I etc.) [ -f ${FILES}/${VERSION}/toolbar_images_${ISOCODE}.tar.gz ] && ${TAR} xvfz ${FILES}/${VERSION}/toolbar_images_${ISOCODE}.tar.gz done # The number of processes running in parallel [ ${OOO_BUILD_SYSTEM} = "Linux" -a $DEVEL = "yes" ] && { export MAXPROCESS=1 if [ ${MAXPROCESS} -gt 1 ] then # MAXPROCESS=1 fixes # for i in moz/makefile.mk # do # awk '{ if ($0 ~ "^PRJNAME=") print "MAXPROCESS=1"; print ; }' <$i >$i.MAXPROCESS # mv -f $i.MAXPROCESS $i # done echo "No patches needed" else # Disable dependencies, makes the build much faster. # VERIFY: parallel builds with dependencies export nodep=true fi } [ -f bootstrap ] || { echo "bootstrap not found - fix this" exit } [ "x${OOO_DEBUG}" = "xyes" ] && export DBG_LEVEL=10 ./bootstrap || { echo "Bootstrap failed" exit } if [ ${OOO_BUILD_SYSTEM} = "Windows" ] then . winenv.set.sh else . ${OOARCHENVIRONMENT}Env.Set.sh fi # Issue #i51139#: workaround export TMP=/tmp # Build transex3 project first PrepareLocalizeTool # Extract all README.html files [ ${EXTRACT_README} = "yes" ] && ExtractREADME # Extract all GSI files [ ${EXTRACT_GSI} = "yes" -o ${EXTRACT_PO} = "yes" ] && ExtractGSI # Convert GSI files to PO files [ ${EXTRACT_PO} = "yes" ] && ExtractPO # Convert GSI files to PO files [ ${OOO_BUILD_SYSTEM} = "Linux" ] && ExtractPOT # # Add/update translations # # Merging GSI/SDF files for ISOCODE in $SUPPORTEDLANGUAGES do cp ${FILES}/${VERSION}/GSI_${ISOCODE}.sdf.{bz2,gz} ${BUILD} 2>/dev/null [ -f ${BUILD}/GSI_${ISOCODE}.sdf.bz2 ] && bunzip2 -f ${BUILD}/GSI_${ISOCODE}.sdf.bz2 [ -f ${BUILD}/GSI_${ISOCODE}.sdf.gz ] && gunzip ${BUILD}/GSI_${ISOCODE}.sdf.gz [ -f ${BUILD}/GSI_${ISOCODE}.sdf ] && { # Remove all existing translations from localize.sdf files for localize in `find . -name localize.sdf` do grep -v " $ISOCODE " $localize >$localize.tmp mv -f $localize.tmp $localize done MergeDevelGSI ${ISOCODE} rm ${BUILD}/GSI_${ISOCODE}.sdf } done # FIXME/TEMP: add missing auxiliary/isocode directories for now for i in ${SUPPORTEDLANGUAGES} do [ ! -d helpcontent2/source/auxiliary/$i ] && cp -r helpcontent2/source/auxiliary/en-US helpcontent2/source/auxiliary/$i done dmake || { date echo "Dmake failed, fix the bug above." read } # # Openoffice.org SDK # [ ${OOO_BUILD_SYSTEM} != "Linux64" ] && CreateSDK # # Installation sets # CreateNativeInstallers CreateNativeLangPacks CreateURE [ ${BUILD_DEBUG_PACKAGES} != "yes" ] && exit # Prepare debug GSI files [ ${OOO_BUILD_SYSTEM} = "Linux" ] && PrepareDebugGSI # # Debugging installation sets # for ISOCODE in $SUPPORTEDLANGUAGES do [ -f ${FILES}/${VERSION}/GSI_${ISOCODE}.sdf ] && MergeDevelGSI ${ISOCODE} debug done dmake # Create debugging language packs CreateNativeLangPacks debug