File ant.spec of Package ant
#
# spec file for package ant
#
# Copyright (c) 2025 SUSE LLC and contributors
# Copyright (c) 2000-2009, JPackage Project
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%global ant_home %{_datadir}/ant
%global major_version 1.9
Name: ant
Version: 1.9.16
Release: 0
Summary: Java-based build tool
License: Apache-2.0
Group: Development/Tools/Building
URL: https://ant.apache.org/
Source0: http://www.apache.org/dist/ant/source/apache-ant-%{version}-src.tar.bz2
Source1: apache-ant-1.8.ant.conf
Source1001: http://www.apache.org/dist/ant/source/apache-ant-%{version}-src.tar.bz2.asc
Source1002: ant.keyring
Patch0: apache-ant-no-test-jar.patch
Patch1: apache-ant-class-path-in-manifest.patch
Patch4: apache-ant-1.9.9-sourcetarget.patch
Patch5: apache-ant-bootstrap.patch
#PATCH-FEATURE-OPENSUSE bmwiedemann -- have fixed build dates
Patch6: reproducible-build-date.patch
Patch7: gcj-isReachable.patch
Patch8: reproducible-tstamp.patch
BuildRequires: antlr-bootstrap
# Needed for maven conversions
BuildRequires: java-1_5_0-gcj-compat-devel
BuildRequires: java-devel
BuildRequires: javapackages-tools
BuildRequires: unzip
BuildRequires: xml-commons-apis-bootstrap
BuildConflicts: java >= 1.6
BuildConflicts: java-devel >= 1.6
BuildConflicts: java-headless >= 1.6
#!BuildIgnore: antlr-java
#!BuildIgnore: xerces-j2-bootstrap
Requires: java-devel
Requires: javapackages-tools
Requires: xml-commons-apis
Requires: xml-commons-resolver
Obsoletes: apache-ant < %{version}
Provides: apache-ant = %{version}
Obsoletes: ant-nodeps < %{version}
Provides: ant-nodeps = %{version}
Obsoletes: ant-trax < %{version}
Provides: ant-trax = %{version}
BuildArch: noarch
%if 0%{?suse_version} > 1320
BuildRequires: strip-nondeterminism
%endif
%description
Apache Ant is a Java-based build tool. In theory, it is kind of like
Make. Build description files are written in XML.
%package -n ant-jmf
Summary: Optional jmf tasks for ant
Group: Development/Tools/Building
Requires: ant = %{version}
Provides: ant-jmf = %{version}-%{release}
%description -n ant-jmf
Apache Ant is a Java-based build tool.
This package contains optional jmf tasks for Apache Ant.
%package -n ant-swing
Summary: Optional swing tasks for ant
Group: Development/Tools/Building
Requires: ant = %{version}
Provides: ant-swing = %{version}-%{release}
%description -n ant-swing
Apache Ant is a Java-based build tool.
This package contains optional swing tasks for Apache Ant.
%package -n ant-scripts
Summary: Additional scripts for ant
Group: Development/Tools/Building
Requires: ant = %{version}
Requires: perl
Requires: python3-base
%description -n ant-scripts
Apache Ant is a Java-based build tool.
This package contains additional perl and python scripts for Apache
Ant.
%prep
%setup -q -n apache-ant-%{version}
#Fixup version
find -name build.xml -o -name pom.xml | xargs sed -i -e s/-SNAPSHOT//
# When bootstrapping, we don't have junit
%patch -P 0 -p1
%patch -P 1
%patch -P 4 -p1
%patch -P 5 -p1
%patch -P 6 -p1
%patch -P 7 -p1
%patch -P 8 -p1
# clean jar files
find . -name "*.jar" -print -delete
# 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/JarTest.java \
src/tests/junit/org/apache/tools/mail/MailMessageTest.java
#install jars
# Fix file-not-utf8 rpmlint warning
iconv KEYS -f iso-8859-1 -t utf-8 -o KEYS.utf8
mv KEYS.utf8 KEYS
iconv LICENSE -f iso-8859-1 -t utf-8 -o LICENSE.utf8
mv LICENSE.utf8 LICENSE
# -----------------------------------------------------------------------------
%build
export OPT_JAR_LIST=:
export GC_MAXIMUM_HEAP_SIZE="134217728" #128M
export BOOTJAVAC_OPTS="-source 1.5 -target 1.5"
export ANT_OPTS="-Doptimize=false -Djavac.source=1.5 -Djavac.target=1.5"
sh -x ./build.sh --noconfig jars
%?strip_all_nondeterminism
%install
# ANT_HOME and subdirs
mkdir -p %{buildroot}%{ant_home}/{lib,etc}
# jars
install -d -m 755 %{buildroot}%{_javadir}/ant
install -d -m 755 %{buildroot}%{_mavenpomdir}
rm build/lib/ant-junit*.jar
for jar in build/lib/*.jar
do
jarname=$(basename $jar .jar)
pomname="JPP.ant-${jarname}.pom"
#Determine where to put it
case $jarname in
#These go into %%{_javadir}, pom files have different names
ant | ant-bootstrap | ant-launcher)
destdir="%{buildroot}%{_javadir}"; destname="";pomname="JPP-$jarname.pom"
;;
ant-jmf|ant-swing)
destdir="%{buildroot}%{_javadir}/ant"; destname="ant/";
;;
#Bootstracp builds an incomplete ant-foo jars, don't ship them
*)
continue
;;
esac
#instal jar
install -m 644 ${jar} ${destdir}/${jarname}.jar
# jar aliases
ln -sf ../../java/${destname}${jarname}.jar %{buildroot}%{ant_home}/lib/${jarname}.jar
#bootstrap does not have a pom
[ $jarname == ant-bootstrap ] && continue
done
# scripts: remove dos and os/2 scripts
rm -f src/script/*.bat
rm -f src/script/*.cmd
# XSLs
cp -p src%{_sysconfdir}/*.xsl %{buildroot}%{ant_home}%{_sysconfdir}
rm -f %{buildroot}%{ant_home}%{_sysconfdir}/{maudit-frames,jdepend,jdepend-frames,junit-frames,junit-noframes}.xsl
# install everything else
mkdir -p %{buildroot}%{_bindir}
cp -p src/script/* %{buildroot}%{_bindir}/
rm -f %{buildroot}%{_bindir}/*.orig
mkdir -p %{buildroot}%{_datadir}/%{name}/bin/
ln -sf %{_bindir}/antRun %{buildroot}/%{_datadir}/%{name}/bin/antRun
mkdir -p %{buildroot}%{_sysconfdir}/ant.d
# default ant.conf
mkdir -p %{buildroot}%{_sysconfdir}
cp -p %{SOURCE1} %{buildroot}%{_sysconfdir}/ant.conf
# OPT_JAR_LIST fragments
echo "ant/ant-jmf" > %{buildroot}%{_sysconfdir}/%{name}.d/jmf
echo "ant/ant-swing" > %{buildroot}%{_sysconfdir}/%{name}.d/swing
find %{buildroot}%{_datadir}/ant%{_sysconfdir} -type f -name "*.xsl" \
-a ! -name ant-update.xsl \
-a ! -name changelog.xsl \
-a ! -name coverage-frames.xsl \
-a ! -name junit-frames-xalan1.xsl \
-a ! -name log.xsl \
-a ! -name mmetrics-frames.xsl \
-a ! -name tagdiff.xsl \
-print -delete
%files
%license LICENSE
%doc KEYS NOTICE README WHATSNEW
%config(noreplace) %{_sysconfdir}/%{name}.conf
%attr(0755,root,root) %{_bindir}/ant
%attr(0755,root,root) %{_bindir}/antRun
%{_javadir}/%{name}.jar
%{_javadir}/%{name}-launcher.jar
%{_javadir}/%{name}-bootstrap.jar
%dir %{_javadir}/%{name}
%dir %{ant_home}
%dir %{ant_home}%{_sysconfdir}
%{ant_home}/bin
%{ant_home}%{_sysconfdir}/ant-update.xsl
%{ant_home}%{_sysconfdir}/changelog.xsl
%{ant_home}%{_sysconfdir}/coverage-frames.xsl
%{ant_home}%{_sysconfdir}/mmetrics-frames.xsl
%{ant_home}%{_sysconfdir}/log.xsl
%{ant_home}%{_sysconfdir}/tagdiff.xsl
%{ant_home}%{_sysconfdir}/junit-frames-xalan1.xsl
%dir %{ant_home}/lib
%dir %{_sysconfdir}/%{name}.d
%{ant_home}/lib/ant.jar
%{ant_home}/lib/ant-bootstrap.jar
%{ant_home}/lib/ant-launcher.jar
%dir %{_sysconfdir}/ant.d
### Basic ant subpackages
%files -n ant-jmf
%{_javadir}/ant/ant-jmf.jar
%{ant_home}/lib/ant-jmf.jar
%config(noreplace) %{_sysconfdir}/ant.d/jmf
%files -n ant-swing
%{_javadir}/ant/ant-swing.jar
%{ant_home}/lib/ant-swing.jar
%config(noreplace) %{_sysconfdir}/ant.d/swing
%files -n ant-scripts
%defattr(0755,root,root,0755)
%{_bindir}/*.pl
%{_bindir}/*.py*
%changelog