You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by hi...@apache.org on 2017/07/01 12:09:39 UTC

[06/36] ant-ivyde git commit: make the installation of Eclipse more easy for headless build

make the installation of Eclipse more easy for headless build


Project: http://git-wip-us.apache.org/repos/asf/ant-ivyde/repo
Commit: http://git-wip-us.apache.org/repos/asf/ant-ivyde/commit/8337fcb2
Tree: http://git-wip-us.apache.org/repos/asf/ant-ivyde/tree/8337fcb2
Diff: http://git-wip-us.apache.org/repos/asf/ant-ivyde/diff/8337fcb2

Branch: refs/heads/ivyDECredentials-cleaned
Commit: 8337fcb21e60f827c1233dac697b320ec7a40642
Parents: ef64ab5
Author: Nicolas Lalevée <ni...@hibnet.org>
Authored: Sun Jun 25 16:20:33 2017 +0200
Committer: Nicolas Lalevée <ni...@hibnet.org>
Committed: Sun Jun 25 16:20:33 2017 +0200

----------------------------------------------------------------------
 build.properties   |  46 ++++++++--------
 build.xml          | 139 ++++++++++++++++++++++++++----------------------
 doc/dev/build.html |   2 +
 3 files changed, 97 insertions(+), 90 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ant-ivyde/blob/8337fcb2/build.properties
----------------------------------------------------------------------
diff --git a/build.properties b/build.properties
index 2a2d03f..d176db1 100644
--- a/build.properties
+++ b/build.properties
@@ -26,28 +26,24 @@ eclipse.consoleLog=false
 mirror.url=http://archive.apache.org/dist/
 
 # properties for jenkins build environment
-jenkins.download.baseurl=http://www.eclipse.org/downloads/download.php
-jenkins.download.mirror.url=http://carroll.aset.psu.edu/pub/eclipse
-jenkins.download.mirror.id=546
-jenkins.download.sdk.name=eclipse-SDK-3.7.1-win32
-jenkins.download.sdk.dropdir=eclipse/downloads/drops/R-3.7.1-201109091335
-jenkins.download.sdk.md5=078df5550176e176abdbac1f444725fe
-jenkins.download.wtp.name=wtp-R-3.1.2-20100211202452
-jenkins.download.wtp.dropdir=webtools/downloads/drops/R3.1.2/R-3.1.2-20100211202452
-jenkins.download.wtp.md5=e2c17a1d8b475bca50ac9e96ce23564d
-jenkins.download.emf.name=emf-runtime-2.5.0
-jenkins.download.emf.dropdir=modeling/emf/emf/downloads/drops/2.5.0/R200906151043
-jenkins.download.emf.md5=f12fe508ca23bb11a99d32e946de024f
-jenkins.download.xsd.name=xsd-runtime-2.5.0
-jenkins.download.xsd.dropdir=modeling/emf/emf/downloads/drops/2.5.0/R200906151043
-jenkins.download.xsd.md5=e156ae7e25500603ddc3166b18bb7fb6
-jenkins.download.gef.name=GEF-SDK-3.5.2
-jenkins.download.gef.dropdir=tools/gef/downloads/drops/3.5.2/R201002241200
-jenkins.download.gef.md5=e3aeb007140d5b37c91e8d3d82a37b7a
-jenkins.download.zest.name=GEF-zest-3.6.2
-jenkins.download.zest.dropdir=tools/gef/downloads/drops/3.6.2/R201102251600
-jenkins.download.zest.md5=b7b6f7f07c876ebebdf987e0b3b758e1
-
-#jenkins.ivy.version=2.4.0-rc1
-#jenkins.ivy.jar.url=http://builds.apache.org/job/Ivy/lastSuccessfulBuild/artifact/build/artifact/jars/ivy.jar
-jenkins.ivy.jar.url=file://${jenkins.workspace}/dependencies/build/artifact/jars/ivy.jar
+eclipse.download.baseurl=http://www.eclipse.org/downloads/download.php
+eclipse.download.mirror.url=http://carroll.aset.psu.edu/pub/eclipse
+eclipse.download.mirror.id=546
+eclipse.download.sdk.name=eclipse-SDK-3.7.1-win32
+eclipse.download.sdk.dropdir=eclipse/downloads/drops/R-3.7.1-201109091335
+eclipse.download.sdk.md5=078df5550176e176abdbac1f444725fe
+eclipse.download.wtp.name=wtp-R-3.1.2-20100211202452
+eclipse.download.wtp.dropdir=webtools/downloads/drops/R3.1.2/R-3.1.2-20100211202452
+eclipse.download.wtp.md5=e2c17a1d8b475bca50ac9e96ce23564d
+eclipse.download.emf.name=emf-runtime-2.5.0
+eclipse.download.emf.dropdir=modeling/emf/emf/downloads/drops/2.5.0/R200906151043
+eclipse.download.emf.md5=f12fe508ca23bb11a99d32e946de024f
+eclipse.download.xsd.name=xsd-runtime-2.5.0
+eclipse.download.xsd.dropdir=modeling/emf/emf/downloads/drops/2.5.0/R200906151043
+eclipse.download.xsd.md5=e156ae7e25500603ddc3166b18bb7fb6
+eclipse.download.gef.name=GEF-SDK-3.5.2
+eclipse.download.gef.dropdir=tools/gef/downloads/drops/3.5.2/R201002241200
+eclipse.download.gef.md5=e3aeb007140d5b37c91e8d3d82a37b7a
+eclipse.download.zest.name=GEF-zest-3.6.2
+eclipse.download.zest.dropdir=tools/gef/downloads/drops/3.6.2/R201102251600
+eclipse.download.zest.md5=b7b6f7f07c876ebebdf987e0b3b758e1

http://git-wip-us.apache.org/repos/asf/ant-ivyde/blob/8337fcb2/build.xml
----------------------------------------------------------------------
diff --git a/build.xml b/build.xml
index b7644a6..6d2589a 100644
--- a/build.xml
+++ b/build.xml
@@ -48,15 +48,18 @@
     <property name="checkstyle.lib" value="${basedir}/checkstyle/lib" />
     <property name="rat.dir" value="${work.dir}/rat" />
 
-    <target name="init-ivy">
+    <target name="download-ivy" unless="ivy.jar.file">
         <property name="ivy.version"  value="2.4.0"/>
         <property name="ivy.jar.url"  value="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.version}/ivy-${ivy.version}.jar"/>
         <property name="ivy.jar.dir"  value="${work.dir}"/>
         <property name="ivy.jar.file" value="${ivy.jar.dir}/ivy.jar"/>
         <mkdir dir="${ivy.jar.dir}"/>
-        <get src="${ivy.jar.url}" dest="${ivy.jar.file}" usetimestamp="true"/>
+        <get src="${ivy.jar.url}" dest="${ivy.jar.file}" usetimestamp="true"/>        
+    </target>
+
+    <target name="init-ivy" depends="download-ivy">
         <path id="ivy.lib.path">
-            <fileset dir="${ivy.jar.dir}" includes="*.jar"/>
+            <pathelement location="${ivy.jar.file}" />
         </path>
         <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/>
     </target>
@@ -77,7 +80,14 @@
     </target>
 
     <target name="check-baseLocation">
-        <fail message="An Eclipse install is needed to run the build. Set your Eclipse install dir in the 'baseLocation' property." unless="baseLocation" />
+        <property name="baseLocation" location="${basedir}/dependencies/${eclipse.download.sdk.name}" />
+        <fail message="An Eclipse install is needed to run the build. Set your Eclipse install dir in the 'baseLocation' property. Or run 'ant download-eclipse'">
+            <condition>
+                <not>
+                    <available file="${baseLocation}" />
+                </not>
+            </condition>
+        </fail>
     </target>
 
     <target name="eclipse-startup-check" depends="check-baseLocation">
@@ -304,7 +314,7 @@ ivyde.build.version=${build.version}
         <delete>
             <fileset dir="${baseLocation}/plugins/" includes="org.apache.ivy_*.jar" />
         </delete>
-        <get src="${ivy.jar.url}" dest="${baseLocation}/plugins/org.apache.ivy_${ivy.bundle.version}.jar" />
+        <copy file="${ivy.jar.file}" tofile="${baseLocation}/plugins/org.apache.ivy_${ivy.bundle.version}.jar" />
         <echo message="Ivy ${ivy.bundle.version} has been installed in ${baseLocation}" />
     </target>
 
@@ -453,64 +463,62 @@ You have to specify the Ivy to install with one of the following property:
 
     <!--
         ======================================================================================
-        Targets related to prepare the build environment of IvyDE on jenkins.
+        Targets related to the download of Eclipse for a headless build
         ======================================================================================
     -->
 
-    <target name="jenkins-prepare" depends="jenkins-prepare-eclipse,jenkins-prepare-properties,jenkins-install-ivy" />
+    <target name="prepare-eclipse" depends="download-eclipse,unzip-eclipse" />
 
-    <target name="jenkins-prepare-eclipse" depends="jenkins-get-eclipse,jenkins-unzip-eclipse" />
+    <target name="download-eclipse" depends="eclipse-get-sdk,eclipse-get-wtp,eclipse-get-emf,eclipse-get-xsd,eclipse-get-gef,eclipse-get-zest" />
 
-    <target name="jenkins-check-download-sdk">
-        <check-eclipse-download name="${jenkins.download.sdk.name}" property="jenkins.sdk.downloaded" md5="${jenkins.download.sdk.md5}" />
+    <target name="eclipse-check-download-sdk">
+        <check-eclipse-download name="${eclipse.download.sdk.name}" property="eclipse.sdk.downloaded" md5="${eclipse.download.sdk.md5}" />
     </target>
 
-    <target name="jenkins-get-sdk" depends="jenkins-check-download-sdk" unless="jenkins.sdk.downloaded">
-        <eclipse-download name="${jenkins.download.sdk.name}" dropdir="${jenkins.download.sdk.dropdir}" />
+    <target name="eclipse-get-sdk" depends="eclipse-check-download-sdk" unless="eclipse.sdk.downloaded">
+        <eclipse-download name="${eclipse.download.sdk.name}" dropdir="${eclipse.download.sdk.dropdir}" />
     </target>
 
-    <target name="jenkins-check-download-wtp">
-        <check-eclipse-download name="${jenkins.download.wtp.name}" property="jenkins.wtp.downloaded" md5="${jenkins.download.wtp.md5}" />
+    <target name="eclipse-check-download-wtp">
+        <check-eclipse-download name="${eclipse.download.wtp.name}" property="eclipse.wtp.downloaded" md5="${eclipse.download.wtp.md5}" />
     </target>
 
-    <target name="jenkins-get-wtp" depends="jenkins-check-download-wtp" unless="jenkins.wtp.downloaded">
-        <eclipse-download name="${jenkins.download.wtp.name}" dropdir="${jenkins.download.wtp.dropdir}" />
+    <target name="eclipse-get-wtp" depends="eclipse-check-download-wtp" unless="eclipse.wtp.downloaded">
+        <eclipse-download name="${eclipse.download.wtp.name}" dropdir="${eclipse.download.wtp.dropdir}" />
     </target>
 
-    <target name="jenkins-check-download-emf">
-        <check-eclipse-download name="${jenkins.download.emf.name}" property="jenkins.emf.downloaded" md5="${jenkins.download.emf.md5}" />
+    <target name="eclipse-check-download-emf">
+        <check-eclipse-download name="${eclipse.download.emf.name}" property="eclipse.emf.downloaded" md5="${eclipse.download.emf.md5}" />
     </target>
 
-    <target name="jenkins-get-emf" depends="jenkins-check-download-emf" unless="jenkins.emf.downloaded">
-        <eclipse-download name="${jenkins.download.emf.name}" dropdir="${jenkins.download.emf.dropdir}" />
+    <target name="eclipse-get-emf" depends="eclipse-check-download-emf" unless="eclipse.emf.downloaded">
+        <eclipse-download name="${eclipse.download.emf.name}" dropdir="${eclipse.download.emf.dropdir}" />
     </target>
 
