%global base_name jci
%global short_name commons-%{base_name}
%global namedreltag %{nil}
%global namedversion %{version}%{?namedreltag}
Name: apache-commons-jci
Version: 1.0
Release: 1%{?dist}
Summary: Commons Java Compiler Interface
Group: Development/Libraries
License: ASL 2.0
URL: http://commons.apache.org/jci/
Source0: ftp://ftp.gbnet.net/pub/apache/dist/commons/%{base_name}/source/%{short_name}-%{namedversion}-src.tar.gz
# fix parent relative path
# fix groovy gId and aId
# add org.codehaus.janino commons-compiler
# remove org.codehaus.mojo findbugs-maven-plugin 1.0.0
Patch0: %{name}-%{namedversion}-fixbuild.patch
# asm 3 test build
Patch1: %{name}-%{namedversion}-ExtendedDump.patch
Patch2: %{name}-%{namedversion}-SimpleDump.patch
# fix parent relative path
# remove jetty-maven-plugin
# use tomcat 7.x apis
Patch3: %{name}-%{namedversion}-examples-pom.patch
Patch4: %{name}-%{namedversion}-janino26.patch
BuildRequires: java-devel
BuildRequires: jpackage-utils
BuildRequires: maven
BuildRequires: maven-antrun-plugin
BuildRequires: maven-compiler-plugin
BuildRequires: maven-install-plugin
BuildRequires: maven-jar-plugin
BuildRequires: maven-javadoc-plugin
BuildRequires: maven-plugin-bundle
BuildRequires: maven-plugin-cobertura
BuildRequires: maven-resources-plugin
BuildRequires: maven-site-plugin
BuildRequires: maven-surefire-plugin
BuildRequires: maven-surefire-provider-junit4
BuildRequires: apache-commons-logging
BuildRequires: apache-commons-io
BuildRequires: ecj >= 3.4.2-13
BuildRequires: groovy
BuildRequires: janino
BuildRequires: rhino
# test deps
BuildRequires: apache-commons-lang
BuildRequires: junit
BuildRequires: objectweb-asm
Requires: java
Requires: jpackage-utils
BuildArch: noarch
#* javac Commons JCI compiler implementation for the javac compiler (up to JDK 1.5).
#* jsr199 Commons JCI compiler implementation for JDK 1.6 and up.
%description
JCI is a java compiler interface featuring a compiling classloader.
The current implementation supports compilation via the following
compilers:
* eclipse
* groovy
* janino
* rhino
%package core
Group: Development/Libraries
Summary: Commons Java Compiler Interface - core
Requires: apache-commons-io
Requires: %{name}-fam = %{version}-%{release}
%description core
Commons JCI core interfaces and implementations.
%package fam
Group: Development/Libraries
Summary: Commons Java Compiler Interface - FAM
Requires: apache-commons-logging
Requires: %{name} = %{version}-%{release}
%description fam
Commons JCI FileAlterationMonitor (FAM) to
monitor local filesystems and get notified
about changes.
%package javadoc
Group: Documentation
Summary: Javadoc for %{name}
Requires: jpackage-utils
%description javadoc
This package contains javadoc for %{name}.
# compilers
%package eclipse
Group: Development/Libraries
Summary: Commons Java Compiler Interface - eclipse
Requires: ecj >= 3.4.2-13
Requires: %{name} = %{version}-%{release}
%description eclipse
Commons JCI compiler implementation for the eclipse compiler.
%package groovy
Group: Development/Libraries
Summary: Commons Java Compiler Interface - groovy
Requires: groovy
Requires: %{name}-core = %{version}-%{release}
%description groovy
Commons JCI compiler implementation for the groovy compiler.
%package janino
Group: Development/Libraries
Summary: Commons Java Compiler Interface - janino
Requires: janino
Requires: %{name}-core = %{version}-%{release}
%description janino
Commons JCI compiler implementation for the janino compiler.
%package rhino
Group: Development/Libraries
Summary: Commons Java Compiler Interface - rhino
Requires: rhino
Requires: %{name}-core = %{version}-%{release}
%description rhino
Commons JCI compiler implementation for rhino javascript.
%prep
%setup -q -n %{short_name}-%{namedversion}-src
find . -name "*.class" -delete
find . -name "*.jar" -delete
%patch0 -p1
%patch1 -p0
%patch2 -p0
%patch3 -p0
%patch4 -p1
# TODO
# require old version of jdependency
sed -i "s|compilers/javac||" pom.xml
sed -i "s|examples||" pom.xml
%build
# random tests failures
mvn-rpmbuild \
-Dmaven.test.failure.ignore=true \
install javadoc:aggregate
%install
mkdir -p %{buildroot}%{_mavenpomdir}
install -m 644 pom.xml %{buildroot}%{_mavenpomdir}/JPP.%{short_name}-parent.pom
%add_maven_depmap JPP.%{short_name}-parent.pom
mkdir -p %{buildroot}%{_javadir}/%{short_name}
for m in core \
fam;do
install -m 644 ${m}/target/%{short_name}-${m}-%{namedversion}.jar %{buildroot}%{_javadir}/%{short_name}/%{short_name}-${m}.jar
install -pm 644 ${m}/pom.xml %{buildroot}%{_mavenpomdir}/JPP.%{short_name}-%{short_name}-${m}.pom
%add_maven_depmap -f ${m} JPP.%{short_name}-%{short_name}-${m}.pom %{short_name}/%{short_name}-${m}.jar
done
# TODO
# javac
for mc in eclipse \
janino \
groovy \
rhino;do
install -m 644 compilers/${mc}/target/%{short_name}-${mc}-%{namedversion}.jar %{buildroot}%{_javadir}/%{short_name}/%{short_name}-${mc}.jar
install -pm 644 compilers/${mc}/pom.xml %{buildroot}%{_mavenpomdir}/JPP.%{short_name}-%{short_name}-${mc}.pom
%add_maven_depmap -f ${mc} JPP.%{short_name}-%{short_name}-${mc}.pom %{short_name}/%{short_name}-${mc}.jar
done
mkdir -p %{buildroot}%{_javadocdir}/%{short_name}
cp -pr target/site/apidocs/* %{buildroot}%{_javadocdir}/%{short_name}
%files
%{_mavenpomdir}/JPP.%{short_name}-parent.pom
%{_mavendepmapfragdir}/%{name}
%doc LICENSE.txt NOTICE.txt README.txt TODO.txt
%files core
%{_javadir}/%{short_name}/%{short_name}-core.jar
%{_mavenpomdir}/JPP.%{short_name}-%{short_name}-core.pom
%{_mavendepmapfragdir}/%{name}-core
%files fam
%{_javadir}/%{short_name}/%{short_name}-fam.jar
%{_mavenpomdir}/JPP.%{short_name}-%{short_name}-fam.pom
%{_mavendepmapfragdir}/%{name}-fam
%files javadoc
%{_javadocdir}/%{short_name}
%doc LICENSE.txt NOTICE.txt
%files eclipse
%{_javadir}/%{short_name}/%{short_name}-eclipse.jar
%{_mavenpomdir}/JPP.%{short_name}-%{short_name}-eclipse.pom
%{_mavendepmapfragdir}/%{name}-eclipse
%files groovy
%{_javadir}/%{short_name}/%{short_name}-groovy.jar
%{_mavenpomdir}/JPP.%{short_name}-%{short_name}-groovy.pom
%{_mavendepmapfragdir}/%{name}-groovy
%files janino
%{_javadir}/%{short_name}/%{short_name}-janino.jar
%{_mavenpomdir}/JPP.%{short_name}-%{short_name}-janino.pom
%{_mavendepmapfragdir}/%{name}-janino
%files rhino
%{_javadir}/%{short_name}/%{short_name}-rhino.jar
%{_mavenpomdir}/JPP.%{short_name}-%{short_name}-rhino.pom
%{_mavendepmapfragdir}/%{name}-rhino
%changelog
* Fri Apr 06 2012 gil cattaneo 1.0-1
- initial rpm