# # spec file for package ant (Version 1.7.0) # # Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany. # This file and all modifications and additions to the pristine # package are under the same license as the package itself. # # Please submit bugfixes or comments via http://bugs.opensuse.org/ # # norootforbuild Name: ant BuildRequires: java-devel junit unzip xerces-j2 xml-commons-apis-bootstrap %define ant_home %{_datadir}/ant %define section free %define cvs_name apache-%{name} Version: 1.7.0 Release: 1 Summary: A Java-Based Build Tool License: The Apache Software License, LICENSE.sax: URL: http://jakarta.apache.org/ 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 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 BuildArch: noarch BuildRoot: %{_tmppath}/%{name}-%{version}-build Obsoletes: apache-ant Provides: apache-ant %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 task that allows different commands to be executed based on the OS used. %package manual 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 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 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 Ant. %prep %setup -q -n apache-ant-%{version} %patch0 #%patch1 #%patch150 -p1 # Fix temp directory used for file containing large command strings (> 4k) # clean jar files find . -name "*.jar" -exec rm -f {} \; # ----------------------------------------------------------------------------- %build 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 sh bootstrap.sh sh build.sh --noconfig jars javadocs # ----------------------------------------------------------------------------- %install rm -rf $RPM_BUILD_ROOT # 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 {} \; popd # 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 popd # ----------------------------------------------------------------------------- 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 %clean rm -rf $RPM_BUILD_ROOT # ----------------------------------------------------------------------------- %files %defattr(0644,root,root,0755) %doc KEYS LICENSE README WHATSNEW %attr(0755,root,root) %{_bindir}/ant #% attr(0755,root,root) % {_bindir}/complete-ant-cmd.pl #% attr(0755,root,root) % {_bindir}/runant.pl #% attr(0755,root,root) % {_bindir}/runant.py %attr(0755,root,root) %{ant_home}/bin %dir %{_javadir}/%{name} %{_javadir}/%{name}.jar %{_javadir}/%{name}-launcher.jar %{_javadir}/%{name}-%{version}.jar %{_javadir}/%{name}-launcher-%{version}.jar %dir %{ant_home} %dir %{_sysconfdir}/%{name}.d %config %dir %{_sysconfdir}/%{name}.conf %exclude %{_bindir}/*.pl %exclude %{_bindir}/*.py %dir %{ant_home}/lib %{ant_home}/lib/* %{ant_home}/etc # ----------------------------------------------------------------------------- %files scripts %defattr(0755,root,root,0755) %{_bindir}/*.pl %{_bindir}/*.py %files manual %defattr(0644,root,root,0755) %doc docs/* %files javadoc %defattr(0644,root,root,0755) %{_javadocdir}/ant-%{version} # ----------------------------------------------------------------------------- %changelog * Fri Jul 06 2007 - dbornkessel@suse.de - 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. * 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. *