-    <target name="jenkins-check-download-xsd">
-        <check-eclipse-download name="${jenkins.download.xsd.name}" property="jenkins.xsd.downloaded" md5="${jenkins.download.xsd.md5}" />
+    <target name="eclipse-check-download-xsd">
+        <check-eclipse-download name="${eclipse.download.xsd.name}" property="eclipse.xsd.downloaded" md5="${eclipse.download.xsd.md5}" />
     </target>
 
-    <target name="jenkins-get-xsd" depends="jenkins-check-download-xsd" unless="jenkins.xsd.downloaded">
-        <eclipse-download name="${jenkins.download.xsd.name}" dropdir="${jenkins.download.xsd.dropdir}" />
+    <target name="eclipse-get-xsd" depends="eclipse-check-download-xsd" unless="eclipse.xsd.downloaded">
+        <eclipse-download name="${eclipse.download.xsd.name}" dropdir="${eclipse.download.xsd.dropdir}" />
     </target>
 
-    <target name="jenkins-check-download-gef">
-        <check-eclipse-download name="${jenkins.download.gef.name}" property="jenkins.gef.downloaded" md5="${jenkins.download.gef.md5}" />
+    <target name="eclipse-check-download-gef">
+        <check-eclipse-download name="${eclipse.download.gef.name}" property="eclipse.gef.downloaded" md5="${eclipse.download.gef.md5}" />
     </target>
 
-    <target name="jenkins-get-gef" depends="jenkins-check-download-gef" unless="jenkins.gef.downloaded">
-        <eclipse-download name="${jenkins.download.gef.name}" dropdir="${jenkins.download.gef.dropdir}" />
+    <target name="eclipse-get-gef" depends="eclipse-check-download-gef" unless="eclipse.gef.downloaded">
+        <eclipse-download name="${eclipse.download.gef.name}" dropdir="${eclipse.download.gef.dropdir}" />
     </target>
 
-    <target name="jenkins-check-download-zest">
-        <check-eclipse-download name="${jenkins.download.zest.name}" property="jenkins.zest.downloaded" md5="${jenkins.download.zest.md5}" />
+    <target name="eclipse-check-download-zest">
+        <check-eclipse-download name="${eclipse.download.zest.name}" property="eclipse.zest.downloaded" md5="${eclipse.download.zest.md5}" />
     </target>
 
-    <target name="jenkins-get-zest" depends="jenkins-check-download-zest" unless="jenkins.zest.downloaded">
-        <eclipse-download name="${jenkins.download.zest.name}" dropdir="${jenkins.download.zest.dropdir}" />
+    <target name="eclipse-get-zest" depends="eclipse-check-download-zest" unless="eclipse.zest.downloaded">
+        <eclipse-download name="${eclipse.download.zest.name}" dropdir="${eclipse.download.zest.dropdir}" />
     </target>
 
-    <target name="jenkins-get-eclipse" depends="jenkins-get-sdk,jenkins-get-wtp,jenkins-get-emf,jenkins-get-xsd,jenkins-get-gef,jenkins-get-zest" />
-
     <!-- wrapper of eclipse download urls which have a common pattern -->
     <macrodef name="check-eclipse-download">
         <attribute name="property" />
@@ -532,29 +540,37 @@ You have to specify the Ivy to install with one of the following property:
         <sequential>
             <mkdir dir="${basedir}/dependencies" />
             <delete file="${basedir}/dependencies/@{name}.zip" failonerror="false" />
-            <get src="${jenkins.download.baseurl}?file=/@{dropdir}/@{name}.zip&amp;url=${jenkins.download.mirror.url}/@{dropdir}/@{name}.zip&amp;mirror_id=${jenkins.download.mirror.id}" dest="${basedir}/dependencies/@{name}.zip" verbose="yes" />
+            <get src="${eclipse.download.baseurl}?file=/@{dropdir}/@{name}.zip&amp;url=${eclipse.download.mirror.url}/@{dropdir}/@{name}.zip&amp;mirror_id=${eclipse.download.mirror.id}" dest="${basedir}/dependencies/@{name}.zip" verbose="yes" />
             <checksum file="${basedir}/dependencies/@{name}.zip" algorithm="MD5" />
         </sequential>
     </macrodef>
 
