SHA256
1
0
forked from pool/ant

Accepting request 496829 from Java:packages

- Disable javadoc completely it is on the web in much better form
- Remove if0 conditions
- Remove patch apache-ant-old-gcj-build.patch for sle11 and unused
- Fix build with split javapackages-tools

- Version bump to 1.9.9:
  * Read WHATSNEW file for full changelist

- Add reproducible.patch to allow reproducible builds of ant itself
  and packages built with ant like jcodings

- Disable javadoc completely it is on the web in much better form
- Remove if0 conditions
- Remove patch apache-ant-old-gcj-build.patch for sle11 and unused
- Fix build with split javapackages-tools

- Version bump to 1.9.9:
  * Read WHATSNEW file for full changelist

- Add reproducible.patch to allow reproducible builds of ant itself
  and packages built with ant like jcodings

- Disable javadoc completely it is on the web in much better form
- Remove if0 conditions
- Remove patch apache-ant-old-gcj-build.patch for sle11 and unused
- Fix build with split javapackages-tools

- Version bump to 1.9.9:
  * Read WHATSNEW file for full changelist

OBS-URL: https://build.opensuse.org/request/show/496829
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/ant?expand=0&rev=59
This commit is contained in:
Dominique Leuenberger 2017-05-31 11:31:05 +00:00 committed by Git OBS Bridge
commit 5f236965a5
12 changed files with 282 additions and 373 deletions

View File

@ -1,3 +1,23 @@
-------------------------------------------------------------------
Fri May 19 08:08:28 UTC 2017 - tchvatal@suse.com
- Disable javadoc completely it is on the web in much better form
- Remove if0 conditions
- Remove patch apache-ant-old-gcj-build.patch for sle11 and unused
- Fix build with split javapackages-tools
-------------------------------------------------------------------
Mon May 8 20:05:59 UTC 2017 - bwiedemann@suse.com
- Version bump to 1.9.9:
* Read WHATSNEW file for full changelist
-------------------------------------------------------------------
Mon May 8 07:43:51 UTC 2017 - bwiedemann@suse.de
- Add reproducible.patch to allow reproducible builds of ant itself
and packages built with ant like jcodings
-------------------------------------------------------------------
Mon Feb 20 10:12:01 UTC 2017 - tchvatal@suse.com

View File

