Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 350102

Summary: Update launcher releng scripts to support moving to git
Product: [Eclipse Project] Equinox Reporter: Andrew Niefer <aniefer>
Component: LauncherAssignee: Project Inbox <equinox.launcher-inbox>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: gheorghe, pwebster, tjwatson
Version: 3.7   
Target Milestone: Juno M1   
Hardware: PC   
OS: Linux   
Whiteboard:
Bug Depends on:    
Bug Blocks: 345479    

Description Andrew Niefer CLA 2011-06-22 16:42:51 EDT
http://wiki.eclipse.org/Platform-releng/Juno_Git_Migration

The platform will be moving to git.  We shouldn't keep the launcher binaries in the git repository like we do in CVS.

The launcher compilation/releng setup needs to be modified to do something like the following:

1) Check out native sources
2) Compile binaries
3) Publish the binaries into a p2 repository
4) Normal releng build downloads binaries from the p2 repo and places them into the fragments/executable feature

Binaries can be published to a p2 repository by packaging them as root files to a feature.  This is for convenience only, these should not be considered as "real" root files to be installed into eclipse.  We should perhaps add some metadata to prevent people from installing these binary IUs.

The executable feature and launcher fragments can use custom build callbacks to get the binaries from the p2 repository and put them in the normal locations during the releng build.  This download can be accomplished via a simple wget or by using p2 tasks.
Comment 1 Andrew Niefer CLA 2011-06-22 16:51:19 EDT
Some details on (2)-(3).

Current compilation setup compiles the binaries on each platform and copies the results to a "resultsBaseFolder" which currently is a workspace on my workstation.  I then review the results and manually check into CVS those binaries which are affected by the chanes I'm compiling for.

The change is for the scripts to instead copy the binary results into a location on some build machine, probably the linux.x86 box.

The build will then get from SCM two new features
org.eclipse.equinox.executable.binaries
org.eclipse.equinox.launcher.binaries
The binary files are copied into these features as appropriate.

We then invoke PDE/Build's ant task <eclipse.gatherFeature/> to publish these features into a p2 repository which can then be scp'd to dev.eclipse.org.
Comment 2 Andrew Niefer CLA 2011-06-22 16:58:18 EDT
I have created the two new features, they are located under
/cvsroot/rt/org.eclipse.equinox/framework/releng
org.eclipse.equinox.executable.binaries
org.eclipse.equinox.launcher.binaries
Comment 3 Thomas Watson CLA 2011-06-23 08:47:43 EDT
As part of the git migration should we consider moving the launcher fragments out of org.eclipse.equinox.launcher?  I suppose a move like that would be best done after migrating to git since git handles moving folders/files around much better than CVS for preserving history.
Comment 4 Paul Webster CLA 2011-06-23 09:02:53 EDT
Just a note.  Other projects that need to create binaries and then consume them as part of their build steps (on hudson at eclipse.org) are considering maven.eclipse.org.

http://wiki.eclipse.org/Maven

PW
Comment 5 Andrew Niefer CLA 2011-07-11 11:41:05 EDT
Launchers have been moved to git.

Source is under
git://git.eclipse.org/gitroot/equinox/rt.equinox.framework.git

All the fragments have been moved from org.eclipse.equinox.launcher/[fragments|contributed]/ 
to be siblings of the launcher project.

All the binaries are stored in a git repo:
git://git.eclipse.org/gitroot/equinox/rt.equinox.binaries.git

Projects are just in the root of the repo and only contain binaries.

Each fragment and the executable feature all contain a customBuildCallbacks.xml script which will retrieve the binaries from the binary repo at build time.

The previous mentioned org.eclipse.equinox.executable.binaries and org.eclipse.equinox.launcher.binaries features were not necessary  and were not included in the move from cvs to git.