| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| Copyright (c) 2013-2016 IBM Corporation and others. |
| |
| This program and the accompanying materials |
| are made available under the terms of the Eclipse Public License 2.0 |
| which accompanies this distribution, and is available at |
| https://www.eclipse.org/legal/epl-2.0/ |
| |
| SPDX-License-Identifier: EPL-2.0 |
| |
| Contributors: |
| mrennie - initial API and implementation |
| David Williams - modest modifications. |
| --> |
| |
| <!-- ====================================================================== |
| Jun 4, 2013 11:06:50 AM |
| |
| API Tools builder integration |
| This buildfile calls all of the post-build Ant tasks |
| |
| This buildfile requires the apitooling-ant.jar and the api-tasks.properties file |
| from the org.eclipse.pde.api.tools bundle |
| |
| mrennie |
| ====================================================================== --> |
| <project |
| name="API Tools builder integration" |
| default="apiToolsReports"> |
| |
| |
| |
| <!-- |
| The default target that calls apitooling.apifreeze, apitooling.analysis and apitooling.apideprecation |
| and their respective _reportconversion tasks |
| --> |
| <target |
| name="apiToolsReports" |
| depends="init, checkCurrent, warnIfNotAvailable" |
| if="currentZipAvailable"> |
| |
| <!-- make a dir to place the XML and HTML output in, per build --> |
| <property |
| name="report" |
| value="${buildDirectory}/apitools" /> |
| <mkdir dir="${report}" /> |
| <property |
| name="freeze_report" |
| value="${report}/freeze_report.xml" /> |
| <touch file="${freeze_report}" /> |
| <property |
| name="freeze_html" |
| value="${report}/freeze_report.html" /> |
| |
| |
| |
| <!-- we would have to fetch the baseline we wanted, or perhaps just link to its location --> |
| <property |
| name="baseline" |
| value="${reference}/${previousBaselineFilename}" /> |
| |
| <!-- create properties for the filters --> |
| <property |
| name="exclude_list_location" |
| value="${EBuilderDir}/eclipse/apiexclude/exclude_list.txt" /> |
| <property |
| name="exclude_list_external_location" |
| value="${EBuilderDir}/eclipse/apiexclude/exclude_list_external.txt" /> |
| |
| <!-- run the freeze task --> |
| <antcall target="dofreezeReport" /> |
| |
| <!-- create the Ant filterstore directory --> |
| <property |
| name="filter_store" |
| value="${buildDirectory}/apifilters" /> |
| <mkdir dir="${filter_store}" /> |
| |
| <!-- copy all of the .api_filters files out of the plugins from their source --> |
| <copy todir="${filter_store}"> |
| <fileset |
| dir="${buildWorkingArea}" |
| includes="**/.settings/.api_filters" /> |
| <regexpmapper |
| from=".*(org.eclipse.*\/)(\.settings\/)(\.api_filters)" |
| to="\1\3" /> |
| </copy> |
| |
| <!-- create a zip of API filters --> |
| <property |
| name="apifilterzip" |
| value="${report}/apifilters-${buildId}.zip" /> |
| <exec |
| executable="zip" |
| dir="${report}"> |
| <arg line="-r ${apifilterzip} ${filter_store}" /> |
| </exec> |
| |
| <!-- create HTML output directory --> |
| <property |
| name="analysis_html" |
| value="${report}/analysis/html" /> |
| <property |
| name="analysis_report" |
| value="${report}/analysis/xml" /> |
| |
| <!-- run the analysis --> |
| <apitooling.analysis |
| baseline="${baseline}" |
| profile="${current_location}" |
| report="${analysis_report}" |
| filters="${filter_store}" |
| excludelist="${exclude_list_external_location}" |
| debug="true" /> |
| <apitooling.analysis_reportconversion |
| xmlfiles="${analysis_report}" |
| htmlfiles="${analysis_html}" |
| debug="true" /> |
| |
| <property |
| name="deprecation_report" |
| value="${report}/deprecation/apideprecation.xml" /> |
| <property |
| name="deprecation_html" |
| value="${report}/deprecation/apideprecation.html" /> |
| |
| <!-- run the deprecation tasks --> |
| <apitooling.apideprecation |
| baseline="${baseline}" |
| profile="${current_location}" |
| report="${deprecation_report}" |
| debug="true" /> |
| <apitooling.apideprecation_reportconversion |
| xmlfile="${deprecation_report}" |
| debug="true" |
| htmlfile="${deprecation_html}" /> |
| </target> |
| |
| <target |
| name="init" |
| unless="apitoolinginitialized" |
| depends="getfreezereference"> |
| |
| <!-- The name for the build - i.e. I20130603-2000 --> |
| <fail |
| unless="buildLabel" |
| message="buildLabel must be provided." /> |
| <fail |
| unless="buildWorkingArea" |
| message="buildWorkingArea must be provided" /> |
| <fail |
| unless="previousBaselineFilename" |
| message="previousBaselineFilename must be provided" /> |
| |
| <!-- |
| The ?on-disk? location of the previous Eclipse build - for example Eclipse 4.2.2 |
| If not defined, assume same as file name ... otherwise, assume can be used for "human readable name"? |
| --> |
| <property |
| name="previousBaselineName" |
| value="${previousBaselineFilename}" /> |
| |
| <fail |
| unless="previousBaseURL" |
| message="full URL of previous build must be provided" /> |
| |
| <!-- Default buildDirectory --> |
| <fail |
| unless="buildDirectory" |
| message="buildDirectory much be provided" /> |
| |
| <!-- a dir to extract previous baselines in ... remember not to copy apitoolingreference to downloads --> |
| <property |
| name="reference" |
| value="${buildDirectory}/apitoolingreference/${previousBaselineName}" /> |
| <mkdir dir="${reference}" /> |
| |
| <get |
| dest="${reference}" |
| src="${previousBaseURL}" /> |
| <!-- no need to unzip? |
| <unzip |
| src="${reference}/${previousBaselineFilename}" |
| dest="${reference}" /> |
| --> |
| |
| <property |
| name="apitoolinginitialized" |
| value="true" /> |
| |
| </target> |
| |
| <target |
| name="warnIfNotAvailable" |
| unless="currentZipAvailable"> |
| <echo message="[WARNING] current build not available, for API analysis. Likely due to earlier build failure." /> |
| </target> |
| <target name="checkCurrent"> |
| <!-- grab the currently built + zipped build --> |
| <property |
| name="current_location" |
| value="${buildDirectory}/eclipse-SDK-${buildLabel}-win32-x86_64.zip" /> |
| <!-- |
| If not available, build failed, for other reasons, so we'll prevent |
| errors from occuring here, which might be confusing in debugging. |
| --> |
| <available |
| file="${current_location}" |
| property="currentZipAvailable" /> |
| </target> |
| |
| <!-- there will not always be a freeze report, only after M6 --> |
| <target |
| name="getfreezereference" |
| if="freezeFilename"> |
| <fail |
| unless="freezeBaseURL" |
| message="full URL of freeze build must be provided, if freezeFilename is." /> |
| |
| <!-- if not provided, assume freezeName is same as freezeFilename --> |
| <property |
| name="freezeName" |
| value="freezeFilename" /> |
| |
| <property |
| name="freezereference" |
| value="${buildDirectory}/apitoolingreference/${freezeName}" /> |
| <mkdir dir="${freezereference}" /> |
| |
| <get |
| dest="${freezereference}" |
| src="${freezeBaseURL}" /> |
| <!-- no need to unzip? |
| <unzip |
| src="${freezereference}/${freezeFilename}" |
| dest="${freezereference}" /> |
| --> |
| |
| </target> |
| |
| <!-- there will not always be a freeze report, only after M6 --> |
| <target |
| name="dofreezeReport" |
| if="freezereference"> |
| <!-- run the freeze task --> |
| <apitooling.apifreeze |
| baseline="${freezereference}/${freezeFilename}" |
| profile="${current_location}" |
| report="${freeze_report}" |
| excludelist="${exclude_list_location}" |
| debug="true" /> |
| <apitooling.apifreeze_reportconversion |
| xmlfile="${freeze_report}" |
| htmlfile="${freeze_html}" |
| debug="true" /> |
| </target> |
| </project> |