Jump to: navigation, search

Difference between revisions of "Making Builds Reproducible"

 
(Making Builds Reproducible)
Line 1: Line 1:
 
===Making Builds Reproducible===
 
===Making Builds Reproducible===
 +
 +
==Background==
 +
 +
In order to build non-SDK projects offline -- a requirement of our buildsystem for security purposes -- we must do the following:
 +
 +
# check out releng plugin
 +
# add a fetch target
  
 
In an ideal world, all it would take to build a project on top of the SDK would be something like this:
 
In an ideal world, all it would take to build a project on top of the SDK would be something like this:
  
0. Assume SDK is available
+
# assume SDK is available
 
# check out project releng plugin
 
# check out project releng plugin
 +
# ideally there would be no custom build.xml which is essentially a shell for PDE build
 +
## (if things need to be done that are special, can they not
 
# java -cp $SDK/startup.jar org.eclipse.core.launcher.Main -application org.eclipse.ant.core.antRunner -Dcomponent=<whatever> -DbaseLocation=$SDK -DskipFetch=true
 
# java -cp $SDK/startup.jar org.eclipse.core.launcher.Main -application org.eclipse.ant.core.antRunner -Dcomponent=<whatever> -DbaseLocation=$SDK -DskipFetch=true
# do whatever with the resulting zip(s)
+
 
 +
In practice, we run into common gotchas such as:
 +
 
 +
* customTargets.xml attempts to fetch dependencies with no flags to override this behaviour
 +
** ex. getBaseBuilder is in postFetch unconditionally - I have to patch this out
 +
* inconsistent flags to avoid fetching
 +
** ie. we would like there to be

Revision as of 12:44, 13 September 2006

Making Builds Reproducible

Background

In order to build non-SDK projects offline -- a requirement of our buildsystem for security purposes -- we must do the following:

  1. check out releng plugin
  2. add a fetch target

In an ideal world, all it would take to build a project on top of the SDK would be something like this:

  1. assume SDK is available
  2. check out project releng plugin
  3. ideally there would be no custom build.xml which is essentially a shell for PDE build
    1. (if things need to be done that are special, can they not
  4. java -cp $SDK/startup.jar org.eclipse.core.launcher.Main -application org.eclipse.ant.core.antRunner -Dcomponent=<whatever> -DbaseLocation=$SDK -DskipFetch=true

In practice, we run into common gotchas such as:

  • customTargets.xml attempts to fetch dependencies with no flags to override this behaviour
    • ex. getBaseBuilder is in postFetch unconditionally - I have to patch this out
  • inconsistent flags to avoid fetching
    • ie. we would like there to be