| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| |
| --> |
| <project name="nbbuild" default="all" basedir="."> |
| |
| <import file="default.xml"/> |
| |
| <!-- To make people happy who want to do `ant clean all': --> |
| <target name="all" depends="build,commit-validation" description="Build the IDE and run basic validation tests."/> |
| |
| <target name="all-nozip" depends="build-nozip,commit-validation" description="Build the IDE (no ZIP file, unpacked) and run basic validation tests."/> |
| |
| <target name="assure-ant"> |
| <condition property="ant.version.is.good"> |
| <!-- this is in 1.6.3 only --> |
| <!-- actually needed for 'executable' attr on <javadoc>, at least --> |
| <available classname="org.apache.tools.ant.types.mappers.FilterMapper"/> |
| </condition> |
| <fail unless="ant.version.is.good"> |
| You need to have ant 1.6.3 at least to build NetBeans. |
| </fail> |
| </target> |
| |
| <target name="bootstrap" |
| description="Bootstrap NetBeans-specific Ant extensions." |
| depends="-jdk-init,-assure-jdk-1.4,assure-ant"> |
| <echo message="Bootstrapping NetBeans-specific Ant extensions..." |
| /> |
| <property name="ant.jar" value="${ant.home}/lib/ant.jar"/> |
| <path id="bootstrap-cp"> |
| <pathelement location="${ant.jar}"/> |
| <fileset dir=".."> |
| <!-- For JavaHelp indexing: --> |
| <include name="nbbuild/external/jhall*.jar"/> |
| </fileset> |
| </path> |
| <!-- Sanity check: --> |
| <pathconvert pathsep=":" property="class.files.in.antsrc"> |
| <path> |
| <fileset dir="antsrc"> |
| <include name="**/*.class"/> |
| </fileset> |
| </path> |
| </pathconvert> |
| <fail> |
| <condition> |
| <not> |
| <equals arg1="${class.files.in.antsrc}" arg2=""/> |
| </not> |
| </condition> |
| You have stray *.class files in ${basedir}/antsrc which you must remove. |
| Probably you failed to clean your sources before updating them from CVS. |
| </fail> |
| <!-- OK, continue: --> |
| <mkdir dir="build/antclasses"/> |
| <javac srcdir="antsrc" destdir="build/antclasses" deprecation="true" debug="${build.compiler.debug}" source="1.4"> |
| <classpath refid="bootstrap-cp"/> |
| </javac> |
| <jar jarfile="nbantext.jar"> |
| <fileset dir="build/antclasses"/> |
| <fileset dir="antsrc"> |
| <exclude name="**/*.java"/> |
| <exclude name="**/package.html"/> |
| <exclude name="package-list"/> |
| </fileset> |
| </jar> |
| </target> |
| |
| <target name="init-module-list" depends="bootstrap"> |
| <!-- Define modules. --> |
| <resolve name="modules" value="config.modules.${moduleconfig}"/> |
| <resolve name="fixedmodules" value="config.fixedmodules.${moduleconfig}"/> |
| <property name="allmodules" value="${fixedmodules},${modules}"/> |
| </target> |
| |
| <target name="set-buildnumber" unless="buildnumber"> |
| <tstamp> |
| <format property="buildnumber" pattern="yyMMdd"/> |
| </tstamp> |
| <tstamp> |
| <format property="buildday" pattern="d MMM yyyy" locale="en" /> |
| </tstamp> |
| </target> |
| |
| <target name="init" depends="init-module-list,set-buildnumber,init-tasks"> |
| <taskdef name="cleanall" classname="org.netbeans.nbbuild.CleanAll" classpath="nbantext.jar"/> |
| <taskdef name="nbmerge" classname="org.netbeans.nbbuild.NbMerge" classpath="nbantext.jar"/> |
| <taskdef name="for-each" classname="org.netbeans.nbbuild.ForEach" classpath="nbantext.jar"/> |
| <taskdef name="getdependsclusters" classname="org.netbeans.nbbuild.GetDependsClusters" classpath="nbantext.jar"/> |
| <taskdef name="repeat" classname="org.netbeans.nbbuild.Repeat" classpath="nbantext.jar"/> |
| |
| <!-- We need absolute path to ${netbeans.dest} --> |
| <property name="netbeans.dest.abs" location="${netbeans.dest}"/> |
| <!-- Overridable. Note: need not necessarily be a number at all): --> |
| <property name="buildnum" value="dev-${buildnumber}"/> |
| <property name="sanitystart.args" value="-J-Dnetbeans.close=true ${sanitystart.args.additional}"/> |
| |
| <!-- Set up automatic all-* targets: --> |
| <taskdef name="insert-module-all-targets" classname="org.netbeans.nbbuild.InsertModuleAllTargets" classpath="nbantext.jar"/> |
| <insert-module-all-targets/> |
| </target> |
| |
| <target name="all-java/storagebuilder" depends="init"> |
| <antcall target="build-one-cluster-dependencies" inheritall="false"> |
| <param name="one.cluster.dependencies" value="nb.cluster.platform,nb.cluster.ide"/> |
| <param name="one.cluster.name" value="this-cluster"/> |
| </antcall> |
| <echo message="Building java/storagebuilder library..."/> |
| <ant dir="../java/storagebuilder" target="jar"/> |
| </target> |
| |
| <target name="all-ide/branding" depends="init"> |
| <echo message="Building module ide/branding..."/> |
| <getdependsclusters name="dependsClusters" list="${nb.clusters.list}"/> |
| <antcall target="build-one-cluster-dependencies" inheritAll="false"> |
| <param name="one.cluster.dependencies" value="${dependsClusters}"/> |
| <param name="one.cluster.name" value="this-cluster"/> |
| </antcall> |
| <ant dir="../ide/branding" target="netbeans"/> |
| </target> |
| |
| <target name="all-installer" description="Dummy target for build system compatibility"/> |
| |
| <target name="all-tomcatint/tomcat5/bundled" depends="init"> |
| <getdependsclusters name="dependsClusters" list="${nb.clusters.list}"/> |
| <antcall target="build-one-cluster-dependencies" inheritAll="false"> |
| <param name="one.cluster.dependencies" value="${dependsClusters}"/> |
| <param name="one.cluster.name" value="this-cluster"/> |
| </antcall> |
| <!-- XXX this and xtest are clumsy: <antcall target="all-monitor"/> will not work since the subproject used by antcall does *not* have the synthetic targets! --> |
| <ant dir="../monitor"/> |
| <echo message="Building module tomcatint/tomcat5/bundled..."/> |
| <ant dir="../tomcatint/tomcat5/bundled" target="netbeans"/> |
| </target> |
| |
| <target name="all-translatedfiles" depends="init"> |
| <echo message="Building module translatedfiles..."/> |
| <getdependsclusters name="dependsClusters" list="${nb.clusters.list}"/> |
| <antcall target="build-one-cluster-dependencies" inheritAll="false"> |
| <param |
| name="one.cluster.dependencies" |
| value="${dependsClusters}"/> |
| <param name="one.cluster.name" value="this-cluster"/> |
| </antcall> |
| <ant dir="../translatedfiles" target="netbeans"/> |
| </target> |
| |
| <target name="all-xtest" depends="init"> |
| <getdependsclusters name="dependsClusters" list="${clusters.list}"/> |
| <antcall target="build-one-cluster-dependencies" inheritAll="false"> |
| <param name="one.cluster.dependencies" value="${dependsClusters}"/> |
| <param name="one.cluster.name" value="this-cluster"/> |
| </antcall> |
| <ant dir="../xtest/nbjunit"/> |
| <echo message="Building module xtest..."/> |
| <ant dir="../xtest" antfile="build.xml" target="netbeans"/> |
| </target> |
| |
| <!-- this is project is not a netbeans module project, so we do a no-op |
| here. The code in appsrvbridge gets built by XXX --> |
| <target name="all-serverplugins/sun/appsrvbridge" depends="init"> |
| <echo message="Building module serverplugins/sun/appsrvbridge... NO-OP"/> |
| </target> |
| |
| <!-- build NBMs for selected modules --> |
| <target name="build-nbms" depends="init"> |
| <!-- It's good idea to call merge target before this one. |
| NbMerge.java can set property "modules" to the list of realy |
| built modules (excluding fixedmodules which must build everytime). --> |
| <mkdir dir="nbms" /> |
| <property name="nbm.target.dir" location="nbms" /> |
| <for-each startdir=".." target="nbm" locations="${allmodules}"/> |
| </target> |
| <target name="nbm"/><!-- dummy target --> |
| |
| <property name="jnlp.signjar.keystore" location="build/default.keystore" /> |
| <available property="jnlp.signjar.keystore.exists" file="${jnlp.signjar.keystore}" /> |
| <target name="jnlp-generate-keystore" depends="init" unless="jnlp.signjar.keystore.exists" > |
| <property name="jnlp.signjar.alias" value="jnlp" /> |
| <property name="jnlp.signjar.password" value="netbeans" /> |
| <property name="jnlp.signjar.vendor" value="CN=NetBeans, OU=NetBeans, O=netbeans.org, C=US" /> |
| |
| <mkdir dir="${jnlp.signjar.keystore}/../" /> |
| <echo message="Going to create default keystore in ${jnlp.signjar.keystore}" /> |
| <genkey |
| alias="${jnlp.signjar.alias}" |
| keystore="${jnlp.signjar.keystore}" |
| storepass="${jnlp.signjar.password}" |
| dname="${jnlp.signjar.vendor}" |
| /> |
| </target> |
| |
| <target name="build-jnlp" depends="init,jnlp-generate-keystore"> |
| <fail message="Property jnlp.codebase must be set to final location of your JNLP files!" unless="jnlp.codebase" /> |
| <property name="jnlp.dest.dir" location="build/jnlp" /> |
| <mkdir dir="${jnlp.dest.dir}" /> |
| <for-each startdir=".." target="jnlp" locations="${config.modules.jnlp}"/> |
| </target> |
| |
| <target name="set-config-to-javadoc" > |
| <property name="moduleconfig" value="javadoc" /> |
| </target> |
| |
| <!-- build javadoc for selected modules --> |
| <target name="build-javadoc" depends="set-config-to-javadoc,init" description="Builds Javadoc documentation for modules; on branches pass e.g. -Djavadoc.web.root=http://www.netbeans.org/download/release35/javadoc"> |
| <ant dir="." target="merge"> |
| <property name="modules" value="${modules}"/> |
| <property name="fixedmodules" value="${fixedmodules}"/> |
| <property name="merge.dependent.modules" value="true"/> |
| <property name="stop.when.broken.module" value="false"/> |
| </ant> |
| |
| <mkdir dir="build/ModulesExportedInterfaces" /> |
| <property name="export.interfaces" location="build/ModulesExportedInterfaces" /> |
| |
| <mkdir dir="build/APIChanges" /> |
| <property name="export.apichanges" location="build/APIChanges" /> |
| |
| <!-- build javadoc for supported APIs --> |
| <for-each startdir=".." target="javadoc" locations="${fixedmodules}"/> |
| <!-- build javadoc for unsupported APIs --> |
| <for-each startdir=".." target="javadoc" locations="${modules}"/> |
| |
| <antcall inheritall="true" inheritrefs="true" target="javadoc-generate-xml" /> |
| <antcall inheritall="true" inheritrefs="true" target="javadoc-generate-html" /> |
| <antcall inheritall="true" inheritrefs="true" target="javadoc-check-broken-links" /> |
| </target> |
| |
| <target name="javadoc-generate-xml" depends="set-config-to-javadoc,init" > |
| <echo file="build/APIChanges/header.gen" ><?xml version="1.0" encoding="UTF-8"?> |
| <changes> |
| </echo> |
| |
| <echo file="build/APIChanges/footer.gen" > |
| </changes> |
| </echo> |
| |
| <concat destfile="${netbeans.javadoc.dir}/apichanges.xml" > |
| <fileset dir="build/APIChanges" includes="header.gen" /> |
| <fileset dir="build/APIChanges" includes="*" excludes="*.gen" /> |
| <fileset dir="build/APIChanges" includes="footer.gen" /> |
| </concat> |
| |
| |
| <echo file="build/ModulesExportedInterfaces/header.gen" ><?xml version="1.0" encoding="UTF-8"?> |
| <apis> |
| </echo> |
| |
| <echo file="build/ModulesExportedInterfaces/footer.gen" > |
| </apis> |
| </echo> |
| |
| <concat destfile="${netbeans.javadoc.dir}/modules.xml" > |
| <fileset dir="build/ModulesExportedInterfaces" includes="header.gen" /> |
| <fileset dir="build/ModulesExportedInterfaces" includes="*" excludes="*.gen" /> |
| <fileset dir="build/ModulesExportedInterfaces" includes="footer.gen" /> |
| </concat> |
| |
| <taskdef |
| name="javadoc-index" |
| classpath="nbantext.jar" |
| classname="org.netbeans.nbbuild.JavadocIndex" |
| /> |
| |
| |
| <javadoc-index target="${netbeans.javadoc.dir}/allclasses.xml" > |
| <packageslist dir="${netbeans.javadoc.dir}" > |
| <include name="**/allclasses-noframe.html" /> |
| </packageslist> |
| </javadoc-index> |
| </target> |
| |
| |
| <target name="javadoc-generate-html" depends="set-config-to-javadoc,init" > |
| <tstamp> |
| <format property="modules-javadoc-date" pattern="d MMM yyyy" locale="en" /> |
| </tstamp> |
| |
| <style |
| in="${netbeans.javadoc.dir}/modules.xml" |
| out="${netbeans.javadoc.dir}/usecases.html" |
| style="javadoctools/export2usecases.xsl" |
| > |
| <param name="date" expression="${modules-javadoc-date}"/> |
| </style> |
| |
| <style |
| in="${netbeans.javadoc.dir}/apichanges.xml" |
| out="${netbeans.javadoc.dir}/apichanges.html" |
| style="javadoctools/export2apichanges.xsl" |
| > |
| <param name="date" expression="${modules-javadoc-date}"/> |
| <param name="changes-since-year" expression="${previous.release.year}"/> |
| <param name="changes-since-day" expression="${previous.release.day}"/> |
| <param name="changes-since-month" expression="${previous.release.month}"/> |
| <param name="include-introduction" expression="true" /> |
| </style> |
| |
| <copy file="javadoctools/netbeans.css" tofile="${netbeans.javadoc.dir}/netbeans.css" /> |
| <condition property="javadoc.style.sheet.exists" > |
| <available file="${netbeans.javadoc.dir}/org-openide-util/javadoc.css" /> |
| </condition> |
| |
| <fail unless="javadoc.style.sheet.exists" > |
| The org-openide-util/javadoc.css has to exist as we are refering to |
| it from to master module javadoc pages. If it does not anymore, update |
| the javadoctools/export*.xsl templates. |
| </fail> |
| |
| <style |
| in="${netbeans.javadoc.dir}/allclasses.xml" |
| out="${netbeans.javadoc.dir}/allclasses-frame.html" |
| style="javadoctools/export2allclasses.xsl" |
| > |
| </style> |
| |
| <style |
| in="${netbeans.javadoc.dir}/modules.xml" |
| out="${netbeans.javadoc.dir}/overview-frame.html" |
| style="javadoctools/export2allmodules.xsl" |
| > |
| <param name="date" expression="${modules-javadoc-date}"/> |
| </style> |
| |
| <style |
| in="${netbeans.javadoc.dir}/modules.xml" |
| out="${netbeans.javadoc.dir}/layers.html" |
| style="javadoctools/export2layer.xsl" |
| > |
| <param name="date" expression="${modules-javadoc-date}"/> |
| </style> |
| |
| <style |
| in="${netbeans.javadoc.dir}/modules.xml" |
| out="${netbeans.javadoc.dir}/overview-summary.html" |
| style="javadoctools/export2html.xsl" |
| > |
| <param name="date" expression="${modules-javadoc-date}"/> |
| </style> |
| |
| |
| <!-- at the end geneate the index.html so people know where to start --> |
| <echo file="${netbeans.javadoc.dir}/index.html" ><![CDATA[ |
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> |
| <HTML><HEAD><TITLE>NetBeans API Index</TITLE> |
| </HEAD> |
| <FRAMESET cols="20%,80%" title="" onLoad="top.loadFrames()"> |
| <FRAMESET rows="30%,70%" title="" onLoad="top.loadFrames()"> |
| <FRAME src="overview-frame.html" name="packageListFrame" title="All Modules"> |
| <FRAME src="allclasses-frame.html" name="packageFrame" title="All classes"> |
| </FRAMESET> |
| <FRAME src="overview-summary.html" name="classFrame" title="Module, package, class and interface descriptions" scrolling="yes"> |
| <NOFRAMES> |
| <H2>Frame Alert</H2> |
| <P> |
| This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. |
| Link to<A HREF="overview-summary.html">Non-frame version.</A> |
| </NOFRAMES> |
| </FRAMESET> |
| </HTML> |
| ]]></echo> |
| |
| <replace dir="${netbeans.javadoc.dir}"> |
| <include name="*.html"/> |
| <replacefilter token="@JDK@" value="http://java.sun.com/j2se/1.4.2/docs/api"/> |
| <replacefilter token="http://root/" value="." /> |
| <replacefilter token="$${javadoc.web.root}" value="." /> |
| </replace> |
| |
| <echo message="Javadoc index has been generated to ${netbeans.javadoc.dir}/index.html" /> |
| </target> |
| |
| |
| <target name="javadoc-check-broken-links" depends="init" unless="javadoc.skip.brokenlinks.check" > |
| <taskdef name="checklinks" classname="org.netbeans.nbbuild.CheckLinks"> |
| <classpath> |
| <pathelement location="nbantext.jar"/> |
| </classpath> |
| </taskdef> |
| <checklinks basedir="${netbeans.javadoc.dir}" checkexternal="${javadoc.check.external.links}" checkspaces="false" failonerror="true" > |
| <include name="*/overview-summary.html"/> |
| <include name="*/apichanges.html"/> |
| <include name="*/architecture-summary.html"/> |
| <include name="*/**/package-summary.html"/> |
| <include name="*/**/doc-files/**/*.html"/> |
| <include name="*.html" /> |
| </checklinks> |
| </target> |
| |
| <target name="build-messaging" depends="init"> |
| <echo message="Starting a build for NetBeans (build ${buildnum}, config '${moduleconfig}') ..."/> |
| <echo message="Selected modules: ${modules}"/> |
| <echo message="OS: ${os.name} ${os.version} Locale: ${user.language}_${user.region}"/> |
| <echo message="Java: ${nbjdk.home}"/> |
| </target> |
| |
| <!-- Use of nbmerge target has the effect of automatically depending on all-X for every module. --> |
| <!-- It also runs deltree(dir=wherever) and copydir(src=../X/netbeans,dest=wherever) to create the IDE install. --> |
| |
| <target name="build-nozip" depends="clean-cluster-flags,build-clusters" description="Build the IDE but do not create a final ZIP file."> |
| <loadproperties srcFile="${clusters.list.file}" /> |
| |
| <loadproperties srcfile="${netbeans.dest.dir}/moduleCluster.properties" /> |
| |
| <mkdir dir="${netbeans.dest.dir}/bin" /> |
| <copy file="../ide/launcher/unix/netbeans" todir="${netbeans.dest.dir}/bin" /> |
| <chmod file="${netbeans.dest.dir}/bin/netbeans" perm="ugo+rx"/> |
| <copy file="../ide/launcher/windows/netbeans.exe" todir="${netbeans.dest.dir}/bin" /> |
| <copy file="../ide/launcher/windows/nb.exe" todir="${netbeans.dest.dir}/bin" /> |
| <copy file="../ide/launcher/os2/netbeans.cmd" todir="${netbeans.dest.dir}/bin" /> |
| <!-- if anybody knows better place for icons, let me know: jtulach@netbeans.org --> |
| <copy file="../ide/launcher/os2/nbos2icons.zip" todir="${netbeans.dest.dir}/${nb.cluster.nb.dir}/" /> |
| |
| <mkdir dir="${netbeans.dest.dir}/etc" /> |
| <copy file="../ide/launcher/netbeans.conf" todir="${netbeans.dest.dir}/etc" /> |
| |
| <echo message="${netbeans.dest.dir}/${nb.cluster.platform.dir}/lib/nbexec" /> |
| <fixcrlf eol="lf" srcdir="${netbeans.dest.dir}" > |
| <include name="etc/netbeans.conf" /> |
| <include name="bin/netbeans" /> |
| <include name="${nb.cluster.platform.dir}/lib/nbexec" /> |
| </fixcrlf> |
| <fixcrlf eol="crlf" srcdir="${netbeans.dest.dir}" > |
| <include name="bin/netbeans.cmd" /> |
| <include name="${nb.cluster.platform.dir}/lib/nbexec.cmd" /> |
| </fixcrlf> |
| |
| <echo file="${netbeans.dest.dir}/build_info">NetBeans dev build |
| ------------------ |
| Number: ${buildnumber} |
| Date: ${buildday} |
| Branding: |
| Branch: trunk |
| Tag: |
| </echo> |
| </target> |
| |
| <target name="build" depends="build-nozip" |
| description="Create a complete build including a ZIP distribution (but do not try it)."> |
| <delete file="NetBeans-${buildnum}.zip"/> |
| <delete file="NetBeans-${buildnum}-build-extra-data.zip"/> |
| |
| <property name="nb-extra-files" value="*.built,test/**,extra/**"/> |
| |
| <!-- package the zip file --> |
| <zip destfile="NetBeans-${buildnum}.zip" update="true" duplicate="preserve"> |
| <zipfileset file="${netbeans.dest.dir}/bin/netbeans" filemode="755" prefix="${netbeans.dest}/bin"/> |
| <zipfileset file="${netbeans.dest.dir}/${nb.cluster.platform.dir}/lib/nbexec" filemode="755" prefix="${netbeans.dest}/${nb.cluster.platform.dir}/lib"/> |
| <zipfileset dir="${netbeans.dest.dir}/${nb.cluster.ide.dir}/ant/bin" filemode="755" prefix="${netbeans.dest}/${nb.cluster.ide.dir}/ant/bin"> |
| <exclude name="*.bat"/> |
| <exclude name="*.cmd"/> |
| </zipfileset> |
| <zipfileset dir="${netbeans.dest.dir}" filemode="755" prefix="${netbeans.dest}"> |
| <include name="**/*.sh"/> |
| </zipfileset> |
| <zipfileset dir="${netbeans.dest.dir}" prefix="${netbeans.dest}" excludes="${nb-extra-files}"> |
| <!-- XXX exclude the temporary cluster for parts of openide --> |
| <exclude name="tmp" /> |
| <exclude name="tmp/**/*" /> |
| </zipfileset> |
| </zip> |
| |
| <!-- package the zip file with extra files not to be included in regular product package--> |
| <!-- |
| <zip destfile="NetBeans-${buildnum}-build-extra-data.zip" update="true" duplicate="preserve"> |
| <zipfileset dir="${netbeans.dest.dir}" prefix="${netbeans.dest}" includes="${nb-extra-files}"/> |
| </zip> |
| --> |
| |
| <echo>Build created; see NetBeans-${buildnum}.zip (in nbbuild/). |
| If you like, you may run the IDE straight from |
| the ${netbeans.dest}/bin/ directory. |
| (For example, type: ant tryme) |
| </echo> |
| </target> |
| |
| <target name="delete-and-merge" depends="merge-delete,merge" /> |
| |
| <target name="merge-delete" depends="init"> |
| <delete dir="${netbeans.dest}" /> |
| </target> |
| |
| <target name="merge" depends="build-messaging"> |
| <mkdir dir="${netbeans.dest.dir}"/> |
| <nbmerge failonerror="${stop.when.broken.modules}" |
| dest="${netbeans.dest}" |
| topdir=".." |
| fixedmodules="${fixedmodules}" |
| modules="${modules}" |
| builtmodulesproperty="${built.modules.property}" |
| targetprefix="all-" |
| mergedependentmodules="${merge.dependent.modules}" > |
| </nbmerge> |
| <chmod perm="ugo+x"> |
| <fileset dir="${netbeans.dest.dir}"> |
| <include name="bin/netbeans"/> |
| <include name="bin/**/*.pl"/> |
| <include name="jakarta-tomcat-*/bin/*.sh"/> |
| </fileset> |
| </chmod> |
| </target> |
| |
| <target name="build-platform" depends="init"> |
| <run-depend-build clusters-to-build="nb.cluster.platform,nb.cluster.harness"/> |
| </target> |
| |
| <target name="build-cluster" depends="init"> |
| <run-depend-build clusters-to-build="${cluster-name}"/> |
| </target> |
| |
| <macrodef name="resolve"> |
| <attribute name="name"/> |
| <attribute name="value"/> |
| <sequential> |
| <property name="@{name}" value="${@{value}}"/> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="run-depend-build"> |
| <attribute name="clusters-to-build"/> |
| <sequential> |
| <echo>Repeat @{clusters-to-build}</echo> |
| <repeat target="build-one-cluster" name="one.cluster.name" values="@{clusters-to-build}" /> |
| </sequential> |
| </macrodef> |
| |
| <target name="build-clusters" depends="init"> |
| <run-depend-build clusters-to-build="${nb.clusters.list}"/> |
| </target> |
| |
| <target name="build-one-cluster-dependencies-check"> |
| <condition property="${one.cluster.name}-hasNoDependencies"> |
| <equals arg1="${one.cluster.dependencies}" arg2="" trim="true"/> |
| </condition> |
| <echo>Dependency prop :${one.cluster.name}-hasNoDependencies:</echo> |
| <echo>Cluster dep :${one.cluster.dependencies}:</echo> |
| <resolve name="test.prop" value="${one.cluster.name}-hasNoDependencies"/> |
| <echo>Cluster dep prp:${test.prop}:</echo> |
| </target> |
| |
| <target name="build-one-cluster-dependencies" |
| depends="build-one-cluster-dependencies-check" |
| unless="${one.cluster.name}-hasNoDependencies"> |
| <run-depend-build clusters-to-build="${one.cluster.dependencies}"/> |
| </target> |
| |
| <target name="build-one-cluster-check"> |
| <condition property="${one.cluster.name}-is-built"> |
| <available file="${netbeans.dest.dir}/${one.cluster.name}.built"/> |
| </condition> |
| <resolve name="test1.prop" value="${one.cluster.name}-is-built"/> |
| <echo>Cluster ${one.cluster.name} is :${test1.prop}:</echo> |
| </target> |
| |
| <target name="build-one-cluster" unless="${one.cluster.name}-is-built" depends="build-one-cluster-check"> |
| <echo message="Building ${one.cluster.name} modules"/> |
| <resolve name="one-cluster-modules" value="${one.cluster.name}"/> |
| <resolve name="one-cluster-dependencies" value="${one.cluster.name}.depends"/> |
| <echo>${one-cluster-modules}</echo> |
| <echo>Dependencies: ${one-cluster-dependencies}</echo> |
| <insert-module-all-targets/> <!-- we are in a subproject, so need to reinsert the targets... XXX <antcall> and thus <repeat> apparently reparses the Ant script from disk! --> |
| <antcall target="build-one-cluster-dependencies" inheritAll="false"> |
| <param name="one.cluster.dependencies" value="${one-cluster-dependencies}"/> |
| <param name="one.cluster.name" value="${one.cluster.name}"/> |
| </antcall> |
| <mkdir dir="${netbeans.dest.dir}"/> |
| <nbmerge failonerror="${stop.when.broken.modules}" |
| dest="${netbeans.dest.dir}" |
| topdir="${nb_all}" |
| fixedmodules="${one-cluster-modules}" |
| builtmodulesproperty="${built.modules.property}" |
| targetprefix="all-" |
| mergedependentmodules="false"> |
| </nbmerge> |
| <touch file="${netbeans.dest.dir}/${one.cluster.name}.built"/> |
| </target> |
| |
| <target name="zipclusters" depends="init"> |
| <mkdir dir="${netbeans.build.dir}/zips"/> |
| <repeat target="zip-one-cluster" name="one.cluster.name" values="${clusters.list}" /> |
| |
| <!-- package the misc files --> |
| <zip destfile="${netbeans.build.dir}/zips/${clusters.prefix}-misc-${buildnum}.zip" update="true" duplicate="preserve"> |
| <zipfileset dir="${netbeans.dest.dir}" filemode="755"> |
| <include name="bin/netbeans"/> |
| </zipfileset> |
| <zipfileset dir="${netbeans.dest.dir}"> |
| <include name="bin/**"/> |
| <include name="etc/**/"/> |
| </zipfileset> |
| </zip> |
| </target> |
| |
| <target name="zip-one-cluster"> |
| <taskdef name="setclusterpatternset" classname="org.netbeans.nbbuild.SetClusterPatternSet" classpath="nbantext.jar"/> |
| <taskdef name="setcluster" classname="org.netbeans.nbbuild.SetCluster" classpath="nbantext.jar"/> |
| <loadproperties srcFile="${clusters.list.file}" /> |
| <loadproperties srcFile="cluster-description.properties" /> |
| <setcluster cluster="${one.cluster.name}" name="one.cluster.dir" /> |
| |
| <setclusterpatternset cluster="${one.cluster.name}" name="${one.cluster.name}.files" trackingpath="${netbeans.dest.dir}" clusterdir="${one.cluster.dir}"/> |
| |
| <resolve name="zipcluster.file" value="${one.cluster.name}.pkg.filename"/> |
| <zip destfile="${netbeans.build.dir}/zips/${clusters.prefix}-${zipcluster.file}-${buildnum}.zip" update="true" duplicate="preserve"> |
| <zipfileset dir="${netbeans.dest.dir}" filemode="755"> |
| <include name="${one.cluster.dir}/lib/nbexec"/> |
| </zipfileset> |
| <zipfileset dir="${netbeans.dest.dir}" filemode="755"> |
| <include name="${one.cluster.dir}/ant/bin/*"/> |
| <exclude name="${one.cluster.dir}/ant/bin/*.bat"/> |
| <exclude name="${one.cluster.dir}/ant/bin/*.cmd"/> |
| </zipfileset> |
| <zipfileset dir="${netbeans.dest.dir}"> |
| <patternset refID="${one.cluster.name}.files"/> |
| </zipfileset> |
| </zip> |
| </target> |
| |
| <target name="create-rpms-proto"> |
| <mkdir dir="${netbeans.build.dir}/rpms"/> |
| <repeat target="create-one-rpm-proto" name="one.cluster.name" values="${clusters.list}" /> |
| </target> |
| |
| <target name="create-one-rpm-proto"> |
| <taskdef name="setcluster" classname="org.netbeans.nbbuild.SetCluster" classpath="nbantext.jar"/> |
| <loadproperties srcFile="cluster.properties" /> |
| <loadproperties srcFile="cluster-description.properties" /> |
| <setcluster cluster="${one.cluster.name}" name="one.cluster.dir" /> |
| <mkdir dir="${netbeans.build.dir}/rpms"/> |
| |
| <resolve name="pkg.name" value="${one.cluster.name}.pkg.name"/> |
| <resolve name="pkg.version" value="${one.cluster.name}.pkg.version"/> |
| <resolve name="pkg.desc" value="${one.cluster.name}.pkg.desc"/> |
| <resolve name="pkg.vendor" value="${one.cluster.name}.pkg.vendor"/> |
| <resolve name="pkg.email" value="${one.cluster.name}.pkg.email"/> |
| <resolve name="pkg.rpm.name" value="${one.cluster.name}.pkg.rpm.name"/> |
| <resolve name="pkg.rpm.requires" value="${one.cluster.name}.pkg.rpm.requires"/> |
| <resolve name="pkg.rpm.group" value="${one.cluster.name}.pkg.rpm.group"/> |
| <resolve name="pkg.rpm.url" value="${one.cluster.name}.pkg.rpm.url"/> |
| <resolve name="pkg.rpm.copyright" value="${one.cluster.name}.pkg.rpm.copyright"/> |
| <resolve name="pkg.rpm.map" value="${one.cluster.name}.pkg.rpm.map"/> |
| <resolve name="pkg.rpm.prefix" value="${one.cluster.name}.pkg.rpm.prefix"/> |
| |
| <echo file="${netbeans.build.dir}/rpms/${pkg.rpm.name}.spec"> |
| %define global_product_version ${pkg.version} |
| %define global_product_release 00 |
| %define _prefix ${pkg.rpm.prefix} |
| Version: %{global_product_version} |
| Release: %{global_product_release} |
| Group: ${pkg.rpm.group} |
| Copyright: ${pkg.rpm.copyright} |
| Vendor: ${pkg.vendor} |
| URL: ${pkg.rpm.url} |
| Prefix: %_prefix |
| AutoReqProv: no |
| Name: ${pkg.rpm.name} |
| Summary: ${pkg.name} |
| %description |
| ${pkg.desc} |
| |
| %files |
| |
| %erpm_map ${pkg.rpm.map} nb_destdir |
| |
| %dir ${pkg.rpm.map} |
| |
| ${pkg.rpm.map}/${one.cluster.dir}</echo> |
| </target> |
| |
| <target name="create-svr4s-proto"> |
| <mkdir dir="${netbeans.build.dir}/rpms"/> |
| <repeat target="create-one-svr4-proto" name="one.cluster.name" values="${clusters.list}" /> |
| </target> |
| |
| <target name="create-one-svr4-proto"> |
| <taskdef name="setcluster" classname="org.netbeans.nbbuild.SetCluster" classpath="nbantext.jar"/> |
| <loadproperties srcFile="cluster.properties" /> |
| <loadproperties srcFile="cluster-description.properties" /> |
| <setcluster cluster="${one.cluster.name}" name="one.cluster.dir" /> |
| <mkdir dir="${netbeans.build.dir}/svr4s"/> |
| |
| <resolve name="pkg.name" value="${one.cluster.name}.pkg.name"/> |
| <resolve name="pkg.version" value="${one.cluster.name}.pkg.version"/> |
| <resolve name="pkg.desc" value="${one.cluster.name}.pkg.desc"/> |
| <resolve name="pkg.vendor" value="${one.cluster.name}.pkg.vendor"/> |
| <resolve name="pkg.email" value="${one.cluster.name}.pkg.email"/> |
| <resolve name="pkg.svr4.pkg" value="${one.cluster.name}.pkg.svr4.pkg"/> |
| <resolve name="pkg.svr4.maxinst" value="${one.cluster.name}.pkg.svr4.maxinst"/> |
| <resolve name="pkg.svr4.sunw_pkgvers" value="${one.cluster.name}.pkg.svr4.sunw_pkgvers"/> |
| <resolve name="pkg.svr4.hotline" value="${one.cluster.name}.pkg.svr4.hotline"/> |
| <resolve name="pkg.svr4.classes" value="${one.cluster.name}.pkg.svr4.classes"/> |
| <resolve name="pkg.svr4.basedir" value="${one.cluster.name}.pkg.svr4.basedir"/> |
| <resolve name="pkg.svr4.pkginst" value="${one.cluster.name}.pkg.svr4.pkginst"/> |
| <resolve name="pkg.svr4.category" value="${one.cluster.name}.pkg.svr4.category"/> |
| <echo file="${netbeans.build.dir}/svr4s/${pkg.svr4.pkg}.spec"> |
| PKG=${pkg.svr4.pkg} |
| NAME=${pkg.name} |
| ARCH=sparc |
| VERSION=${pkg.version} |
| MAXINST=${pkg.svr4.maxinst} |
| CATEGORY=${pkg.svr4.category} |
| SUNW_PKGVERS=${pkg.svr4.sunw_pkgvers} |
| DESC=${pkg.desc} |
| VENDOR=${pkg.vendor} |
| HOTLINE=${pkg.svr4.hotline} |
| EMAIL=${pkg.email} |
| CLASSES=${pkg.svr4.classes} |
| BASEDIR=${pkg.svr4.basedir} |
| PKGINST=${pkg.svr4.pkginst}</echo> |
| </target> |
| |
| <target name="sanity-check" depends="testuserdir-delete,sanity-start" description="Test whether the build can start up without problems."/> |
| <target name="-testuserdir-delete-init" depends="init"> |
| <property name="test.user.dir.lock" location="${test.user.dir}/lock"/> |
| <available property="app.running" file="${test.user.dir.lock}"/> |
| </target> |
| <target name="-testuserdir-delete-ok" depends="-testuserdir-delete-init" unless="app.running"> |
| <delete dir="${test.user.dir}"/> |
| </target> |
| <target name="-testuserdir-delete-fail" depends="-testuserdir-delete-init" if="app.running"> |
| <!-- #66799: best to warn about this condition... --> |
| <fail>Will not delete ${test.user.dir} because ${test.user.dir.lock} still exists; kill any running process and delete lock file if necessary</fail> |
| </target> |
| <target name="testuserdir-delete" depends="-testuserdir-delete-ok,-testuserdir-delete-fail"/> |
| <target name="sanity-start" depends="init,maybe-build-nozip,-jdk-init"> |
| <mkdir dir="${test.user.dir}"/> |
| <echo>Starting the IDE as a sanity check...</echo> |
| <echo>WARNING - the sanity-start target is deprecated. Use commit-validation instead.</echo> |
| <!-- XXX better would be to scan start log for stacktraces and just show those; --> |
| <!-- possibly after filtering for duplicates or something like this. --> |
| <!-- Timeout is ten minutes; should be enough for valid start, while preventing --> |
| <!-- a deadlock from hanging an automated build: --> |
| <exec os="Windows NT Windows 2000 Windows 2003 Windows XP" executable="${netbeans.dest.abs}/bin/nb.exe" failonerror="yes" timeout="600000"> |
| <arg value="--jdkhome"/> |
| <arg file="${nbjdk.home}"/> |
| <arg value="--userdir"/> |
| <arg file="${test.user.dir}"/> |
| <arg line="${sanitystart.args}"/> |
| </exec> |
| <exec os="Linux SunOS Solaris Mac OS X" dir="." executable="sh" failonerror="yes" timeout="600000"> |
| <arg value="${netbeans.dest.abs}/bin/netbeans"/> |
| <arg value="--jdkhome"/> |
| <arg file="${nbjdk.home}"/> |
| <arg value="--userdir"/> |
| <arg file="${test.user.dir}"/> |
| <arg line="${sanitystart.args}"/> |
| </exec> |
| <echo>Finished starting the IDE, pay attention to any reported errors.</echo> |
| </target> |
| |
| <target name="check-for-build" > |
| <available property="have-build" file="${netbeans.dest.dir}/bin/netbeans"/> |
| </target> |
| <target name="maybe-build-nozip" depends="check-for-build" unless="have-build"> |
| <ant dir="${basedir}" target="build-nozip"/> |
| </target> |
| |
| <target name="nozip-check" |
| depends="build-nozip,sanity-check"> |
| <echo>WARNING - the nozip-check target is deprecated. Use all-nozip instead.</echo> |
| </target> |
| |
| <target name="tryme-setup-debug-args" if="debug.port" > |
| <property name="debug.pause" value="n" /> |
| <property name="debug.server" value="y" /> |
| |
| <property name="tryme.debug.args" value="-J-Xdebug -J-Xnoagent -J-Xrunjdwp:transport=dt_socket,suspend=${debug.pause},server=${debug.server},address=${debug.port}" /> |
| </target> |
| |
| <target name="tryme-debug" depends="-jdk-presetdef-nbjpdastart" description="Start IDE in debugger. May only be called from within IDE."> |
| <nbjpdastart name="NetBeans" addressproperty="debug.port" transport="dt_socket"> |
| <classpath> |
| <fileset dir="${netbeans.dest.dir}"> |
| <include name="**/*.jar"/> |
| </fileset> |
| </classpath> |
| </nbjpdastart> |
| <property name="debug.server" value="n"/> |
| <antcall target="tryme"/> |
| </target> |
| |
| <target name="tryme-profile" depends="-jdk-presetdef-nbprofiledirect" description="Start IDE in debugger. May only be called from within IDE."> |
| <property name="profiler.roots.path" value="profiler.roots.all" /> |
| <fileset id="profiler.roots.all" dir="${netbeans.dest.dir}"> |
| <include name="**/*.jar"/> |
| </fileset> |
| <nbprofiledirect |
| jvmargsprefix="-J" |
| jvmargsproperty="profiler.jvmargs" |
| mainclass="org.netbeans.Main" |
| > |
| <classpath> |
| <fileset dir="${netbeans.dest.dir}"> |
| <include name="**/*.jar"/> |
| </fileset> |
| </classpath> |
| <rootspath> |
| <fileset refid="${profiler.roots.path}" /> |
| </rootspath> |
| </nbprofiledirect> |
| |
| <antcall target="tryme"> |
| <param name="tryme.args" value="${profiler.jvmargs}"/> |
| </antcall> |
| </target> |
| |
| <target name="tryme" depends="init,maybe-build-nozip,tryme-setup-debug-args,-jdk-init" |
| description="Try running the IDE interactively (build it first if needed). |
| It is possible to use -Ddebug.port=3234 -Ddebug.pause=y to start the system in debug mode" |
| > |
| <property name="tryme.debug.args" value="" /> |
| |
| <exec os="Windows NT Windows 2000 Windows 2003 Windows XP" executable="${netbeans.dest.abs}/bin/nb.exe" failonerror="yes"> |
| <arg value="--jdkhome"/> |
| <arg file="${nbjdk.home}"/> |
| <arg value="--userdir"/> |
| <arg file="${test.user.dir}"/> |
| <arg line="${tryme.args}"/> |
| <arg line="${tryme.debug.args}" /> |
| </exec> |
| <exec os="Linux SunOS Solaris Mac OS X" dir="." executable="sh" failonerror="yes"> |
| <arg value="${netbeans.dest}/bin/netbeans"/> |
| <arg value="--jdkhome"/> |
| <arg file="${nbjdk.home}"/> |
| <arg value="--userdir"/> |
| <arg file="${test.user.dir}"/> |
| <arg line="${tryme.args}"/> |
| <arg line="${tryme.debug.args}" /> |
| </exec> |
| </target> |
| |
| <target name="l10n-kit" depends="init"> |
| <taskdef name="l10n" classname="org.netbeans.nbbuild.L10nTask" |
| classpath="nbantext.jar"/> |
| <delete dir="${l10n.dist.dir}"/> |
| <mkdir dir="${l10n.dist.dir}"/> |
| <delete dir="tmp"/> |
| <mkdir dir="tmp"/> |
| <property name="nbroot" location=".."/> |
| <l10n topdirs="${nbroot}" modules="${fixedmodules},${modules}" |
| localizablefile="l10n.list" generatedfile="l10n.list.translated" |
| distdir="${l10n.dist.dir}" changedfile="l10n.list.changed" |
| builddir="tmp" buildnumber="${buildnumber}" |
| excludepattern="**/ja/,**/*_ja.*"/> |
| <delete dir="tmp"/> |
| </target> |
| |
| <target name="bootstrap-javadoc" |
| depends="bootstrap" |
| description="Generate Javadoc for Ant extensions."> |
| <!-- XXX this ought to be deleted at some point. --> |
| <!-- Can be done anyway by apisupport/ant, and published as regular module Javadoc --> |
| <!-- by the regular daily Javadoc build process. --> |
| <!-- Then all of this stuff can be deleted from the www part of CVS. --> |
| <mkdir dir="www/nbantext-javadoc"/> |
| <delete> |
| <fileset dir="www/nbantext-javadoc"> |
| <include name="**/*.html"/> |
| </fileset> |
| </delete> |
| <tstamp/> |
| <javadoc sourcepath="antsrc" |
| destdir="www/nbantext-javadoc" |
| packagenames="org.netbeans.nbbuild.*" |
| windowtitle="NetBeans Ant Extensions" |
| doctitle="Extended Ant Tasks for Building NetBeans" |
| nodeprecatedlist="true" |
| notree="true" |
| noindex="true" |
| nohelp="true" |
| nonavbar="true" |
| author="false" |
| version="false" |
| bottom="Built on ${buildday}" |
| > |
| <classpath refid="bootstrap-cp"/> |
| <link href="http://nagoya.apache.org/gump/javadoc/ant/build/javadocs" offline="true" packagelistloc="antsrc"/> |
| </javadoc> |
| </target> |
| |
| <target name="clean-external"> |
| <subant target="clean"> |
| <fileset dir=".."> |
| <include name="*/external/build.xml"/> |
| <include name="contrib/*/external/build.xml"/> |
| </fileset> |
| </subant> |
| </target> |
| |
| <target name="real-clean" depends="clean,clean-external" |
| description="Clean everything possible."> |
| <echo message="Cleaning old builds..."/> |
| <delete> |
| <fileset dir="."> |
| <include name="NetBeans-*.log"/> |
| <include name="NetBeans-*.zip"/> |
| </fileset> |
| </delete> |
| <!-- This step must be last: --> |
| <echo message="Cleaning NetBeans-specific Ant extensions..."/> |
| <delete file="nbantext.jar" quiet="true"/> |
| <delete dir="build/antclasses"/> |
| </target> |
| |
| <target name="ant-clean"> |
| <delete file="nbantext.jar"/> |
| </target> |
| |
| <target name="clean-cluster-flags" unless="do-not-rebuild-clusters"> |
| <mkdir dir="${netbeans.dest.dir}"/> |
| <delete includeEmptyDirs="true"> |
| <fileset dir="${netbeans.dest.dir}"> |
| <include name="*.built"/> |
| </fileset> |
| </delete> |
| </target> |
| |
| <target name="localclean" depends="clean-cluster-flags,init"> |
| <delete dir="${test.user.dir}"/> |
| <delete dir="build"/> |
| <delete file="moduledefs-tmp.properties"/> |
| <delete dir="nbms" /> |
| <delete dir="${netbeans.dest.dir}"/> |
| </target> |
| |
| <!-- more correct but takes too long: <target name="localtest" depends="bootstrap,all-xtest/nbjunit" > --> |
| <target name="localtest" depends="bootstrap"> |
| <ant dir="test" target="cleanresults"/> |
| <ant dir="test" target="runtests"/> |
| </target> |
| <target name="localtest-nb" depends="localtest"> |
| <nbbrowse file="test/results/index.html"/> |
| </target> |
| <target name="localtest-single-nb" depends="bootstrap"> |
| <property name="unit.test.base" location="test/unit/src"/> |
| <pathconvert property="xtest.includes" pathsep=","> |
| <path path="${includes}"/> |
| <mapper type="glob" from="${unit.test.base}${file.separator}*.java" to="*.class"/> |
| </pathconvert> |
| <property name="xtest.attribs" value="empty"/> |
| <ant dir="test" target="cleanresults"/> |
| <ant dir="test" target="runtests"/> |
| <nbbrowse file="test/results/index.html"/> |
| </target> |
| <target name="localtest-single-nb-debug" depends="bootstrap,-jdk-presetdef-nbjpdastart"> |
| <property name="unit.test.base" location="test/unit/src"/> |
| <pathconvert property="xtest.includes" pathsep=","> |
| <path path="${includes}"/> |
| <mapper type="glob" from="${unit.test.base}${file.separator}*.java" to="*.class"/> |
| </pathconvert> |
| <property name="xtest.attribs" value="empty"/> |
| <ant dir="test" target="cleanresults"/> |
| <nbjpdastart transport="dt_socket" addressproperty="jpda.address" name="${test.class}"> |
| <classpath> |
| <!-- |
| <path location="test/work/sys/tests/unit/classes"/> |
| <path location="test/work/sys/tests/"/> |
| <path location="test/unit/src/"/> |
| --> |
| <path location="nbantext.jar"/> |
| </classpath> |
| </nbjpdastart> |
| <ant dir="test" target="runtests"> |
| <property name="xtest.debug.address" value="${jpda.address}" /> |
| <property name="xtest.debug.pause" value="false" /> |
| </ant> |
| <nbbrowse file="test/results/index.html"/> |
| </target> |
| |
| <target name="cleanall" depends="init"> |
| <cleanall topdir=".." |
| modules="${allmodules}" |
| targetname="clean" |
| resolvedependencies="${resolve.clean.dependencies}" |
| deptargetprefix="all-" |
| failonerror="${stop.when.clean.error}" /> |
| </target> |
| |
| <target name="clean" depends="init,cleanall,localclean" |
| description="Clean out (almost) all build products."> |
| <echo message="Run `ant real-clean' if desired."/> |
| </target> |
| |
| <!-- This section contains properties and targets used to build --> |
| <!-- Solaris packages. --> |
| |
| <property name="solpkg-pkgproto" value="pkgproto"/> |
| <property name="solpkg-pkgmk" value="pkgmk"/> |
| <property name="solpkg-proto-file" value="prototype"/> |
| <property name="solpkg-actual-dir" value="to-be-specified"/> |
| <property name="solpkg-pkg-dir" value="to-be-specified"/> |
| <property name="solpkg-pkg-dest-dir" value="to-be-specified"/> |
| |
| <!-- You can run this target to create the prototype file and create --> |
| <!-- the package, or if you need to modify the prototype file before --> |
| <!-- building the package, you can run the two subtargets --> |
| <!-- separately. --> |
| <target name="solpkg-build" depends="solpkg-pkgproto,solpkg-pkgmk" |
| description="Generate a prototype file and create a Solaris package."/> |
| |
| <!-- This creates the pkg prototype file for a given directory and --> |
| <!-- its files. --> |
| <target name="solpkg-pkgproto" |
| description="Generate a prototype file."> |
| <exec executable="rm" failonerror="yes"> |
| <arg value="-rf"/> |
| <arg value="${solpkg-proto-file}"/> |
| </exec> |
| <exec executable="${solpkg-pkgproto}" output="${solpkg-proto-file}" |
| failonerror="yes"> |
| <arg value="${solpkg-actual-dir}=${solpkg-pkg-dir}"/> |
| </exec> |
| </target> |
| |
| <!-- This creates the Solaris pkg for a given prototype file, pkginfo --> |
| <!-- file, and directory. --> |
| <target name="solpkg-pkgmk" |
| description="Create a Solaris package."> |
| <exec executable="${solpkg-pkgmk}" failonerror="yes"> |
| <arg value="-o"/> |
| <arg value="-f"/> |
| <arg value="${solpkg-proto-file}"/> |
| <arg value="-r"/> |
| <arg value="${solpkg-actual-dir}"/> |
| <arg value="-d"/> |
| <arg value="${solpkg-pkg-dest-dir}"/> |
| </exec> |
| </target> |
| |
| <!-- End of Solaris package section. --> |
| |
| |
| <!-- Localized builds --> |
| <target name="all-dutch" depends="set-dutch-locale,all"/> |
| <target name="all-russian" depends="set-russian-locale,all"/> |
| <target name="all-french" depends="set-french-locale,all"/> |
| <target name="all-ja-zh" depends="set-ja-zh_CN-locales,all"/> |
| |
| <target name="set-ja-zh_CN-locales"> |
| <property name="locales" value="ja,zh_CN"/> |
| <property name="locjar.locales" value="${locales}"/> |
| <property name="locmakenbm.locales" value="${locales}"/> |
| <property name="locjhindexer.locales" value="${locales}"/> |
| <property name="localized.build.locales" value="${locales}"/> |
| </target> |
| |
| <target name="set-dutch-locale"> |
| <property name="locales" value="nl"/> |
| <property name="locjar.locales" value="${locales}"/> |
| <property name="locmakenbm.locales" value="${locales}"/> |
| <property name="locjhindexer.locales" value="${locales}"/> |
| <property name="localized.build.locales" value="${locales}"/> |
| </target> |
| |
| <target name="set-russian-locale"> |
| <property name="locales" value="ru"/> |
| <property name="locjar.locales" value="${locales}"/> |
| <property name="locmakenbm.locales" value="${locales}"/> |
| <property name="locjhindexer.locales" value="${locales}"/> |
| <property name="localized.build.locales" value="${locales}"/> |
| </target> |
| |
| <target name="set-french-locale"> |
| <property name="locales" value="fr"/> |
| <property name="locjar.locales" value="${locales}"/> |
| <property name="locmakenbm.locales" value="${locales}"/> |
| <property name="locjhindexer.locales" value="${locales}"/> |
| <property name="localized.build.locales" value="${locales}"/> |
| </target> |
| |
| <!-- end of localized builds --> |
| |
| |
| <target name="print-selected-modules" depends="init" description="Prints list of modules to build in selected moduleconfig."> |
| <echo message="modules=${allmodules}"/> |
| </target> |
| |
| <target name="print-cvs-modules" depends="init" description="Prints list of cvs modules required to build in selected moduleconfig."> |
| <taskdef name="printcvsmodules" classname="org.netbeans.nbbuild.PrintCvsModules" classpath="nbantext.jar"/> |
| <printcvsmodules modules="${fixedmodules},${modules}" targetprefix="all-" /> |
| </target> |
| |
| <target name="check-commit-validation"> |
| <condition property="run.validation" > |
| <and> |
| <available file="../ide/test/build.xml" /> |
| <available file="../jemmy/build.xml" /> |
| <available file="../jellytools/build.xml" /> |
| <available file="../xtest/build.xml" /> |
| <or> |
| <not> |
| <isset property="nb.run.validation"/> |
| </not> |
| <istrue value="${nb.run.validation}"/> |
| </or> |
| </and> |
| </condition> |
| </target> |
| |
| <target |
| name="unit-validation" |
| description="Invokes all existing unit tests in all IDE modules. |
| Useful when one wants to deeply verify that his changes |
| work" |
| > |
| <ant dir="../xtest/instance" target="runtests" > |
| <property name="xtest.config" value="unit-nb" /> |
| </ant> |
| </target> |
| |
| <target |
| name="commit-validation" |
| depends="commit-verification,commitValidation,no-commit-validation" |
| description="Runs tests to validate IDE before commit." |
| /> |
| |
| <target name="all-commitValidation" description="dummy target for build error recognition facility"/> |
| |
| <target |
| name="commit-verification" |
| description="Compares result of a build with golden files verifying various aspects of the exported interfaces" |
| depends=" |
| all-verification, |
| check-files-layout, |
| check-public-packages, |
| check-friend-packages, |
| check-shared-packages, |
| check-modules, |
| check-dependencies, |
| check-implementation-dependencies, |
| check-cluster-dependencies, |
| check-cluster-implementation-dependencies, |
| check-clusters-content" |
| /> |
| |
| <!-- JST: One day also add |
| check-external-libraries |
| --> |
| |
| <target name="all-verification" > |
| <echo message="Runs verification tests to check the IDE before commit" /> |
| </target> |
| |
| <!-- keep this target name at least for a while for backward compat -jglick --> |
| <target name="commitValidation" depends="all-commitValidation,check-commit-validation" if="run.validation"> |
| <property name="xtest.home" location="../xtest"/> |
| <ant dir="${xtest.home}/instance" target="cleanresults"> |
| <property name="xtest.config" value="commit-validation-nb"/> |
| </ant> |
| <ant dir="${xtest.home}/instance" target="cleantests"> |
| <property name="xtest.config" value="commit-validation-nb"/> |
| </ant> |
| <ant dir="${xtest.home}/instance" target="runtests"> |
| <property name="xtest.config" value="commit-validation-nb"/> |
| <property name="xtest.fail.on.failure" value="true"/> |
| </ant> |
| </target> |
| |
| <target name="no-commit-validation" depends="check-commit-validation" unless="run.validation"> |
| <echo> |
| *** WARNING *** |
| You do not seem to have the modules needed to run the commit validation test suite. |
| You may not commit any changes into the CVS repository without running these tests. |
| For more information: http://www.netbeans.org/community/guidelines/commit.html |
| </echo> |
| </target> |
| |
| <target name="sanity-build-from-source-pkg" depends="build-source"> |
| <available file="${netbeans.build.dir}/${cluster.name}-src-${buildnum}.zip" |
| property="pkg.available"/> |
| <fail message="Source package ${netbeans.build.dir}/${cluster.name}-src-${buildnum}.zip not available" unless="pkg.available"/> |
| <delete dir="testbuild"/> |
| <mkdir dir="testbuild"/> |
| <unzip dest="testbuild" src="${netbeans.build.dir}/${cluster.name}-src-${buildnum}.zip"/> |
| <property name="one.cluster.name" value="${cluster.name}"/> |
| <propertyset id="sanity-build"> |
| <propertyref name="one.cluster.name"/> |
| </propertyset> |
| <echoproperties destfile="testbuild/nbbuild/user.properties"> |
| <propertyset refid="sanity-build"/> |
| </echoproperties> |
| |
| <!-- it should call build of the refered cluster and not just hardcoded platform --> |
| <ant antfile="testbuild/nbbuild/build.xml" inheritall="false" target="build-one-cluster"> |
| <property file="testbuild/nbbuild/user.properties"/> |
| </ant> |
| <delete dir="testbuild"/> |
| </target> |
| |
| <target name="build-source" |
| depends="init,set-buildnumber" |
| description="Packages sources needed to compile given by cluster.name (can be specified by -Dcluster.name=nb.cluster.platform" |
| if="cluster.name" |
| > |
| <property name="buildnum" value="dev-${buildnumber}"/> |
| <echo message="Packaging sources of ${cluster.name} modules"/> |
| <resolve name="cluster-modules" value="${cluster.name}"/> |
| <resolve name="harness-modules" value="nb.cluster.harness"/> |
| <mkdir dir="${netbeans.build.dir}"/> |
| <taskdef name="definefileset" classname="org.netbeans.nbbuild.PrintCvsModules" classpath="nbantext.jar"/> |
| <definefileset modules="${cluster-modules}" targetprefix="all-" id="source-modules" dir=".." /> |
| <definefileset modules="${cluster-modules}" targetprefix="all-" id="external-modules" dir=".." mode="binaries" /> |
| <definefileset modules="${harness-modules}" targetprefix="all-" id="harness-source-modules" dir=".." /> |
| <definefileset modules="${harness-modules}" targetprefix="all-" id="harness-external-modules" dir=".." mode="binaries" /> |
| <zip zipfile="${netbeans.build.dir}/${cluster.name}-src-${buildnum}.zip" duplicate="preserve"> |
| <fileset refid="source-modules" /> |
| <fileset refid="external-modules" /> |
| <fileset refid="harness-source-modules" /> |
| <fileset refid="harness-external-modules" /> |
| </zip> |
| </target> |
| |
| <target name="generate-golden-files-init" depends="init,bootstrap" > |
| <property name="template.files.dir" location="build/golden" /> |
| <property name="golden.files.dir" location="../ide/golden" /> |
| <condition property="golden.files.eol" value="unix" > |
| <or> |
| <os family="unix" /> |
| <os family="mac" /> |
| </or> |
| </condition> |
| <property name="golden.files.eol" value="dos" /> |
| |
| <mkdir dir="${template.files.dir}" /> |
| |
| <!-- convert the golden files into platform default encoding --> |
| <fixcrlf srcdir="${golden.files.dir}" destdir="${template.files.dir}" eol="${golden.files.eol}" > |
| <include name="*txt" /> |
| </fixcrlf> |
| |
| </target> |
| |
| |
| <target name="generate-golden-files" depends="generate-golden-files-init" > |
| <property name="generated.files.dir" location="build/generated" /> |
| <mkdir dir="${generated.files.dir}" /> |
| |
| <taskdef name="deps" classname="org.netbeans.nbbuild.ModuleDependencies" classpath="nbantext.jar"/> |
| |
| <deps> |
| <input name="platform" > |
| <jars dir="${netbeans.dest.dir}" > |
| <include name="${nb.cluster.platform.dir}/**/*.jar" /> |
| </jars> |
| </input> |
| <input name="ide" > |
| <jars dir="${netbeans.dest.dir}" > |
| <include name="${nb.cluster.ide.dir}/**/*.jar" /> |
| </jars> |
| </input> |
| <input name="j2ee" > |
| <jars dir="${netbeans.dest.dir}" > |
| <include name="${nb.cluster.j2ee.dir}/**/*.jar" /> |
| </jars> |
| </input> |
| <input name="nb" > |
| <jars dir="${netbeans.dest.dir}" > |
| <include name="${nb.cluster.nb.dir}/**/*.jar" /> |
| </jars> |
| </input> |
| <input name="harness" > |
| <jars dir="${netbeans.dest.dir}" > |
| <include name="${nb.cluster.harness.dir}/**/*.jar" /> |
| </jars> |
| </input> |
| |
| <output type="group-dependencies" file="${generated.files.dir}/cluster-deps.txt" /> |
| <output type="group-implementation-dependencies" file="${generated.files.dir}/cluster-impl-deps.txt" /> |
| <output type="modules" file="${generated.files.dir}/modules.txt" /> |
| <output type="dependencies" file="${generated.files.dir}/deps.txt" /> |
| <output type="implementation-dependencies" file="${generated.files.dir}/impl-deps.txt" /> |
| <output type="public-packages" file="${generated.files.dir}/public-packages.txt" /> |
| <output type="shared-packages" file="${generated.files.dir}/shared-packages.txt" /> |
| <output type="friend-packages" file="${generated.files.dir}/friend-packages.txt" /> |
| <output type="external-libraries" file="${generated.files.dir}/external-libraries.txt" /> |
| </deps> |
| </target> |
| |
| <target name="check-public-packages" depends="generate-golden-files" > |
| <property name="check.public.packages.golden" location="${golden.files.dir}/public-packages.txt" /> |
| <property name="check.public.packages.template" location="${template.files.dir}/public-packages.txt" /> |
| <property name="check.public.packages.generated" location="${generated.files.dir}/public-packages.txt" /> |
| |
| <condition property="check-public-packages-are-they-the-same" > |
| <filesmatch file1="${check.public.packages.template}" file2="${check.public.packages.generated}" /> |
| </condition> |
| |
| |
| <exec os="Linux SunOS Solaris " dir="." executable="diff" failonerror="no" timeout="60000" > |
| <arg value="-U"/> |
| <arg value="15"/> |
| <arg value="${check.public.packages.template}" /> |
| <arg value="${check.public.packages.generated}" /> |
| </exec> |
| |
| <fail unless="check-public-packages-are-they-the-same" >! |
| *** Public packages has changed! *** |
| |
| Differences were found while comparing file |
| ${check.public.packages.template} |
| with |
| ${check.public.packages.generated} |
| |
| This means that the set of public packages changed since the previously known one. |
| Some packages may have been added, some of them may have been removed |
| Either by changing manifest of a module or by adding or removing a class file |
| from a module package. |
| |
| |
| Changing the packages may or may not be ok. It means that an api of |
| whole product changes and as such it is subject to review. If you passed |
| your review and want to change the list of public packages, then please |
| update the golden file at |
| ${check.public.packages.golden} |
| and run the test once again. |
| |
| Read more about the Verification Framework: |
| http://openide.netbeans.org/proposals/arch/clusters.html#verify |
| |
| Look at for information about reviews: |
| http://openide.netbeans.org/tutorial/review-steps.html |
| |
| Check the page about APIs: |
| http://openide.netbeans.org/tutorial/api-design.html#api |
| </fail> |
| </target> |
| |
| <target name="check-friend-packages" depends="generate-golden-files" > |
| <property name="check.friend.packages.golden" location="${golden.files.dir}/friend-packages.txt" /> |
| <property name="check.friend.packages.template" location="${template.files.dir}/friend-packages.txt" /> |
| <property name="check.friend.packages.generated" location="${generated.files.dir}/friend-packages.txt" /> |
| |
| <condition property="check-friend-packages-are-they-the-same" > |
| <filesmatch file1="${check.friend.packages.template}" file2="${check.friend.packages.generated}" /> |
| </condition> |
| |
| |
| <exec os="Linux SunOS Solaris " dir="." executable="diff" failonerror="no" timeout="60000" > |
| <arg value="-U"/> |
| <arg value="15"/> |
| <arg value="${check.friend.packages.template}" /> |
| <arg value="${check.friend.packages.generated}" /> |
| </exec> |
| |
| <fail unless="check-friend-packages-are-they-the-same" >! |
| *** Friend packages has changed! *** |
| |
| Differences were found while comparing file |
| ${check.friend.packages.template} |
| with |
| ${check.friend.packages.generated} |
| |
| This means that the set of friend packages changed since the previously known one. |
| Some packages may have been added, some of them may have been removed |
| Either by changing manifest of a module or by adding or removing a class file |
| from a module package. |
| |
| |
| Changing the packages may or may not be ok. It means that an api of |
| whole product changes and as such it is subject to review. If you passed |
| your review and want to change the list of friend packages, then please |
| update the golden file at |
| ${check.friend.packages.golden} |
| and run the test once again. |
| |
| Read more about the Verification Framework: |
| http://openide.netbeans.org/proposals/arch/clusters.html#verify |
| |
| Look at for information about reviews: |
| http://openide.netbeans.org/tutorial/review-steps.html |
| |
| Check the page about APIs: |
| http://openide.netbeans.org/tutorial/api-design.html#api |
| </fail> |
| </target> |
| |
| <target name="check-shared-packages" depends="generate-golden-files,-jdk-init" unless="have-jdk-1.5" > |
| <property name="check.shared.packages.golden" location="${golden.files.dir}/shared-packages.txt" /> |
| <property name="check.shared.packages.template" location="${template.files.dir}/shared-packages.txt" /> |
| <property name="check.shared.packages.generated" location="${generated.files.dir}/shared-packages.txt" /> |
| |
| <condition property="check-shared-packages-are-they-the-same" > |
| <filesmatch file1="${check.shared.packages.template}" file2="${check.shared.packages.generated}" /> |
| </condition> |
| |
| |
| <exec os="Linux SunOS Solaris Mac OS X" dir="." executable="diff" failonerror="no" timeout="60000" > |
| <arg value="-U"/> |
| <arg value="15"/> |
| <arg value="${check.shared.packages.template}" /> |
| <arg value="${check.shared.packages.generated}" /> |
| </exec> |
| |
| <fail unless="check-shared-packages-are-they-the-same" >! |
| *** Shared packages has changed! *** |
| |
| Differences were found while comparing file |
| ${check.shared.packages.template} |
| with |
| ${check.shared.packages.generated} |
| |
| This means that the set of shared packages changed since the previously known one. |
| Some packages may have been added, some of them may have been removed |
| Either by changing manifest of a module or by adding or removing a class file |
| from a module package. |
| |
| |
| Removing shared packages is ok. Adding shared packages is silly, complicates |
| and slows down module system and startup of the application. Do not do that! |
| If you are removing a shared package please update |
| ${check.shared.packages.golden} |
| and run the test once again. |
| |
| Read more about the Verification Framework: |
| http://openide.netbeans.org/proposals/arch/clusters.html#verify |
| |
| Look at for information about reviews: |
| http://openide.netbeans.org/tutorial/review-steps.html |
| |
| Check the page about APIs: |
| http://openide.netbeans.org/tutorial/api-design.html#api |
| </fail> |
| </target> |
| |
| <target name="check-external-libraries" depends="generate-golden-files" > |
| <property name="check.external.libraries.golden" location="${golden.files.dir}/external-libraries.txt" /> |
| <property name="check.external.libraries.template" location="${template.files.dir}/external-libraries.txt" /> |
| <property name="check.external.libraries.generated" location="${generated.files.dir}/external-libraries.txt" /> |
| |
| <condition property="check-external-libraries-are-they-the-same" > |
| <filesmatch file1="${check.external.libraries.template}" file2="${check.external.libraries.generated}" /> |
| </condition> |
| |
| |
| <exec os="Linux SunOS Solaris Mac OS X" dir="." executable="diff" failonerror="no" timeout="60000" > |
| <arg value="-U"/> |
| <arg value="15"/> |
| <arg value="${check.external.libraries.template}" /> |
| <arg value="${check.external.libraries.generated}" /> |
| </exec> |
| |
| <fail unless="check-external-libraries-are-they-the-same" >! |
| *** List of external libraries has changed! *** |
| |
| Differences were found while comparing file |
| ${check.external.libraries.template} |
| with |
| ${check.external.libraries.generated} |
| |
| This means that the set of external libraries (JARs that are not NetBeans |
| modules or does not have NetBeans-Own-Library: true in manifest) has |
| changed since the previously known one. Some libraries may have been added, |
| some of them may have been removed, they MD5 checksum or size has been changed. |
| |
| Changing the external libraries is ok, but requires legal approval everytime |
| new version of a library is put into the product. If you have the approval |
| want to change the list of external libraries, then please |
| update the golden file at |
| ${check.external.libraries.golden} |
| and run the test once again. |
| |
| Read more about the Verification Framework: |
| http://openide.netbeans.org/proposals/arch/clusters.html#verify |
| |
| Look at for information about reviews: |
| http://openide.netbeans.org/tutorial/review-steps.html |
| |
| Check the page about APIs: |
| http://openide.netbeans.org/tutorial/api-design.html#api |
| </fail> |
| </target> |
| |
| <target name="check-modules" depends="generate-golden-files" > |
| <property name="check.modules.golden" location="${golden.files.dir}/modules.txt" /> |
| <property name="check.modules.template" location="${template.files.dir}/modules.txt" /> |
| <property name="check.modules.generated" location="${generated.files.dir}/modules.txt" /> |
| |
| <condition property="check-modules-are-they-the-same" > |
| <filesmatch file1="${check.modules.template}" file2="${check.modules.generated}" /> |
| </condition> |
| |
| |
| <exec os="Linux SunOS Solaris Mac OS X" dir="." executable="diff" failonerror="no" timeout="60000" > |
| <arg value="-U"/> |
| <arg value="15"/> |
| <arg value="${check.modules.template}" /> |
| <arg value="${check.modules.generated}" /> |
| </exec> |
| |
| <fail unless="check-modules-are-they-the-same" >! |
| *** List of modules has changed! *** |
| |
| Differences were found while comparing file |
| ${check.modules.template} |
| with |
| ${check.modules.generated} |
| |
| This means that the set of modules changed since the previously known one. |
| Adding or removing a module significatly affects the set of APIs the |
| product offers and as such is subject to review. If you passed |
| your review and want to change the list of modules, then please |
| update the golden file at |
| ${check.modules.golden} |
| and run the test once again. |
| |
| Read more about the Verification Framework: |
| http://openide.netbeans.org/proposals/arch/clusters.html#verify |
| |
| Look at for information about reviews: |
| http://openide.netbeans.org/tutorial/review-steps.html |
| |
| Check the page about APIs: |
| http://openide.netbeans.org/tutorial/api-design.html#api |
| </fail> |
| </target> |
| |
| <target name="check-dependencies" depends="generate-golden-files" > |
| <antcall target="check-dependencies-subroutine" > |
| <param name="check.dependencies.golden" location="${golden.files.dir}/deps.txt" /> |
| <param name="check.dependencies.template" location="${template.files.dir}/deps.txt" /> |
| <param name="check.dependencies.generated" location="${generated.files.dir}/deps.txt" /> |
| </antcall> |
| </target> |
| |
| <target name="check-implementation-dependencies" depends="generate-golden-files" > |
| <antcall target="check-dependencies-subroutine" > |
| <param name="check.dependencies.golden" location="${golden.files.dir}/impl-deps.txt" /> |
| <param name="check.dependencies.template" location="${template.files.dir}/impl-deps.txt" /> |
| <param name="check.dependencies.generated" location="${generated.files.dir}/impl-deps.txt" /> |
| </antcall> |
| </target> |
| |
| <target name="check-cluster-dependencies" depends="generate-golden-files" > |
| <antcall target="check-dependencies-subroutine" > |
| <param name="check.dependencies.golden" location="${golden.files.dir}/cluster-deps.txt" /> |
| <param name="check.dependencies.template" location="${template.files.dir}/cluster-deps.txt" /> |
| <param name="check.dependencies.generated" location="${generated.files.dir}/cluster-deps.txt" /> |
| </antcall> |
| </target> |
| |
| <target name="check-cluster-implementation-dependencies" depends="generate-golden-files" > |
| <antcall target="check-dependencies-subroutine" > |
| <param name="check.dependencies.golden" location="${golden.files.dir}/cluster-impl-deps.txt" /> |
| <param name="check.dependencies.template" location="${template.files.dir}/cluster-impl-deps.txt" /> |
| <param name="check.dependencies.generated" location="${generated.files.dir}/cluster-impl-deps.txt" /> |
| </antcall> |
| </target> |
| |
| <target name="check-dependencies-subroutine" > |
| <condition property="check-dependencies-are-they-the-same" > |
| <filesmatch file1="${check.dependencies.template}" file2="${check.dependencies.generated}" /> |
| </condition> |
| |
| |
| <exec os="Linux SunOS Solaris Mac OS X" dir="." executable="diff" failonerror="no" timeout="60000" > |
| <arg value="-U"/> |
| <arg value="15"/> |
| <arg value="${check.dependencies.template}" /> |
| <arg value="${check.dependencies.generated}" /> |
| </exec> |
| |
| <fail unless="check-dependencies-are-they-the-same" >! |
| *** List of dependencies has changed! *** |
| |
| Differences were found while comparing file |
| ${check.dependencies.template} |
| with |
| ${check.dependencies.generated} |
| |
| This means that the set of dependencies changed since the previously known one. |
| Adding a dependency can restrict the ways how a final product can be assembled |
| and as such it forms an important aspect of API and is subject to review. |
| If you passed your review or you are sure you want to change the |
| list of dependencies, then please update the golden file at |
| ${check.dependencies.golden} |
| and run the test once again. |
| |
| Read more about the Verification Framework: |
| http://openide.netbeans.org/proposals/arch/clusters.html#verify |
| |
| Look at for information about reviews: |
| http://openide.netbeans.org/tutorial/review-steps.html |
| |
| Check the page about APIs and dependencies being important: |
| http://openide.netbeans.org/tutorial/api-design.html#api |
| </fail> |
| </target> |
| |
| |
| <target name="generate-files-layout" depends="generate-golden-files-init" > |
| <property name="generated.files.dir" location="build/generated" /> |
| <mkdir dir="${generated.files.dir}" /> |
| |
| <property name="check.files.layout.golden" location="${golden.files.dir}/files-layout.txt" /> |
| <property name="check.files.layout.template" location="${template.files.dir}/files-layout.txt" /> |
| <property name="check.files.layout.generated" location="${generated.files.dir}/files-layout.txt" /> |
| |
| <property name="check-file-layout-root" location="${netbeans.dest.dir}" /> |
| <fileset id="check-file-layout" dir="${check-file-layout-root}" casesensitive="yes" > |
| <include name="platform*/**" /> |
| <include name="ide*/**" /> |
| <include name="enterprise*/**" /> |
| <include name="nb*/**" /> |
| <include name="harness*/**" /> |
| </fileset> |
| |
| <pathconvert property="check-file-layout" refid="check-file-layout" dirsep="/" pathsep="," > |
| <map from="${check-file-layout-root}${file.separator}" to="" /> |
| </pathconvert> |
| <mkdir dir="build/generated" /> |
| <echo message="${check-file-layout}${line.separator}" file="${check.files.layout.generated}" /> |
| <replace file="${check.files.layout.generated}" token="," value="${line.separator}" /> |
| <replace file="${check.files.layout.generated}" token="\" value="/" /> |
| <condition property="check-files-are-they-the-same" > |
| <filesmatch file1="${check.files.layout.template}" file2="${check.files.layout.generated}" /> |
| </condition> |
| |
| |
| </target> |
| |
| |
| <target name="check-files-layout" depends="generate-files-layout" > |
| <exec os="Linux SunOS Solaris Mac OS X" dir="." executable="diff" failonerror="no" timeout="60000" > |
| <arg value="-U"/> |
| <arg value="15"/> |
| <arg value="${check.files.layout.template}" /> |
| <arg value="${check.files.layout.generated}" /> |
| </exec> |
| |
| <fail unless="check-files-are-they-the-same" >! |
| *** Layout of files has changed! *** |
| |
| Differences were found while comparing file ${check.files.layout.generated} with |
| ${check.files.layout.template} |
| This means that the layout of files changed since the previously known one. |
| Some files may have been added, some of them may have been removed or renamed. |
| |
| Changing the layout may or may not be ok. If you are sure that you want to |
| change the layout of files, then update the golden file at |
| ${check.files.layout.golden} |
| and run the test once again. If you got this warning without intending |
| to change the layout of files, think twice whether your commit is really |
| correct and consider asking for a review first. |
| |
| Read more about the Verification Framework: |
| http://openide.netbeans.org/proposals/arch/clusters.html#verify |
| |
| Look at for information about reviews: |
| http://openide.netbeans.org/tutorial/review-steps.html |
| |
| Check the page about APIs and files layout being an API: |
| http://openide.netbeans.org/tutorial/api-design.html#api |
| </fail> |
| </target> |
| |
| <target name="check-clusters-content" depends="bootstrap,init-tasks"> |
| <taskdef name="checkcontent" classname="org.netbeans.nbbuild.CheckClustersContent" classpath="nbantext.jar"/> |
| <checkcontent clusters="${nb.clusters.list}" trackingPath="${netbeans.dest.dir}" kitDestDir="${netbeans.dest.dir}"> |
| <exclude name="extra/**"/> |
| <exclude name="testtools/**"/> |
| <exclude name="bin/**"/> |
| <exclude name="README.html"/> |
| <exclude name="CREDITS.html"/> |
| <exclude name="LICENSE.txt"/> |
| <exclude name="nb.cluster.*"/> |
| <exclude name="etc/netbeans.conf"/> |
| <exclude name="build_info"/> |
| <exclude name="module_tracking.xml"/> |
| <exclude name="moduleCluster.properties"/> |
| <exclude name="netbeans.css"/> |
| </checkcontent> |
| </target> |
| |
| <target name="check-module-configs" depends="bootstrap" description="Sanity-check build.properties and cluster.properties."> |
| <taskdef name="checkmoduleconfigs" classname="org.netbeans.nbbuild.CheckModuleConfigs" classpath="nbantext.jar"/> |
| <checkmoduleconfigs nbroot=".."/> |
| </target> |
| |
| <target name="display-l10n-list-matches" description="Show which files are actually matched by an l10n.list in some module."> |
| <property name="nbroot" location=".."/> |
| <input addproperty="module">Select a top-level module (e.g. "java") to display results for:</input> |
| <property name="listfile" location="${nbroot}/${module}/l10n.list"/> |
| <echo>${listfile}:1: Matches follow... (click on hyperlinks from IDE!)</echo> |
| <echo>(warning: 'exclude' directives not honored here yet)</echo><!-- XXX use filtersets or something to fix --> |
| <apply parallel="false" executable="sh"> |
| <arg value="-c"/> |
| <arg value="echo $0:1"/> |
| <fileset dir="${nbroot}" includesfile="${listfile}"/> |
| </apply> |
| </target> |
| |
| <target name="increment-spec-versions" depends="bootstrap,init-module-list" description="Increment all standard module specification versions. Pass -Dbranch=true if not on the trunk."> |
| <property name="branch" value="false"/> |
| <taskdef name="incrspecvers" classname="org.netbeans.nbbuild.IncrementSpecificationVersions" classpath="nbantext.jar"/> |
| <incrspecvers nbroot=".." modules="${allmodules}" branch="${branch}"/> |
| </target> |
| |
| </project> |