@ -23,20 +23,12 @@
%bcond_with junit
%bcond_without antlr
# disable javadoc build on arm platform - it delays a build a lot
# mvyskocil: ifarch does not work for noarch packages ...
%if %{_arch} != arm
%global build_javadoc 1
%else
%global build_javadoc 0
%endif
%global ant_home %{_datadir}/ant
%global major_version 1.9
Name: ant-antlr
Version: 1.9.6
Version: 1.9.9
Release: 0
Summary: Antlr Task for ant
License: Apache-2.0
@ -49,8 +41,8 @@ Source1001: http://www.apache.org/dist/ant/source/apache-ant-%{version}-src.
Source1002: ant.keyring
Patch0: apache-ant-no-test-jar.patch
Patch1: apache-ant-class-path-in-manifest.patch
#PATCH-FIX-SLE: fix building with old gcj by working around bugs
Patch2: apache-ant-old-gcj-build.patch
#PATCH-FIX-UPSTREAM -- https://bz.apache.org/bugzilla/show_bug.cgi?id=61079
Patch3: reproducible.patch
%if %{with bootstrap}
BuildRequires: java-1_5_0-gcj-compat-devel
#!BuildIgnore: java-1_6_0-openjdk java-1_6_0-openjdk-devel
@ -60,6 +52,8 @@ BuildRequires: java-devel >= 1.5.0
%endif
BuildRequires: antlr-bootstrap
BuildRequires: javapackages-tools
# Needed for maven conversions
BuildRequires: javapackages-local
BuildRequires: unzip
#BuildRequires: xerces-j2-bootstrap
#!BuildIgnore: xerces-j2-bootstrap
@ -73,6 +67,9 @@ BuildRequires: junit
BuildRequires: xerces-j2
BuildRequires: xml-commons-apis
%endif
%if 0%{?suse_version} > 1320
BuildRequires: strip-nondeterminism
%endif
%if %{with bootstrap}
Requires: java-devel >= 1.5.0
Requires: javapackages-tools
@ -90,6 +87,7 @@ Provides: ant-trax = %{version}
Requires: antlr
%requires_eq ant
Provides: ant-antlr = %{version}-%{release}
Obsoletes: ant-javadoc
%endif
%if %{with junit}
Requires: junit4
@ -104,41 +102,9 @@ Apache Ant is a Java-based build tool.
This package contains optional JUnit tasks for Apache Ant.
%else
# FIXME: this should be different for antlr
%description
Apache Ant is a Java-based build tool. In theory, it is kind of like
Make, but without Make's wrinkles.
Why another build tool when there is already make, gnumake, nmake, jam,
and others? Because all those tools have limitations that Ant's
original author could not live with when developing software across
multiple platforms. Make-like tools are inherently shell-based--they
evaluate a set of dependencies then execute commands, not unlike what
you would issue in a shell. This means that you can easily extend these
tools by using or writing any program for the OS that you are working
on. However, this also means that you limit yourself to the OS, or at
least the OS type, such as Unix, that you are working on.
Makefiles are inherently evil as well. Anybody who has worked on them
for any time has run into the dreaded tab problem. "Is my command not
executing because I have a space in front of my tab???" said the
original author of Ant way too many times. Tools like Jam took care of
this to a great degree, but still have yet another format to use and
remember.
Ant is different. Instead of a model where it is extended with
shell-based commands, Ant is extended using Java classes. Instead of
writing shell commands, the configuration files are XML-based, calling
out a target tree where various tasks are executed. Each task is run by
an object that implements a particular task interface.
Granted, this removes some of the expressive power that is inherent by
being able to construct a shell command such as `find . -name foo -exec
rm {}`, but it gives you the ability to be cross-platform--to work
anywhere and everywhere. If you really need to execute a shell command,
Ant has an <exec> task that allows different commands to be executed
based on the OS used.
%endif
%if %{with bootstrap}
@ -236,20 +202,6 @@ Apache Ant is a Java-based build tool.
This package contains optional commons net tasks for Apache Ant.
# Disable because we don't ship the dependencies
%if 0
%package -n ant-jai
Summary: Optional jai tasks for ant
License: Apache-2.0
Group: Development/Tools/Building
Requires: jai
%requires_eq ant
BuildRequires: jai
%description -n ant-jai
Optional jai tasks for ant.
%endif
%package -n ant-apache-bcel
Summary: Optional apache bcel tasks for ant
License: Apache-2.0
@ -381,17 +333,6 @@ Apache Ant is a Java-based build tool.
This package contains the manual for Apache Ant.
%if 0%{?build_javadoc}
%package -n ant-javadoc
Summary: Javadoc for ant
License: Apache-2.0
Group: Development/Tools/Building
%description -n ant-javadoc
Apache Ant is a Java-based build tool.
This package contains the javadoc documentation for Apache Ant.
%endif #javadoc
%endif
%prep
@ -402,13 +343,9 @@ find -name build.xml -o -name pom.xml | xargs sed -i -e s/-SNAPSHOT//
# When bootstrapping, we don't have junit
%if %{with bootstrap}
%patch0 -p1
%if 0%{?suse_version} < 1200
%patch2 -p1
%endif
%endif
# Fix class-path-in-manifest rpmlint warning
%patch1
%patch3 -p1
# clean jar files
%{_bindir}/find . -name "*.jar" | %{_bindir}/xargs -t rm
@ -420,9 +357,6 @@ rm src/tests/junit/org/apache/tools/ant/types/selectors/SignedSelectorTest.java
src/tests/junit/org/apache/tools/ant/taskdefs/JarTest.java \
src/tests/junit/org/apache/tools/mail/MailMessageTest.java
#FIXME: need newer junit4 package
#rm src/tests/junit/org/example/junit/JUnit4Skippable.java
#install jars
%if %{with junit}
build-jar-repository -s -p lib/optional junit4
@ -447,12 +381,6 @@ ant -Dbuild.sysclasspath=first jars test-jar
#remove empty jai and netrexx jars. Due to missing dependencies they contain only manifests.
rm -rf build/lib/ant-jai.jar build/lib/ant-netrexx.jar
%if 0%{?build_javadoc}
export CLASSPATH=$(build-classpath xerces-j2 xml-commons-jaxp-1.3-apis antlr bcel jaf javamail/mailapi jdepend junit4 log4j oro regexp bsf commons-logging commons-net jsch xalan-j2 xml-commons-resolver)
ant javadocs
%endif
%endif
%if %{with bootstrap}
@ -463,6 +391,7 @@ export BOOTJAVAC_OPTS="-C -Wno-deprecated"
sh -x ./build.sh --noconfig jars
%endif
%?strip_all_nondeterminism
%install
# ANT_HOME and subdirs
@ -584,7 +513,6 @@ echo "bsf ant/ant-apache-bsf" > %{buildroot}%{_sysconfdir}/ant.d/apache-bsf
echo "xml-commons-resolver ant/ant-apache-resolver" > %{buildroot}%{_sysconfdir}/ant.d/apache-resolver
echo "jakarta-commons-logging ant/ant-commons-logging" > %{buildroot}%{_sysconfdir}/ant.d/commons-logging
echo "jakarta-commons-net ant/ant-commons-net" > %{buildroot}%{_sysconfdir}/ant.d/commons-net
#echo "jai ant/ant-jai" > %{buildroot}%{_sysconfdir}/ant.d/jai
echo "bcel ant/ant-apache-bcel" > %{buildroot}%{_sysconfdir}/ant.d/apache-bcel
echo "log4j ant/ant-apache-log4j" > %{buildroot}%{_sysconfdir}/ant.d/apache-log4j
echo "oro ant/ant-apache-oro" > %{buildroot}%{_sysconfdir}/ant.d/apache-oro
@ -596,20 +524,6 @@ echo "jsch ant/ant-jsch" > %{buildroot}%{_sysconfdir}/ant.d/jsch
echo "testutil ant/ant-testutil" > %{buildroot}%{_sysconfdir}/ant.d/testutil
%endif
%if %{with antlr}
%if 0%{?build_javadoc}
mkdir -p %{buildroot}%{_javadocdir}/ant
cp -pr build/javadocs/* %{buildroot}%{_javadocdir}/ant
%endif #javadoc
%endif
%if 0%{?build_javadoc}
# fix link between manual and javadoc
(cd manual; ln -sf %{_javadocdir}/%{name} api)
%endif #javadoc
%if %{with bootstrap}
find %{buildroot}%{_datadir}/ant/etc -type f -name "*.xsl" \
-a ! -name ant-update.xsl \
@ -655,7 +569,11 @@ find %{buildroot}%{_datadir}/ant/etc -type f -name "*.xsl" \
%{_mavenpomdir}/JPP-ant-launcher.pom
%{_mavenpomdir}/JPP-ant-parent.pom
%{_mavenpomdir}/JPP-ant.pom
%if %{?suse_version} > 1320
%{_datadir}/maven-metadata/ant.xml
%else
%config(noreplace) %{_mavendepmapfragdir}/ant
%endif
%dir %{_mavenpomdir}
%endif
@ -666,7 +584,11 @@ find %{buildroot}%{_datadir}/ant/etc -type f -name "*.xsl" \
%{ant_home}/lib/ant-antlr.jar
%config(noreplace) %{_sysconfdir}/ant.d/antlr
%{_mavenpomdir}/JPP.ant-ant-antlr.pom
%if %{?suse_version} > 1320
%{_datadir}/maven-metadata/ant-antlr.xml
%else
%config(noreplace) %{_mavendepmapfragdir}/ant-antlr
%endif
%dir %{_mavenpomdir}
%endif
@ -680,7 +602,11 @@ find %{buildroot}%{_datadir}/ant/etc -type f -name "*.xsl" \
%{ant_home}/etc/junit-frames.xsl
%{ant_home}/etc/junit-noframes.xsl
%{_mavenpomdir}/JPP.ant-ant-junit*.pom
%if %{?suse_version} > 1320
%{_datadir}/maven-metadata/ant-junit.xml
%else
%config(noreplace) %{_mavendepmapfragdir}/ant-junit
%endif
%dir %{_mavenpomdir}
%endif
@ -741,15 +667,6 @@ find %{buildroot}%{_datadir}/ant/etc -type f -name "*.xsl" \
%config(noreplace) %{_sysconfdir}/ant.d/commons-net
%{_mavenpomdir}/JPP.ant-ant-commons-net.pom
%dir %{_mavenpomdir}
# Disable as we dont ship the dependencies
%if 0
%files -n ant-jai
%defattr(0644,root,root,0755)
%{_javadir}/ant/ant-jai.jar
%{ant_home}/lib/ant-jai.jar
%config(noreplace) %{_sysconfdir}/ant.d/jai
%endif
%files -n ant-apache-bcel
%defattr(0644,root,root,0755)
@ -829,13 +746,6 @@ find %{buildroot}%{_datadir}/ant/etc -type f -name "*.xsl" \
%files -n ant-manual
%defattr(0644,root,root,0755)
%doc manual/*
%if 0%{?build_javadoc}
%files -n ant-javadoc
%defattr(0644,root,root,0755)
%{_javadocdir}/ant
%endif #javadoc
%endif
%changelog

View File

@ -1,3 +1,23 @@
-------------------------------------------------------------------
Fri May 19 08:08:28 UTC 2017 - tchvatal@suse.com
- Disable javadoc completely it is on the web in much better form
- Remove if0 conditions
- Remove patch apache-ant-old-gcj-build.patch for sle11 and unused
- Fix build with split javapackages-tools
-------------------------------------------------------------------
Mon May 8 20:05:59 UTC 2017 - bwiedemann@suse.com
- Version bump to 1.9.9:
* Read WHATSNEW file for full changelist
-------------------------------------------------------------------
Mon May 8 07:43:51 UTC 2017 - bwiedemann@suse.de
- Add reproducible.patch to allow reproducible builds of ant itself
and packages built with ant like jcodings
-------------------------------------------------------------------
Mon Feb 20 10:12:01 UTC 2017 - tchvatal@suse.com

View File

@ -23,20 +23,12 @@
%bcond_without junit
%bcond_with antlr
# disable javadoc build on arm platform - it delays a build a lot
# mvyskocil: ifarch does not work for noarch packages ...
%if %{_arch} != arm
%global build_javadoc 1
%else
%global build_javadoc 0
%endif
%global ant_home %{_datadir}/ant
%global major_version 1.9
Name: ant-junit
Version: 1.9.6
Version: 1.9.9
Release: 0
Summary: Optional junit tasks for ant
License: Apache-2.0
@ -49,8 +41,8 @@ Source1001: http://www.apache.org/dist/ant/source/apache-ant-%{version}-src.
Source1002: ant.keyring
Patch0: apache-ant-no-test-jar.patch
Patch1: apache-ant-class-path-in-manifest.patch
#PATCH-FIX-SLE: fix building with old gcj by working around bugs
Patch2: apache-ant-old-gcj-build.patch
#PATCH-FIX-UPSTREAM -- https://bz.apache.org/bugzilla/show_bug.cgi?id=61079
Patch3: reproducible.patch
%if %{with bootstrap}
BuildRequires: java-1_5_0-gcj-compat-devel
#!BuildIgnore: java-1_6_0-openjdk java-1_6_0-openjdk-devel
@ -60,6 +52,8 @@ BuildRequires: java-devel >= 1.5.0
%endif
BuildRequires: antlr-bootstrap
BuildRequires: javapackages-tools
# Needed for maven conversions
BuildRequires: javapackages-local
BuildRequires: unzip
#BuildRequires: xerces-j2-bootstrap
#!BuildIgnore: xerces-j2-bootstrap
@ -73,6 +67,9 @@ BuildRequires: junit
BuildRequires: xerces-j2
BuildRequires: xml-commons-apis
%endif
%if 0%{?suse_version} > 1320
BuildRequires: strip-nondeterminism
%endif
%if %{with bootstrap}
Requires: java-devel >= 1.5.0
Requires: javapackages-tools
@ -90,6 +87,7 @@ Provides: ant-trax = %{version}
Requires: antlr
%requires_eq ant
Provides: ant-antlr = %{version}-%{release}
Obsoletes: ant-javadoc
%endif
%if %{with junit}
Requires: junit4
@ -104,41 +102,9 @@ Apache Ant is a Java-based build tool.
This package contains optional JUnit tasks for Apache Ant.
%else
# FIXME: this should be different for antlr
%description
Apache Ant is a Java-based build tool. In theory, it is kind of like
Make, but without Make's wrinkles.
Why another build tool when there is already make, gnumake, nmake, jam,
and others? Because all those tools have limitations that Ant's
original author could not live with when developing software across
multiple platforms. Make-like tools are inherently shell-based--they
evaluate a set of dependencies then execute commands, not unlike what
you would issue in a shell. This means that you can easily extend these
tools by using or writing any program for the OS that you are working
on. However, this also means that you limit yourself to the OS, or at
least the OS type, such as Unix, that you are working on.
Makefiles are inherently evil as well. Anybody who has worked on them
for any time has run into the dreaded tab problem. "Is my command not
executing because I have a space in front of my tab???" said the
original author of Ant way too many times. Tools like Jam took care of
this to a great degree, but still have yet another format to use and
remember.
Ant is different. Instead of a model where it is extended with
shell-based commands, Ant is extended using Java classes. Instead of
writing shell commands, the configuration files are XML-based, calling
out a target tree where various tasks are executed. Each task is run by
an object that implements a particular task interface.
Granted, this removes some of the expressive power that is inherent by
being able to construct a shell command such as `find . -name foo -exec
rm {}`, but it gives you the ability to be cross-platform--to work
anywhere and everywhere. If you really need to execute a shell command,
Ant has an <exec> task that allows different commands to be executed
based on the OS used.
%endif
%if %{with bootstrap}
@ -236,20 +202,6 @@ Apache Ant is a Java-based build tool.
This package contains optional commons net tasks for Apache Ant.
# Disable because we don't ship the dependencies
%if 0
%package -n ant-jai
Summary: Optional jai tasks for ant
License: Apache-2.0
Group: Development/Tools/Building
Requires: jai
%requires_eq ant
BuildRequires: jai
%description -n ant-jai
Optional jai tasks for ant.
%endif
%package -n ant-apache-bcel
Summary: Optional apache bcel tasks for ant
License: Apache-2.0
@ -381,17 +333,6 @@ Apache Ant is a Java-based build tool.
This package contains the manual for Apache Ant.
%if 0%{?build_javadoc}
%package -n ant-javadoc
Summary: Javadoc for ant
License: Apache-2.0
Group: Development/Tools/Building
%description -n ant-javadoc
Apache Ant is a Java-based build tool.
This package contains the javadoc documentation for Apache Ant.
%endif #javadoc
%endif
%prep
@ -402,13 +343,9 @@ find -name build.xml -o -name pom.xml | xargs sed -i -e s/-SNAPSHOT//
# When bootstrapping, we don't have junit
%if %{with bootstrap}
%patch0 -p1
%if 0%{?suse_version} < 1200
%patch2 -p1
%endif
%endif
# Fix class-path-in-manifest rpmlint warning
%patch1
%patch3 -p1
# clean jar files
%{_bindir}/find . -name "*.jar" | %{_bindir}/xargs -t rm
@ -420,9 +357,6 @@ rm src/tests/junit/org/apache/tools/ant/types/selectors/SignedSelectorTest.java
src/tests/junit/org/apache/tools/ant/taskdefs/JarTest.java \
src/tests/junit/org/apache/tools/mail/MailMessageTest.java
#FIXME: need newer junit4 package
#rm src/tests/junit/org/example/junit/JUnit4Skippable.java
#install jars
%if %{with junit}
build-jar-repository -s -p lib/optional junit4
@ -447,12 +381,6 @@ ant -Dbuild.sysclasspath=first jars test-jar
#remove empty jai and netrexx jars. Due to missing dependencies they contain only manifests.
rm -rf build/lib/ant-jai.jar build/lib/ant-netrexx.jar
%if 0%{?build_javadoc}
export CLASSPATH=$(build-classpath xerces-j2 xml-commons-jaxp-1.3-apis antlr bcel jaf javamail/mailapi jdepend junit4 log4j oro regexp bsf commons-logging commons-net jsch xalan-j2 xml-commons-resolver)
ant javadocs
%endif
%endif
%if %{with bootstrap}
@ -463,6 +391,7 @@ export BOOTJAVAC_OPTS="-C -Wno-deprecated"
sh -x ./build.sh --noconfig jars
%endif
%?strip_all_nondeterminism
%install
# ANT_HOME and subdirs
@ -584,7 +513,6 @@ echo "bsf ant/ant-apache-bsf" > %{buildroot}%{_sysconfdir}/ant.d/apache-bsf
echo "xml-commons-resolver ant/ant-apache-resolver" > %{buildroot}%{_sysconfdir}/ant.d/apache-resolver
echo "jakarta-commons-logging ant/ant-commons-logging" > %{buildroot}%{_sysconfdir}/ant.d/commons-logging
echo "jakarta-commons-net ant/ant-commons-net" > %{buildroot}%{_sysconfdir}/ant.d/commons-net
#echo "jai ant/ant-jai" > %{buildroot}%{_sysconfdir}/ant.d/jai
echo "bcel ant/ant-apache-bcel" > %{buildroot}%{_sysconfdir}/ant.d/apache-bcel
echo "log4j ant/ant-apache-log4j" > %{buildroot}%{_sysconfdir}/ant.d/apache-log4j
echo "oro ant/ant-apache-oro" > %{buildroot}%{_sysconfdir}/ant.d/apache-oro
@ -596,20 +524,6 @@ echo "jsch ant/ant-jsch" > %{buildroot}%{_sysconfdir}/ant.d/jsch
echo "testutil ant/ant-testutil" > %{buildroot}%{_sysconfdir}/ant.d/testutil
%endif
%if %{with antlr}
%if 0%{?build_javadoc}
mkdir -p %{buildroot}%{_javadocdir}/ant
cp -pr build/javadocs/* %{buildroot}%{_javadocdir}/ant
%endif #javadoc
%endif
%if 0%{?build_javadoc}
# fix link between manual and javadoc
(cd manual; ln -sf %{_javadocdir}/%{name} api)
%endif #javadoc
%if %{with bootstrap}
find %{buildroot}%{_datadir}/ant/etc -type f -name "*.xsl" \
-a ! -name ant-update.xsl \
@ -655,7 +569,11 @@ find %{buildroot}%{_datadir}/ant/etc -type f -name "*.xsl" \
%{_mavenpomdir}/JPP-ant-launcher.pom
%{_mavenpomdir}/JPP-ant-parent.pom
%{_mavenpomdir}/JPP-ant.pom
%if %{?suse_version} > 1320
%{_datadir}/maven-metadata/ant.xml
%else
%config(noreplace) %{_mavendepmapfragdir}/ant
%endif
%dir %{_mavenpomdir}
%endif
@ -666,7 +584,11 @@ find %{buildroot}%{_datadir}/ant/etc -type f -name "*.xsl" \
%{ant_home}/lib/ant-antlr.jar
%config(noreplace) %{_sysconfdir}/ant.d/antlr
%{_mavenpomdir}/JPP.ant-ant-antlr.pom
%if %{?suse_version} > 1320
%{_datadir}/maven-metadata/ant-antlr.xml
%else
%config(noreplace) %{_mavendepmapfragdir}/ant-antlr
%endif
%dir %{_mavenpomdir}
%endif
@ -680,7 +602,11 @@ find %{buildroot}%{_datadir}/ant/etc -type f -name "*.xsl" \
%{ant_home}/etc/junit-frames.xsl
%{ant_home}/etc/junit-noframes.xsl
%{_mavenpomdir}/JPP.ant-ant-junit*.pom
%if %{?suse_version} > 1320
%{_datadir}/maven-metadata/ant-junit.xml
%else
%config(noreplace) %{_mavendepmapfragdir}/ant-junit
%endif
%dir %{_mavenpomdir}
%endif
@ -741,15 +667,6 @@ find %{buildroot}%{_datadir}/ant/etc -type f -name "*.xsl" \
%config(noreplace) %{_sysconfdir}/ant.d/commons-net
%{_mavenpomdir}/JPP.ant-ant-commons-net.pom
%dir %{_mavenpomdir}
# Disable as we dont ship the dependencies
%if 0
%files -n ant-jai
%defattr(0644,root,root,0755)
%{_javadir}/ant/ant-jai.jar
%{ant_home}/lib/ant-jai.jar
%config(noreplace) %{_sysconfdir}/ant.d/jai
%endif
%files -n ant-apache-bcel
%defattr(0644,root,root,0755)
@ -829,13 +746,6 @@ find %{buildroot}%{_datadir}/ant/etc -type f -name "*.xsl" \
%files -n ant-manual
%defattr(0644,root,root,0755)
%doc manual/*
%if 0%{?build_javadoc}
%files -n ant-javadoc
%defattr(0644,root,root,0755)
%{_javadocdir}/ant
%endif #javadoc
%endif
%changelog

View File

@ -1,3 +1,23 @@
-------------------------------------------------------------------
Fri May 19 08:08:28 UTC 2017 - tchvatal@suse.com
- Disable javadoc completely it is on the web in much better form
- Remove if0 conditions
- Remove patch apache-ant-old-gcj-build.patch for sle11 and unused
- Fix build with split javapackages-tools
-------------------------------------------------------------------
Mon May 8 20:05:59 UTC 2017 - bwiedemann@suse.com
- Version bump to 1.9.9:
* Read WHATSNEW file for full changelist
-------------------------------------------------------------------
Mon May 8 07:43:51 UTC 2017 - bwiedemann@suse.de
- Add reproducible.patch to allow reproducible builds of ant itself
and packages built with ant like jcodings
-------------------------------------------------------------------
Mon Feb 20 10:12:01 UTC 2017 - tchvatal@suse.com

138
ant.spec
View File

@ -22,20 +22,12 @@
%bcond_with junit
%bcond_with antlr
# disable javadoc build on arm platform - it delays a build a lot
# mvyskocil: ifarch does not work for noarch packages ...
%if %{_arch} != arm
%global build_javadoc 1
%else
%global build_javadoc 0
%endif
%global ant_home %{_datadir}/ant
%global major_version 1.9
Name: ant
Version: 1.9.6
Version: 1.9.9
Release: 0
Summary: Java-based build tool
License: Apache-2.0
@ -48,17 +40,21 @@ Source1001: http://www.apache.org/dist/ant/source/apache-ant-%{version}-src.
Source1002: ant.keyring
Patch0: apache-ant-no-test-jar.patch
Patch1: apache-ant-class-path-in-manifest.patch
#PATCH-FIX-SLE: fix building with old gcj by working around bugs
Patch2: apache-ant-old-gcj-build.patch
#PATCH-FIX-UPSTREAM -- https://bz.apache.org/bugzilla/show_bug.cgi?id=61079
Patch3: reproducible.patch
%if %{with bootstrap}
BuildRequires: java-1_5_0-gcj-compat-devel
#!BuildIgnore: java-1_6_0-openjdk java-1_6_0-openjdk-devel
#!BuildIgnore: java-1_7_0-openjdk java-1_7_0-openjdk-devel
#!BuildIgnore: java-1_8_0-openjdk java-1_8_0-openjdk-devel
#!BuildIgnore: java-9-openjdk java-9-openjdk-devel
%else
BuildRequires: java-devel >= 1.5.0
%endif
BuildRequires: antlr-bootstrap
BuildRequires: javapackages-tools
# Needed for maven conversions
BuildRequires: javapackages-local
BuildRequires: unzip
#BuildRequires: xerces-j2-bootstrap
#!BuildIgnore: xerces-j2-bootstrap
@ -72,6 +68,9 @@ BuildRequires: junit
BuildRequires: xerces-j2
BuildRequires: xml-commons-apis
%endif
%if 0%{?suse_version} > 1320
BuildRequires: strip-nondeterminism
%endif
%if %{with bootstrap}
Requires: java-devel >= 1.5.0
Requires: javapackages-tools
@ -89,6 +88,7 @@ Provides: ant-trax = %{version}
Requires: antlr
%requires_eq ant
Provides: ant-antlr = %{version}-%{release}
Obsoletes: ant-javadoc
%endif
%if %{with junit}
Requires: junit4
@ -103,41 +103,9 @@ Apache Ant is a Java-based build tool.
This package contains optional JUnit tasks for Apache Ant.
%else
# FIXME: this should be different for antlr
%description
Apache Ant is a Java-based build tool. In theory, it is kind of like
Make, but without Make's wrinkles.
Why another build tool when there is already make, gnumake, nmake, jam,
and others? Because all those tools have limitations that Ant's
original author could not live with when developing software across
multiple platforms. Make-like tools are inherently shell-based--they
evaluate a set of dependencies then execute commands, not unlike what
you would issue in a shell. This means that you can easily extend these
tools by using or writing any program for the OS that you are working
on. However, this also means that you limit yourself to the OS, or at
least the OS type, such as Unix, that you are working on.
Makefiles are inherently evil as well. Anybody who has worked on them
for any time has run into the dreaded tab problem. "Is my command not
executing because I have a space in front of my tab???" said the
original author of Ant way too many times. Tools like Jam took care of
this to a great degree, but still have yet another format to use and
remember.
Ant is different. Instead of a model where it is extended with
shell-based commands, Ant is extended using Java classes. Instead of
writing shell commands, the configuration files are XML-based, calling
out a target tree where various tasks are executed. Each task is run by
an object that implements a particular task interface.
Granted, this removes some of the expressive power that is inherent by
being able to construct a shell command such as `find . -name foo -exec
rm {}`, but it gives you the ability to be cross-platform--to work
anywhere and everywhere. If you really need to execute a shell command,
Ant has an <exec> task that allows different commands to be executed
based on the OS used.
%endif
%if %{with bootstrap}
@ -235,20 +203,6 @@ Apache Ant is a Java-based build tool.
This package contains optional commons net tasks for Apache Ant.
# Disable because we don't ship the dependencies
%if 0
%package -n ant-jai
Summary: Optional jai tasks for ant
License: Apache-2.0
Group: Development/Tools/Building
Requires: jai
%requires_eq ant
BuildRequires: jai
%description -n ant-jai
Optional jai tasks for ant.
%endif
%package -n ant-apache-bcel
Summary: Optional apache bcel tasks for ant
License: Apache-2.0
@ -380,17 +334,6 @@ Apache Ant is a Java-based build tool.
This package contains the manual for Apache Ant.
%if 0%{?build_javadoc}
%package -n ant-javadoc
Summary: Javadoc for ant
License: Apache-2.0
Group: Development/Tools/Building
%description -n ant-javadoc
Apache Ant is a Java-based build tool.
This package contains the javadoc documentation for Apache Ant.
%endif #javadoc
%endif
%prep
@ -401,13 +344,9 @@ find -name build.xml -o -name pom.xml | xargs sed -i -e s/-SNAPSHOT//
# When bootstrapping, we don't have junit
%if %{with bootstrap}
%patch0 -p1
%if 0%{?suse_version} < 1200
%patch2 -p1
%endif
%endif
# Fix class-path-in-manifest rpmlint warning
%patch1
%patch3 -p1
# clean jar files
%{_bindir}/find . -name "*.jar" | %{_bindir}/xargs -t rm
@ -419,9 +358,6 @@ rm src/tests/junit/org/apache/tools/ant/types/selectors/SignedSelectorTest.java
src/tests/junit/org/apache/tools/ant/taskdefs/JarTest.java \
src/tests/junit/org/apache/tools/mail/MailMessageTest.java
#FIXME: need newer junit4 package
#rm src/tests/junit/org/example/junit/JUnit4Skippable.java
#install jars
%if %{with junit}
build-jar-repository -s -p lib/optional junit4
@ -446,12 +382,6 @@ ant -Dbuild.sysclasspath=first jars test-jar
#remove empty jai and netrexx jars. Due to missing dependencies they contain only manifests.
rm -rf build/lib/ant-jai.jar build/lib/ant-netrexx.jar
%if 0%{?build_javadoc}
export CLASSPATH=$(build-classpath xerces-j2 xml-commons-jaxp-1.3-apis antlr bcel jaf javamail/mailapi jdepend junit4 log4j oro regexp bsf commons-logging commons-net jsch xalan-j2 xml-commons-resolver)
ant javadocs
%endif
%endif
%if %{with bootstrap}
@ -462,6 +392,7 @@ export BOOTJAVAC_OPTS="-C -Wno-deprecated"
sh -x ./build.sh --noconfig jars
%endif
%?strip_all_nondeterminism
%install
# ANT_HOME and subdirs
@ -583,7 +514,6 @@ echo "bsf ant/ant-apache-bsf" > %{buildroot}%{_sysconfdir}/ant.d/apache-bsf
echo "xml-commons-resolver ant/ant-apache-resolver" > %{buildroot}%{_sysconfdir}/ant.d/apache-resolver
echo "jakarta-commons-logging ant/ant-commons-logging" > %{buildroot}%{_sysconfdir}/ant.d/commons-logging
echo "jakarta-commons-net ant/ant-commons-net" > %{buildroot}%{_sysconfdir}/ant.d/commons-net
#echo "jai ant/ant-jai" > %{buildroot}%{_sysconfdir}/ant.d/jai
echo "bcel ant/ant-apache-bcel" > %{buildroot}%{_sysconfdir}/ant.d/apache-bcel
echo "log4j ant/ant-apache-log4j" > %{buildroot}%{_sysconfdir}/ant.d/apache-log4j
echo "oro ant/ant-apache-oro" > %{buildroot}%{_sysconfdir}/ant.d/apache-oro
@ -595,20 +525,6 @@ echo "jsch ant/ant-jsch" > %{buildroot}%{_sysconfdir}/ant.d/jsch
echo "testutil ant/ant-testutil" > %{buildroot}%{_sysconfdir}/ant.d/testutil
%endif
%if %{with antlr}
%if 0%{?build_javadoc}
mkdir -p %{buildroot}%{_javadocdir}/ant
cp -pr build/javadocs/* %{buildroot}%{_javadocdir}/ant
%endif #javadoc
%endif
%if 0%{?build_javadoc}
# fix link between manual and javadoc
(cd manual; ln -sf %{_javadocdir}/%{name} api)
%endif #javadoc
%if %{with bootstrap}
find %{buildroot}%{_datadir}/ant/etc -type f -name "*.xsl" \
-a ! -name ant-update.xsl \
@ -654,7 +570,11 @@ find %{buildroot}%{_datadir}/ant/etc -type f -name "*.xsl" \
%{_mavenpomdir}/JPP-ant-launcher.pom
%{_mavenpomdir}/JPP-ant-parent.pom
%{_mavenpomdir}/JPP-ant.pom
%if %{?suse_version} > 1320
%{_datadir}/maven-metadata/ant.xml
%else
%config(noreplace) %{_mavendepmapfragdir}/ant
%endif
%dir %{_mavenpomdir}
%endif
@ -665,7 +585,11 @@ find %{buildroot}%{_datadir}/ant/etc -type f -name "*.xsl" \
%{ant_home}/lib/ant-antlr.jar
%config(noreplace) %{_sysconfdir}/ant.d/antlr
%{_mavenpomdir}/JPP.ant-ant-antlr.pom
%if %{?suse_version} > 1320
%{_datadir}/maven-metadata/ant-antlr.xml
%else
%config(noreplace) %{_mavendepmapfragdir}/ant-antlr
%endif
%dir %{_mavenpomdir}
%endif
@ -679,7 +603,11 @@ find %{buildroot}%{_datadir}/ant/etc -type f -name "*.xsl" \
%{ant_home}/etc/junit-frames.xsl
%{ant_home}/etc/junit-noframes.xsl
%{_mavenpomdir}/JPP.ant-ant-junit*.pom
%if %{?suse_version} > 1320
%{_datadir}/maven-metadata/ant-junit.xml
%else
%config(noreplace) %{_mavendepmapfragdir}/ant-junit
%endif
%dir %{_mavenpomdir}
%endif
@ -740,15 +668,6 @@ find %{buildroot}%{_datadir}/ant/etc -type f -name "*.xsl" \
%config(noreplace) %{_sysconfdir}/ant.d/commons-net
%{_mavenpomdir}/JPP.ant-ant-commons-net.pom
%dir %{_mavenpomdir}
# Disable as we dont ship the dependencies
%if 0
%files -n ant-jai
%defattr(0644,root,root,0755)
%{_javadir}/ant/ant-jai.jar
%{ant_home}/lib/ant-jai.jar
%config(noreplace) %{_sysconfdir}/ant.d/jai
%endif
%files -n ant-apache-bcel
%defattr(0644,root,root,0755)
@ -828,13 +747,6 @@ find %{buildroot}%{_datadir}/ant/etc -type f -name "*.xsl" \
%files -n ant-manual
%defattr(0644,root,root,0755)
%doc manual/*
%if 0%{?build_javadoc}
%files -n ant-javadoc
%defattr(0644,root,root,0755)
%{_javadocdir}/ant
%endif #javadoc
%endif
%changelog

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2ad98dd3a4805452e546e0f5b682360370ae11692a2157fff8ec6d177c957123
size 3808558

View File

@ -1,7 +0,0 @@
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iEYEABECAAYFAlWQ0NgACgkQohFa4V9ri3IODACdFpgbfaQV8W1WqECEJjwd/W4O
kqAAmwb7sak1nWioHVp3n8U2/vA89mEi
=bOy8
-----END PGP SIGNATURE-----

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:69aa251ffb9f31312c21d67db197843e0b03b3c8cc3e0af6e6e92d98eb0f2ead
size 3832876

View File

@ -0,0 +1,7 @@
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iEYEABECAAYFAliTeuMACgkQohFa4V9ri3JKrwCfeUXDKRaGVSVPi8pJJdDnh+mz
UkUAn0TPQC0YCk45FrYkWw42dwzkWcIh
=veU8
-----END PGP SIGNATURE-----

View File

@ -1,24 +0,0 @@
diff -urN apache-ant-1.9.4.old/src/main/org/apache/tools/ant/util/VectorSet.java apache-ant-1.9.4/src/main/org/apache/tools/ant/util/VectorSet.java
--- apache-ant-1.9.4.old/src/main/org/apache/tools/ant/util/VectorSet.java 2014-07-04 14:36:26.370041107 +0200
+++ apache-ant-1.9.4/src/main/org/apache/tools/ant/util/VectorSet.java 2014-07-04 14:44:12.888084246 +0200
@@ -122,7 +122,7 @@
count - index);
}
for (Object o : toAdd) {
- elementData[index++] = o;
+ elementData[index++] = (E) o;
}
elementCount += toAdd.size();
return true;
diff -urN apache-ant-1.9.4.old/src/main/org/apache/tools/zip/Simple8BitZipEncoding.java apache-ant-1.9.4/src/main/org/apache/tools/zip/Simple8BitZipEncoding.java
--- apache-ant-1.9.4.old/src/main/org/apache/tools/zip/Simple8BitZipEncoding.java 2014-07-04 14:36:26.372041107 +0200
+++ apache-ant-1.9.4/src/main/org/apache/tools/zip/Simple8BitZipEncoding.java 2014-07-04 14:42:23.841074163 +0200
@@ -101,7 +101,7 @@
* stored as an array of 128 chars.
*/
public Simple8BitZipEncoding(char[] highChars) {
- this.highChars = highChars.clone();
+ this.highChars = (char[]) highChars.clone();
List<Simple8BitChar> temp =
new ArrayList<Simple8BitChar>(this.highChars.length);

141
reproducible.patch Normal file
View File

@ -0,0 +1,141 @@
commit 7c6c749c952153170e82b791d97086e99fe2a3cb
Author: Stefan Bodewig <bodewig@apache.org>
Date: Mon May 8 18:44:07 2017 +0200
add magic property that override's tstamp's idea of "now"
https://bz.apache.org/bugzilla/show_bug.cgi?id=61079
diff --git a/manual/Tasks/tstamp.html b/manual/Tasks/tstamp.html
index 82812a579..6baa0c882 100644
--- a/manual/Tasks/tstamp.html
+++ b/manual/Tasks/tstamp.html
@@ -40,6 +40,12 @@
to indicate, for example, the release date. The best place for this task is
probably in an initialization target.</p>
+<p><em>Since Ant 1.9.10</em> the magic
+ property <code>ant.tstamp.now</code> can be used to specify a fixed
+ date value in order to create reproducible builds. Its value must be
+ a number and is interpreted as seconds since the epoch (midnight
+ 1970-01-01).</p>
+
<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
<tr>
diff --git a/manual/running.html b/manual/running.html
index 529afc7dc..3bfb500c8 100644
--- a/manual/running.html
+++ b/manual/running.html
@@ -485,6 +485,11 @@
<a href="argumentprocessor.html#repository">ArgumentProcessor internal repository</a>.
</td>
</tr>
+<tr>
+ <td><code>ant.tstamp.now</code></td>
+ <td>number, seconds since the epoch (midnight 1970-01-01)</td>
+ <td>The value to use as current time and date for &lt;tstamp&gt;</td>
+</tr>
</table>
<p>
diff --git a/src/main/org/apache/tools/ant/MagicNames.java b/src/main/org/apache/tools/ant/MagicNames.java
index bc39a2578..67ab8a810 100644
--- a/src/main/org/apache/tools/ant/MagicNames.java
+++ b/src/main/org/apache/tools/ant/MagicNames.java
@@ -289,5 +289,18 @@ public final class MagicNames {
* Value {@value}
*/
public static final String HTTP_AGENT_PROPERTY = "ant.http.agent";
+
+ /**
+ * Magic property that can be set to contain a value for tstamp's
+ * "now" in order to make builds that use the task create
+ * reproducible results.
+ *
+ * <p>The value is expected to be a number representing the date
+ * as seconds since the epoch.</p>
+ *
+ * Value: {@value}
+ * @since Ant 1.9.10
+ */
+ public static final String TSTAMP_NOW = "ant.tstamp.now";
}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Tstamp.java b/src/main/org/apache/tools/ant/taskdefs/Tstamp.java
index 805427aba..a6a35d7b4 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Tstamp.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Tstamp.java
@@ -32,6 +32,7 @@ import java.util.Vector;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Location;
+import org.apache.tools.ant.MagicNames;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.types.EnumeratedAttribute;
@@ -68,7 +69,7 @@ public class Tstamp extends Task {
*/
public void execute() throws BuildException {
try {
- Date d = new Date();
+ Date d = getNow();
Enumeration i = customFormats.elements();
while (i.hasMoreElements()) {
@@ -110,6 +111,22 @@ public class Tstamp extends Task {
}
/**
+ * Return the {@link Date} instance to use as base for DSTAMP, TSTAMP and TODAY.
+ */
+ protected Date getNow() {
+ String magicNow = getProject().getProperty(MagicNames.TSTAMP_NOW);
+ if (magicNow != null && magicNow.length() > 0) {
+ try {
+ return new Date(1000 * Long.parseLong(magicNow));
+ } catch (NumberFormatException ex) {
+ log("magic property " + MagicNames.TSTAMP_NOW + " ignored as "
+ + magicNow + " is not a valid number");
+ }
+ }
+ return new Date();
+ }
+
+ /**
* This nested element that allows a property to be set
* to the current date and time in a given format.
* The date/time patterns are as defined in the
diff --git a/src/tests/antunit/taskdefs/tstamp-test.xml b/src/tests/antunit/taskdefs/tstamp-test.xml
new file mode 100644
index 000000000..c9bebf866
--- /dev/null
+++ b/src/tests/antunit/taskdefs/tstamp-test.xml
@@ -0,0 +1,27 @@
+<?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
+
+ 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 default="antunit" xmlns:au="antlib:org.apache.ant.antunit">
+ <import file="../antunit-base.xml" />
+
+ <target name="testMagicProperty">
+ <local name="ant.tstamp.now"/>
+ <property name="ant.tstamp.now" value="100000"/>
+ <tstamp/>
+ <au:assertPropertyEquals name="DSTAMP" value="19700102"/>
+ </target>
+</project>