32d0d7a4d5
xercesImpl was unnecessarily added to the compiler uberjar during migration to the idea platform 171. This caused NCDFE about classes from org.w3c package. And to simplify application of this commit and to ensure that only required jars are packed into the uberjar, the build.xml was altered to use explicit list of the jars from the ideaSdk/core directory, rather than a mask. Fixes #KT-17143 and #KT-17157 (cherry picked from commit 5595bea)
989 lines
48 KiB
XML
989 lines
48 KiB
XML
<project xmlns:if="ant:if" xmlns:unless="ant:unless" name="Update Dependencies" default="update">
|
|
<import file="common.xml" optional="false"/>
|
|
|
|
<property name="automerge_dummy" value="This property is used to trick git merge. Do not delete empty lines around."/>
|
|
<property name="ideaVersion" value="171-SNAPSHOT"/>
|
|
<property name="idea.kotlin.branch" value="rc"/>
|
|
|
|
|
|
<property name="kotlin.bootstrap.branch" value=""/>
|
|
<property name="kotlin.bootstrap.branch.locator" value=""/>
|
|
<property name="kotlin.bootstrap.locator" value="buildType:bt345,tag:bootstrap,status:SUCCESS${kotlin.bootstrap.branch.locator}"/>
|
|
<property name="kotlin.bootstrap.locator.force" value="false"/>
|
|
|
|
<property name="markdown.locator" value="buildType:IntelliJMarkdownParser_Build,status:SUCCESS,tag:forKotlin"/>
|
|
|
|
<property name="bootstrap.build.no.tests" value="false"/>
|
|
|
|
<!--<property name="use.ultimate.by.default" value="true"/>-->
|
|
|
|
<property name="sdk.version.prefix" value="IU" if:set="use.ultimate.by.default"/>
|
|
<property name="sdk.version.prefix" value="IC" unless:set="use.ultimate.by.default"/>
|
|
|
|
<!-- Uncomment to enable force version increment in branch. Set override.version.disabled to temporary disable feature without commits -->
|
|
<!--
|
|
<property name="override.version.branch" value="${kotlin.bootstrap.branch.locator}"/>
|
|
<property name="override.version.url" value="https://teamcity.jetbrains.com/guestAuth/app/rest/builds/?locator=buildType:bt345,count:1,branch:${override.version.branch}"/>
|
|
-->
|
|
<!--<property name="override.version.disabled" value="true"/>-->
|
|
|
|
<condition property="kotlinc.executable.path" value="kotlinc.bat" else="kotlinc">
|
|
<os family="windows"/>
|
|
</condition>
|
|
|
|
<property name="uast.version" value="1.0.12"/>
|
|
|
|
<property name="kotlinx.coroutines.version" value="0.14.1"/>
|
|
|
|
<property name="generators" value="${basedir}/generators"/>
|
|
|
|
<property name="idea.dir" value="ideaSDK"/>
|
|
<property name="idea.sdk.fetch.needed" value="true"/>
|
|
|
|
<property name="dependencies.info.file" value="${dependencies}/dependencies.properties"/>
|
|
|
|
<property name="gradle.libs.repo" value="http://repo.gradle.org/gradle/libs-releases-local"/>
|
|
|
|
<property name="native-platform-lib-version" value="0.14"/>
|
|
|
|
<property file="${dependencies.info.file}" prefix="dependencies.info.prev"/>
|
|
|
|
<target name="update" depends="fetch-third-party,fetch-annotations" description="Update dependencies">
|
|
<execute_update_with_idea_maven_artifacts
|
|
base.url="https://www.jetbrains.com/intellij-repository/snapshots/com/jetbrains/intellij/idea"
|
|
idea.maven.version="${ideaVersion}"/>
|
|
</target>
|
|
|
|
<!--<target name="update_teamcity" depends="fetch-third-party,fetch-annotations">-->
|
|
<!--<execute_update_with_idea_teamcity_artifacts-->
|
|
<!--teamcity.server.url="https://teamcity.jetbrains.com"-->
|
|
<!--build.locator.request="buildType:bt410,status:SUCCESS,branch:idea/${ideaVersion}-${idea.kotlin.branch}"/>-->
|
|
<!--</target>-->
|
|
|
|
<target name="jb_update" depends="fetch-third-party,fetch-annotations" description="Update dependencies for JB local network">
|
|
<execute_update_with_idea_maven_artifacts
|
|
base.url="http://jetbrains-com-mirror.labs.intellij.net/intellij-repository/snapshots/com/jetbrains/intellij/idea"
|
|
idea.maven.version="${ideaVersion}"/>
|
|
</target>
|
|
|
|
<target name="update_continuous_br141" depends="fetch-third-party,fetch-annotations">
|
|
<execute_update_with_idea_maven_artifacts
|
|
base.url="https://www.jetbrains.com/intellij-repository/snapshots/com/jetbrains/intellij/idea"
|
|
idea.maven.version="141-SNAPSHOT"/>
|
|
</target>
|
|
|
|
<target name="update_continuous_br143" depends="fetch-third-party,fetch-annotations">
|
|
<execute_update_with_idea_maven_artifacts
|
|
base.url="https://www.jetbrains.com/intellij-repository/snapshots/com/jetbrains/intellij/idea"
|
|
idea.maven.version="143-SNAPSHOT"/>
|
|
</target>
|
|
|
|
<target name="update_continuous_br144" depends="fetch-third-party,fetch-annotations">
|
|
<execute_update_with_idea_maven_artifacts
|
|
base.url="https://www.jetbrains.com/intellij-repository/snapshots/com/jetbrains/intellij/idea"
|
|
idea.maven.version="144-SNAPSHOT"/>
|
|
</target>
|
|
|
|
<target name="update_continuous_br162" depends="fetch-third-party,fetch-annotations">
|
|
<execute_update_with_idea_maven_artifacts
|
|
base.url="https://www.jetbrains.com/intellij-repository/snapshots/com/jetbrains/intellij/idea"
|
|
idea.maven.version="162-SNAPSHOT"/>
|
|
</target>
|
|
|
|
<macrodef name="get-maven-library">
|
|
<attribute name="prefix"/>
|
|
<attribute name="lib"/>
|
|
<attribute name="version"/>
|
|
<attribute name="bin" default="true"/>
|
|
<attribute name="src" default="true"/>
|
|
<attribute name="server" default="http://repository.jetbrains.com/remote-repos"/>
|
|
<attribute name="jar.name.base" default="@{lib}-@{version}"/>
|
|
<attribute name="target.jar.name.base" default="@{jar.name.base}"/>
|
|
<attribute name="path" default="@{prefix}/@{lib}/@{version}/@{jar.name.base}"/>
|
|
<attribute name="download" default="${dependencies}/download"/>
|
|
<attribute name="dependencies" default="${dependencies}"/>
|
|
<sequential>
|
|
<sequential if:true="@{bin}">
|
|
<get src="@{server}/@{path}.jar" dest="@{download}/@{jar.name.base}.jar" usetimestamp="true"/>
|
|
<copy file="@{download}/@{jar.name.base}.jar" tofile="@{dependencies}/@{target.jar.name.base}.jar" overwrite="true"/>
|
|
</sequential>
|
|
|
|
<sequential if:true="@{src}">
|
|
<get src="@{server}/@{path}-sources.jar" dest="@{download}/@{jar.name.base}-sources.jar" usetimestamp="true"/>
|
|
<copy file="@{download}/@{jar.name.base}-sources.jar" tofile="@{dependencies}/@{target.jar.name.base}-sources.jar"
|
|
overwrite="true"/>
|
|
</sequential>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<macrodef name="get-ant-library">
|
|
<attribute name="version"/>
|
|
<attribute name="folderName"/>
|
|
<sequential>
|
|
<get src="http://archive.apache.org/dist/ant/binaries/apache-ant-@{version}-bin.tar.gz"
|
|
dest="${dependencies}/download/apache-ant-@{version}-bin.tar.gz" usetimestamp="true"/>
|
|
|
|
<get src="http://archive.apache.org/dist/ant/source/apache-ant-@{version}-src.zip"
|
|
dest="${dependencies}/apache-ant-@{version}-src.zip" usetimestamp="true"/>
|
|
|
|
<delete dir="${dependencies}/@{folderName}" failonerror="false"/>
|
|
<untar src="${dependencies}/download/apache-ant-@{version}-bin.tar.gz" dest="${dependencies}" compression="gzip"/>
|
|
<move file="${dependencies}/apache-ant-@{version}" tofile="${dependencies}/@{folderName}"/>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<target name="make-native-platform-uberjar">
|
|
<property name="dependencies" value="${dependencies}"/>
|
|
<property name="download" value="${dependencies}/download"/>
|
|
<property name="server" value="${gradle.libs.repo}"/>
|
|
<property name="version" value="${native-platform-lib-version}"/>
|
|
<property name="common.name" value="native-platform"/>
|
|
<property name="common.prefix" value="${server}/net/rubygrapefruit/${common.name}"/>
|
|
|
|
<macrodef name="get-lib">
|
|
<attribute name="suffix"/>
|
|
<sequential>
|
|
<get src="${common.prefix}@{suffix}/${version}/${common.name}@{suffix}-${version}.jar" dest="${download}/${common.name}@{suffix}.jar" usetimestamp="true"/>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<mkdir dir="${dependencies}"/>
|
|
<mkdir dir="${download}"/>
|
|
|
|
<get-lib suffix=""/>
|
|
<get-lib suffix="-windows-amd64"/>
|
|
<get-lib suffix="-windows-i386"/>
|
|
<get-lib suffix="-osx-amd64"/>
|
|
<get-lib suffix="-osx-i386"/>
|
|
<get-lib suffix="-linux-amd64"/>
|
|
<get-lib suffix="-linux-i386"/>
|
|
<get-lib suffix="-freebsd-amd64-libcpp"/>
|
|
<get-lib suffix="-freebsd-amd64-libstdcpp"/>
|
|
<get-lib suffix="-freebsd-i386-libcpp"/>
|
|
<get-lib suffix="-freebsd-i386-libstdcpp"/>
|
|
|
|
<jar destfile="${dependencies}/${common.name}-uberjar.jar">
|
|
<zipfileset src="${download}/${common.name}.jar" includes="**" />
|
|
<zipfileset src="${download}/${common.name}-windows-amd64.jar" includes="**" />
|
|
<zipfileset src="${download}/${common.name}-windows-i386.jar" includes="**" />
|
|
<zipfileset src="${download}/${common.name}-osx-amd64.jar" includes="**" />
|
|
<zipfileset src="${download}/${common.name}-osx-i386.jar" includes="**" />
|
|
<zipfileset src="${download}/${common.name}-linux-amd64.jar" includes="**" />
|
|
<zipfileset src="${download}/${common.name}-linux-i386.jar" includes="**" />
|
|
<zipfileset src="${download}/${common.name}-freebsd-amd64-libcpp.jar" includes="**" />
|
|
<zipfileset src="${download}/${common.name}-freebsd-amd64-libstdcpp.jar" includes="**" />
|
|
<zipfileset src="${download}/${common.name}-freebsd-i386-libcpp.jar" includes="**" />
|
|
<zipfileset src="${download}/${common.name}-freebsd-i386-libstdcpp.jar" includes="**" />
|
|
</jar>
|
|
</target>
|
|
|
|
<target name="fetch-third-party" depends="make-dependency-dirs, make-native-platform-uberjar">
|
|
<antcall target="override-version"/>
|
|
|
|
<!-- ProGuard -->
|
|
<get-maven-library prefix="net/sf/proguard" lib="proguard-base" version="5.3" target.jar.name.base="proguard" src="false"/>
|
|
<get-maven-library prefix="net/sf/proguard" lib="proguard-anttask" version="5.3" target.jar.name.base="proguard-anttask" src="false"/>
|
|
|
|
<!-- JarJar -->
|
|
<get src="http://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/jarjar/jarjar-1.4.jar" dest="${dependencies}/download/jarjar-1.4.jar" usetimestamp="true"/>
|
|
<copy file="${dependencies}/download/jarjar-1.4.jar" tofile="${dependencies}/jarjar.jar" overwrite="true"/>
|
|
|
|
<!-- ant 1.8.2 -->
|
|
<get-ant-library version="1.8.2" folderName="ant-1.8"/>
|
|
|
|
<!-- dx.jar -->
|
|
<property name="android-build-tools.zip" value="build-tools_r21.1.1-linux.zip"/>
|
|
<get
|
|
src="https://dl-ssl.google.com/android/repository/${android-build-tools.zip}"
|
|
dest="${dependencies}/download/${android-build-tools.zip}"
|
|
usetimestamp="true"/>
|
|
<unzip src="${dependencies}/download/${android-build-tools.zip}" dest="${dependencies}"/>
|
|
|
|
<property name="android-sources.tgz" value="dx.tar.gz"/>
|
|
<get
|
|
src="https://android.googlesource.com/platform/dalvik/+archive/android-5.0.0_r2/${android-sources.tgz}"
|
|
dest="${dependencies}/download/${android-sources.tgz}"
|
|
usetimestamp="true"/>
|
|
<delete dir="${dependencies}/dx-src" failonerror="false"/>
|
|
<untar src="${dependencies}/download/${android-sources.tgz}" dest="${dependencies}/dx-src" compression="gzip"/>
|
|
|
|
<mkdir dir="${dependencies}/jflex"/>
|
|
<get src="https://raw.github.com/JetBrains/intellij-community/master/tools/lexer/jflex-1.7.0-SNAPSHOT.jar"
|
|
dest="${dependencies}/jflex/JFlex.jar" usetimestamp="true"/>
|
|
<get src="https://raw.github.com/JetBrains/intellij-community/master/tools/lexer/idea-flex.skeleton"
|
|
dest="${dependencies}/jflex/idea-flex.skeleton" usetimestamp="true"/>
|
|
|
|
<!-- jline -->
|
|
<get-maven-library prefix="jline" lib="jline" version="2.12.1" target.jar.name.base="jline"/>
|
|
|
|
<!-- jansi -->
|
|
<get-maven-library prefix="org/fusesource/jansi" lib="jansi" version="1.11" target.jar.name.base="jansi"/>
|
|
|
|
<!-- Guava 19 sources-->
|
|
<get-maven-library prefix="com/google/guava" lib="guava" version="19.0" bin="false"/>
|
|
|
|
<!-- ASM -->
|
|
<get src="https://raw.github.com/JetBrains/intellij-community/171/lib/src/asm-src.zip"
|
|
dest="${dependencies}/asm-src.zip"/>
|
|
|
|
<!-- Junit Sources -->
|
|
<get-maven-library prefix="junit" lib="junit" version="4.12" bin="false"/>
|
|
<get-maven-library prefix="org/hamcrest" lib="hamcrest-core" version="1.3" bin="false"/>
|
|
|
|
<!-- Android SDK platform -->
|
|
<ant antfile="download_android_sdk.xml" target="download_android_sdk"/>
|
|
|
|
<!-- Rhino -->
|
|
<get-maven-library prefix="org/mozilla" lib="rhino" version="1.7.6"/>
|
|
|
|
<!-- Uast -->
|
|
<property name="uast.server" value="http://dl.bintray.com/kotlin/uast"/>
|
|
<get-maven-library prefix="org/jetbrains/uast" lib="uast-common" version="${uast.version}" target.jar.name.base="uast-common" server="${uast.server}"/>
|
|
<get-maven-library prefix="org/jetbrains/uast" lib="uast-java" version="${uast.version}" target.jar.name.base="uast-java" server="${uast.server}"/>
|
|
<get-maven-library prefix="org/jetbrains/uast" lib="uast-tests" version="${uast.version}" target.jar.name.base="uast-tests" server="${uast.server}"/>
|
|
|
|
|
|
<!-- kotlinx.coroutines -->
|
|
<get-maven-library prefix="org/jetbrains/kotlinx" lib="kotlinx-coroutines-core" version="${kotlinx.coroutines.version}"
|
|
target.jar.name.base="kotlinx-coroutines-core" server="http://dl.bintray.com/kotlin/kotlinx/"/>
|
|
|
|
<!-- Closure Compiler -->
|
|
<!-- A download url taken from http://code.google.com/p/closure-compiler/wiki/BinaryDownloads -->
|
|
<get src="http://dl.google.com/closure-compiler/compiler-20160315.zip"
|
|
dest="${dependencies}/download/closure-compiler.zip" usetimestamp="true"/>
|
|
|
|
<delete file="${dependencies}/closure-compiler.jar" failonerror="false"/>
|
|
<unzip src="${dependencies}/download/closure-compiler.zip" dest="${dependencies}">
|
|
<patternset>
|
|
<include name="compiler.jar"/>
|
|
</patternset>
|
|
<mapper type="merge" to="closure-compiler.jar"/>
|
|
</unzip>
|
|
|
|
<delete file="${dependencies}/android.jar" failonerror="false"/>
|
|
<get src="http://dl-ssl.google.com/android/repository/android-19_r02.zip"
|
|
dest="${dependencies}/download/android-sdk.zip" usetimestamp="true"/>
|
|
<unzip src="${dependencies}/download/android-sdk.zip" dest="${dependencies}">
|
|
<patternset>
|
|
<include name="**/android.jar"/>
|
|
</patternset>
|
|
<mapper type="flatten"/>
|
|
</unzip>
|
|
|
|
<local name="download.bootstrap.compiler"/>
|
|
<condition property="download.bootstrap.compiler">
|
|
<or>
|
|
<not>
|
|
<isset property="teamcity.version"/>
|
|
</not>
|
|
<and>
|
|
<istrue value="${kotlin.bootstrap.locator.force}"/>
|
|
<istrue value="${bootstrap.build.no.tests}"/>
|
|
</and>
|
|
</or>
|
|
</condition>
|
|
|
|
<sequential if:set="download.bootstrap.compiler">
|
|
<!-- Download bootstrap compiler for local build -->
|
|
<download_teamcity_artifact
|
|
teamcity.server.url="https://teamcity.jetbrains.com"
|
|
build.locator.request="${kotlin.bootstrap.locator}"
|
|
artifact.path="kotlin-plugin-{build.number}.zip"
|
|
dest="${dependencies}/download/bootstrap-compiler.zip"
|
|
build.number.pattern="[\w-+\.]+"
|
|
usetimestamp="true"/>
|
|
|
|
<delete dir="${dependencies}/bootstrap-compiler" failonerror="false"/>
|
|
<unzip src="${dependencies}/download/bootstrap-compiler.zip" dest="${dependencies}/bootstrap-compiler"/>
|
|
</sequential>
|
|
|
|
<sequential unless:set="download.bootstrap.compiler">
|
|
<available file="${dependencies}/bootstrap-compiler/Kotlin" property="have.bootstrap.compiler"/>
|
|
<fail message="Bootstrap compiler is expected to be downloaded to '${dependencies}/bootstrap-compiler' by TeamCity" unless:set="have.bootstrap.compiler"/>
|
|
<echo message="Bootstrap compiler found in '${dependencies}/bootstrap-compiler'" if:set="have.bootstrap.compiler"/>
|
|
</sequential>
|
|
|
|
<local name="bootstrap.need.chmod"/>
|
|
<condition property="bootstrap.need.chmod">
|
|
<or>
|
|
<isset property="isMac" />
|
|
<isset property="isLinux" />
|
|
</or>
|
|
</condition>
|
|
|
|
<!-- Java can't manipulate permissions -->
|
|
<exec executable="find" if:set="bootstrap.need.chmod">
|
|
<arg value="${dependencies}/bootstrap-compiler/Kotlin/kotlinc/bin"/>
|
|
<arg line="-name 'kotlin*' ! -name '*.bat' -exec chmod a+x '{}' ;"/>
|
|
</exec>
|
|
|
|
<get-protobuf-and-rename-packages/>
|
|
|
|
<download-or-build-markdown-parser/>
|
|
</target>
|
|
|
|
<macrodef name="download-or-build-markdown-parser">
|
|
<sequential>
|
|
<download_teamcity_artifact
|
|
teamcity.server.url="https://teamcity.jetbrains.com"
|
|
build.locator.request="${markdown.locator}"
|
|
artifact.path="markdown_jar/markdown.jar"
|
|
dest="${dependencies}/markdown.jar"
|
|
usetimestamp="true"
|
|
build.number.pattern="\d+\s-\sKotlin\s[\w-+\.]+"
|
|
/>
|
|
|
|
<!-- When ABI version changes, the second build should compile markdown-parser manually instead of using the old version -->
|
|
|
|
<exec executable="${dependencies}/bootstrap-compiler/Kotlin/kotlinc/bin/${kotlinc.executable.path}" failonerror="false"
|
|
resultproperty="markdown.abi.incompatible">
|
|
<arg value="-cp"/>
|
|
<arg value="${dependencies}/bootstrap-compiler/Kotlin/kotlinc/lib/kotlin-compiler.jar"/>
|
|
<arg value="-script"/>
|
|
<arg value="${generators}/infrastructure/check-library-abi-version.kts"/>
|
|
<arg value="${dependencies}/markdown.jar"/>
|
|
<arg value="${dependencies}/bootstrap-compiler/Kotlin/kotlinc/lib/kotlin-runtime.jar"/>
|
|
</exec>
|
|
|
|
<local name="markdown.need.recompile" />
|
|
<condition property="markdown.need.recompile">
|
|
<not>
|
|
<equals arg1="${markdown.abi.incompatible}" arg2="0"/>
|
|
</not>
|
|
</condition>
|
|
|
|
<sequential if:set="markdown.need.recompile">
|
|
<echo message="Recompiling intellij-markdown manually"/>
|
|
<length file="${dependencies}/markdown.jar" property="old.markdown.size"/>
|
|
<echo message="Size of the incompatible jar: ${old.markdown.size} bytes"/>
|
|
<local name="markdown.dir" />
|
|
<property name="markdown.dir" value="${dependencies}/intellij-markdown-forKotlin/" />
|
|
|
|
<get src="https://github.com/valich/intellij-markdown/archive/forKotlin.zip"
|
|
dest="${dependencies}/download/markdown-sources.zip" usetimestamp="true"/>
|
|
|
|
<delete dir="${markdown.dir}" failonerror="false"/>
|
|
<unzip src="${dependencies}/download/markdown-sources.zip" dest="${dependencies}"/>
|
|
<exec executable="${dependencies}/bootstrap-compiler/Kotlin/kotlinc/bin/${kotlinc.executable.path}" failonerror="true">
|
|
<arg value="${markdown.dir}/src"/>
|
|
<arg value="-d"/>
|
|
<arg value="${markdown.dir}/out"/>
|
|
</exec>
|
|
|
|
<javac srcdir="${markdown.dir}/src"
|
|
destdir="${markdown.dir}/out" includeantruntime="false">
|
|
<classpath>
|
|
<path location="${dependencies}/bootstrap-compiler/Kotlin/kotlinc/lib/kotlin-runtime.jar"/>
|
|
</classpath>
|
|
</javac>
|
|
|
|
<delete file="${dependencies}/markdown.jar" failonerror="false"/>
|
|
<jar jarfile="${dependencies}/markdown.jar">
|
|
<fileset dir="${markdown.dir}/out" includes="**"/>
|
|
</jar>
|
|
|
|
<echo message="Compilation of intellij-markdown finished"/>
|
|
<length file="${dependencies}/markdown.jar" property="new.markdown.size"/>
|
|
<echo message="Size of the new jar: ${new.markdown.size} bytes"/>
|
|
</sequential>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<macrodef name="get-protobuf-and-rename-packages">
|
|
<sequential>
|
|
<macrodef name="rename-packages-in-binaries">
|
|
<attribute name="target.jar"/>
|
|
<attribute name="source.jar"/>
|
|
|
|
<sequential>
|
|
<delete file="@{target.jar}" failonerror="false"/>
|
|
<taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask" classpath="${dependencies}/jarjar.jar"/>
|
|
<jarjar jarfile="@{target.jar}" filesonly="true">
|
|
<zipfileset src="@{source.jar}">
|
|
<exclude name="META-INF/maven/com.google.protobuf/protobuf-java/pom.properties"/>
|
|
</zipfileset>
|
|
<rule pattern="com.google.protobuf.**" result="org.jetbrains.kotlin.protobuf.@1"/>
|
|
</jarjar>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<macrodef name="rename-packages-in-sources">
|
|
<attribute name="target.jar"/>
|
|
<attribute name="source.jar"/>
|
|
|
|
<sequential>
|
|
<local name="tmp.src"/>
|
|
<property name="tmp.src" value="${dependencies}/download/protobuf-src"/>
|
|
|
|
<delete dir="${tmp.src}" failonerror="false"/>
|
|
<unzip src="@{source.jar}" dest="${tmp.src}">
|
|
<patternset includes="**/*"/>
|
|
</unzip>
|
|
|
|
<replaceregexp match="com\.google\.protobuf" replace="org.jetbrains.kotlin.protobuf" flags="g">
|
|
<fileset dir="${tmp.src}/" includes="**/*.java"/>
|
|
</replaceregexp>
|
|
|
|
<move file="${tmp.src}/com/google/protobuf"
|
|
tofile="${tmp.src}/org/jetbrains/kotlin/protobuf"/>
|
|
|
|
<delete file="@{target.jar}" failonerror="false"/>
|
|
<zip destfile="@{target.jar}" basedir="${tmp.src}"/>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<property name="protobuf.version" value="2.6.1"/>
|
|
|
|
<!-- Download protobuf and rename packages -->
|
|
<get-maven-library prefix="com/google/protobuf" lib="protobuf-java" version="${protobuf.version}"/>
|
|
<delete file="${dependencies}/protobuf-java-${protobuf.version}.jar"/>
|
|
<delete file="${dependencies}/protobuf-java-${protobuf.version}-sources.jar"/>
|
|
|
|
<rename-packages-in-binaries
|
|
source.jar="${dependencies}/download/protobuf-java-${protobuf.version}.jar"
|
|
target.jar="${dependencies}/protobuf-${protobuf.version}.jar"
|
|
/>
|
|
|
|
<rename-packages-in-sources
|
|
source.jar="${dependencies}/download/protobuf-java-${protobuf.version}-sources.jar"
|
|
target.jar="${dependencies}/protobuf-${protobuf.version}-sources.jar"
|
|
/>
|
|
|
|
<!-- Build protobuf lite jar -->
|
|
<exec executable="${dependencies}/bootstrap-compiler/Kotlin/kotlinc/bin/${kotlinc.executable.path}" failonerror="true">
|
|
<arg value="-script"/>
|
|
<arg value="${generators}/infrastructure/build-protobuf-lite.kts"/>
|
|
<arg value="${dependencies}/protobuf-${protobuf.version}.jar"/>
|
|
<arg value="${dependencies}/protobuf-${protobuf.version}-lite.jar"/>
|
|
</exec>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<macrodef name="execute_update_with_idea_maven_artifacts">
|
|
<attribute name="base.url"/>
|
|
<attribute name="idea.maven.version"/>
|
|
|
|
<sequential>
|
|
<get src="@{base.url}/BUILD/@{idea.maven.version}/BUILD-@{idea.maven.version}.txt" dest="${dependencies}/version.txt"/>
|
|
<loadfile property="execute.build.id" srcFile="${dependencies}/version.txt"/>
|
|
|
|
<condition property="idea.sdk.exists">
|
|
<available file="${idea.dir}/build.txt"/>
|
|
</condition>
|
|
|
|
<loadfile property="idea.sdk.version" srcFile="${idea.dir}/build.txt" if:set="idea.sdk.exists"/>
|
|
|
|
<condition property="edition.matched">
|
|
<equals arg1="${idea.sdk.version}" arg2="${sdk.version.prefix}-${execute.build.id}"/>
|
|
</condition>
|
|
|
|
<local name="idea.already.downloaded"/>
|
|
<condition property="idea.already.downloaded">
|
|
<and>
|
|
<equals arg1="${dependencies.info.prev.idea.build.id}" arg2="${execute.build.id}"/>
|
|
<istrue value="${edition.matched}"/>
|
|
</and>
|
|
</condition>
|
|
|
|
<echo message="IDEA build id: ${execute.build.id}. Already downloaded." if:set="idea.already.downloaded"/>
|
|
|
|
<sequential unless:set="idea.already.downloaded">
|
|
<echo message="IDEA build id: ${execute.build.id}, previous build id: ${dependencies.info.prev.idea.build.id}"/>
|
|
|
|
<delete dir="${idea.dir}" unless:set="edition.matched">
|
|
<exclude name="config-idea/**"/>
|
|
<exclude name="system-idea/**"/>
|
|
</delete>
|
|
|
|
<download_and_update_idea idea.maven.version="@{idea.maven.version}" base.repository.url="@{base.url}"/>
|
|
|
|
<propertyfile file="${dependencies.info.file}">
|
|
<entry key="idea.build.id" value="${execute.build.id}"/>
|
|
</propertyfile>
|
|
</sequential>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<macrodef name="execute_update_with_idea_teamcity_artifacts">
|
|
<attribute name="teamcity.server.url"/>
|
|
<attribute name="build.locator.request"/>
|
|
|
|
<sequential>
|
|
<loadresource property="execute.build.id">
|
|
<url url="@{teamcity.server.url}/guestAuth/app/rest/builds/?locator=@{build.locator.request},count:1"/>
|
|
<filterchain>
|
|
<tokenfilter>
|
|
<filetokenizer/>
|
|
<replaceregex pattern="^(.*)\sid="(\d+)"(.*)$" replace="\2" flags="s"/>
|
|
</tokenfilter>
|
|
</filterchain>
|
|
</loadresource>
|
|
|
|
<local name="idea.already.downloaded"/>
|
|
<condition property="idea.already.downloaded">
|
|
<equals arg1="${dependencies.info.prev.idea.build.id}" arg2="${execute.build.id}"/>
|
|
</condition>
|
|
|
|
<echo message="IDEA build id: ${execute.build.id}. Already downloaded." if:set="idea.already.downloaded"/>
|
|
|
|
<sequential unless:set="idea.already.downloaded">
|
|
<echo message="IDEA build id: ${execute.build.id}, previous build id: ${dependencies.info.prev.idea.build.id}"/>
|
|
<download_and_update_idea_teamcity base.url="@{teamcity.server.url}/guestAuth/app/rest/builds/id:${execute.build.id}"/>
|
|
|
|
<propertyfile file="${dependencies.info.file}">
|
|
<entry key="idea.build.id" value="${execute.build.id}"/>
|
|
</propertyfile>
|
|
</sequential>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<macrodef name="download_teamcity_artifact">
|
|
<attribute name="teamcity.server.url"/>
|
|
<attribute name="build.locator.request"/>
|
|
<attribute name="artifact.path"/>
|
|
<attribute name="dest"/>
|
|
<attribute name="usetimestamp"/>
|
|
<attribute name="build.number.pattern" default="[\w-+\.]+"/>
|
|
|
|
<sequential>
|
|
<local name="artifact.build.id"/>
|
|
|
|
<local name="build.request.url"/>
|
|
<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}"/>
|
|
|
|
<loadresource property="artifact.build.id">
|
|
<url url="${build.request.url}"/>
|
|
<filterchain>
|
|
<tokenfilter>
|
|
<filetokenizer/>
|
|
<replaceregex pattern="^(.*)\sid="(\d+)"(.*)$" replace="\2" flags="s"/>
|
|
</tokenfilter>
|
|
</filterchain>
|
|
</loadresource>
|
|
|
|
<local name="processed.artifact.path"/>
|
|
|
|
<local name="artifact.build.number"/>
|
|
<loadresource property="artifact.build.number">
|
|
<url url="${build.request.url}"/>
|
|
<filterchain>
|
|
<tokenfilter>
|
|
<filetokenizer/>
|
|
<replaceregex pattern="^(.*)\snumber="(@{build.number.pattern})"(.*)$" replace="\2" flags="s"/>
|
|
</tokenfilter>
|
|
</filterchain>
|
|
</loadresource>
|
|
|
|
<loadresource property="processed.artifact.path">
|
|
<string value="@{artifact.path}"/>
|
|
<filterchain>
|
|
<replacestring from="{build.number}" to="${artifact.build.number}"/>
|
|
</filterchain>
|
|
</loadresource>
|
|
|
|
<echo message="Build Number: ${artifact.build.number} Build Id: ${artifact.build.id}"/>
|
|
|
|
<get
|
|
src="@{teamcity.server.url}/guestAuth/app/rest/builds/id:${artifact.build.id}/artifacts/content/${processed.artifact.path}"
|
|
dest="@{dest}" usetimestamp="@{usetimestamp}"/>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<macrodef name="configure_idea_sdk_dir">
|
|
<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="jps" default="@{idea.dir}/jps"/>
|
|
<attribute name="jps-test" default="@{jps}/test"/>
|
|
<attribute name="sources" default="@{idea.dir}/sources"/>
|
|
|
|
<sequential>
|
|
<sequential if:true="@{idea.sdk.fetch.needed}">
|
|
<delete dir="@{idea.dir}" failonerror="false">
|
|
<exclude name="config-idea/**"/>
|
|
<exclude name="system-idea/**"/>
|
|
</delete>
|
|
|
|
<unzip src="@{download.file.archive.idea}" dest="@{idea.dir}" />
|
|
|
|
<sequential if:set="isMac">
|
|
<!-- Java can't manipulate permissions -->
|
|
<exec executable="chmod">
|
|
<arg value="a+x"/>
|
|
<arg path="@{idea.dir}/bin/mac/fsnotifier"/>
|
|
<arg path="@{idea.dir}/bin/inspect.sh"/>
|
|
<arg path="@{idea.dir}/bin/printenv.py"/>
|
|
<arg path="@{idea.dir}/bin/restarter"/>
|
|
</exec>
|
|
</sequential>
|
|
|
|
<sequential if:set="isLinux">
|
|
<!-- Java can't manipulate permissions -->
|
|
<exec executable="chmod">
|
|
<arg value="a+x"/>
|
|
<arg path="@{idea.dir}/bin/linux/fsnotifier"/>
|
|
<arg path="@{idea.dir}/bin/linux/fsnotifier64"/>
|
|
<arg path="@{idea.dir}/bin/inspect.sh"/>
|
|
<arg path="@{idea.dir}/bin/idea.sh"/>
|
|
</exec>
|
|
</sequential>
|
|
|
|
<!--
|
|
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"/>
|
|
|
|
<!--
|
|
Plugin depends on newer runtime and reflect jar from our bootstrap compiler.
|
|
Avoid depending on old runtime during build phase but attach original runtime when idea starts.
|
|
-->
|
|
<mkdir dir="@{idea.dir}/idea-kotlin-runtime"/>
|
|
<move file="@{idea.dir}/lib/kotlin-runtime.jar" todir="@{idea.dir}/idea-kotlin-runtime"/>
|
|
<move file="@{idea.dir}/lib/kotlin-reflect.jar" todir="@{idea.dir}/idea-kotlin-runtime"/>
|
|
|
|
<delete dir="@{idea.dir}/plugins/Kotlin"/>
|
|
|
|
<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-19.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.8.jar"/>
|
|
<file file="@{idea.dir}/lib/xpp3-1.1.4-min.jar"/>
|
|
<file file="@{idea.dir}/lib/asm-all.jar"/>
|
|
<file file="@{idea.dir}/lib/snappy-in-java-0.5.1.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-builders-6.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}/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.jar" overwrite="true" failonerror="false"/>
|
|
</sequential>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<macrodef name="download_and_update_idea">
|
|
<attribute name="idea.maven.version"/>
|
|
<attribute name="base.repository.url"/>
|
|
|
|
<attribute name="download.dir" default="${dependencies}/idea${ideaVersion}"/>
|
|
|
|
<sequential>
|
|
<delete dir="@{download.dir}"/>
|
|
<mkdir dir="@{download.dir}"/>
|
|
|
|
<property name="idea.id" value="idea${sdk.version.prefix}"/>
|
|
|
|
<get src="@{base.repository.url}/ideaIC/@{idea.maven.version}/ideaIC-@{idea.maven.version}-sources.jar"
|
|
dest="@{download.dir}/ideaIC-@{idea.maven.version}-sources.jar" usetimestamp="true" ignoreerrors="true"/>
|
|
|
|
<get src="@{base.repository.url}/${idea.id}/@{idea.maven.version}/${idea.id}-@{idea.maven.version}.zip"
|
|
dest="@{download.dir}/${idea.id}-@{idea.maven.version}.zip" usetimestamp="true"/>
|
|
|
|
<download_and_unzip
|
|
dir="@{download.dir}/intellij-core-@{idea.maven.version}"
|
|
url="@{base.repository.url}/intellij-core/@{idea.maven.version}/intellij-core-@{idea.maven.version}.zip"
|
|
usetimestamp="true"/>
|
|
|
|
<get src="@{base.repository.url}/jps-build-test/@{idea.maven.version}/jps-build-test-@{idea.maven.version}.jar"
|
|
dest="@{download.dir}/jps-build-test-@{idea.maven.version}.jar" usetimestamp="true"/>
|
|
|
|
<download_and_unzip
|
|
dir="@{download.dir}/jps-standalone-@{idea.maven.version}"
|
|
url="@{base.repository.url}/jps-standalone/@{idea.maven.version}/jps-standalone-@{idea.maven.version}.zip"
|
|
usetimestamp="true"/>
|
|
|
|
<configure_idea_sdk_dir
|
|
idea.dir="${idea.dir}"
|
|
idea.sdk.fetch.needed="${idea.sdk.fetch.needed}"
|
|
|
|
download.dir.intellij-core="@{download.dir}/intellij-core-@{idea.maven.version}"
|
|
download.dir.jps-standalone="@{download.dir}/jps-standalone-@{idea.maven.version}"
|
|
download.file.archive.idea="@{download.dir}/${idea.id}-@{idea.maven.version}.zip"
|
|
download.file.archive.sources="@{download.dir}/ideaIC-@{idea.maven.version}-sources.jar"
|
|
download.file.archive.jps-build-test="@{download.dir}/jps-build-test-@{idea.maven.version}.jar"/>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<macrodef name="download_and_update_idea_teamcity">
|
|
<attribute name="base.url"/>
|
|
|
|
<sequential>
|
|
<loadresource property="idea.build.number">
|
|
<url url="@{base.url}/artifacts/children"/>
|
|
<filterchain>
|
|
<tokenfilter>
|
|
<filetokenizer/>
|
|
|
|
<replaceregex pattern="^(.*)ideaIC-([\w\.]+)\.win\.zip(.*)$" replace="\2" flags="s"/>
|
|
</tokenfilter>
|
|
</filterchain>
|
|
</loadresource>
|
|
|
|
<property name="idea.archive.name" value="ideaIC-${idea.build.number}.zip"/>
|
|
|
|
<echo message="IDEA build number: ${idea.build.number}"/>
|
|
<echo message="IDEA archive file: ${idea.archive.name}"/>
|
|
|
|
<property name="content.base.url" value="@{base.url}/artifacts/content"/>
|
|
<property name="idea.download.dir" value="${dependencies}/idea" />
|
|
<property name="jps.extracted.dir" value="${idea.download.dir}/standalone-jps"/>
|
|
<property name="core.dir" value="${idea.download.dir}/core"/>
|
|
|
|
<sequential if:true="${idea.sdk.fetch.needed}">
|
|
<delete dir="${idea.download.dir}"/>
|
|
<mkdir dir="${idea.download.dir}"/>
|
|
|
|
<get src="${content.base.url}/jps/standalone-jps-IC-${idea.build.number}.zip"
|
|
dest="${idea.download.dir}/standalone-jps.zip"/>
|
|
<unzip src="${idea.download.dir}/standalone-jps.zip"
|
|
dest="${jps.extracted.dir}"/>
|
|
|
|
<delete file="${idea.download.dir}/${idea.archive.name}" failonerror="false"/>
|
|
<get src="${content.base.url}/${idea.archive.name}"
|
|
dest="${idea.download.dir}/${idea.archive.name}"/>
|
|
|
|
<get src="${content.base.url}/jps/jps-build-test-IC-${idea.build.number}.jar"
|
|
dest="${idea.download.dir}/jps-build-test.jar"
|
|
usetimestamp="true"/>
|
|
|
|
<mkdir dir="${core.dir}"/>
|
|
<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-19.0.jar" dest="${core.dir}/guava-19.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="${idea.download.dir}/idea-sdk-sources.jar" failonerror="false"/>
|
|
<get src="${content.base.url}/sources.zip" dest="${idea.download.dir}/idea-sdk-sources.jar"/>
|
|
</sequential>
|
|
|
|
<configure_idea_sdk_dir
|
|
idea.dir="${idea.dir}"
|
|
idea.sdk.fetch.needed="${idea.sdk.fetch.needed}"
|
|
|
|
download.dir.intellij-core="${core.dir}"
|
|
download.dir.jps-standalone="${jps.extracted.dir}"
|
|
download.file.archive.idea="${idea.download.dir}/${idea.archive.name}"
|
|
download.file.archive.sources="${idea.download.dir}/idea-sdk-sources.jar"
|
|
download.file.archive.jps-build-test="${idea.download.dir}/jps-build-test.jar"/>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<macrodef name="download_and_unzip">
|
|
<attribute name="url"/>
|
|
<attribute name="dir"/>
|
|
<attribute name="usetimestamp"/>
|
|
|
|
<sequential>
|
|
<get src="@{url}" dest="@{dir}.zip" usetimestamp="@{usetimestamp}"/>
|
|
|
|
<local name="need.unpack"/>
|
|
<condition property="need.unpack">
|
|
<not>
|
|
<available file="@{dir}" type="dir"/>
|
|
</not>
|
|
</condition>
|
|
|
|
<unzip src="@{dir}.zip" dest="@{dir}" if:set="need.unpack"/>
|
|
<echo message="Folder exist - so not unpacked @{dir}" unless:set="need.unpack"/>
|
|
</sequential>
|
|
</macrodef>
|
|
|
|
<!--
|
|
Currently we use empty annotations.
|
|
Future options are:
|
|
- Drop the target when will be sure that custom annotations are unneeded
|
|
- Fill the target with downloading correct annotations
|
|
-->
|
|
<target name="fetch-annotations"/>
|
|
|
|
<target name="get_android_studio">
|
|
<condition property="android.os.tag" value="windows">
|
|
<os family="windows"/>
|
|
</condition>
|
|
|
|
<condition property="android.os.tag" value="mac">
|
|
<os family="mac"/>
|
|
</condition>
|
|
|
|
<condition property="android.os.tag" value="linux">
|
|
<and>
|
|
<os family="unix"/>
|
|
<not>
|
|
<os family="mac"/>
|
|
</not>
|
|
</and>
|
|
</condition>
|
|
|
|
<local name="have.android.version"/>
|
|
<condition property="have.android.version">
|
|
<and>
|
|
<isset property="android.version"/>
|
|
<isset property="android.build.version"/>
|
|
</and>
|
|
</condition>
|
|
|
|
<sequential unless:set="have.android.version">
|
|
<loadresource property="android.version">
|
|
<url url="http://tools.android.com/download/studio/canary/latest"/>
|
|
<filterchain>
|
|
<tokenfilter>
|
|
<filetokenizer/>
|
|
<replaceregex
|
|
pattern="^(.*)https?://dl\.google\.com/dl/android/studio/ide-zips/([\d\.]+)/android-studio-ide(.*)$"
|
|
replace="\2" flags="s"/>
|
|
</tokenfilter>
|
|
</filterchain>
|
|
</loadresource>
|
|
<loadresource property="android.build.version">
|
|
<url url="http://tools.android.com/download/studio/canary/latest"/>
|
|
<filterchain>
|
|
<tokenfilter>
|
|
<filetokenizer/>
|
|
<replaceregex
|
|
pattern="^(.*)https?://dl\.google\.com/dl/android/studio/ide-zips/[\d\.]+/android-studio-ide-([\d\.]+)-(.*)$"
|
|
replace="\2" flags="s"/>
|
|
</tokenfilter>
|
|
</filterchain>
|
|
</loadresource>
|
|
</sequential>
|
|
|
|
<echo message="Download android studio: ${android.version} ${android.build.version}"/>
|
|
|
|
<property name="android.file.name" value="android-studio-ide-${android.build.version}-${android.os.tag}.zip"/>
|
|
<property name="android.studio.url"
|
|
value="http://dl.google.com/dl/android/studio/ide-zips/${android.version}/${android.file.name}"/>
|
|
<property name="android.destination.dir" value="android-studio/sdk"/>
|
|
|
|
<mkdir dir="${dependencies}/download"/>
|
|
|
|
<get src="${android.studio.url}" dest="${dependencies}/download" usetimestamp="true"/>
|
|
|
|
<delete dir="${android.destination.dir}" failonerror="false" includeemptydirs="true">
|
|
<exclude name="config/**"/>
|
|
<exclude name="system/**"/>
|
|
</delete>
|
|
|
|
<unzip src="${dependencies}/download/${android.file.name}" dest="${android.destination.dir}">
|
|
<cutdirsmapper dirs="1"/>
|
|
</unzip>
|
|
|
|
<local name="android.studio.mac"/>
|
|
<condition property="android.studio.mac">
|
|
<matches pattern=".+mac\.zip" string="${android.file.name}"/>
|
|
</condition>
|
|
|
|
<local name="android.studio.linux"/>
|
|
<condition property="android.studio.linux">
|
|
<matches pattern=".+linux\.zip" string="${android.file.name}"/>
|
|
</condition>
|
|
|
|
<exec executable="chmod" if:set="android.studio.mac">
|
|
<arg value="a+x"/>
|
|
<arg path="${android.destination.dir}/bin/fsnotifier"/>
|
|
<arg path="${android.destination.dir}/bin/inspect.sh"/>
|
|
<arg path="${android.destination.dir}/bin/printenv.py"/>
|
|
<arg path="${android.destination.dir}/bin/update_studio.sh"/>
|
|
</exec>
|
|
|
|
<exec executable="chmod" if:set="android.studio.linux">
|
|
<arg value="a+x"/>
|
|
<arg path="${android.destination.dir}/bin/fsnotifier"/>
|
|
<arg path="${android.destination.dir}/bin/fsnotifier64"/>
|
|
<arg path="${android.destination.dir}/bin/inspect.sh"/>
|
|
<arg path="${android.destination.dir}/bin/studio.sh"/>
|
|
<arg path="${android.destination.dir}/bin/update_studio.sh"/>
|
|
</exec>
|
|
</target>
|
|
|
|
<target name="override-version">
|
|
<condition property="need.version.override">
|
|
<and>
|
|
<isset property="override.version.url"/>
|
|
<equals arg1="${override.version.branch}" arg2="${teamcity.build.branch}"/>
|
|
<not>
|
|
<isset property="override.version.disabled"/>
|
|
</not>
|
|
<not>
|
|
<istrue value="${bootstrap.build.no.tests}"/>
|
|
</not>
|
|
<isset property="teamcity.version"/>
|
|
</and>
|
|
</condition>
|
|
|
|
<sequential if:set="need.version.override">
|
|
<local name="override.version.build.number"/>
|
|
<loadresource property="override.version.build.number">
|
|
<url url="${override.version.url}"/>
|
|
<filterchain>
|
|
<tokenfilter>
|
|
<filetokenizer/>
|
|
<replaceregex pattern="^(.*)\snumber="([\w-+\.]+)"(.*)$" replace="\2" flags="s"/>
|
|
</tokenfilter>
|
|
</filterchain>
|
|
</loadresource>
|
|
|
|
<echo message="URL: ${override.version.url} Version: ${override.version.build.number}"/>
|
|
|
|
<exec executable="${dependencies}/bootstrap-compiler/Kotlin/kotlinc/bin/${kotlinc.executable.path}" failonerror="false">
|
|
<arg value="-cp"/>
|
|
<arg value="${dependencies}/bootstrap-compiler/Kotlin/kotlinc/lib/kotlin-compiler.jar"/>
|
|
<arg value="-script"/>
|
|
<arg value="${generators}/infrastructure/increment-version.kts"/>
|
|
<arg value="${override.version.build.number}"/>
|
|
<arg value="${dependencies}/updated-version.txt"/>
|
|
</exec>
|
|
|
|
<loadfile property="updated.version.number" srcFile="${dependencies}/updated-version.txt"/>
|
|
|
|
<echo message="##teamcity[buildNumber '${updated.version.number}']"/>
|
|
</sequential>
|
|
</target>
|
|
</project>
|