DownloadOOo4KidsSources
From Wiki.ooo4kids.org
Download OOo4Kids sources
Contents |
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.
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.
- 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:
# 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
- 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.
- Checking the list of the defined properties on a SVN element (folder or file)
svn pl path/to/the/element
- Getting the value of the svn:ignore property on an element
svn pg svn:ignore path/to/the/element
- Setting the value of the svn:ignore property on an 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