DownloadOOo4KidsSources

From Wiki.ooo4kids.org

Jump to: navigation, search


Download OOo4Kids sources

Contents


Mandatory tools

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


Instructions for Anonymous developers

You don't have write access, and you don't care :)

Subversion

We suppose subversion is installed


Download

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.

Checking out

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

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

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
# if you want to track just the 'sc' project
git add sc
# or instead track everything
git add .
git commit -m "initial"

Now you can create a new patch like this:

cd build/oooABC-mXY
# create a branch for the development
git checkout -b tempbranch
# modify the file, eg sc/blah/bleh.cxx
# and commit it
git add sc/blah/bleh.cxx
git commit
# edit something else, commit, etc.
# create the patch
git diff --no-prefix master tempbranch > ../../patches/dev300/blah.diff
# now switch back to master
git checkout master
# 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:

# create a temporary branch
cd build/oooABC-mXY
git checkout -b tempbranch
# unapply the patch
patch -p0 -R < ../../patches/dev300/blah.diff
# commit the revert
git commit -am revert
# apply the patch again to be able to edit it
patch -p0 < ../../patches/dev300/blah.diff
# edit it, commit the changes
# when you are happy, find the commit id of the 'revert' commit
git log
# generate the patch
git diff --no-prefix id-of-the-revert-commit > ../../patches/dev300/blah.diff
# switch back to master
git checkout 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

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

svn pg svn:ignore path/to/the/element

svn ps svn:ignore somevalue path/to/the/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).

#!/bin/bash

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

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

copy_ignores .

for module in `ls`
do
    if [ -d $module ]
    then
        echo "Setting ignores on $module"
        copy_ignores $module
    fi
done
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox