Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Linux Tools Project/Eclipse Build/Inner Workings

Given an archive with Eclipse SDK sources Eclipse Build will extract the sources and remove all the pre-built OSGI jars, but collects all the OSGI metadata (contained in MANIFEST.MF files). Then Eclipse Build tries use jars provided by the system, verifying that versions match the OSGI information provided in the eclipse sources archive.

Fetching Sources

When an SDK source tarball is not available, sources can be fetched using buildSDKSource.sh. This can be the case for example if a release has not yet been made of the version you wish to build.

To fetch the sources you need the build ID. The build ID is the git (or CVS) tag which is used to create particular version. Form more details about the upstream Eclipse build cycle click here. Here you can find recent builds, the build ID's (tags) which were used to create them and and you can inspect the build results.

Example:

./buildSDKSource.sh I20110719-0800

Removing Prebuilt Jars

Dependencies

Packages which Eclipse depends on are normally provided in an Eclipse download as jars. Eclipse Build replaces those with jars provided by the distribution. In eclipsebuild/*.properties files you will find a list of Eclipse dependencies and a search path indicating where they are found on a Linux distribution. If Eclipse Build does not know about a needed dependency this is where you would add it. If Eclipse Build knows about a dependency but cannot find it, you would edit the search path for that dependency in one of these .properties files.

Each entry in a .properties file must have a corresponding MANIFEST.MF file in eclipse-build/dependencyManifests/. These manifest files should be obtained from a jar from the corresponding eclipse build or from an Orbit download. The directory structure should be in this format:

eclipse-build/dependencyManifests/<name and version of the jar>/META-INF/MANIFEST.MF

At a later stage Eclipse Build will use these files to ensure that the system files which you have pointed it to match the Eclipse requirement.

Searching for System Jars

The following Java files are used to define ant tasks which perform the version verification and symlinking of the system jars

task-src/org/eclipse/linuxtools/eclipsebuild/SymlinkInstalledOSGiJars.java
task-src/org/eclipse/linuxtools/eclipsebuild/SymlinkOSGiJars.java
task-src/org/eclipse/linuxtools/eclipsebuild/SymlinkNonOSGiJars.java

The search path used by the ant tasks above is specified in *.properties files. For example:

org.objectweb.asm_3.3.1.v201101071600.jar=/usr/share/java/objectweb-asm/asm-all.jar:/usr/share/java/asm3-all.jar

means that the MANIFEST.MF files of /usr/share/java/objectweb-asm/asm-all.jar and /usr/share/java/asm3-all.jar will be examined to see if they satisfied the requirement of org.objectweb.asm_3.3.1.v201101071600.jar

Building Eclipse

Bootstrapping Eclipse

Packaging Eclipse

Back to the top