DownloadOOo4KidsSources

Mandatory tools
Until we switch to git (early 2010), we'll use subversion, aka svn.


 * Important for OOo4Kids developers : please use svn 1.5.4 or superior ; download...
 * ssh for committers, preferably OpenSSH 2.4 or later

Instructions for Anonymous developers
You don't have write access, and you don't care :)

Subversion
We suppose subversion is installed


 * Linux: install it the way of your distribution
 * Mac OS X ( 10.4 and superior) : subversion is normaly shipped with Xcode. In the opposite case, install it using Darwin port or Fink.
 * Windows : install subversion using Cygwin, and the right repository.

Adullact (main) repository
Open a Terminal, change the directory for your prefered one, and verify you have more than 12 GB available for the full build.

Then, do : svn co -r1183 svn://svn.adullact.net/svnroot/ooo4kids1/trunk my_OOo4Kids

Then, if your connexion is fast, the source should be there in ~20 minutes max, and the $SRC_ROOT, means the subdir containing the whole tree will be OOo4Kids1.1

Note: the supported locales are : ar, de, es, fi, fr, it, nb, nl, pt, ru, sl, uk, zh-CN and zh-TW. If you choose another revision, things might not work as expected.

Go-OO (alternative) repository
=> git tool is mandatory in this section

To be completed

About ooo-build
ooo-build arose from acute frustration with the bad-old days of OOo process before the Child Workspace concept was introduced, it was also fueled by a non-performant CVS server.


 * ooo-build bin description - A description of the tools in bin/

Checking out
To check out trunk ooo-build from the fd.o git repository, run one of the following in the command line:

git clone git://anongit.freedesktop.org/git/ooo-build/ooo-build git clone ssh://[username@]git.freedesktop.org/git/ooo-build/ooo-build
 * 1) anonymous access
 * 1) if you have a freedesktop.org account

If you need to work on a branch:

git checkout -b ooo-build-3-2-1 origin/ooo-build-3-2.1

(see fd.o wiki for authoritative info)

Making a patch on a set of files
ooo-build itself is in git - but as a set of patches, not the patched OOo sources themselves. Working with patches is unfortunately not too straightforward and needs some training; but you can use git to make some of the operations easier by creating a local git tracking of the patched OOo sources, like:

make patch.apply cd build/oooABC-mXY git init ../../bin/create-gitignores.sh git add sc git add. git commit -m "initial"
 * 1) if you want to track just the 'sc' project
 * 1) or instead track everything

Now you can create a new patch like this: cd build/oooABC-mXY git checkout -b tempbranch git add sc/blah/bleh.cxx git commit git diff --no-prefix master tempbranch > ../../patches/dev300/blah.diff git checkout master
 * 1) create a branch for the development
 * 1) modify the file, eg sc/blah/bleh.cxx
 * 2) and commit it
 * 1) edit something else, commit, etc.
 * 2) create the patch
 * 1) now switch back to master
 * 1) and add the patch to ../../patches/dev300/apply (as described below)

To update an existing patch, you'll probably want to do something like this: cd build/oooABC-mXY git checkout -b tempbranch patch -p0 -R < ../../patches/dev300/blah.diff git commit -am revert patch -p0 < ../../patches/dev300/blah.diff git log git diff --no-prefix id-of-the-revert-commit > ../../patches/dev300/blah.diff git checkout master
 * 1) create a temporary branch
 * 1) unapply the patch
 * 1) commit the revert
 * 1) apply the patch again to be able to edit it
 * 1) edit it, commit the changes
 * 2) when you are happy, find the commit id of the 'revert' commit
 * 1) generate the patch
 * 1) switch back to master

To remove the git tracking : rm -rf .git

You can also think of more fancy use of git, like having a master branch for applying the patches, and other branches to track history of development you are doing, or use it to actually edit existing patches, to merge patches, etc.

Some people prefer stacked git (stg) over plain git when juggling with patches, after the initial "git init; git add .; git commit -a" do a "stg init" - and read the nice manual page.

Instructions for OOo4Kids project developers
You are developer for OOo4Kids project (or want to become one) :

More information can be found at Adullact Forge


 * first: create an account on Adullact Forge. IMPORTANT: respect Adullact policy, means 1 upper, 1 lower, 1 special char, 1 digit, more than 6 chars in your password. 95% of the problems when creating an account are due to that issue ;-) '''
 * provide patches, help, regularly, code.
 * If not done, generate a correct ssh2 key and stuff (see next item)
 * ask on the Forge, to become developer
 * wait for approbation
 * always commit using -m "a message in engmish saying clearly what you did"

Note: we should migrate for git after the 1.0 release.

ssh2 key generation
=> You can skip this step if you only need readonly access.

You must generate an ssh2 dsa key

But that's not enough : you need a ssh key AND a password (the one from the repository) for write access.

On Unix or Windows/cygwin a SSH identity (private/public key pair) is generated with:

ssh-keygen -t dsa

You'll be asked for pass phrase which protects your private key. Per default the public key is named $HOME/.ssh/id_dsa.pub.

Note that SSH keys created between September 2006 and May 2008 on Debian or Debian derived systems like Ubuntu may be insecure. Please use recent SSH tools.

If you want a dedicated identity for just OOo SVN usage, generate a specially named key pair

ssh-keygen -t dsa -f ~/.ssh/id_dsa_ooo4kids_svn

and instruct Subversion to use this identity (key pair) with the following configuration entry in $HOME/.subversion/config:

[tunnels] ssh = ssh -i /home/your_login_name/.ssh/id_dsa_ooo4kids_svn

Commits
Always' use svn commit -m "#ticket_number# your message option"  file(s)

More information about subversion use : http://wiki.services.openoffice.org/wiki/OOo_and_Subversion

SVN stuffs (for admins)
When running svn status command, the files which aren't in the SVN repository are marked with a ? at the beginning of the line. In order to ignore the build results, the svn:ignore property has to be set.

svn pl path/to/the/element
 * Checking the list of the defined properties on a SVN element (folder or file)

svn pg svn:ignore path/to/the/element
 * Getting the value of the svn:ignore property on an element

svn ps svn:ignore somevalue path/to/the/element
 * Setting the value of the svn:ignore property on an element

Here is a small script to copy all the upstream svn:ignore properties for the modules (top level directories). The script has to be run from the root of a local copy of the ooo4kids SVN repository (eg: in trunk, a branch).
 * 1) !/bin/bash

UPSTREAM_SVN="http://svn.services.openoffice.org/ooo/trunk/"

function copy_ignores { svn pg svn:ignore $UPSTREAM_SVN/$1 >/tmp/$$_ignores svn ps -F /tmp/$$_ignores svn:ignore $1 rm /tmp/$$_ignores }
 * 1) Parameter #1 is the path to the element for which to copy the svn:ignore

copy_ignores.

for module in `ls` do if [ -d $module ] then echo "Setting ignores on $module" copy_ignores $module fi done