This is the first of the serie of posts to introduce OOo
development. It will be all about getting ready to hack, which means
getting the sources, installing the dependencies and building the
sources. The commands here are provided for OpenSuse 11.2: you will
certainly need to adapt them to your distribution.

Getting the sources

The sources are organized differently in upstream OpenOffice.org (the
official version) and Go-oo. Upstream sources are stored in a mercurial
repository and the development branches are called CWS (Child
WorkSpace). The code integration process is pretty different from Go-oo
where the sources are mainly composed of patches to apply on the
upstream sources. Those patches are stored in a git repository. For the
rest of the serie, I'll consider that the upstream sources are located
on \~/upstream and the Go-oo sources on \~/go-oo on your machine.

The OpenOffice.org way

First install Mercurial:

sudo zypper in mercurial

Extract a clean copy of the sources in a folder that will never be
touched. In fact, you will see that the created directory only contains
a hidden folder and no source. I usually do this way to spare some
bandwidth because downloading all the sources is quite a long operation.

This operation takes a really long time, you can go out and do some
sport (or whatever you like). After it is completed, you can see a
local_DEV300 folder containing nothing but a hidden folder. This
contains a copy of the sources hosted on the OpenOffice.org servers. The
interest here is that you won't need to get everything when you will
need to update that copy with the latest sources... and then you'll need
to do less sport the next times!

In order to extract sources to build and hack, you will need to
duplicate the downloaded sources in another folder. It will be
\~/upstream/myhack in that tutorial. You will then be able to safely
hack in that folder and keep the previous one clean for the sources
updates.

hg clone local_DEV300 myhack

You are now ready to move to the build step.

The Go-oo way

Note that the master branch is unstable and may not build. You should
ask the developers on IRC or on the mailing-list to check if the
master is usable at that time. Otherwise, you may prefer to extract the
sources of a stable branch. See the Go-oo wiki for more informations on
how to get a particular branch. The sources are now happily sitting
in a newly created ooo-build folder: you can move to the next step!

Building

In order to build you will need a lot of packages and dependencies. This
step only needs to be done once for each machine you are building on. On
OpenSuse there is a nice trick to quickly install most of the
dependencies for building OpenOffice.org or Go-oo:

Some dependencies will certainly be still missing as this install the
ones to build the OOo version shipped with OpenSuse and we will build a
new version in most of the cases. Here is a command to install the
missing dependencies (for the current versions)

sudo zypper in java-1_6_0-sun-devel junit4

As the Java JDK installation has updated some script run for each new
shell you need to open a new shell to continue.

In order to speedup the build if you have a multi-core machine or
several machines, you should carefully read Michael's blog post on
icecream. The steps after starting the daemon aren't necessary for
our cases: this needs to be adapted to OpenOffice.org build system (or
won't be needed for Go-oo). Icecream will allow you to build on
several cores / machines at the same time and then gain precious time.
If you have a default installation of OpenSuse, don't forget to change
the firewall settings by either turn it off or add the rules to allow
icecream through it.

The OpenOffice.org way

In order to configure the build you need to issue the following
commands. Of course you can add some more parameters to the configure to
spare some build time.

Copy the mozilla binaries from the page
http://tools.openoffice.org/moz_prebuild/OOo3.2/ into the
\~/upstream/myhack/moz/zipped folder. The files to copy are depending
on the architecture you are building on. Read carefully the error
message of the configure to know which files to download and restart the
configure command. Once the configuration is finished, you need to run
the following commands:

./bootstrap
. Linux*Env.Set.sh

Note that the last command has to be issued any time you need to build
some part of the OpenOffice.org sources: it sets a whole lot of
environment variables used during the build. Without having run that
command the build tool won't be found in the PATH. The first command
generally needs to be called only at the first build.

For the ones who are going to perform a parallel build using icecream,
the following commands are needed to build:

The Go-oo way

The first thing to do is to configure the build. The arguments I'm using
here are really generic: I usually don't build the KDE parts and some
others to avoid installing some more dependencies. If you didn't install
icecream in the previous step you can remove the corresponding
options. The max jobs option specifies the maximum number of parallel
jobs to run during the build.

Now that the build is configured you can download the upstream sources
needed to apply Go-oo patches. This step takes a while the first time
and much less the next times as it uses git to download the upstream
sources.

./download

Then you can actually build the sources using Gnu make. There is nothing
to worry about the parallel build: the makefiles will handle it for you
if you have used the proper options for the configure step.

make

After the build

Keep an eye on the build as this will take a lot of time and can break
if there is something wrong in the sources or with your configuration.
Now that your sources are built, you will need to learn how to hack
OpenOffice.org. In the mean time you will certainly want to play with
your freshly built toy. Here are some details about it.

Note that this installation copies all the needed files from the build
tree. If anything changed in the sources, you will need to copy the
changed files from the build to the installation.

The Go-oo way

Go-oo provides some useful tricks to install a development instance. By
running the following command you will have an OOo installed in
\~/go-oo/ooo-build/build/install and the files of this install will be
linked to the corresponding files in the build tree. Thus after a change
and rebuild of the sources, there is nothing to do to have an updated
install.

make dev-install

To run the installed OOo, you need to source the ooenv file. Here is
how to do it:

Social

Links

Browse content by

Copyright notice

Disclaimer

All opinions expressed in this site are my own personal opinions and are not endorsed by, nor do they represent the opinions of my previous, current and future employers or any of its affiliates, partners or customers.