blob: 4ae47841a8328b26aae6eef7a8016d53075b44f9 [file]
<?xml version="1.0"?>
<!--
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
https://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="cyclonedx" xmlns:ivy="antlib:org.apache.ivy.ant">
<target name="define-cyclonedx-components" depends="define-core-ant-components">
<cdx:externalreferenceset
id="antlib-ext-refs"
xmlns:cdx="antlib:org.apache.ant.cyclonedx">
<externalReference
type="VCS"
url="https://gitbox.apache.org/repos/asf/ant-antlibs-props.git"/>
<externalReference
type="BUILD_SYSTEM"
url="https://ci-builds.apache.org/job/Ant/job/AntLib-props/"/>
<externalReference
type="ISSUE_TRACKER"
url="https://bz.apache.org/bugzilla/buglist.cgi?component=Props+Antlib&amp;product=Ant"/>
</cdx:externalreferenceset>
</target>
<target name="create-antlib-sbom"
depends="define-cyclonedx-components,antlib,define-core-ant-components">
<uptodate property="antlib-sbom-ok"
targetfile="${build.lib}/${artifact.stub}.cdx.json">
<srcresources>
<file file="${jarname}"/>
<file file="ivy.xml"/>
<file file="cyclonedx.xml"/>
</srcresources>
</uptodate>
<cdx:componentbom
bomName="${artifact.stub}.cdx"
outputdirectory="${build.lib}"
format="all"
useComponentSupplier="true"
useComponentManufacturer="true"
unless:set="antlib-sbom-ok"
xmlns:unless="ant:unless"
xmlns:cdx="antlib:org.apache.ant.cyclonedx">
<component
name="${artifact.name}"
group="org.apache.ant"
version="${artifact.version}"
description="Apache Props Antlib"
publisher="The Apache Software Foundation"
supplierIsManufacturer="true">
<file file="${jarname}"/>
<supplier refid="ant-pmc"/>
<license refid="apache-2"/>
<externalReferenceSet refid="ant-common-refs"/>
<externalReferenceSet refid="antlibs-common-ext-refs"/>
<externalReferenceSet refid="antlib-ext-refs"/>
<dependency componentRef="ant"/>
</component>
<additionalComponent refid="ant"/>
<additionalComponent refid="ant-launcher"/>
<license refid="apache-2"/>
</cdx:componentbom>
</target>
<target name="after-dist" depends="define-cyclonedx-components">
<macrodef name="distributionbom" backtrace="false">
<attribute name="version"/>
<attribute name="archiveName"/>
<attribute name="archiveUrl"/>
<attribute name="archiveLocation" default=""/>
<attribute name="outputDirectory"/>
<attribute name="description"/>
<attribute name="publisher"/>
<attribute name="componentType" default="file"/>
<attribute name="format" default="all"/>
<attribute name="useComponentManufacturer" default="true"/>
<attribute name="useComponentSupplier" default="true"/>
<attribute name="supplierIsManufacturer" default="true"/>
<element name="archiveContent"/>
<element name="componentChildren" optional="true"/>
<element name="additionalBomContent" optional="true"/>
<sequential
xmlns:cdx="antlib:org.apache.ant.cyclonedx">
<cdx:componentbom
bomName="@{archiveName}.cdx"
outputdirectory="@{outputDirectory}"
format="@{format}"
useComponentManufacturer="@{useComponentManufacturer}"
useComponentSupplier="@{useComponentSupplier}">
<component
version="@{version}"
purl="@{archiveUrl}"
name="@{archiveUrl}"
description="@{description}"
publisher="@{publisher}"
type="@{componentType}"
supplierIsManufacturer="@{supplierIsManufacturer}">
<file file="@{archiveLocation}"
unless:blank="@{archiveLocation}" xmlns:unless="ant:unless"/>
<componentChildren/>
</component>
<pureFileComponents>
<archiveContent/>
</pureFileComponents>
<additionalBomContent/>
</cdx:componentbom>
</sequential>
</macrodef>
<macrodef name="create-tarball-bom">
<attribute name="distdir"/>
<attribute name="distbase"/>
<attribute name="subdir"/>
<attribute name="binsrc"/>
<attribute name="binarysource"/>
<attribute name="ext"/>
<element name="moreComponentChildren" implicit="true" optional="true"/>
<sequential>
<distributionbom
outputdirectory="@{distbase}"
version="${artifact.version}"
archiveName="${dist.name}-@{binsrc}.@{ext}"
archiveUrl="https://archive.apache.org/dist/ant/antlibs/props/@{subdir}/${dist.name}-@{binsrc}.@{ext}"
archiveLocation="@{distbase}/${dist.name}-@{binsrc}.@{ext}"
description="Apache Props Antlib @{binarysource}"
publisher="The Apache Software Foundation"
xmlns:cdx="antlib:org.apache.ant.cyclonedx">
<componentChildren>
<supplier refid="ant-pmc"/>
<license refid="apache-2"/>
<externalReferenceSet refid="ant-common-refs"/>
<externalReferenceSet refid="antlibs-common-ext-refs"/>
<externalReferenceSet refid="antlib-ext-refs"/>
<moreComponentChildren/>
</componentChildren>
<archiveContent>
<fileset dir="@{distdir}/..">
<include name="${dist.name}/**"/>
</fileset>
</archiveContent>
<additionalBomContent>
<license refid="apache-2"/>
</additionalBomContent>
</distributionbom>
</sequential>
</macrodef>
<macrodef name="create-tarball-boms">
<attribute name="distdir"/>
<attribute name="distbase"/>
<attribute name="subdir"/>
<attribute name="binsrc"/>
<attribute name="binarysource"/>
<element name="componentChildren" implicit="true" optional="true"/>
<sequential>
<create-tarball-bom
distdir="@{distdir}"
distbase="@{distbase}"
subdir="@{subdir}"
binsrc="@{binsrc}"
binarysource="@{binarysource}"
ext="tar.gz">
<componentChildren/>
</create-tarball-bom>
<create-tarball-bom
distdir="@{distdir}"
distbase="@{distbase}"
subdir="@{subdir}"
binsrc="@{binsrc}"
binarysource="@{binarysource}"
ext="tar.bz2">
<componentChildren/>
</create-tarball-bom>
<create-tarball-bom
distdir="@{distdir}"
distbase="@{distbase}"
subdir="@{subdir}"
binsrc="@{binsrc}"
binarysource="@{binarysource}"
ext="zip">
<componentChildren/>
</create-tarball-bom>
</sequential>
</macrodef>
</target>
<target name="src-sboms" depends="after-dist">
<create-tarball-boms
distdir="${src.dist.dir}"
distbase="${dist.base}"
subdir="source"
binsrc="src"
binarysource="Source Distribution"/>
</target>
<target name="bin-sboms" depends="after-dist">
<create-tarball-boms
distdir="${bin.dist.dir}"
distbase="${dist.base}"
subdir="binaries"
binsrc="bin"
binarysource="Binary Distribution">
<component>
<sbomLink>
<file file="${bin.dist.dir}/${artifact.stub}.cdx.json"/>
</sbomLink>
<file file="${bin.dist.dir}/${artifact.stub}.jar"/>
</component>
</create-tarball-boms>
</target>
</project>