diff --git a/.fmf/version b/.fmf/version
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/.fmf/version
@@ -0,0 +1 @@
+1
diff --git a/.gitignore b/.gitignore
index e69de29..b0b1a70 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1,31 @@
+/results_*
+/*.src.rpm
+
+/apache-ant-1.7.1-src.tar.bz2
+/apache-ant-1.8.1-src.tar.bz2
+/apache-ant-1.8.2-src.tar.bz2
+/apache-ant-1.8.3-src.tar.bz2
+/apache-ant-1.8.4-src.tar.bz2
+/apache-ant-1.9.0-src.tar.bz2
+/apache-ant-1.9.1-src.tar.bz2
+/apache-ant-1.9.2-src.tar.bz2
+/apache-ant-1.9.3-src.tar.bz2
+/apache-ant-1.9.4-src.tar.bz2
+/apache-ant-1.9.5-src.tar.bz2
+/apache-ant-1.9.6-src.tar.bz2
+/apache-ant-1.9.7-src.tar.bz2
+/apache-ant-1.10.0-src.tar.bz2
+/apache-ant-1.10.1-src.tar.bz2
+/apache-ant-1.10.2-src.tar.bz2
+/apache-ant-1.10.3-src.tar.bz2
+/apache-ant-1.10.4-src.tar.bz2
+/apache-ant-1.10.5-src.tar.bz2
+/apache-ant-1.10.6-src.tar.bz2
+/apache-ant-1.10.7-src.tar.bz2
+/apache-ant-1.10.8-src.tar.bz2
+/apache-ant-1.10.9-src.tar.bz2
+/apache-ant-1.10.11-src.tar.bz2
+/apache-ant-1.10.12-src.tar.bz2
+/apache-ant-1.10.13-src.tar.bz2
+/apache-ant-1.10.14-src.tar.bz2
+/apache-ant-1.10.15-src.tar.bz2
diff --git a/ant-build.xml.patch b/ant-build.xml.patch
new file mode 100644
index 0000000..46706ee
--- /dev/null
+++ b/ant-build.xml.patch
@@ -0,0 +1,37 @@
+--- ant/build.xml~ 2021-05-17 12:32:48.406394876 +0200
++++ ant/build.xml 2021-05-17 12:32:39.990389601 +0200
+@@ -819,7 +817,6 @@
+
+
+
+-
+
+
+
+@@ -1562,7 +1559,25 @@
+ verbose="${javadoc.verbose}"
+ additionalparam="${javadoc.doclint.none}">
+
+-
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
+
+
+
diff --git a/ant.asciidoc b/ant.asciidoc
new file mode 100644
index 0000000..22332e0
--- /dev/null
+++ b/ant.asciidoc
@@ -0,0 +1,170 @@
+ant(1)
+======
+:doctype: manpage
+:man source: ANT
+:man manual: Apache Ant
+
+NAME
+----
+ant - Java build tool
+
+SYNOPSIS
+--------
+*ant* [OPTIONS] [TARGET [TARGET2 [TARGET3] ...]]
+
+DESCRIPTION
+-----------
+Apache Ant is a Java library and command-line tool whose mission is to drive
+processes described in build files as targets and extension points dependent
+upon each other. The main known usage of Ant is the build of Java applications.
+Ant supplies a number of built-in tasks allowing to compile, assemble, test and
+run Java applications. Ant can also be used effectively to build non Java
+applications, for instance C or C++ applications. More generally, Ant can be
+used to pilot any type of process which can be described in terms of targets
+and tasks.
+
+USAGE
+-----
+When no arguments are specified, Ant looks for a build.xml file in the current
+directory and, if found, uses that file as the build file and runs the target
+specified in the default attribute of the tag. To make Ant use
+a build file other than build.xml, use the command-line option *-buildfile*
+file, where file is the name of the build file you want to use (or a directory
+containing a build.xml file).
+
+If you use the *-find* [file] option, Ant will search for a build file first in
+the current directory, then in the parent directory, and so on, until either
+a build file is found or the root of the filesystem has been reached. By
+default, it will look for a build file called build.xml. To have it search for
+a build file other than build.xml, specify a file argument. Note: If you
+include any other flags or arguments on the command line after the *-find*
+flag, you must include the file argument for the *-find* flag, even if the name
+of the build file you want to find is build.xml.
+
+You can also set properties on the command line. This can be done with the
+*-Dproperty*=value option, where property is the name of the property, and
+value is the value for that property. If you specify a property that is also
+set in the build file (see the property task), the value specified on the
+command line will override the value specified in the build file. Defining
+properties on the command line can also be used to pass in the value of
+environment variables; just pass *-DMYVAR*=$MYVAR to Ant. You can then access
+these variables inside your build file as ${MYVAR}. You can also access
+environment variables using the property task's environment attribute.
+
+Options that affect the amount of logging output by Ant are: *-quiet*, which
+instructs Ant to print less information to the console; *-verbose*, which
+causes Ant to print additional information to the console; *-debug*, which
+causes Ant to print considerably more additional information; and *-silent*
+which makes Ant print nothing but task output and build failures (useful to
+capture Ant output by scripts).
+
+It is also possible to specify one or more targets that should be executed.
+When omitted, the target that is specified in the default attribute of the
+project tag is used.
+
+The *-projecthelp* option prints out a list of the build file's targets.
+Targets that include a description attribute are listed as "Main targets",
+those without a description are listed as "Other targets", then the "Default"
+target is listed ("Other targets" are only displayed if there are no main
+targets, or if Ant is invoked in *-verbose* or *-debug* mode).
+
+OPTIONS
+-------
+
+*-help, -h*::
+print this message and exit
+*-projecthelp, -p*::
+print project help information and exit
+*-version*::
+print the version information and exit
+*-diagnostics*::
+print information that might be helpful to diagnose or report problems and exit
+*-quiet, -q*::
+be extra quiet
+*-silent, -S*::
+print nothing but task outputs and build failures
+*-verbose, -v*::
+be extra verbose
+*-debug, -d*::
+print debugging information
+*-emacs, -e*::
+produce logging information without adornments
+*-lib *::
+specifies a path to search for jars and classes
+*-logfile , -l *::
+use given file for log
+*-logger *::
+the class which is to perform logging
+*-listener *::
+add an instance of class as a project listener
+*-noinput*::
+do not allow interactive input
+*-buildfile , -file , -f *::
+use given buildfile
+*-D=*::
+use value for given property
+*-keep-going, -k*::
+execute all targets that do not depend on failed target(s)
+*-propertyfile *::
+load all properties from file with *-D* properties taking precedence
+*-inputhandler *::
+the class which will handle input requests
+*-find , -f *::
+search for buildfile towards the root of the filesystem and use it
+*-nice number*::
+A niceness value for the main thread:
+1 (lowest) to 10 (highest); 5 is the default
+*-nouserlib*::
+Run ant without using the jar files from `${user.home}/.ant/lib`
+*-noclasspath*::
+Run ant without using `CLASSPATH`
+*-autoproxy*::
+Java1.5+: use the OS proxy settings
+*-main *::
+override Ant's normal entry point
+
+EXAMPLES
+--------
+*ant*::
+
+runs Ant using the build.xml file in the current directory, on the default target.
+
+*ant -buildfile test.xml*::
+
+runs Ant using the test.xml file in the current directory, on the default target.
+
+*ant -buildfile test.xml dist*::
+
+runs Ant using the test.xml file in the current directory, on the target called dist.
+
+*ant -buildfile test.xml -Dbuild=build/classes dist*::
+
+runs Ant using the test.xml file in the current directory, on the target called dist, setting the build property to the value "build/classes".
+
+*ant -lib /home/ant/extras*::
+
+runs Ant picking up additional task and support jars from the /home/ant/extras location
+
+*ant -lib one.jar;another.jar*::
+
+adds two jars to Ants classpath.
+
+FILES
+-----
+The Ant wrapper script for Unix will source (read and evaluate) the file *~/.antrc* before it does anything. You can use the file, for example, to set/unset environment variables that should only be visible during the execution of Ant.
+
+ENVIRONMENT VARIABLES
+---------------------
+The wrapper scripts use the following environment variables (if set):
+
+JAVACMD::
+full path of the Java executable. Use this to invoke a different JVM than JAVA_HOME/bin/java.
+ANT_OPTS::
+command-line arguments that should be passed to the JVM. For example, you can define system properties or set the maximum Java heap size here.
+ANT_ARGS::
+Ant command-line arguments. For example, set ANT_ARGS to point to a different logger, include a listener, and to include the *-find* flag.
+Note: If you include *-find* in ANT_ARGS, you should include the name of the build file to find, even if the file is called build.xml.
+
+SEE ALSO
+--------
+java(1), make(1), mvn(1)
diff --git a/ant.spec b/ant.spec
new file mode 100644
index 0000000..0a01369
--- /dev/null
+++ b/ant.spec
@@ -0,0 +1,755 @@
+# Copyright (c) 2000-2008, JPackage Project
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the
+# distribution.
+# 3. Neither the name of the JPackage Project nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+%bcond_with bootstrap
+
+%if %{without bootstrap}
+%bcond_with ant_minimal
+%else
+%bcond_without ant_minimal
+%endif
+
+%global ant_home %{_datadir}/ant
+
+Name: ant
+Version: 1.10.15
+Release: 18%{?dist}
+Summary: Java build tool
+Summary(it): Tool per la compilazione di programmi java
+Summary(fr): Outil de compilation pour java
+License: Apache-2.0
+URL: https://ant.apache.org/
+BuildArch: noarch
+ExclusiveArch: %{java_arches} noarch
+
+Source0: https://archive.apache.org/dist/ant/source/apache-ant-%{version}-src.tar.bz2
+Source2: apache-ant-1.8.ant.conf
+# manpage
+Source3: ant.asciidoc
+
+Patch: %{name}-build.xml.patch
+
+BuildRequires: rubygem-asciidoctor
+
+%if %{with bootstrap}
+BuildRequires: javapackages-bootstrap
+%else
+BuildRequires: javapackages-local
+BuildRequires: ant
+BuildRequires: ant-junit
+%endif
+
+%if %{without ant_minimal}
+BuildRequires: mvn(antlr:antlr)
+BuildRequires: mvn(bcel:bcel)
+BuildRequires: mvn(bsf:bsf)
+BuildRequires: mvn(com.jcraft:jsch)
+BuildRequires: mvn(commons-net:commons-net)
+BuildRequires: mvn(jakarta.activation:jakarta.activation-api)
+BuildRequires: mvn(jakarta.mail:jakarta.mail-api)
+BuildRequires: mvn(jdepend:jdepend)
+BuildRequires: mvn(junit:junit)
+BuildRequires: mvn(org.apache.commons:commons-logging::api:)
+BuildRequires: mvn(org.tukaani:xz)
+BuildRequires: mvn(oro:oro)
+BuildRequires: mvn(regexp:regexp)
+BuildRequires: mvn(xalan:xalan)
+BuildRequires: mvn(xml-resolver:xml-resolver)
+BuildRequires: mvn(org.hamcrest:hamcrest-core)
+BuildRequires: mvn(org.hamcrest:hamcrest-library)
+
+BuildRequires: junit5
+%endif
+
+Requires: %{name}-lib = %{version}-%{release}
+Requires: %{name}-jdk-binding
+Suggests: %{name}-openjdk21 = %{version}-%{release}
+
+%description
+Apache Ant is a Java library and command-line tool whose mission is to
+drive processes described in build files as targets and extension
+points dependent upon each other. The main known usage of Ant is the
+build of Java applications. Ant supplies a number of built-in tasks
+allowing to compile, assemble, test and run Java applications. Ant
+can also be used effectively to build non Java applications, for
+instance C or C++ applications. More generally, Ant can be used to
+pilot any type of process which can be described in terms of targets
+and tasks.
+
+%description -l fr
+Ant est un outil de compilation multi-plateformes pour java. Il est
+utilisé par les projets apache-jakarta et apache-xml.
+
+%description -l it
+Ant e' un tool indipendente dalla piattaforma creato per faciltare la
+compilazione di programmi java.
+Allo stato attuale viene utilizzato dai progetti apache jakarta ed
+apache xml.
+
+%package lib
+Summary: Core part of %{name}
+
+%description lib
+Core part of Apache Ant that can be used as a library.
+
+%package junit
+Summary: Optional junit tasks for %{name}
+Requires: %{name} = %{version}-%{release}
+
+%description junit
+Optional junit tasks for %{name}.
+
+%description junit -l fr
+Taches junit optionelles pour %{name}.
+
+%if %{without ant_minimal}
+
+%package jmf
+Summary: Optional jmf tasks for %{name}
+Requires: %{name} = %{version}-%{release}
+
+%description jmf
+Optional jmf tasks for %{name}.
+
+%description jmf -l fr
+Taches jmf optionelles pour %{name}.
+
+%package swing
+Summary: Optional swing tasks for %{name}
+Requires: %{name} = %{version}-%{release}
+
+%description swing
+Optional swing tasks for %{name}.
+
+%description swing -l fr
+Taches swing optionelles pour %{name}.
+
+%package antlr
+Summary: Optional antlr tasks for %{name}
+Requires: %{name} = %{version}-%{release}
+
+%description antlr
+Optional antlr tasks for %{name}.
+
+%description antlr -l fr
+Taches antlr optionelles pour %{name}.
+
+%package apache-bsf
+Summary: Optional apache bsf tasks for %{name}
+Requires: %{name} = %{version}-%{release}
+
+%description apache-bsf
+Optional apache bsf tasks for %{name}.
+
+%description apache-bsf -l fr
+Taches apache bsf optionelles pour %{name}.
+
+%package apache-resolver
+Summary: Optional apache resolver tasks for %{name}
+Requires: %{name} = %{version}-%{release}
+
+%description apache-resolver
+Optional apache resolver tasks for %{name}.
+
+%description apache-resolver -l fr
+Taches apache resolver optionelles pour %{name}.
+
+%package commons-logging
+Summary: Optional commons logging tasks for %{name}
+Requires: %{name} = %{version}-%{release}
+
+%description commons-logging
+Optional commons logging tasks for %{name}.
+
+%description commons-logging -l fr
+Taches commons logging optionelles pour %{name}.
+
+%package commons-net
+Summary: Optional commons net tasks for %{name}
+Requires: %{name} = %{version}-%{release}
+
+%description commons-net
+Optional commons net tasks for %{name}.
+
+%description commons-net -l fr
+Taches commons net optionelles pour %{name}.
+
+%package apache-bcel
+Summary: Optional apache bcel tasks for %{name}
+Requires: %{name} = %{version}-%{release}
+
+%description apache-bcel
+Optional apache bcel tasks for %{name}.
+
+%description apache-bcel -l fr
+Taches apache bcel optionelles pour %{name}.
+
+%package apache-oro
+Summary: Optional apache oro tasks for %{name}
+Requires: %{name} = %{version}-%{release}
+
+%description apache-oro
+Optional apache oro tasks for %{name}.
+
+%description apache-oro -l fr
+Taches apache oro optionelles pour %{name}.
+
+%package apache-regexp
+Summary: Optional apache regexp tasks for %{name}
+Requires: %{name} = %{version}-%{release}
+
+%description apache-regexp
+Optional apache regexp tasks for %{name}.
+
+%description apache-regexp -l fr
+Taches apache regexp optionelles pour %{name}.
+
+%package apache-xalan2
+Summary: Optional apache xalan2 tasks for %{name}
+Requires: %{name} = %{version}-%{release}
+
+%description apache-xalan2
+Optional apache xalan2 tasks for %{name}.
+
+%description apache-xalan2 -l fr
+Taches apache xalan2 optionelles pour %{name}.
+
+%package imageio
+Summary: Optional imageio tasks for %{name}
+Requires: %{name} = %{version}-%{release}
+
+%description imageio
+Optional imageio tasks for %{name}.
+
+%package jakartamail
+Summary: Optional jakartamail tasks for %{name}
+Requires: %{name} = %{version}-%{release}
+
+%description jakartamail
+Optional jakartamail tasks for %{name}.
+
+%description jakartamail -l fr
+Taches jakartamail optionelles pour %{name}.
+
+%package jdepend
+Summary: Optional jdepend tasks for %{name}
+Requires: %{name} = %{version}-%{release}
+
+%description jdepend
+Optional jdepend tasks for %{name}.
+
+%description jdepend -l fr
+Taches jdepend optionelles pour %{name}.
+
+%package jsch
+Summary: Optional jsch tasks for %{name}
+Requires: %{name} = %{version}-%{release}
+
+%description jsch
+Optional jsch tasks for %{name}.
+
+%description jsch -l fr
+Taches jsch optionelles pour %{name}.
+
+%package junit5
+Summary: Optional junit5 tasks for %{name}
+Requires: %{name} = %{version}-%{release}
+
+%description junit5
+Optional junit5 tasks for %{name}.
+
+%description junit5 -l fr
+Taches junit5 optionelles pour %{name}.
+
+%package testutil
+Summary: Test utility classes for %{name}
+Requires: %{name} = %{version}-%{release}
+
+%description testutil
+Test utility tasks for %{name}.
+
+%package xz
+Summary: Optional xz tasks for %{name}
+Requires: %{name} = %{version}-%{release}
+
+%description xz
+Optional xz tasks for %{name}.
+
+%package manual
+Summary: Manual for %{name}
+# ant-manual contains file tutorial-tasks-filesets-properties.zip
+# which in turn contains src/Find.java and src/FindTest.java both
+# licensed under ASL 1.1. See rhbz#1055629
+License: Apache-2.0 AND Apache-1.1
+
+%description manual
+Documentation for %{name}.
+
+%description manual -l it
+Documentazione di %{name}.
+
+%description manual -l fr
+Documentation pour %{name}.
+
+%package javadoc
+Summary: Javadoc for %{name}
+
+%description javadoc
+Javadoc for %{name}.
+
+%description javadoc -l fr
+Javadoc pour %{name}.
+
+%endif
+
+%package -n ant-openjdk21
+Summary: ant binding for openjdk21
+Provides: ant-jdk-binding
+Requires: java-21-openjdk-headless
+Recommends: java-21-openjdk-devel
+Requires: javapackages-tools
+Requires(meta): ant
+
+%description -n ant-openjdk21
+Configures ant to work with openjdk21.
+
+%files -n ant-openjdk21
+%ghost /usr/share/jpbinding/ant.conf
+%dir /usr/share/jpbinding/ant.conf.d
+%{_jpbindingdir}/ant.conf.d/openjdk21
+
+%package -n ant-unbound
+Summary: ant binding for unbound
+Provides: ant-jdk-binding
+Requires: javapackages-tools
+Requires(meta): ant
+
+%description -n ant-unbound
+Configures ant to work with unbound.
+
+%files -n ant-unbound
+%ghost /usr/share/jpbinding/ant.conf
+%dir /usr/share/jpbinding/ant.conf.d
+%{_jpbindingdir}/ant.conf.d/unbound
+
+# -----------------------------------------------------------------------------
+
+%prep
+%autosetup -p1 -n apache-ant-%{version}
+
+# clean jar files
+find . -name "*.jar" | xargs -t rm
+
+# failing testcases. TODO see why
+rm src/tests/junit/org/apache/tools/ant/types/selectors/SignedSelectorTest.java \
+ src/tests/junit/org/apache/tools/ant/taskdefs/condition/IsFileSelectedTest.java \
+ src/tests/junit/org/apache/tools/ant/taskdefs/condition/IsSignedTest.java \
+ src/tests/junit/org/apache/tools/ant/taskdefs/optional/image/ImageIOTest.java \
+ src/tests/junit/org/apache/tools/ant/taskdefs/JarTest.java \
+ src/tests/junit/org/apache/tools/mail/MailMessageTest.java
+
+# Test relies on internal JUnit 5 API that was changed
+rm src/tests/junit/org/apache/tools/ant/taskdefs/optional/junitlauncher/LegacyXmlResultFormatterTest.java
+
+# Log4jListener is deprecated by upstream: Apache Log4j (1) is not
+# developed any more. Last release is 1.2.17 from 26 May 2012 and
+# contains vulnerability issues.
+rm src/main/org/apache/tools/ant/listener/Log4jListener.java
+
+#install jars
+%if %{with bootstrap}
+ln -s %{_prefix}/lib/javapackages-bootstrap/junit.jar lib/optional/junit.jar
+ln -s %{_prefix}/lib/javapackages-bootstrap/hamcrest-core.jar lib/optional/hamcrest-core.jar
+%else
+%if %{with ant_minimal}
+build-jar-repository -s -p lib/optional junit hamcrest/core hamcrest/library
+%else
+build-jar-repository -s -p lib/optional antlr bcel commons-lang3 jakarta-mail/jakarta.mail-api jakarta-activation/jakarta.activation-api jdepend junit oro regexp bsf commons-logging commons-net jsch xalan-j2 xml-commons-resolver xalan-j2-serializer hamcrest/core hamcrest/library xz-java junit5 opentest4j
+%endif
+%endif
+
+# fix hardcoded paths in ant script and conf
+cp -p %{SOURCE2} %{name}.conf
+sed -e 's:/etc/ant.conf:%{_sysconfdir}/ant.conf:g' \
+ -e 's:/etc/ant.d:%{_sysconfdir}/ant.d:g' \
+ -e 's:/usr/share/ant:%{_datadir}/ant:g' \
+ -e 's:/usr/bin/build-classpath:%{_bindir}/build-classpath:g' \
+ -e 's:/usr/share/java-utils/java-functions:%{_javadir}-utils/java-functions:g' \
+ -i src/script/ant %{name}.conf
+
+# Remove unnecessary JARs from the classpath
+sed -i 's/jaxp_parser_impl//;s/xml-commons-apis//' src/script/ant
+
+# Fix file-not-utf8 rpmlint warning
+iconv KEYS -f iso-8859-1 -t utf-8 >KEYS.utf8
+mv KEYS.utf8 KEYS
+iconv LICENSE -f iso-8859-1 -t utf-8 >LICENSE.utf8
+mv LICENSE.utf8 LICENSE
+
+# We want a hard dep on antlr
+%pom_xpath_remove pom:optional src/etc/poms/ant-antlr/pom.xml
+
+# fix javamail dependency coordinates (remove once javamail is updated)
+%pom_change_dep com.sun.mail:jakarta.mail jakarta.mail:jakarta.mail-api src/etc/poms/ant-jakartamail/pom.xml
+
+%pom_change_dep commons-logging:commons-logging-api org.apache.commons:commons-logging::api: src/etc/poms/ant-commons-logging/pom.xml
+
+%build
+%if %{with ant_minimal}
+%{ant} jars
+%else
+%{ant} jars test-jar javadocs
+%endif
+
+# typeset the manpage
+asciidoctor -b manpage -D man %{SOURCE3}
+
+# remove empty jai and netrexx jars. Due to missing dependencies they contain only manifests.
+rm build/lib/ant-jai.jar build/lib/ant-netrexx.jar
+# log4j logging is deprecated
+rm build/lib/ant-apache-log4j.jar
+# dropped in favor of jakartamail
+rm build/lib/ant-javamail.jar
+
+%install
+# ANT_HOME and subdirs
+mkdir -p %{buildroot}%{ant_home}/{lib,etc,bin}
+
+%mvn_alias :ant org.apache.ant:ant-nodeps apache:ant ant:ant
+%mvn_alias :ant-launcher ant:ant-launcher
+
+%mvn_file ':{ant,ant-bootstrap,ant-launcher}' %{name}/@1 @1
+
+%if %{with ant_minimal}
+mv build/lib build/lib0
+mkdir build/lib/
+mv build/lib0/ant.jar build/lib/
+mv build/lib0/ant-bootstrap.jar build/lib/
+mv build/lib0/ant-launcher.jar build/lib/
+mv build/lib0/ant-junit.jar build/lib/
+mv build/lib0/ant-junit4.jar build/lib/
+%endif
+
+for jar in build/lib/*.jar; do
+ # Make sure that installed JARs are not empty
+ jar tf ${jar} | grep -E -q '.*\.class'
+
+ jarname=$(basename $jar .jar)
+
+ # jar aliases
+ ln -sf ../../java/%{name}/${jarname}.jar %{buildroot}%{ant_home}/lib/${jarname}.jar
+
+ pom=src/etc/poms/${jarname}/pom.xml
+
+ # bootstrap does not have a pom, generate one
+ [ $jarname == ant-bootstrap ] && pom='org.apache.ant:ant-bootstrap:%{version}'
+
+ %mvn_artifact ${pom} ${jar}
+done
+
+# ant-parent pom
+%mvn_artifact src/etc/poms/pom.xml
+
+%mvn_package :ant lib
+%mvn_package :ant-launcher lib
+%mvn_package :ant-bootstrap lib
+%mvn_package :ant-parent lib
+%mvn_package :ant-junit4 junit
+# catchall rule for the rest
+%mvn_package ':ant-{*}' @1
+
+%mvn_install
+
+# scripts: remove dos and os/2 scripts
+rm -f src/script/*.bat
+rm -f src/script/*.cmd
+
+# XSLs
+%if %{with ant_minimal}
+rm src/etc/jdepend-frames.xsl
+rm src/etc/jdepend.xsl
+rm src/etc/maudit-frames.xsl
+%endif
+cp -p src/etc/*.xsl %{buildroot}%{ant_home}/etc
+
+# install everything else
+mkdir -p %{buildroot}%{_bindir}
+cp -p src/script/ant %{buildroot}%{_bindir}/
+ln -sf %{_bindir}/ant %{buildroot}%{ant_home}/bin/
+cp -p src/script/antRun %{buildroot}%{ant_home}/bin/
+
+# default ant.conf
+mkdir -p %{buildroot}%{_sysconfdir}
+cp -p %{name}.conf %{buildroot}%{_sysconfdir}/%{name}.conf
+
+# OPT_JAR_LIST fragments
+mkdir -p %{buildroot}%{_sysconfdir}/%{name}.d
+echo "junit hamcrest/core ant/ant-junit" > %{buildroot}%{_sysconfdir}/%{name}.d/junit
+echo "junit hamcrest/core ant/ant-junit4" > %{buildroot}%{_sysconfdir}/%{name}.d/junit4
+
+# JDK bindings
+%if !0%{?specpartsdir:1}
+export RPM_SPECPARTS_DIR=/tmp
+%endif
+install -d -m 755 %{buildroot}%{_javaconfdir}/
+ln -sf %{_jpbindingdir}/ant.conf %{buildroot}%{_javaconfdir}/ant.conf
+echo 'JAVA_HOME=%{_jvmdir}/jre-21-openjdk' > %{buildroot}%{_javaconfdir}/ant-openjdk21.conf
+%jp_binding --verbose --variant openjdk21 --ghost ant.conf --target %{_javaconfdir}/ant-openjdk21.conf --provides %{name}-jdk-binding --requires java-21-openjdk-headless --recommends java-21-openjdk-devel
+touch %{buildroot}%{_javaconfdir}/ant-unbound.conf
+%jp_binding --verbose --variant unbound --ghost ant.conf --target %{_javaconfdir}/ant-unbound.conf --provides %{name}-jdk-binding
+
+%if %{without ant_minimal}
+
+echo "ant/ant-jmf" > %{buildroot}%{_sysconfdir}/%{name}.d/jmf
+echo "ant/ant-swing" > %{buildroot}%{_sysconfdir}/%{name}.d/swing
+echo "antlr ant/ant-antlr" > %{buildroot}%{_sysconfdir}/%{name}.d/antlr
+echo "bsf commons-logging ant/ant-apache-bsf" > %{buildroot}%{_sysconfdir}/%{name}.d/apache-bsf
+echo "xml-commons-resolver ant/ant-apache-resolver" > %{buildroot}%{_sysconfdir}/%{name}.d/apache-resolver
+echo "apache-commons-logging ant/ant-commons-logging" > %{buildroot}%{_sysconfdir}/%{name}.d/commons-logging
+echo "apache-commons-net ant/ant-commons-net" > %{buildroot}%{_sysconfdir}/%{name}.d/commons-net
+echo "bcel commons-lang3 ant/ant-apache-bcel" > %{buildroot}%{_sysconfdir}/%{name}.d/apache-bcel
+echo "oro ant/ant-apache-oro" > %{buildroot}%{_sysconfdir}/%{name}.d/apache-oro
+echo "regexp ant/ant-apache-regexp" > %{buildroot}%{_sysconfdir}/%{name}.d/apache-regexp
+echo "xalan-j2 xalan-j2-serializer ant/ant-apache-xalan2" > %{buildroot}%{_sysconfdir}/%{name}.d/apache-xalan2
+echo "ant/ant-imageio" > %{buildroot}%{_sysconfdir}/%{name}.d/imageio
+echo "jakartamail jaf ant/ant-jakartamail" > %{buildroot}%{_sysconfdir}/%{name}.d/jakartamail
+echo "jdepend ant/ant-jdepend" > %{buildroot}%{_sysconfdir}/%{name}.d/jdepend
+echo "jsch ant/ant-jsch" > %{buildroot}%{_sysconfdir}/%{name}.d/jsch
+echo "junit5 hamcrest/core junit opentest4j ant/ant-junitlauncher" > %{buildroot}%{_sysconfdir}/%{name}.d/junitlauncher
+echo "testutil ant/ant-testutil" > %{buildroot}%{_sysconfdir}/%{name}.d/testutil
+echo "xz-java ant/ant-xz" > %{buildroot}%{_sysconfdir}/%{name}.d/xz
+
+# javadoc
+mkdir -p %{buildroot}%{_javadocdir}/%{name}
+cp -pr build/javadocs/* %{buildroot}%{_javadocdir}/%{name}
+
+# fix link between manual and javadoc
+(cd manual; ln -sf %{_javadocdir}/%{name} api)
+
+%endif
+
+# manpage
+install -d -m 755 %{buildroot}%{_mandir}/man1/
+install -p -m 644 man/%{name}.1 %{buildroot}%{_mandir}/man1/%{name}.1
+
+%if %{without ant_minimal}
+%check
+%{ant} -Doffline=true test
+%endif
+
+%files
+%doc KEYS README WHATSNEW
+%license LICENSE NOTICE
+%config %{_javaconfdir}/%{name}*.conf
+%config(noreplace) %{_sysconfdir}/%{name}.conf
+%attr(0755,root,root) %{_bindir}/ant
+%dir %{ant_home}/bin
+%{ant_home}/bin/ant
+%attr(0755,root,root) %{ant_home}/bin/antRun
+%{_mandir}/man1/%{name}.*
+%dir %{ant_home}/etc
+%{ant_home}/etc/ant-update.xsl
+%{ant_home}/etc/changelog.xsl
+%{ant_home}/etc/coverage-frames.xsl
+%{ant_home}/etc/mmetrics-frames.xsl
+%{ant_home}/etc/log.xsl
+%{ant_home}/etc/tagdiff.xsl
+%{ant_home}/etc/common2master.xsl
+%{ant_home}/etc/printFailingTests.xsl
+%dir %{_sysconfdir}/%{name}.d
+
+%files lib -f .mfiles-lib
+%dir %{ant_home}
+%dir %{ant_home}/lib
+%{ant_home}/lib/%{name}.jar
+%{ant_home}/lib/%{name}-launcher.jar
+%{ant_home}/lib/%{name}-bootstrap.jar
+
+%files junit -f .mfiles-junit
+%{ant_home}/lib/%{name}-junit.jar
+%{ant_home}/lib/%{name}-junit4.jar
+%config(noreplace) %{_sysconfdir}/%{name}.d/junit
+%config(noreplace) %{_sysconfdir}/%{name}.d/junit4
+%{ant_home}/etc/junit-frames.xsl
+%{ant_home}/etc/junit-noframes.xsl
+%{ant_home}/etc/junit-frames-xalan1.xsl
+%{ant_home}/etc/junit-frames-saxon.xsl
+%{ant_home}/etc/junit-noframes-saxon.xsl
+
+%if %{without ant_minimal}
+
+%files jmf -f .mfiles-jmf
+%{ant_home}/lib/%{name}-jmf.jar
+%config(noreplace) %{_sysconfdir}/%{name}.d/jmf
+
+%files swing -f .mfiles-swing
+%{ant_home}/lib/%{name}-swing.jar
+%config(noreplace) %{_sysconfdir}/%{name}.d/swing
+
+%files antlr -f .mfiles-antlr
+%{ant_home}/lib/%{name}-antlr.jar
+%config(noreplace) %{_sysconfdir}/%{name}.d/antlr
+
+%files apache-bsf -f .mfiles-apache-bsf
+%{ant_home}/lib/%{name}-apache-bsf.jar
+%config(noreplace) %{_sysconfdir}/%{name}.d/apache-bsf
+
+%files apache-resolver -f .mfiles-apache-resolver
+%{ant_home}/lib/%{name}-apache-resolver.jar
+%config(noreplace) %{_sysconfdir}/%{name}.d/apache-resolver
+
+%files commons-logging -f .mfiles-commons-logging
+%{ant_home}/lib/%{name}-commons-logging.jar
+%config(noreplace) %{_sysconfdir}/%{name}.d/commons-logging
+
+%files commons-net -f .mfiles-commons-net
+%{ant_home}/lib/%{name}-commons-net.jar
+%config(noreplace) %{_sysconfdir}/%{name}.d/commons-net
+
+%files apache-bcel -f .mfiles-apache-bcel
+%{ant_home}/lib/%{name}-apache-bcel.jar
+%config(noreplace) %{_sysconfdir}/%{name}.d/apache-bcel
+
+%files apache-oro -f .mfiles-apache-oro
+%{ant_home}/lib/%{name}-apache-oro.jar
+%config(noreplace) %{_sysconfdir}/%{name}.d/apache-oro
+%{ant_home}/etc/maudit-frames.xsl
+
+%files apache-regexp -f .mfiles-apache-regexp
+%{ant_home}/lib/%{name}-apache-regexp.jar
+%config(noreplace) %{_sysconfdir}/%{name}.d/apache-regexp
+
+%files apache-xalan2 -f .mfiles-apache-xalan2
+%{ant_home}/lib/%{name}-apache-xalan2.jar
+%config(noreplace) %{_sysconfdir}/%{name}.d/apache-xalan2
+
+%files imageio -f .mfiles-imageio
+%{ant_home}/lib/%{name}-imageio.jar
+%config(noreplace) %{_sysconfdir}/%{name}.d/imageio
+
+%files jakartamail -f .mfiles-jakartamail
+%{ant_home}/lib/%{name}-jakartamail.jar
+%config(noreplace) %{_sysconfdir}/%{name}.d/jakartamail
+
+%files jdepend -f .mfiles-jdepend
+%{ant_home}/lib/%{name}-jdepend.jar
+%config(noreplace) %{_sysconfdir}/%{name}.d/jdepend
+%{ant_home}/etc/jdepend.xsl
+%{ant_home}/etc/jdepend-frames.xsl
+
+%files jsch -f .mfiles-jsch
+%{ant_home}/lib/%{name}-jsch.jar
+%config(noreplace) %{_sysconfdir}/%{name}.d/jsch
+
+%files junit5 -f .mfiles-junitlauncher
+%{ant_home}/lib/%{name}-junitlauncher.jar
+%config(noreplace) %{_sysconfdir}/%{name}.d/junitlauncher
+
+%files testutil -f .mfiles-testutil
+%{ant_home}/lib/%{name}-testutil.jar
+%config(noreplace) %{_sysconfdir}/%{name}.d/testutil
+
+%files xz -f .mfiles-xz
+%{ant_home}/lib/%{name}-xz.jar
+%config(noreplace) %{_sysconfdir}/%{name}.d/xz
+
+%files manual
+%license LICENSE NOTICE
+%doc manual/*
+
+%files javadoc
+%license LICENSE NOTICE
+%{_javadocdir}/%{name}
+
+%endif
+
+# -----------------------------------------------------------------------------
+
+%changelog
+* Fri Jan 10 2025 Marian Koncek - 1.10.15-19
+- Import from Fedora
+
+* Thu Jan 02 2025 Mikolaj Izdebski - 1.10.15-18
+- Drop Obsoletes on ant-javamail
+
+* Wed Dec 04 2024 Mikolaj Izdebski - 1.10.15-17
+- Exclude several subpackages from unbound test plan
+
+* Tue Dec 03 2024 Mikolaj Izdebski - 1.10.15-16
+- Fix ant-manual license field
+
+* Mon Dec 02 2024 Mikolaj Izdebski - 1.10.15-15
+- Use smaller jlink image
+
+* Mon Dec 02 2024 Mikolaj Izdebski - 1.10.15-14
+- Require /plans/matrix/unbound/jlink for gating
+
+* Mon Dec 02 2024 Mikolaj Izdebski - 1.10.15-13
+- Add test plan for ant-unbound
+
+* Mon Dec 02 2024 Mikolaj Izdebski - 1.10.15-12
+- Exclude ant-unbound from openjdk21 tests
+
+* Fri Nov 29 2024 Mikolaj Izdebski - 1.10.15-11
+- Drop explicit requires on javapackages-tools
+
+* Fri Nov 22 2024 Mikolaj Izdebski - 1.10.15-10
+- Generate bindings with %%jp_binding macro
+
+* Wed Oct 30 2024 Mikolaj Izdebski - 1.10.15-9
+- Work around iconv clobbering file permissions
+
+* Wed Oct 30 2024 Marian Koncek - 1.10.15-8
+- Replace with %%{buildroot}
+
+* Wed Oct 30 2024 Marian Koncek - 1.10.15-7
+- Add ant-openjdk21 subpackage
+
+* Wed Oct 30 2024 Mikolaj Izdebski - 1.10.15-6
+- Respect JAVA_HOME set by user
+
+* Wed Oct 30 2024 Mikolaj Izdebski - 1.10.15-5
+- Switch to matrix tests
+
+* Thu Sep 19 2024 Mikolaj Izdebski - 1.10.15-4
+- Require OpenJDK 21 for runtime
+
+* Wed Sep 18 2024 Marian Koncek - 1.10.15-3
+- Use asciidoctor instead of asciidoc for manpage generation
+
+* Tue Sep 03 2024 Mikolaj Izdebski - 1.10.15-2
+- Use %%autosetup -C
+
+* Tue Sep 03 2024 Mikolaj Izdebski - 1.10.15-1
+- Update to upstream version 1.10.15
+- Resolves: rhbz#2309001
+
+* Mon Aug 26 2024 Mikolaj Izdebski - 1.10.14-22
+- Drop explicit LC_ALL setting
diff --git a/apache-ant-1.8.ant.conf b/apache-ant-1.8.ant.conf
new file mode 100644
index 0000000..1a27083
--- /dev/null
+++ b/apache-ant-1.8.ant.conf
@@ -0,0 +1,24 @@
+# ant.conf (Ant 1.8.x)
+# JPackage Project
+
+# Validate --noconfig setting in case being invoked
+# from pre Ant 1.6.x environment
+if [ -z "$no_config" ] ; then
+ no_config=true
+fi
+
+# Setup ant configuration
+if $no_config ; then
+ # Disable RPM layout
+ rpm_mode=false
+else
+ # Use RPM layout
+ rpm_mode=true
+
+ # ANT_HOME for rpm layout
+ ANT_HOME=/usr/share/ant
+
+ if [ -z "$JAVA_HOME" ] ; then
+ . /etc/java/ant.conf
+ fi
+fi
diff --git a/ci.fmf b/ci.fmf
new file mode 100644
index 0000000..c5aa0e0
--- /dev/null
+++ b/ci.fmf
@@ -0,0 +1 @@
+resultsdb-testcase: separate
diff --git a/gating.yaml b/gating.yaml
new file mode 100644
index 0000000..aea4399
--- /dev/null
+++ b/gating.yaml
@@ -0,0 +1,10 @@
+--- !Policy
+product_versions:
+ - rhel-9
+decision_contexts:
+ - osci_compose_gate
+rules:
+ - !PassingTestCaseRule {test_case_name: osci.brew-build./plans/matrix/jdk21/full.functional}
+ - !PassingTestCaseRule {test_case_name: osci.brew-build./plans/matrix/jdk21/headless.functional}
+ - !PassingTestCaseRule {test_case_name: osci.brew-build./plans/matrix/unbound/jlink.functional}
+ - !PassingTestCaseRule {test_case_name: osci.brew-build./plans/javapackages.functional}
diff --git a/plans/javapackages.fmf b/plans/javapackages.fmf
new file mode 100644
index 0000000..8ba3510
--- /dev/null
+++ b/plans/javapackages.fmf
@@ -0,0 +1,7 @@
+summary: Run javapackages-specific tests
+discover:
+ how: fmf
+ url: https://src.fedoraproject.org/tests/javapackages
+ ref: c9s
+execute:
+ how: tmt
diff --git a/plans/matrix.fmf b/plans/matrix.fmf
new file mode 100644
index 0000000..950839c
--- /dev/null
+++ b/plans/matrix.fmf
@@ -0,0 +1,55 @@
+discover:
+ how: fmf
+ url: https://src.fedoraproject.org/tests/ant
+
+execute:
+ how: tmt
+
+/jdk21:
+ environment:
+ OPENJDK_VERSION: 21
+ prepare:
+ - how: install
+ exclude:
+ - ant-unbound
+
+ /full:
+ summary: Ant matrix tests - OpenJDK 21 full
+ discover+:
+ filter: tag:jdk21 & tier:0,1
+
+ /headless:
+ summary: Ant matrix tests - OpenJDK 21 headless
+ discover+:
+ filter: tag:jre21 & tier:0,1
+ environment+:
+ OPENJDK_HEADLESS: "true"
+ prepare+:
+ - how: shell
+ script: |
+ dnf -y remove java-*-openjdk
+
+/unbound:
+ prepare:
+ - how: install
+ exclude:
+ - ant-openjdk21
+ # These subpackages pull in packaged Java through their dependencies
+ - ant-antlr
+ - ant-apache-regexp
+ - ant-apache-resolver
+ - ant-apache-xalan2
+ - ant-junit5
+
+ /jlink:
+ summary: Ant matrix tests - unbound jlink-based Java
+ discover+:
+ filter: tag:unbound & tier:0,1
+ prepare+:
+ - how: shell
+ script: |
+ test -d /opt/java && test -x /usr/local/bin/java && exit 0
+ dnf -y install java-21-openjdk-jmods
+ jlink --add-modules java.base,java.xml --output /opt/java
+ ln -s /opt/java/bin/java /usr/local/bin/java
+ dnf -y remove java-21-openjdk-jmods
diff --git a/sources b/sources
new file mode 100644
index 0000000..ce47a63
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (apache-ant-1.10.15-src.tar.bz2) = fd9477ce9ee0f4dcf000ab1583d1b6b85bc65be45a1a0d7366420029be6983e47fe44c3293263c54cde957b13a6bb2a29ea1b059a30f745ccc6219480feefac2