build.xml
author Jiri Rechtacek <jrechtacek@netbeans.org>
Tue, 09 Oct 2012 20:24:15 +0200
branchbroken_builds_release701
changeset 297 9c273eaeb653
parent 289 0deb4af6b395
permissions -rw-r--r--
Closing branch to prepare for merge.
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!-- You may freely edit this file. See harness/README in the NetBeans platform -->
     3 <!-- for some information on what you could do (e.g. targets to override). -->
     4 <!-- If you delete this file and reopen the project it will be recreated. -->
     5 <project name="plsql support" basedir="." default="netbeans">
     6     <description>Builds the module suite plsql support.</description>
     7     
     8     <property file="nbproject/private/platform-private.properties"/>
     9     <property file="build.properties"/>
    10     <property file="nbproject/platform.properties"/>
    11     
    12     <property name="use.timestamp" value="true"/>
    13     <property name="timestamp.file" value=".lastModified"/>
    14     
    15     <property environment="env"/>
    16     <condition property="build.id" value="${env.BUILD_ID}" else="dev">
    17         <isset property="env.BUILD_ID"/>
    18     </condition>
    19     
    20     <target name="calculate-netbeans-url" unless="skip.calculation">
    21         <get src="${netbeans.base.url}" dest="netbeans.html" usetimestamp="${use.timestamp}" verbose="true" ignoreerrors="${offline}"/>
    22         <loadfile srcfile="netbeans.html" property="netbeans.binaries.url">
    23             <filterchain>
    24                 <tokenfilter>
    25                     <containsregex pattern=".*href=&quot;(netbeans-[a-z0-9-.]*javaee\.zip)&quot;.*" replace="${netbeans.base.url}/\1" flags="im"/>
    26                 </tokenfilter>
    27             </filterchain>
    28         </loadfile>
    29     </target>
    30 
    31     <target name="download-binaries" depends="calculate-netbeans-url" unless="skip.download">
    32         <parallel>
    33             <get src="${netbeans.binaries.url}" dest="netbeans.zip" usetimestamp="${use.timestamp}" verbose="false" ignoreerrors="${offline}"/>
    34         </parallel>
    35      </target>
    36      
    37      <target name="check-binaries">
    38         <condition property="binaries.uptodate">
    39             <and>
    40                 <uptodate targetfile="${timestamp.file}">
    41                     <srcfiles dir="." includes="*.zip"/>
    42                 </uptodate>
    43                 <available file="ide" type="dir"/>
    44             </and>            
    45         </condition>
    46      </target>     
    47 
    48      <target name="unzip-binaries" unless="binaries.uptodate">
    49         <echo message="New binaries downloaded - re-installing."/>
    50         <delete dir="ide"/>
    51         <unzip src="netbeans.zip" dest="ide"/>
    52         <touch file="${timestamp.file}"/>        
    53     </target>
    54     
    55     <target name="update-binaries" depends="download-binaries,check-binaries,unzip-binaries"/>
    56     
    57     <target name="check-harness">
    58         <echo>nbplatform.default.netbeans.dest.dir resolved to ${nbplatform.default.netbeans.dest.dir}</echo>
    59         <echo>nbplatform.default.harness.dir resolved to ${nbplatform.default.harness.dir}</echo>
    60         <fail message="Harness is missing. Specify nbplatform.default.netbeans.dest.dir={path-to-your-sources-root}/ide/netbeans in nbproject/private/platform-private.properties">
    61             <condition>
    62                 <not>
    63                     <available file="${nbplatform.default.harness.dir}" type="dir"/>
    64                 </not>
    65             </condition>
    66         </fail>
    67     </target>
    68     
    69     <target name="build-suite" depends="check-harness">
    70         <ant antfile="build-suite.xml" target="build" inheritAll="false"/>
    71     </target>
    72     
    73     <target name="printinfo">
    74       <property environment="env" />
    75       <echo message="${env.BUILD_TAG}"/>
    76       <echo message="${env.JAVA_HOME}"/>
    77     </target>
    78     
    79     <target name="netbeans" depends="update-binaries,build-suite"/>
    80     <target name="build" depends="netbeans"/>
    81     
    82     <target name="clean">
    83         <ant antfile="build-suite.xml" target="clean" inheritAll="false"/>
    84         <delete dir="ide"/>
    85     </target>
    86     
    87     <target name="real-clean" depends="clean">
    88         <echo message="Cleaning netbeans IDE"/>
    89         <delete dir="build"/>
    90         <delete dir="dist"/>
    91         <delete dir="ide"/>
    92         <delete>
    93             <fileset dir="." includes="*.zip"/>
    94         </delete>
    95         <delete>
    96             <fileset dir="." includes="*.html"/>
    97         </delete>
    98         <delete file="${timestamp.file}"/>
    99     </target>
   100 
   101     <target name="nbms" depends="update-binaries">
   102         <ant antfile="build-suite.xml" target="nbms" inheritAll="false"/>
   103     </target>
   104     
   105     <target name="daily" depends="update-binaries,build">
   106         <mkdir dir="dist"/>
   107         <zip destfile="dist/netbeans-701-${build.id}-plsql.zip" duplicate="add">
   108             <zipfileset dir="build/cluster" prefix="netbeans/extra"/>
   109             <zipfileset dir="ide/netbeans" prefix="netbeans"/>
   110         </zip>
   111     </target>
   112 
   113    <property name="ant.contrib.jar" value="${basedir}/Libraries/ThirdParty/ant/ant-contrib-1.0b3.jar" />
   114    <taskdef resource="net/sf/antcontrib/antcontrib.properties">
   115       <classpath>
   116          <pathelement location="${ant.contrib.jar}"/>
   117       </classpath>
   118    </taskdef>
   119 
   120    <path id="manifest.file.paths">
   121       <fileset dir="${basedir}">
   122          <include name="**/manifest.mf"/>
   123 <!--            <exclude name="**/Libraries/ThirdParty/**"/>-->
   124       </fileset>
   125    </path>
   126 
   127    <target name="-find-modules-for-update" description="find all modules in suite that has changes since last release" >
   128       <loadproperties srcfile="nbproject/project.properties" />
   129       <mkdir dir="build"/>
   130       <delete file="build/nbms_update.properties" />
   131 
   132       <echo level="verbose">${modules}</echo>
   133 
   134       <foreach param="module.path" target="-vcs-log" list="${modules}" delimiter=":"/>
   135       <propertyfile  file="build/nbms_update.properties">
   136          <entry key="selected.modules" default="" operation="+" value="plsql-support.kit/manifest.mf:"/>
   137       </propertyfile>
   138 <!--        <echoproperties srcfile="build/nbms_update.properties" />-->
   139    </target>
   140 
   141    <target name="-vcs-log" description="use mercurial to check if the last commit was a release commit">
   142       <echo level="info">module.path: ${module.path}</echo>
   143 
   144         <!-- find out revision number of HEAD, need svn.exe installed on local machine -->
   145       <exec executable="hg" outputproperty="hglog.out" >
   146          <arg line="log -l 1 --style compact '${module.path}'"/>
   147       </exec>
   148       <echo level="verbose">${hglog.out}</echo>
   149 
   150       <echo level="verbose">${force.increment}</echo>
   151       <condition property="nbm.update.needed">
   152          <or>
   153             <not>
   154                <contains string="${hglog.out}" substring="automated commit from "/>
   155             </not>
   156             <istrue value="${force.increment}" />
   157          </or>
   158       </condition>
   159       <echo level="verbose">nbm.update.needed=${nbm.update.needed}</echo>
   160       <antcall target="-concat-modules"  inheritall="true" />
   161    </target>
   162 
   163    <target name="-concat-modules" if="nbm.update.needed" description="Concatinate the selected module paths and put in .properties file">
   164       <echo>Module needs to be updated: ${nbm.update.needed}</echo>
   165       <echo level="info">module.path: ${module.path}</echo>
   166       <propertyfile  file="build/nbms_update.properties">
   167          <entry key="selected.modules" default="" operation="+" value="${module.path}/manifest.mf:"/>
   168       </propertyfile>
   169    </target>
   170 
   171    <target name="show-current-versions" description="show current specification versions for all modules">
   172       <foreach param="manifest.file" target="current-version" >
   173          <path refid="manifest.file.paths"/>
   174       </foreach>
   175    </target>
   176 
   177    <target name="current-version" depends="-read-version" description="show current specification.version">
   178    </target>
   179 
   180    <target name="incr-major" description="increment major version for modules with changes" depends="-find-modules-for-update">
   181       <loadproperties srcfile="build/nbms_update.properties" />
   182       <echo>selected.modules=${selected.modules}</echo>
   183       <foreach param="manifest.file" target="-major" >
   184          <path path="${selected.modules}"/>
   185       </foreach>
   186       <delete file="build_info.properties" />
   187    </target>
   188 
   189    <target name="incr-minor" description="increment minor version for modules with changes" depends="-find-modules-for-update">
   190       <loadproperties srcfile="build/nbms_update.properties" />
   191       <echo>selected.modules=${selected.modules}</echo>
   192       <foreach param="manifest.file" target="-minor" >
   193          <path path="${selected.modules}"/>
   194       </foreach>
   195       <delete file="build_info.properties" />
   196    </target>
   197 
   198    <target name="incr-revision" description="increment revision version for modules with changes" depends="-find-modules-for-update">
   199       <loadproperties srcfile="build/nbms_update.properties" />
   200       <echo>selected.modules=${selected.modules}</echo>
   201       <foreach param="manifest.file" target="-revision" >
   202          <path path="${selected.modules}"/>
   203       </foreach>
   204       <delete file="build_info.properties" />
   205    </target>
   206 
   207    <target name="-read-version">
   208       <echo level="verbose">manifest.file: ${manifest.file}</echo>
   209       <property file="${manifest.file}"></property>
   210       <property name="specification.version" value="${OpenIDE-Module-Specification-Version}"/>
   211       <echo>OpenIDE-Module: ${OpenIDE-Module}</echo>
   212       <echo>Current build number:${specification.version}</echo>
   213       <propertyregex property="major.version" input="${specification.version}"  regexp="(\d+)\.(\d+)\.(\d+)$" select="\1" />
   214       <echo level="verbose">major: ${major.version}</echo>
   215       <propertyregex property="minor.version" input="${specification.version}"  regexp="(\d+)\.(\d+)\.(\d+)$" select="\2" />
   216       <echo level="verbose">minor: ${minor.version}</echo>
   217       <propertyregex property="revision.version" input="${specification.version}"  regexp="(\d+)\.(\d+)\.(\d+)$" select="\3" />
   218       <echo level="verbose">revision: ${revision.version}</echo>
   219       <propertyfile file="build_info.properties">
   220          <entry key="build.major.number" type="int" value="${major.version}" />
   221          <entry key="build.minor.number" type="int" value="${minor.version}" />
   222          <entry key="build.revision.number" type="int" value="${revision.version}" />
   223       </propertyfile>
   224    </target>
   225 
   226    <target name="-revision" depends="-read-version">
   227       <propertyfile  file="build_info.properties">
   228          <entry key="build.revision.number" type="int" operation="+" value="1"/>
   229       </propertyfile>
   230 
   231       <loadproperties srcfile="build_info.properties" />
   232       <manifest file="${manifest.file}" mode="update">
   233          <attribute name="OpenIDE-Module-Specification-Version" value="${build.major.number}.${build.minor.number}.${build.revision.number}" />
   234       </manifest>
   235       <replaceregexp match="(dependency\D*code-name-base\W${OpenIDE-Module}\W/\D*)(\d+\.\d+\.\d+)" byline="false"
   236       file="plsql-support.kit/nbproject/project.xml" replace="\1${build.major.number}.${build.minor.number}.${build.revision.number}"/>
   237    </target>
   238 
   239    <target name="-minor" depends="-read-version">
   240       <propertyfile  file="build_info.properties">
   241          <entry key="build.minor.number" type="int" operation="+" value="1" />
   242          <entry key="build.revision.number" type="int" value="0" />
   243       </propertyfile>
   244       <loadproperties srcfile="build_info.properties" />
   245 
   246       <manifest file="${manifest.file}" mode="update">
   247          <attribute name="OpenIDE-Module-Specification-Version" value="${build.major.number}.${build.minor.number}.${build.revision.number}" />
   248       </manifest>
   249       <replaceregexp match="(dependency\D*code-name-base\W${OpenIDE-Module}\W/\D*)(\d+\.\d+\.\d+)" byline="false"
   250       file="plsql-support.kit/nbproject/project.xml" replace="\1${build.major.number}.${build.minor.number}.${build.revision.number}"/>
   251    </target>
   252 
   253    <target name="-major" depends="-read-version">
   254       <propertyfile  file="build_info.properties">
   255          <entry key="build.major.number" type="int" operation="+" value="1" />
   256          <entry key="build.minor.number" type="int" value="0" />
   257          <entry key="build.revision.number" type="int" value="0" />
   258       </propertyfile>
   259       <!--<echoproperties srcfile="build_info.properties" />-->
   260       <loadproperties srcfile="build_info.properties" />
   261 
   262       <manifest file="${manifest.file}" mode="update" >
   263          <attribute name="OpenIDE-Module-Specification-Version" value="${build.major.number}.${build.minor.number}.${build.revision.number}" />
   264       </manifest>
   265       <replaceregexp match="(dependency\D*code-name-base\W${OpenIDE-Module}\W/\D*)(\d+\.\d+\.\d+)" byline="false"
   266       file="plsql-support.kit/nbproject/project.xml" replace="\1${build.major.number}.${build.minor.number}.${build.revision.number}"/>
   267    </target>
   268 
   269    <target name="all">
   270       <propertyfile  file="build_info.properties">
   271          <entry key="build.major.number" type="int" operation="+" value="1" />
   272          <entry key="build.minor.number" type="int" operation="+" value="1" />
   273          <entry key="build.revision.number" type="int" operation="+" value="1" />
   274       </propertyfile>
   275    </target>
   276 
   277    <target name="echo-manifest" description="echo kit version that is found in manifest. Used by hudson" >
   278       <echoproperties srcfile="plsql-support.kit/manifest.mf"/>
   279    </target>
   280 
   281 </project>