Separate downloading and configuring ideaSDK

This commit is contained in:
Nikolay Krasko
2015-06-13 02:17:43 +03:00
parent fb4ef41b09
commit 265708bacf
+164 -107
View File
@@ -1,7 +1,7 @@
<project name="Update Dependencies" default="update"> <project name="Update Dependencies" default="update">
<property name="ideaVersion" value="141.1531.1"/> <property name="ideaVersion" value="141.1531.1"/>
<property name="kotlin.bootstrap.locator" value="buildType:bt345,tag:bootstrap,status:SUCCESS" /> <property name="kotlin.bootstrap.locator" value="buildType:bt345,tag:bootstrap,status:SUCCESS"/>
<property name="kotlin.bootstrap.locator.force" value="false"/> <property name="kotlin.bootstrap.locator.force" value="false"/>
<property name="markdown.locator" value="buildType:IntelliJMarkdownParser_Build,status:SUCCESS"/> <property name="markdown.locator" value="buildType:IntelliJMarkdownParser_Build,status:SUCCESS"/>
@@ -232,7 +232,9 @@
<!-- Bootstrap compiler --> <!-- Bootstrap compiler -->
<if> <if>
<or> <or>
<not><isset property="teamcity.version"/></not> <not>
<isset property="teamcity.version"/>
</not>
<and> <and>
<istrue value="${kotlin.bootstrap.locator.force}"/> <istrue value="${kotlin.bootstrap.locator.force}"/>
<istrue value="${bootstrap.build.no.tests}"/> <istrue value="${bootstrap.build.no.tests}"/>
@@ -484,7 +486,8 @@
<local name="artifact.build.id"/> <local name="artifact.build.id"/>
<local name="build.request.url"/> <local name="build.request.url"/>
<property name="build.request.url" value="@{teamcity.server.url}/guestAuth/app/rest/builds/?locator=@{build.locator.request},count:1"/> <property name="build.request.url"
value="@{teamcity.server.url}/guestAuth/app/rest/builds/?locator=@{build.locator.request},count:1"/>
<echo message="Requested URL ${build.request.url}"/> <echo message="Requested URL ${build.request.url}"/>
@@ -526,6 +529,134 @@
</sequential> </sequential>
</macrodef> </macrodef>
<macrodef name="unpack_idea_sdk">
<attribute name="idea.dir"/>
<attribute name="idea.sdk.fetch.needed"/>
<attribute name="download.dir.intellij-core"/>
<attribute name="download.dir.jps-standalone"/>
<attribute name="download.file.archive.idea"/>
<attribute name="download.file.archive.sources"/>
<attribute name="download.file.archive.jps-build-test"/>
<attribute name="core" default="@{idea.dir}/core"/>
<attribute name="core-analysis" default="@{idea.dir}/core-analysis"/>
<attribute name="jps" default="@{idea.dir}/jps"/>
<attribute name="jps-test" default="@{jps}/test"/>
<attribute name="sources" default="@{idea.dir}/sources"/>
<sequential>
<if>
<istrue value="@{idea.sdk.fetch.needed}"/>
<then>
<delete dir="@{idea.dir}" failonerror="false">
<exclude name="config-idea/**"/>
<exclude name="system-idea/**"/>
</delete>
<if>
<matches pattern=".+\.win\.zip" string="${idea.archive.name}"/>
<then>
<unzip src="@{download.file.archive.idea}" dest="@{idea.dir}"/>
</then>
<elseif>
<matches pattern=".+\.mac\.zip" string="${idea.archive.name}"/>
<then>
<unzip src="@{download.file.archive.idea}" dest="@{idea.dir}">
<cutdirsmapper dirs="2"/>
</unzip>
<!-- Java can't manipulate permissions -->
<exec executable="chmod">
<arg value="a+x"/>
<arg path="@{idea.dir}/bin/fsnotifier"/>
<arg path="@{idea.dir}/bin/inspect.sh"/>
<arg path="@{idea.dir}/bin/printenv.py"/>
<arg path="@{idea.dir}/bin/restarter"/>
</exec>
</then>
</elseif>
<else>
<untar src="@{download.file.archive.idea}" dest="@{idea.dir}" compression="gzip">
<cutdirsmapper dirs="1"/>
</untar>
<!-- Java can't manipulate permissions -->
<exec executable="chmod">
<arg value="a+x"/>
<arg path="@{idea.dir}/bin/fsnotifier"/>
<arg path="@{idea.dir}/bin/fsnotifier64"/>
<arg path="@{idea.dir}/bin/inspect.sh"/>
<arg path="@{idea.dir}/bin/idea.sh"/>
</exec>
</else>
</if>
<echo message="@{download.dir.intellij-core}/intellij-core-analysis.jar"/>
<mkdir dir="@{core-analysis}"/>
<copy file="@{download.dir.intellij-core}/intellij-core-analysis.jar"
tofile="@{core-analysis}/intellij-core-analysis.jar"
verbose="true"/>
<mkdir dir="@{core}"/>
<copy todir="@{core}" flatten="true" verbose="true">
<resources>
<file file="@{download.dir.intellij-core}/intellij-core.jar"/>
<file file="@{download.dir.intellij-core}/annotations.jar"/>
<file file="@{download.dir.intellij-core}/guava-17.0.jar"/>
<file file="@{download.dir.intellij-core}/picocontainer.jar"/>
<file file="@{download.dir.intellij-core}/trove4j.jar"/>
<file file="@{idea.dir}/lib/jdom.jar"/>
<file file="@{idea.dir}/lib/jna.jar"/>
<file file="@{idea.dir}/lib/log4j.jar"/>
<file file="@{idea.dir}/lib/xstream-1.4.3.jar"/>
<file file="@{idea.dir}/lib/xpp3-1.1.4-min.jar"/>
<file file="@{idea.dir}/lib/jsr166e.jar"/>
<file file="@{idea.dir}/lib/asm-all.jar"/>
<!-- TODO temporary workaround since util-rt is not packaged into intellij-core.jar -->
<file file="@{idea.dir}/lib/util.jar"/>
</resources>
</copy>
<mkdir dir="@{jps}"/>
<copy todir="@{jps}" flatten="true" verbose="true">
<resources>
<file file="@{download.dir.jps-standalone}/groovy-jps-plugin.jar"/>
<file file="@{download.dir.jps-standalone}/groovy_rt.jar"/>
<file file="@{download.dir.jps-standalone}/jdom.jar"/>
<file file="@{download.dir.jps-standalone}/jgoodies-forms.jar"/>
<file file="@{download.dir.jps-standalone}/jna.jar"/>
<file file="@{download.dir.jps-standalone}/jps-builders.jar"/>
<file file="@{download.dir.jps-standalone}/jps-model.jar"/>
<file file="@{download.dir.jps-standalone}/log4j.jar"/>
<file file="@{download.dir.jps-standalone}/nanoxml-2.2.3.jar"/>
<file file="@{download.dir.jps-standalone}/protobuf-2.5.0.jar"/>
<file file="@{download.dir.jps-standalone}/trove4j.jar"/>
<file file="@{download.dir.jps-standalone}/ui-designer-jps-plugin.jar"/>
<file file="@{download.dir.jps-standalone}/util.jar"/>
</resources>
</copy>
<mkdir dir="@{jps-test}"/>
<copy file="@{download.file.archive.jps-build-test}" tofile="@{jps-test}/jps-build-test.jar"/>
<mkdir dir="@{sources}"/>
<copy file="@{download.file.archive.sources}" tofile="@{sources}/sources.zip" overwrite="true"/>
<!--
This one needs to be deleted because otherwise it gets onto the classpath
together with junit-4.10.jar and the classloading goes crazy that breaks
many nice features of IDEA including diffs in the test console.
-->
<delete file="@{idea.dir}/lib/junit.jar"/>
</then>
</if>
<build-protobuf-java-lite/>
</sequential>
</macrodef>
<macrodef name="execute_update"> <macrodef name="execute_update">
<attribute name="base.url"/> <attribute name="base.url"/>
@@ -549,126 +680,52 @@
<echo message="IDEA archive file: ${idea.archive.name}"/> <echo message="IDEA archive file: ${idea.archive.name}"/>
<property name="content.base.url" value="@{base.url}/artifacts/content"/> <property name="content.base.url" value="@{base.url}/artifacts/content"/>
<property name="idea.download.dir" value="dependencies/download/${execute.build.id}" />
<property name="core" value="${idea.dir}/core"/> <property name="jps.extracted.dir" value="${idea.download.dir}/standalone-jps"/>
<property name="core-analysis" value="${idea.dir}/core-analysis"/> <property name="core.dir" value="${idea.download.dir}/core"/>
<property name="jps" value="${idea.dir}/jps"/>
<property name="jps-test" value="${jps}/test"/>
<if> <if>
<istrue value="${idea.sdk.fetch.needed}"/> <istrue value="${idea.sdk.fetch.needed}"/>
<then> <then>
<delete dir="${idea.dir}" failonerror="false"> <mkdir dir="${idea.download.dir}"/>
<exclude name="config-idea/**"/>
<exclude name="system-idea/**"/>
</delete>
<mkdir dir="${core}"/>
<mkdir dir="${core-analysis}"/>
<mkdir dir="${jps}"/>
<mkdir dir="${jps-test}"/>
<get src="${content.base.url}/core/intellij-core.jar" dest="${core}/intellij-core.jar"/>
<get src="${content.base.url}/core/intellij-core-analysis.jar" dest="${core-analysis}/intellij-core-analysis.jar"/>
<get src="${content.base.url}/core/annotations.jar" dest="${core}/annotations.jar"/>
<get src="${content.base.url}/core/guava-17.0.jar" dest="${core}/guava-17.0.jar"/>
<get src="${content.base.url}/core/picocontainer.jar" dest="${core}/picocontainer.jar"/>
<get src="${content.base.url}/core/trove4j.jar" dest="${core}/trove4j.jar"/>
<!--<get src="${content.base.url}/core/snappy-java-1.0.5.jar" dest="${core}/snappy-java-1.0.5.jar"/>-->
<get src="${content.base.url}/jps/standalone-jps-IC-${idea.build.number}.zip" <get src="${content.base.url}/jps/standalone-jps-IC-${idea.build.number}.zip"
dest="dependencies/download/standalone-jps.zip"/> dest="${idea.download.dir}/standalone-jps.zip"/>
<unzip src="${idea.download.dir}/standalone-jps.zip"
dest="${jps.extracted.dir}"/>
<property name="jps.extracted.dir" value="dependencies/download/standalone-jps"/> <delete file="${idea.download.dir}/${idea.archive.name}" failonerror="false"/>
<unzip src="dependencies/download/standalone-jps.zip" dest="${jps.extracted.dir}"/> <get src="${content.base.url}/${idea.archive.name}"
dest="${idea.download.dir}/${idea.archive.name}"/>
<copy todir="${jps}" flatten="true"> <get src="${content.base.url}/jps/jps-build-test-IC-${idea.build.number}.jar"
<resources> dest="${idea.download.dir}/jps-build-test.jar"
<file file="${jps.extracted.dir}/groovy-jps-plugin.jar"/>
<file file="${jps.extracted.dir}/groovy_rt.jar"/>
<file file="${jps.extracted.dir}/jdom.jar"/>
<file file="${jps.extracted.dir}/jgoodies-forms.jar"/>
<file file="${jps.extracted.dir}/jna.jar"/>
<file file="${jps.extracted.dir}/jps-builders.jar"/>
<file file="${jps.extracted.dir}/jps-model.jar"/>
<file file="${jps.extracted.dir}/log4j.jar"/>
<file file="${jps.extracted.dir}/nanoxml-2.2.3.jar"/>
<file file="${jps.extracted.dir}/protobuf-2.5.0.jar"/>
<file file="${jps.extracted.dir}/trove4j.jar"/>
<file file="${jps.extracted.dir}/ui-designer-jps-plugin.jar"/>
<file file="${jps.extracted.dir}/util.jar"/>
</resources>
</copy>
<get src="${content.base.url}/jps/jps-build-test-IC-${idea.build.number}.jar" dest="${jps-test}/jps-build-test.jar"
usetimestamp="true"/> usetimestamp="true"/>
<delete file="dependencies/download/${idea.archive.name}" failonerror="false"/> <mkdir dir="${core.dir}"/>
<get src="${content.base.url}/${idea.archive.name}" dest="dependencies/download/${idea.archive.name}"/> <get src="${content.base.url}/core/intellij-core.jar" dest="${core.dir}/intellij-core.jar"/>
<get src="${content.base.url}/core/annotations.jar" dest="${core.dir}/annotations.jar"/>
<get src="${content.base.url}/core/guava-17.0.jar" dest="${core.dir}/guava-17.0.jar"/>
<get src="${content.base.url}/core/picocontainer.jar" dest="${core.dir}/picocontainer.jar"/>
<get src="${content.base.url}/core/trove4j.jar" dest="${core.dir}/trove4j.jar"/>
<delete file="dependencies/download/idea-sdk-sources.zip" failonerror="false"/> <get src="${content.base.url}/core/intellij-core-analysis.jar" dest="${core.dir}/intellij-core-analysis.jar"/>
<get src="${content.base.url}/sources.zip" dest="dependencies/download/idea-sdk-sources.zip"/>
<delete file="${idea.download.dir}/idea-sdk-sources.zip" failonerror="false"/>
<get src="${content.base.url}/sources.zip" dest="${idea.download.dir}/idea-sdk-sources.zip"/>
</then> </then>
</if> </if>
<if> <unpack_idea_sdk
<matches pattern=".+\.win\.zip" string="${idea.archive.name}"/> idea.dir="${idea.dir}"
<then> idea.sdk.fetch.needed="${idea.sdk.fetch.needed}"
<unzip src="dependencies/download/${idea.archive.name}" dest="${idea.dir}"/>
</then>
<elseif>
<matches pattern=".+\.mac\.zip" string="${idea.archive.name}"/>
<then>
<unzip src="dependencies/download/${idea.archive.name}" dest="${idea.dir}">
<cutdirsmapper dirs="2"/>
</unzip>
<!-- Java can't manipulate permissions -->
<exec executable="chmod">
<arg value="a+x"/>
<arg path="${idea.dir}/bin/fsnotifier"/>
<arg path="${idea.dir}/bin/inspect.sh"/>
<arg path="${idea.dir}/bin/printenv.py"/>
<arg path="${idea.dir}/bin/restarter"/>
</exec>
</then>
</elseif>
<else>
<untar src="dependencies/download/${idea.archive.name}" dest="${idea.dir}" compression="gzip">
<cutdirsmapper dirs="1"/>
</untar>
<!-- Java can't manipulate permissions -->
<exec executable="chmod">
<arg value="a+x"/>
<arg path="${idea.dir}/bin/fsnotifier"/>
<arg path="${idea.dir}/bin/fsnotifier64"/>
<arg path="${idea.dir}/bin/inspect.sh"/>
<arg path="${idea.dir}/bin/idea.sh"/>
</exec>
</else>
</if>
<mkdir dir="${idea.dir}/sources"/> download.dir.intellij-core="${core.dir}"
<copy file="dependencies/download/idea-sdk-sources.zip" tofile="${idea.dir}/sources/sources.zip" overwrite="true"/> download.dir.jps-standalone="${jps.extracted.dir}"
download.file.archive.idea="${idea.download.dir}/${idea.archive.name}"
<copy file="${idea.dir}/lib/jdom.jar" todir="${core}"/> download.file.archive.sources="${idea.download.dir}/idea-sdk-sources.zip"
<copy file="${idea.dir}/lib/jna.jar" todir="${core}"/> download.file.archive.jps-build-test="${idea.download.dir}/jps-build-test.jar"/>
<copy file="${idea.dir}/lib/log4j.jar" todir="${core}"/>
<copy file="${idea.dir}/lib/xstream-1.4.3.jar" todir="${core}"/>
<copy file="${idea.dir}/lib/xpp3-1.1.4-min.jar" todir="${core}"/>
<copy file="${idea.dir}/lib/jsr166e.jar" todir="${core}"/>
<copy file="${idea.dir}/lib/asm-all.jar" todir="${core}"/>
<!-- TODO temporary workaround since util-rt is not packaged into intellij-core.jar -->
<copy file="${idea.dir}/lib/util.jar" todir="${core}"/>
<!--
This one needs to be deleted because otherwise it gets onto the classpath
together with junit-4.10.jar and the classloading goes crazy that breaks
many nice features of IDEA including diffs in the test console.
-->
<delete file="${idea.dir}/lib/junit.jar"/>
<build-protobuf-java-lite/>
</sequential> </sequential>
</macrodef> </macrodef>