File ant.spec of Package ant

# spec file for package ant (Version 1.7.0)
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# 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

# norootforbuild

Name:           ant
BuildRequires:  antlr-bootstrap java-1_5_0-gcj-compat-devel unzip xerces-j2-bootstrap xml-commons-apis-bootstrap
%define ant_home %{_datadir}/ant
%define section  free
%define cvs_name apache-%{name}
Version:        1.7.0
Release:        153
Summary:        A Java-Based Build Tool
License:        The Apache Software License
Group:          Development/Tools/Building
Source0:        %{cvs_name}-%{version}-src.tar.bz2
Source2:        %{cvs_name}-%{version}.ant.conf
# Ant configuration file which is edited when each optional subpackage
# is installed/uninstalled
# Fix temp directory used for file containing large command strings (> 4k)
Patch0:         %{name}-%{version}-use_system_libs.patch
Patch1:         %{cvs_name}-%{version}-rpm.patch
Patch2:         %{name}-%{version}-disable-junit-tests.patch
Patch3:         %{cvs_name}-%{version}-source-level.patch
Patch4:         %{cvs_name}-%{version}-decode_file_uri.patch
Patch150:       java150_build.patch
Requires:       xerces-j2 >= 2.7.1-2
Requires:       jaxp_parser_impl
Requires:       xml-commons-apis
Requires:       xml-commons-resolver
Requires:       jpackage-utils >= 1.5
Recommends:     java-devel
BuildArch:      noarch
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
Obsoletes:      apache-ant
Provides:       apache-ant

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

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.

%package 	manual
License:        The Apache Software License
Summary:        Manual for ant
Group:          Development/Tools/Building

%description 	manual
Apache Ant is a Java-based build tool.

This package contains the manual for Apache Ant.

%package 	javadoc
License:        The Apache Software License
Summary:        Javadoc for ant
Group:          Development/Tools/Building
PreReq:         coreutils

%description 	javadoc
Apache Ant is a Java-based build tool.

This package contains the javadoc documentation for Apache Ant.

%package 	scripts
License:        The Apache Software License
Summary:        Additional scripts for ant
Group:          Development/Tools/Building
#AutoReqProv:    no
Requires:       ant = %{version}
Requires:       /usr/bin/perl
Requires:       /usr/bin/python

%description 	scripts
Apache Ant is a Java-based build tool.

This package contains additional perl and python scripts for Apache

%setup -q -n apache-ant-%{version}
%patch3 -b .sav3
%patch4 -b .sav4
#%patch150 -p1
# Fix temp directory used for file containing large command strings (> 4k)
# clean jar files
find . -name "*.jar" -exec rm -f {} \;
# -----------------------------------------------------------------------------

find . -name "*.jar" -delete
# classpath selects optional components to build
export CLASSPATH=$(%{_bindir}/build-classpath jaxp_parser_impl xml-commons-apis junit)
#[ -n "$JAVA_HOME" ] && unset JAVA_HOME
#[ -r %{_sysconfdir}/java/java.conf ] && . %{_sysconfdir}/java/java.conf
#[ -z "$JAVA_HOME" ] && JAVA_HOME=%{_jvmdir}/java
#. /usr/share/java-utils/java-functions
export JAVA_HOME
export GC_MAXIMUM_HEAP_SIZE="134217728" #128M
export BOOTJAVAC_OPTS="-C -Wno-deprecated"
export CLASSPATH=${CLASSPATH}:${JAVA_HOME}/lib/tools.jar
sh --noconfig jars javadocs
# -----------------------------------------------------------------------------

