build.xml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. <project name="build installers" default="build" basedir=".">
  2. <property file="${basedir}/build.properties"/>
  3. <property file="${basedir}/custom.properties"/>
  4. <target name="build" depends="init,-build,-generate-bundles,post-build"/>
  5. <target name="init" depends="-clean,-checkout,-init,-init-properties,-post-init-clean"/>
  6. <target name="-clean-cvs" unless="no.checkout">
  7. <delete dir="${nbi.all.dir}"/>
  8. </target>
  9. <target name="-clean" depends="-clean-cvs" unless="no.clean">
  10. <delete dir="${output.dir}"/>
  11. <delete dir="${nbi.ext.dir}/products/helloworld/build"/>
  12. <delete dir="${nbi.ext.dir}/products/helloworld/dist"/>
  13. <!--normen-->
  14. <delete dir="${nbi.ext.dir}/products/jdk/build"/>
  15. <delete dir="${nbi.ext.dir}/products/jdk/dist"/>
  16. <delete dir="${nbi.ext.dir}/products/blender-osx/build"/>
  17. <delete dir="${nbi.ext.dir}/products/blender-osx/dist"/>
  18. <delete dir="${nbi.ext.dir}/products/blender-win32/build"/>
  19. <delete dir="${nbi.ext.dir}/products/blender-win32/dist"/>
  20. <delete dir="${nbi.ext.dir}/products/blender-win64/build"/>
  21. <delete dir="${nbi.ext.dir}/products/blender-win64/dist"/>
  22. <delete dir="${nbi.ext.dir}/products/blender-linux64/build"/>
  23. <delete dir="${nbi.ext.dir}/products/blender-linux64/dist"/>
  24. <delete dir="${nbi.ext.dir}/engine/build"/>
  25. <delete dir="${nbi.ext.dir}/engine/dist"/>
  26. <!--<delete dir="${basedir}/cache"/>-->
  27. </target>
  28. <target name="post-build">
  29. <delete dir="${output.dir}/registry-temp"/>
  30. </target>
  31. <target name="-checkout">
  32. <copy todir="${nbi.all.dir}/.common">
  33. <fileset dir="${basedir}/.common"/>
  34. </copy>
  35. <copy todir="${nbi.ext.dir}">
  36. <fileset dir="${basedir}/ext">
  37. </fileset>
  38. </copy>
  39. </target>
  40. <target name="-init">
  41. <taskdef
  42. name="if"
  43. classpath="${custom.tasks.cls}"
  44. classname="org.netbeans.installer.infra.build.ant.If"/>
  45. <taskdef
  46. name="for-each"
  47. classpath="${custom.tasks.cls}"
  48. classname="org.netbeans.installer.infra.build.ant.ForEach"/>
  49. <taskdef
  50. name="set"
  51. classpath="${custom.tasks.cls}"
  52. classname="org.netbeans.installer.infra.build.ant.SetProperty"/>
  53. <taskdef
  54. name="create-bundle"
  55. classpath="${custom.tasks.cls}"
  56. classname="org.netbeans.installer.infra.build.ant.registries.CreateBundle"/>
  57. <delete file="${temp.file}"/>
  58. </target>
  59. <target name="-init-properties">
  60. <echo file="${nbi.all.dir}/environment.tmp" encoding="utf-8">
  61. checkout.sources=false
  62. sources.dir=${nbi.all.dir}
  63. cvs.module=ext
  64. release.to.server=false
  65. release.registry.dir=${output.dir}/registry-temp
  66. dont.build.custom.tasks=true
  67. custom.tasks.cls=${custom.tasks.cls}
  68. build.engine=false
  69. engine.dist.file.name=nbi-engine.jar
  70. engine.dist.file=${nbi.core.dir}/infra/build/engine/dist/nbi-engine.jar
  71. packaged.data.dir=${basedir}/cache/packaged
  72. downloads.cache.dir=${basedir}/cache/raw
  73. jarsigner.enabled=${jarsigner.enabled}
  74. </echo>
  75. <replace file="${nbi.all.dir}/environment.tmp" token="\" value="/" encoding="utf-8"/>
  76. <native2ascii src="${nbi.all.dir}" dest="${nbi.all.dir}" encoding="utf-8" includes="environment.tmp" ext=".properties"/>
  77. </target>
  78. <target name="-post-init-clean">
  79. <delete dir="${basedir}/cache/raw"/>
  80. </target>
  81. <target name="-build">
  82. <delete dir="${output.dir}"/>
  83. <mkdir dir="${output.dir}"/>
  84. <mkdir dir="${bundles.release.dir}"/>
  85. <mkdir dir="${output.dir}/components"/>
  86. <property name="engine.dist.file.name" value="nbi-engine.jar"/>
  87. <echo message="BUILDING HELLOWORLD EXT ENGINE =================================="/>
  88. <ant dir="${nbi.ext.dir}/infra/build/engine" target="release-all">
  89. <property
  90. name="basedir"
  91. value="${nbi.ext.dir}/infra/build/engine"/>
  92. <property
  93. name="environment.properties"
  94. value="${environment.properties}"/>
  95. <property
  96. name="core.engine.dist.file"
  97. value="${nbi.engine.jar}"/>
  98. </ant>
  99. <echo message="BUILDING HELLOWORLD PRODUCT =================================="/>
  100. <ant dir="${nbi.ext.dir}/infra/build/products/helloworld" target="release-all">
  101. <property
  102. name="basedir"
  103. value="${nbi.ext.dir}/infra/build/products/helloworld"/>
  104. <property
  105. name="environment.properties"
  106. value="${environment.properties}"/>
  107. <property
  108. name="dist.dir"
  109. value="${output.dir}/components"/>
  110. <property
  111. name="release.parent.uid"
  112. value=""/>
  113. <property
  114. name="release.parent.version"
  115. value=""/>
  116. <property
  117. name="release.parent.platforms"
  118. value=""/>
  119. <property
  120. name="engine.dist.file"
  121. value="${output.dir}/registry-temp/engine.jar"/>
  122. </ant>
  123. <!--normen-->
  124. <for-each property="platform" list="${target.platforms}" separator=" ">
  125. <if property="platform" value="macosx">
  126. <echo message="BUILDING MAC JDK PRODUCT =================================="/>
  127. <ant dir="${nbi.ext.dir}/infra/build/products/jdk" target="release-all">
  128. <property name="basedir" value="${nbi.ext.dir}/infra/build/products/jdk"/>
  129. <property name="environment.properties" value="${environment.properties}"/>
  130. <property name="dist.dir" value="${output.dir}/components"/>
  131. <property name="release.parent.uid" value=""/>
  132. <property name="release.parent.version" value=""/>
  133. <property name="release.parent.platforms" value=""/>
  134. <property name="engine.dist.file" value="${output.dir}/registry-temp/engine.jar"/>
  135. </ant>
  136. </if>
  137. </for-each>
  138. <!--normen-build blender for platforms-->
  139. <for-each property="platform" list="${target.platforms}" separator=" ">
  140. <echo message="BUILDING BLENDER ${platform} PRODUCT =================================="/>
  141. <ant dir="${nbi.ext.dir}/infra/build/products/blender-${platform}" target="release-all">
  142. <property name="basedir" value="${nbi.ext.dir}/infra/build/products/blender-${platform}"/>
  143. <property name="environment.properties" value="${environment.properties}"/>
  144. <property name="dist.dir" value="${output.dir}/components"/>
  145. <property name="release.parent.uid" value=""/>
  146. <property name="release.parent.version" value=""/>
  147. <property name="release.parent.platforms" value=""/>
  148. <property name="engine.dist.file" value="${output.dir}/registry-temp/engine.jar"/>
  149. </ant>
  150. </for-each>
  151. </target>
  152. <target name="-generate-bundles">
  153. <for-each property="platform" list="${target.platforms}" separator=" ">
  154. <condition property="bundle.extention.${platform}" value="exe">
  155. <contains string="${platform}" substring="windows"/>
  156. </condition>
  157. <condition property="bundle.extention.${platform}" value="sh">
  158. <or>
  159. <contains string="${platform}" substring="linux"/>
  160. <contains string="${platform}" substring="solaris"/>
  161. </or>
  162. </condition>
  163. <condition property="bundle.extention.${platform}" value="zip">
  164. <contains string="${platform}" substring="macosx"/>
  165. </condition>
  166. <set property="bundle.extention" source="bundle.extention.${platform}"/>
  167. <!--normen-->
  168. <!-- Linux installers -->
  169. <if property="platform" value="linux-x64">
  170. <create-bundle root="${output.dir}/registry-temp" platform="${platform}"
  171. target="${bundles.release.dir}/${bundle.files.prefix}-${platform}.${bundle.extention}">
  172. <component uid="${main.product.uid}" version="${main.product.version}"/>
  173. <component uid="blender" version="${main.product.version}"/>
  174. <property name="nbi.bundled.jvm.file" value="${basedir}/../../jdks/jdk-${platform}.bin"/>
  175. </create-bundle>
  176. </if>
  177. <!-- Windows installers -->
  178. <if property="platform" value="windows-x86">
  179. <create-bundle root="${output.dir}/registry-temp" platform="${platform}"
  180. target="${bundles.release.dir}/${bundle.files.prefix}-${platform}.${bundle.extention}">
  181. <component uid="${main.product.uid}" version="${main.product.version}"/>
  182. <component uid="blender" version="${main.product.version}"/>
  183. <property name="nbi.bundled.jvm.file" value="${basedir}/../../jdks/jdk-${platform}.exe"/>
  184. </create-bundle>
  185. </if>
  186. <if property="platform" value="windows-x64">
  187. <create-bundle root="${output.dir}/registry-temp" platform="${platform}"
  188. target="${bundles.release.dir}/${bundle.files.prefix}-${platform}.${bundle.extention}">
  189. <component uid="${main.product.uid}" version="${main.product.version}"/>
  190. <component uid="blender" version="${main.product.version}"/>
  191. <property name="nbi.bundled.jvm.file" value="${basedir}/../../jdks/jdk-${platform}.exe"/>
  192. </create-bundle>
  193. </if>
  194. <!-- Mac installer -->
  195. <if property="platform" value="macosx">
  196. <create-bundle root="${output.dir}/registry-temp" platform="${platform}"
  197. target="${bundles.release.dir}/${bundle.files.prefix}-${platform}.${bundle.extention}">
  198. <component uid="${main.product.uid}" version="${main.product.version}"/>
  199. <component uid="blender" version="${main.product.version}"/>
  200. <component uid="jdk" version="${main.product.version}"/>
  201. <!--property name="nbi.bundled.jvm.file" value="${basedir}/../../jdks/mac_jdk.bin"/-->
  202. </create-bundle>
  203. </if>
  204. <if property="bundle.extention" value="zip">
  205. <antcall target="zip-to-tgz">
  206. <param name="input.file" value="${bundles.release.dir}/${bundle.files.prefix}-${platform}.zip"/>
  207. <param name="output.file" value="${bundles.release.dir}/${bundle.files.prefix}-${platform}.tgz"/>
  208. </antcall>
  209. <delete file="${bundles.release.dir}/${bundle.files.prefix}-${platform}.zip"/>
  210. </if>
  211. </for-each>
  212. <echo>Installer(s) for [${target.platforms}] are available at ${bundles.release.dir}</echo>
  213. </target>
  214. <target name="zip-to-tgz">
  215. <set property="tar.tmpdir"
  216. value="${bundles.release.dir}/tempdir"/>
  217. <mkdir dir="${tar.tmpdir}"/>
  218. <unzip
  219. src="${input.file}"
  220. dest="${tar.tmpdir}"/>
  221. <tar tarfile="${output.file}"
  222. compression="gzip">
  223. <tarfileset dir="${tar.tmpdir}" mode="644">
  224. <include name="**/*.*"/>
  225. <exclude name="**/executable"/>
  226. </tarfileset>
  227. <tarfileset dir="${tar.tmpdir}" mode="755">
  228. <include name="**/executable"/>
  229. </tarfileset>
  230. </tar>
  231. <delete dir="${tar.tmpdir}"/>
  232. </target>
  233. </project>