This build process works from an SSH console on dash.eclipse.org. 

Setup:
(1) Eclipse installed: 
		<$HOME>/europa/eclipse-33
(2) Ant installed
(3) cd ~; ln -s /home/data/httpd/download.eclipse.org/ downloads
(4) Java 1.5 installed:
		<$HOME>/europa/ibm-java2-ppc-50

Occassional Setup:
(1) The process can then be "boot strapped" by executing the following script. 
(This just deletes any exising copies, and gets fresh copies of scripts 
and property files from HEAD). 

	getEuropaToolsFromCVS.sh 

A copy of this script is constained in 
org.eclipse.europa.tools\build-home\getEuropaToolsFromCVS.sh
but, that copy should be moved to <$HOME> for execution. 
	
Run:
(1) Run the david-o-matic project updater
	cd org.eclipse.europa.tools/build-home
	./runUpdateAllProjects.sh -clean 2>&1 | tee out.txt

(2) Upload the staging bits to the release site
	MOREMORE

----------------OLD INSTRUCTIONS-------------------
This build process works from an SSH console on build.eclipse.org. 

The following is required setup on the committers login $HOME directory. 

	Eclipse installed: 
	
		<$HOME>/europa/eclipse-ppc-33M3
	
	Java 1.5 installed
	
		<$HOME>/ibm-java2-ppc-50
	
	Java 1.4 installed
	
		<$HOME>/IBMJava2-ppc-142
	
	OSGI Indexer (optional - need to be OSGI member to get a copy)

		<$HOME>/osgiIndexer/bindex.jar
	
	
The process can then be "boot strapped" by executing the following script. 
(This just deletes any exising copies, and gets fresh copies of scripts 
and property files from HEAD). 

getEuropaToolsFromCVS.sh 

A copy of this script is constained in 
org.eclipse.europa.tools\build-home\getEuropaToolsFromCVS.sh
but, that copy should be moved to <$HOME> for execution. 
That script itself constains some instructions on what to do next, the main 
part of which 

then 
cd org.eclipse.europa.tools/build-home/

and finally -- the part that actually does the work -- something similar to 
screen -R ./runUpdateAllProjects.sh -clean | tee out.txt

NOTE: if you are doing a "local, developers test" of the runUpdateAllProjects 
sript, you should grep through all scripts, and change the 'staging' 
directory to your own test directory. 

When done (about 20 minutes) be sure to check the console output 
for 'error', 'exception', and 'failed'. 

Final steps to "releases"

Two more scripts need to be executed to move the 'staging' files 
to the 'releases' directory. 

copyToRelease-plugins.sh
copyToRelease-SiteFiles.sh 

Finally, (optionally) change to the releases directory and execute 
runIndexer.sh to create the OSGI index. 