-    <target name="jenkins-check-unzip-eclipse">
-        <condition property="jenkins.eclipse.unzipped">
-            <available file="${basedir}/dependencies/${jenkins.download.sdk.name}" />
+    <target name="check-unzip-eclipse">
+        <condition property="eclipse.unzipped">
+            <available file="${basedir}/dependencies/${eclipse.download.sdk.name}" />
         </condition>
     </target>
 
-    <target name="jenkins-unzip-eclipse" depends="jenkins-check-unzip-eclipse" unless="jenkins.eclipse.unzipped">
+    <target name="unzip-eclipse" depends="check-unzip-eclipse" unless="eclipse.unzipped">
         <delete dir="${basedir}/dependencies/eclipse" failonerror="false" />
-        <delete dir="${basedir}/dependencies/${jenkins.download.sdk.name}" failonerror="false" />
-        <unzip src="${basedir}/dependencies/${jenkins.download.sdk.name}.zip" dest="${basedir}/dependencies/" />
-        <unzip src="${basedir}/dependencies/${jenkins.download.wtp.name}.zip" dest="${basedir}/dependencies/" />
-        <unzip src="${basedir}/dependencies/${jenkins.download.emf.name}.zip" dest="${basedir}/dependencies/" />
-        <unzip src="${basedir}/dependencies/${jenkins.download.xsd.name}.zip" dest="${basedir}/dependencies/" />
-        <unzip src="${basedir}/dependencies/${jenkins.download.gef.name}.zip" dest="${basedir}/dependencies/" />
-        <unzip src="${basedir}/dependencies/${jenkins.download.zest.name}.zip" dest="${basedir}/dependencies/" />
-        <move file="${basedir}/dependencies/eclipse" tofile="${basedir}/dependencies/${jenkins.download.sdk.name}" />
+        <delete dir="${basedir}/dependencies/${eclipse.download.sdk.name}" failonerror="false" />
+        <unzip src="${basedir}/dependencies/${eclipse.download.sdk.name}.zip" dest="${basedir}/dependencies/" />
+        <unzip src="${basedir}/dependencies/${eclipse.download.wtp.name}.zip" dest="${basedir}/dependencies/" />
+        <unzip src="${basedir}/dependencies/${eclipse.download.emf.name}.zip" dest="${basedir}/dependencies/" />
+        <unzip src="${basedir}/dependencies/${eclipse.download.xsd.name}.zip" dest="${basedir}/dependencies/" />
+        <unzip src="${basedir}/dependencies/${eclipse.download.gef.name}.zip" dest="${basedir}/dependencies/" />
+        <unzip src="${basedir}/dependencies/${eclipse.download.zest.name}.zip" dest="${basedir}/dependencies/" />
+        <move file="${basedir}/dependencies/eclipse" tofile="${basedir}/dependencies/${eclipse.download.sdk.name}" />
     </target>
 
+    <!--
+        ======================================================================================
+        Targets related to prepare the build environment of IvyDE on jenkins.
+        ======================================================================================
+    -->
+
+    <target name="jenkins-prepare" depends="prepare-eclipse,jenkins-prepare-properties,jenkins-install-ivy" />
+
     <target name="jenkins-prepare-properties">
         <tstamp />
         <property name="baseLocation" value="${basedir}/dependencies/${jenkins.eclipse.name}" />
@@ -563,42 +579,35 @@ You have to specify the Ivy to install with one of the following property:
         </condition>
         <property name="jenkins.version.qualifier" value="${version.qualifier}-${DSTAMP}${TSTAMP}-jenkins-${env.BUILD_NUMBER}" />
         <echo file="local.build.properties">
-baseLocation=${basedir}/dependencies/${jenkins.download.sdk.name}
+baseLocation=${basedir}/dependencies/${eclipse.download.sdk.name}
 forceContextQualifier=${jenkins.version.qualifier}
 </echo>
     </target>
 
