|
|
(One intermediate revision by the same user not shown) |
Line 1: |
Line 1: |
− | See [[Platform-releng/Platform Build]] for up to date instructions.
| + | #REDIRECT [[Platform-releng/Platform Build]] |
| | | |
− | This page provides instructions for building the Eclipse Platform using preferred technologies identified as part of the [http://wiki.eclipse.org/CBI CBI] initiative.
| + | [[Category:CBI]] |
− | | + | |
− | At the moment, this build is a prototype based on a temporary fork of the Eclipse platform repositories. We have merged some content upstream, and plan to merge the remaining soon.
| + | |
− | | + | |
− | == Prerequisites ==
| + | |
− | | + | |
− | === Free HDD space ===
| + | |
− | ~15GB is recommended.
| + | |
− | | + | |
− | === SUN Java 1.6 ===
| + | |
− | * SUN 1.6 JDK needs to be on PATH.
| + | |
− | * Verify correct version of java is used
| + | |
− | | + | |
− | igor@desktop:~$ java -version
| + | |
− | java version "1.6.0_29"
| + | |
− | Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
| + | |
− | Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02, mixed mode)
| + | |
− | | + | |
− | | + | |
− | === Maven 3.0.3 ===
| + | |
− | * Download from http://maven.apache.org/download.html
| + | |
− | * Unpack to a local folder. On *nix, I usually unpack to /opt and create /opt/maven symlink so I can switch between different versions easily
| + | |
− | * Do NOT use maven shipped with your linux distribution.
| + | |
− | ''Maven as shipped in Fedora 16 is perfectly capable of building the platform with the given instructions. Let's not generalize things and negate others work that easily!!!'' Akurtakov
| + | |
− | * Verify correct maven version is used
| + | |
− | | + | |
− | igor@desktop:~$ mvn -version
| + | |
− | Apache Maven 3.0.3 (r1075438; 2011-02-28 12:31:09-0500)
| + | |
− | Maven home: /opt/maven
| + | |
− | | + | |
− | | + | |
− | | + | |
− | == Build environment setup ==
| + | |
− | | + | |
− | === review maven settings.xml ===
| + | |
− | To avoid getting hit by {{bug|365727}} and to make sure your local environment configuration does not interfere with LTS build, make sure build user account does not have maven settings.xml
| + | |
− | | + | |
− | igor@desktop:~$ ls -l ~/.m2/settings.xml
| + | |
− | ls: cannot access /home/igor/.m2/settings.xml: No such file or directory
| + | |
− | | + | |
− | | + | |
− | === give maven JVM more ram ===
| + | |
− | | + | |
− | export MAVEN_OPTS=-Xmx512m
| + | |
− | | + | |
− | == Eclipse 4.x Branch ==
| + | |
− | | + | |
− | === cloning platform source tree ===
| + | |
− | I setup single platform-aggregator git repository that references all required parts of the platform build is git submodules. The following command clones both the outer repository and all submodules
| + | |
− | | + | |
− | Read-Only Access:
| + | |
− | | + | |
− | git clone -b JunoSR1_RC1_R4 --recurse-submodules \
| + | |
− | git://git.eclipse.org/gitroot/cbi/platform-aggregator.git R4_platform-aggregator
| + | |
− | | + | |
− | Committer Access:
| + | |
− | | + | |
− | git clone -b JunoSR1_RC1_R4 --recurse-submodules \
| + | |
− | ssh://<userid>@git.eclipse.org/gitroot/cbi/platform-aggregator.git R4_platform-aggregator
| + | |
− | | + | |
− | To update this clone and all submodules:
| + | |
− | | + | |
− | cd R4_platform-aggregator
| + | |
− | git fetch origin
| + | |
− | git merge origin/JunoSR1_RC1_R4
| + | |
− | git pull --recurse-submodules
| + | |
− | git submodule update
| + | |
− | | + | |
− | If you want to switch from another branch to this one, replace <tt>git merge origin/JunoSR1_RC1_R4</tt> with:
| + | |
− | | + | |
− | git checkout -b JunoSR1_RC1_R4 origin/JunoSR1_RC1_R4
| + | |
− | | + | |
− | === running the build ===
| + | |
− | | + | |
− | ==== Easy way ====
| + | |
− | | + | |
− | ./build.sh build
| + | |
− | | + | |
− | ==== Hard way ====
| + | |
− | | + | |
− | mvn -f eclipse-parent/pom.xml \
| + | |
− | clean install \
| + | |
− | -Dmaven.repo.local=/var/tmp/lts/R4_localrepo
| + | |
− | | + | |
− | mvn -f maven-cbi-plugin/pom.xml \
| + | |
− | clean install \
| + | |
− | -Dmaven.repo.local=/var/tmp/lts/R4_localrepo
| + | |
− | | + | |
− | mvn clean install \
| + | |
− | -Dmaven.repo.local=/var/tmp/lts/R4_localrepo -Dmaven.test.skip=true
| + | |
− | | + | |
− | With primed local repository, the build takes about 7 minutes on my 4+ years old linux desktop (core 2 duo @2.8GHz, SSD).
| + | |
− | | + | |
− | Packaged SDK zip files are located in your R4_platform-aggregator directory under
| + | |
− | | + | |
− | eclipse.platform.releng.tychoeclipsebuilder/sdk/target/products
| + | |
− | | + | |
− | P2 repository
| + | |
− | | + | |
− | eclipse.platform.releng.tychoeclipsebuilder/sdk/target/repository
| + | |
− | | + | |
− | == Eclipse 3.x Branch ==
| + | |
− | | + | |
− | === cloning platform source tree ===
| + | |
− | | + | |
− | Read-Only Access:
| + | |
− | | + | |
− | git clone -b JunoSR1_RC1_R3 --recurse-submodules \
| + | |
− | git://git.eclipse.org/gitroot/cbi/platform-aggregator.git R3_platform-aggregator
| + | |
− | | + | |
− | Committer Access:
| + | |
− | | + | |
− | git clone -b JunoSR1_RC1_R3 --recurse-submodules \
| + | |
− | ssh://<userid>@git.eclipse.org/gitroot/cbi/platform-aggregator.git R3_platform-aggregator
| + | |
− | | + | |
− | To update this clone and all submodules
| + | |
− | | + | |
− | cd R3_platform-aggregator
| + | |
− | git fetch origin
| + | |
− | git merge JunoSR1_RC1_R3 origin/JunoSR1_RC1_R3
| + | |
− | git pull --recurse-submodules
| + | |
− | git submodule update
| + | |
− | | + | |
− | If you want to switch from another branch to this one, replace <tt>git merge origin/JunoSR1_RC1_R3/tt> with:
| + | |
− | | + | |
− | git checkout -b JunoSR1_RC1_R3 origin/JunoSR1_RC1_R3
| + | |
− | | + | |
− | === running the build ===
| + | |
− | | + | |
− | ==== Easy way ====
| + | |
− | | + | |
− | ./build.sh build
| + | |
− | | + | |
− | ==== Hard way ====
| + | |
− | | + | |
− | mvn -f eclipse-parent/pom.xml \
| + | |
− | clean install \
| + | |
− | -Dmaven.repo.local=/var/tmp/lts/R3_localrepo
| + | |
− | | + | |
− | mvn -f maven-cbi-plugin/pom.xml \
| + | |
− | clean install \
| + | |
− | -Dmaven.repo.local=/var/tmp/lts/R3_localrepo
| + | |
− | | + | |
− | mvn clean install \
| + | |
− | -Dmaven.repo.local=/var/tmp/lts/R3_localrepo -Dmaven.test.skip=true
| + | |
− | | + | |
− | | + | |
− | Packaged SDK zip files are located in your R3_platform-aggregator directory under
| + | |
− | | + | |
− | org.eclipse.releng.tychoeclipsebuilder/sdk/target/products/
| + | |
− | | + | |
− | P2 repository
| + | |
− | | + | |
− | org.eclipse.releng.tychoeclipsebuilder/sdk/target/repository
| + | |
− | | + | |
− | Source bundles
| + | |
− | | + | |
− | org.eclipse.releng.tychoeclipsebuilder/target/repository/plugins
| + | |
− | | + | |
− | Packaged JUnit Plugin Tests and Automated Testing Framework
| + | |
− | | + | |
− | TMP/eclipse-junit-tests/target/eclipse-junit-tests-1.0.0-SNAPSHOT-bundle.zip
| + | |
− | | + | |
− | == running the tests ==
| + | |
− | | + | |
− | Copy the junit tests and the CBI SDK (pick the one for your platform) that was built to a testing directory. Also unzip the junit tests.
| + | |
− | | + | |
− | mkdir -p /var/tmp/lts/R3_platform-tests
| + | |
− | cp eclipse.platform.tychoeclipsebuilder/sdk/target/products/org.eclipse.sdk.ide-linux.gtk.x86_64.tar.gz /var/tmp/lts/R3_platform-tests
| + | |
− | cp TMP/eclipse-junit-tests/target/eclipse-junit-tests-bundle.zip /var/tmp/lts/R3_platform-tests
| + | |
− | cd /var/tmp/lts/R3_platform-tests
| + | |
− | unzip eclipse-junit-tests-bundle.zip
| + | |
− | | + | |
− | Modify the file equinoxp2tests.properties to point to the CBI built repository.
| + | |
− | (This example uses /home/user/R3_platform-aggregator as the CBI platform root)
| + | |
− | | + | |
− | org.eclipse.equinox.p2.tests.current.build.repo=file:/home/user/R3_platform-aggregator/eclipse.platform.repository/target/repository/
| + | |
− | | + | |
− | Note down the org.eclipse.equinox.p2.reconciler.tests.platform.archive.linux-x86_64= file name for your architecture. (In this example linux x86_64)
| + | |
− | | + | |
− | eclipse-platform-201204121421-linux-gtk-x86_64.tar.gz
| + | |
− | | + | |
− | Rename your org.eclipse.sdk.ide-linux.gtk.x86_64.tar.gz you copied earlier to match the name you jotted down.
| + | |
− | | + | |
− | mv org.eclipse.sdk.ide-linux.gtk.x86_64.tar.gz eclipse-platform-201204121421-linux-gtk-x86_64.tar.gz
| + | |
− | | + | |
− | Copy your eclipse-platform to eclipse SDK
| + | |
− | | + | |
− | cp eclipse-platform-201204121421-linux-gtk-x86_64.tar.gz eclipse-SDK-201204121421-linux-gtk-x86_64.tar.gz
| + | |
− | | + | |
− | Download a copy of the latest released Eclipse Classic from http://www.eclipse.org/downloads/.
| + | |
− | | + | |
− | http://www.eclipse.org/downloads/
| + | |
− | | + | |
− | Copy the Eclipse Classic SDK to eclipse-platform
| + | |
− | | + | |
− | cp eclipse-SDK-3.7.2-linux-gtk-x86_64.tar.gz eclipse-platform-3.7.2-linux-gtk-x86_64.tar.gz
| + | |
− | | + | |
− | You should now have 4 copies of the platform, 2 from the latest released and 2 from the CBI build.
| + | |
− | | + | |
− | eclipse-SDK-3.7.2-linux-gtk-x86_64.tar.gz
| + | |
− | eclipse-platform-3.7.2-linux-gtk-x86_64.tar.gz
| + | |
− | eclipse-platform-201204121421-linux-gtk-x86_64.tar.gz
| + | |
− | eclipse-SDK-201204121421-linux-gtk-x86_64.tar.gz
| + | |
− | | + | |
− | Unzip the CBI platform
| + | |
− | | + | |
− | tar zxvf eclipse-platform-201204121421-linux-gtk-x86_64.tar.gz
| + | |
− | | + | |
− | Run the tests
| + | |
− | | + | |
− | ./runtests -os linux -ws gtk -arch x86_64
| + | |
− | | + | |
− | == Build Natives ==
| + | |
− | | + | |
− | Optionally, you can pass -Dnative= parameter with one of the following options to compile the natives for the specified native.
| + | |
− | | + | |
− | <pre>
| + | |
− | - cocoa.macosx.x86
| + | |
− | - cocoa.macosx.x86_64
| + | |
− | - gtk.linux.x86
| + | |
− | - gtk.linux.x86_64
| + | |
− | - win32.win32.x86
| + | |
− | - win32.win32.x86_64
| + | |
− | - win32.wce_ppc.arm
| + | |
− | </pre>
| + | |
− | | + | |
− | Example:
| + | |
− | | + | |
− | mvn clean install \
| + | |
− | -Dmaven.repo.local=/var/tmp/lts/R4_localrepo -Dmaven.test.skip=true -Dnative=gtk.linux.x86_64
| + | |
− | | + | |
− | == Pack200 & Signing ==
| + | |
− | | + | |
− | Pack200 & Signing is supported when built using build.eclipse.org and is disabled by default.
| + | |
− | | + | |
− | * Install eclipse-jarsigner-plugin to local maven repository used by the build (i.e. /var/tmp/lts/R4_localrepo).
| + | |
− | * Run the build with -Peclipse-sign parameter.
| + | |
− | | + | |
− | Eclipse Jarsigner can be downloaded at: http://git.eclipse.org/c/cbi/org.eclipse.cbi.maven.plugins.git/tree/eclipse-jarsigner-plugin
| + | |
− | | + | |
− | == Troubleshooting ==
| + | |
− | | + | |
− | === Bug 368089 - Product tar.gz has wrong file permission bits when building on macosx ===
| + | |
− | | + | |
− | This issue might occur if your system is not using LANG=en_US.UTF-8 as your system locale. This issue will prevent your from being able to launch Eclipse until proper file permissions are set manually. A workaround is to set the locale before running the build so that the build produces a proper tar.gz.
| + | |
− | | + | |
− | export LANG=en_US.UTF-8
| + | |
− | | + | |
− | === Bug 384482 - Apple JVM renamed rt.jar to classes.jar causing CBI Platform build issues ===
| + | |
− | | + | |
− | Apple JVM renamed rt.jar to classes.jar causing the CBI Platform build to fail when building on macosx. Running the build a 2nd time after the failure however produces a working build. It isn't ideal to have the user run the build twice though.
| + | |
− | | + | |
− | A workaround for this issue is to create a symbolic link for classes.jar to rt.jar.
| + | |
− | | + | |
− | cd /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/lib
| + | |
− | sudo ln -s ../../Classes/classes.jar rt.jar
| + | |