# ANT_HOME and subdirs
mkdir -p $RPM_BUILD_ROOT%{ant_home}/{lib,etc,bin}
# jars
mkdir -p $RPM_BUILD_ROOT%{_javadir}
cp -p build/lib/%{name}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}-%{version}.jar
cp -p build/lib/%{name}-launcher.jar $RPM_BUILD_ROOT%{_javadir}/%{name}-launcher-%{version}.jar
# where optional tasks will put their stuff
mkdir -p $RPM_BUILD_ROOT%{_javadir}/%{name}
# jar aliases
(cd $RPM_BUILD_ROOT%{_javadir} && for jar in *-%{version}.jar; do if [ -e ${jar} ]; then ln -sf ${jar} `echo $jar| sed "s|-%{version}||g"`; fi; done)
(cd $RPM_BUILD_ROOT%{_javadir}/%{name} && for jar in *-%{version}.jar; do if [ -e ${jar} ]; then ln -sf ${jar} `echo $jar| sed "s|-%{version}||g"`; fi; done)
# link jars to ant_home/lib
pushd $RPM_BUILD_ROOT/%{ant_home}/lib
find ../../java -name "*.jar" -exec ln -sf {}  \;
# scripts: remove dos and os/2 scripts
rm -f src/script/*.bat
rm -f src/script/*.cmd
# install everything else
mkdir -p $RPM_BUILD_ROOT%{_bindir}
cp -p src/script/* $RPM_BUILD_ROOT%{_bindir}
rm $RPM_BUILD_ROOT%{_bindir}/antRun*
cp -p src/script/antRun* $RPM_BUILD_ROOT%{ant_home}/bin
# default ant.conf
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}
cp -p %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/%{name}.conf
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/%{name}.d
# -----------------------------------------------------------------------------
# javadoc
mkdir -p $RPM_BUILD_ROOT%{_javadocdir}/ant-%{version}
cp -pr build/javadocs/* $RPM_BUILD_ROOT%{_javadocdir}/ant-%{version}
# fix link between manual and javadoc
pushd docs/manual
ln -sf ../../../../../ant-%{version} api
# -----------------------------------------------------------------------------
cp  src/etc/ant-update.xsl            $RPM_BUILD_ROOT%{ant_home}/etc
cp  src/etc/changelog.xsl             $RPM_BUILD_ROOT%{ant_home}/etc
cp  src/etc/junit-frames-xalan1.xsl   $RPM_BUILD_ROOT%{ant_home}/etc
cp  src/etc/log.xsl                   $RPM_BUILD_ROOT%{ant_home}/etc
cp  src/etc/tagdiff.xsl               $RPM_BUILD_ROOT%{ant_home}/etc
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/%{ant_name}.d

# -----------------------------------------------------------------------------

%attr(0755,root,root) %{_bindir}/ant
#% attr(0755,root,root) % {_bindir}/
#% attr(0755,root,root) % {_bindir}/
#% attr(0755,root,root) % {_bindir}/
%attr(0755,root,root) %{ant_home}/bin
%dir %{_javadir}/%{name}
%dir %{ant_home}
%dir %{_sysconfdir}/%{name}.d
%config %dir %{_sysconfdir}/%{name}.conf
%exclude %{_bindir}/*.pl
%exclude %{_bindir}/*.py
%dir %{ant_home}/lib
# -----------------------------------------------------------------------------

%files 	scripts

%files 	manual
%doc docs/*

%files 	javadoc
%dir %{_javadocdir}
# -----------------------------------------------------------------------------

* Mon Nov 03 2008
- [bnc#440645] - ant fails without installed jdk:
  - added a java-devel to Recommends:
* Mon Jul 21 2008
- use xerces-j2-bootstrap to build (as early as possible)
- add java doc dir to filelist of javadoc subpackage to fix build
* Wed Jul 16 2008
- avoid another build cycle
* Wed May 07 2008
- build using gcj, to allow a openjdk6 bootstrap
- change a source and a target level to 1.5 in build.xml
* Tue Aug 14 2007
- disable junit tests and remove junit from BuildRequires to break
  circular build dependency
* Fri Jul 06 2007
- update to version 1.7.0
  major changes are (for a complete list, consult /usr/share/doc/packages/ant/WHATSNEW):
  Changes that could break older environments:
  * Initial support for JDK 6 (JSR 223) scripting.
  <*script*> tasks will now use javax.scripting if BSF is
  not available, or if explicitly requested by using
  a "manager" attribute.
  * The -noproxy option which was in the previous 1.7 alpha and beta
  releases has been removed. It is the default behavior and not needed.
  * Removed launcher classes from nodeps jar.
  * <classconstants> filter reader uses ISO-8859-1 encoding to read
  the java class file. Bugzilla report 33604.
  * Defer reference process. Bugzilla 36955, 34458, 37688.
  This may break build files in which a reference was set in a target which was
  never executed. Historically, Ant would set the reference early on, during parse
  time, so the datatype would be defined. Now it requires the reference to have
  been in a bit of the build file which was actually executed. If you get
  an error about an undefined reference, locate the reference and move it somewhere
  where it is used, or fix the depends attribute of the target in question to
  depend on the target which defines the reference/datatype.
  * <script> and <scriptdef> now set the current thread context.
  * Unrestrict the dbvendor names in the websphere element of the ejbjar task.
  Bugzilla Report 40475.
  * <env> nested element in <java>, <exec> and others is now case-insensitive
  for windows OS. Bugzilla Report 28874.
  * Removed support for xalan1 completely. Users of Xalan1 for Ant builds will
  have to stay at ant 1.6.5 or upgrade to xalan2.
  * Use org.apache.log4j.Logger instead of org.apache.log4j.Category.
  Category has been deprecated for ~2 years and has been removed from
  the log4j code.  Logger was introduced in log4j 1.2 so users of
  log4j 1.1 and log4j 1.0 need to upgrade to a newer version of log4j.
  Bugzilla Report 31951.
  * build.sysclasspath now also affects the bootclasspath handling of
  spawned Java VMs.  If you set build.sysclasspath to anything other
  than "ignore" (or leave it unset, since "ignore" is the default when
  it comes to bootclasspath handling), then the bootclasspath of the
  VM running Ant will be added to the bootclasspath you've specified.
  * The <java fork="false"> now as per default installs a security manager
  using the default permissions. This is now independent of the
  failonerror attribute.  Bugzilla report 33361.
  * <signjar> now notices when the jar and signedjar are equal, and switches
  to the same dependency logic as when signedjar is omitted. This may break
  something that depended upon signing in this situation. However, since
  invoking the JDK jarsigner program with -signedjar set to the source jar
  actually crashes the JVM on our (Java1.5) systems, we don't think any
  build files which actually worked will be affected by the change.
  * <signjar> used to ignore a nested fileset when a jar was also provided as an
  attribute, printing a warning message; now it signs files in the fileset.
  * An improved method of handling timestamp granularity differences between
  client and server was added to the <ftp> task.  FTP servers typically
  have HH:mm timestamps whereas local filesystems have HH:mm:ss timestamps.
  Previously, this required tweaking with the timediffmillis attribute
  which also was used to handle timezone differences.  Now, there is a new
  timestampgranularity attribute.  The default value for get operations is 0
  since the user has the more powerful preservelastmodified attribute to work
  with.  Since this is not available on put operations the default value
  adds a minute to the server timestamp in order to account for this,
  Scripts which previously used timediffmillis to do this compensation may
  need to be rewritten.  timediffmillis has now been deprecated.
  * On Java1.5+, Ant automatically sets the system property to true, which gives it automatic use of the local
  IE (Windows) or Gnome2 (Unix/Linux) proxy settings. This may break any build
  file that somehow relied on content outside the firewall being unreachable:
  use the -noproxy command-line option to disable this new feature.
  Note that the Java1.5 proxy configuration system still does not
  appear to work reliably on Windows or Linux.
  * Support for the XSL:P XML parser has been removed.
  Bugzilla Report 23455.
  * Visual Age for Java optional tasks removed.
  * Testlet (test) optional task removed.
  * Icontract optional task removed.
  * Metamata (maudit, mmetrics, and mparse tasks) removed.
  * Sitraka (jpcoverage, jpcovmerge, jpcovreport) tasks suppressed.
  * <fixcrlf> used \r (Mac) line endings on OS X, whose proper line separator
  is \n (Unix).  Bugzilla report 39585.
  * <scp> now optionally supports the sftp protocol, you may need a
  newer jsch.jar.  Bugzilla Report 39373.
  * Ant launcher program prints errors to stderr, and exits with a 2 exit code
  value if, for any reason, it cannot actually start Ant proper. This will only
  affect programs/scripts that called the launcher and which did not want to
  receive an error if Ant itself would not start
  * All .NET tasks are now deprecated in favor of the new .NET Antlib:
* Fri Sep 22 2006
- read in properties in /etc/ant.conf
- added source=1.4
* Mon May 08 2006
- only ant-antlr updates
* Thu Feb 02 2006
- fixed rpmlint errors and warnings
* Tue Jan 31 2006
- only ant-antlr updates
* Fri Jan 27 2006
- added four missing xsl files
- removed JAVA_HOME magic
* Tue Jan 24 2006
- Not dependend on xml-commons-apis, which are provided by xerces-j2, which does not
  depend on ant package (in contrast to old dependency on
  xml-commons-apis <-> ant)
- optional task are now again in extra spec file ant-antlr
* Thu Jan 19 2006
- Integrated ant and ant-antlr again in one spec file as there is no
  dependency loop ... jpackage BuildRequires were wrong.
- updated to version 1.6.5
* Mon Dec 19 2005
- added if statement that hinders unwanted creation of a file within a for loop
* Thu Sep 29 2005
- add norootforbuild
* Fri Mar 04 2005
- rely on jpackage-utils' java-functions to set JAVA_HOME correctly
* Sun Sep 05 2004
- create and add /usr/share/java/ant to file list for optional
  tasks to put their jars into
* Thu Sep 02 2004
- renamed from apache-ant to ant
- switched to JPackage 1.5 version
- updated to version 1.6.2
- split off optional tasks into separate package to solve build
  dependency loop in JPackage