-    <target name="jenkins-install-ivy-jar" if="jenkins.ivy.jar.url">
+    <target name="jenkins-install-ivy">
         <ant antfile="build.xml" target="install-ivy">
-            <property name="ivy.jar.url" value="${jenkins.ivy.jar.url}" />
-            <property name="baseLocation" location="${basedir}/dependencies/${jenkins.download.sdk.name}" />
+            <!-- defined, to avoid to download anything -->
+            <property name="ivy.jar.url" value="" />
+            <!-- this path should be propulated by the Jenkins plugins which will copy artifacts from the Ivy Job -->
+            <property name="ivy.jar.file" value="${basedir}/dependencies/build/artifact/jars/ivy.jar" />
         </ant>
     </target>
 
-    <target name="jenkins-install-ivy-release" unless="jenkins.ivy.jar.url">
-        <ant antfile="build.xml" target="install-ivy">
-            <property name="ivy.version" value="${jenkins.ivy.version}" />
-            <property name="baseLocation" location="${basedir}/dependencies/${jenkins.download.sdk.name}" />
-        </ant>
-    </target>
-
-    <target name="jenkins-install-ivy" depends="jenkins-install-ivy-jar,jenkins-install-ivy-release" />
-
     <!--
         ======================================================================================
         Targets related to the generation of the documentation included in the eclipse plugin
         ======================================================================================
      -->
 
-    <target name="generate-eclipse-doc" depends="clean-eclipse-doc,generate-sample-zip,generate-eclipse-doc-html,generate-eclipse-doc-files,generate-eclipse-toc">
+    <target name="generate-eclipse-doc" depends="clean-eclipse-doc,generate-sample-zip,generate-eclipse-doc-html,generate-eclipse-doc-files,generate-eclipse-toc" unless="skip.doc">
     </target>
 
-    <target name="clean-eclipse-doc">
+    <target name="clean-eclipse-doc" unless="skip.doc">
         <delete dir="${doc-eclipse.work.dir}" />
         <delete dir="${eclipse-doc.dir}" />
     </target>
 
-    <target name="generate-sample-zip">
+    <target name="generate-sample-zip" unless="skip.doc">
         <zip destfile="${src.doc.dir}/sample/webapp-js-repo.zip" basedir="${src.doc.dir}/sample/webapp-js-repo" />
     </target>
 
@@ -620,7 +629,7 @@ forceContextQualifier=${jenkins.version.qualifier}
         </xooki:generate>
     </target>
 
-    <target name="generate-eclipse-doc-files">
+    <target name="generate-eclipse-doc-files" unless="skip.doc">
         <property name="checkUpToDate" value="true" />
         <condition property="overwrite">
             <isfalse value="${checkUpToDate}" />
@@ -634,7 +643,7 @@ forceContextQualifier=${jenkins.version.qualifier}
         </copy>
     </target>
 
-    <target name="generate-eclipse-toc">
+    <target name="generate-eclipse-toc" unless="skip.doc">
         <scriptdef name="generate-eclipse-toc" language="javascript">
             <attribute name="jsontocfile" />
             <attribute name="destFile" />

http://git-wip-us.apache.org/repos/asf/ant-ivyde/blob/8337fcb2/doc/dev/build.html
----------------------------------------------------------------------
diff --git a/doc/dev/build.html b/doc/dev/build.html
index fb099e0..772d923 100644
--- a/doc/dev/build.html
+++ b/doc/dev/build.html
@@ -40,6 +40,8 @@ Lots of ant target depends on that Eclipse installation, so they need a <tt>base
 baseLocation=/home/me/tools/eclipse-3.4
 </code>
 
+An Ant target is provided to download all the necessary binaries, just like the CI is running: <tt>ant download-eclipse</tt>. No need to specify a <tt>baseLocation</tt> in the prperty file to use that downloaded Eclipse and plugins.
+
 <h2><a name="install-ivy"></a>The Apache Ivy bundle</h2>
 
 The IvyDE plugins depends on the Apache Ivy 2.0 OSGi bundle. So the Ivy bundle have to be installed in the Eclipse installation before starting the build. An Ant target will accomplished that task quite automatically. Inline help will be displayed when no property is specified: