Jump to: navigation, search

Difference between revisions of "Orbit Source Bundles"

(The source bundle generator is now shared in CVS)
Line 1: Line 1:
Created from [https://bugs.eclipse.org/bugs/show_bug.cgi?id=184026 bug 184026].
+
Originally created from [https://bugs.eclipse.org/bugs/show_bug.cgi?id=184026 bug 184026] and then updated to describe the changes for JAR'd source bundles.
 +
 
 
===What you need to do===
 
===What you need to do===
 
If you have bundles in Orbit and you would like to have source bundles automatically generated for you, here are the things that you have to do:
 
If you have bundles in Orbit and you would like to have source bundles automatically generated for you, here are the things that you have to do:
 
   * put your bundles in the structure below
 
   * put your bundles in the structure below
 
   * add a map file entry for your source bundle
 
   * add a map file entry for your source bundle
 
We highly recommend the usage of the script attached at the bottom of this page (sourcegen.zip), since it will create the right shape and do almost all the necessary steps.
 
  
 
===Bundle structure===
 
===Bundle structure===
In order to leverage the automatic infrastructure, avoid the profusion of projects in CVS and simplify management, it is recommended that you store the source bundles in the same project than its binary counter part. This is achieved by creating a sub-folder called "source-bundle" in the project. This folder will be setup like any other bundle with a manifest.mf, build.properties, etc... The zip files containing the source should follow a strict structure (see example below) and should be named after the entries specified in the BundleClasspath of the manifest.mf.  
+
In order to leverage the automatic infrastructure, avoid the profusion of projects in CVS and simplify management, it is recommended that you store the source bundles in the same project than its binary counter part. This is achieved by creating a sub-folder called "source-bundle" in the project. This folder will be setup like any other bundle with a manifest.mf, build.properties, etc...  
  
 
<pre>
 
<pre>
 
{plugin_root}
 
{plugin_root}
 +
about_files/
 
META-INF/MANIFEST.MF
 
META-INF/MANIFEST.MF
plugin.xml
+
about.html
 +
build.properties
 
plugin.properties
 
plugin.properties
build.properties
 
 
{class_files}
 
{class_files}
 
...
 
...
 
source-bundle/
 
source-bundle/
 +
about_files/
 
META-INF/MANIFEST.MF
 
META-INF/MANIFEST.MF
plugin.xml
+
about.html
 
build.properties
 
build.properties
customCallbacks.xml
+
plugin.properties
 
...
 
...
src/{plugin_id}_{version}/src.zip
+
{source_files}
 
</pre>
 
</pre>
  
Example for junit 3.8.2
+
Example for javax.servlet 2.4
  
 
<pre>
 
<pre>
org.junit
+
javax.servlet
 +
about_files/
 
META-INF/MANIFEST.MF
 
META-INF/MANIFEST.MF
 +
about.html
 +
build.properties
 +
javax/servlet/{dot_class_files}
 
plugin.properties
 
plugin.properties
build.properties
 
junit.jar
 
 
source-bundle/
 
source-bundle/
 +
about_files/
 
META-INF/MANIFEST.MF
 
META-INF/MANIFEST.MF
plugin.xml
+
about.html
 
build.properties
 
build.properties
customCallbacks.xml
+
plugin.properties
src/org.junit_3.8.2/junitsrc.zip
+
javax/servlet/{dot_java_files}
 
</pre>
 
</pre>
 
===customCallbacks.xml===
 
Copy the customCallbacks from the sourceGen.zip available at the bottom of this page.
 
  
 
===build.properties===
 
===build.properties===
Add the following entries to the build.properties of the source bundle.
+
The build.properties file for the source bundle is pretty simple, just include all the files you want in your bundle. For instance:
 
<pre>
 
<pre>
customBuildCallbacks=customCallbacks.xml
+
bin.includes = about.html,\
customBuildCallbacks.inheritall=true             
+
              about_files/,\
 +
              plugin.properties,\
 +
              META-INF/,\
 +
              javax/
 
</pre>
 
</pre>
  
  
===Utility to generate source bundles===
 
Given an orbit bundle loaded in your workspace, the Source Bundle Generator script will generate a corresponding source bundle following the shape described above.
 
To use the utility:
 
* import the archive in your workspace
 
* import the <tt style="color:DarkGreen">Create Orbit Source Bundle.launch</tt> launch config into your External Tools... menu
 
* select the Orbit bundle project for which you want to create your source bundle
 
* execute the <tt style="color:DarkGreen">Create Orbit Source Bundle</tt> launch configuration
 
 
The script will automatically append " Source Bundle" to the bundle name in the source bundle's <tt style="color:DarkGreen">plugin.properties</tt>
 
file and attempt to update your project's <tt style="color:DarkGreen">.classpath</tt> to reference the new location of the source ZIP.
 
Also, it will attempt to account for the possibility of your original source ZIP having been named something other than
 
<tt style="color:DarkGreen">src.zip</tt>.
 
If that doesn't quite work, then just delete the <tt style="color:DarkGreen">&lt;regexpmapper&gt;</tt> element in the appropriate
 
<tt style="color:DarkGreen">&lt;copy&gt;</tt> task and fix up file names ''post hoc''.
 
 
To get the Source Bundle Generator, just check out the <tt style="color:DarkGreen">org.eclipse.orbit.releng.sourcegen</tt> project from the Orbit CVS module.
 
 
[[Category : Orbit]]
 
[[Category : Orbit]]

Revision as of 11:23, 29 February 2008

Originally created from bug 184026 and then updated to describe the changes for JAR'd source bundles.

What you need to do

If you have bundles in Orbit and you would like to have source bundles automatically generated for you, here are the things that you have to do:

 * put your bundles in the structure below
 * add a map file entry for your source bundle

Bundle structure

In order to leverage the automatic infrastructure, avoid the profusion of projects in CVS and simplify management, it is recommended that you store the source bundles in the same project than its binary counter part. This is achieved by creating a sub-folder called "source-bundle" in the project. This folder will be setup like any other bundle with a manifest.mf, build.properties, etc...

{plugin_root}
	about_files/
	META-INF/MANIFEST.MF
	about.html
	build.properties
	plugin.properties
	{class_files}
	...
	source-bundle/
		about_files/
		META-INF/MANIFEST.MF
		about.html
		build.properties
		plugin.properties
		...
		{source_files}

Example for javax.servlet 2.4

javax.servlet
	about_files/
	META-INF/MANIFEST.MF
	about.html
	build.properties
	javax/servlet/{dot_class_files}
	plugin.properties
	source-bundle/
		about_files/
		META-INF/MANIFEST.MF
		about.html
		build.properties
		plugin.properties
		javax/servlet/{dot_java_files}

build.properties

The build.properties file for the source bundle is pretty simple, just include all the files you want in your bundle. For instance:

bin.includes = about.html,\
               about_files/,\
               plugin.properties,\
               META-INF/,\
               javax/