# vim: set ts=4 sw=4 sts=4 et:
%global tarname apache-%{name}-%{version}-src
Name: cxf
Version: 2.4.9
Release: 3%{?dist}
Summary: Apache CXF
License: ASL 2.0
Group: Development/Libraries
URL: http://cxf.apache.org/
Source0: http://archive.apache.org/dist/%{name}/%{version}/%{tarname}.tar.gz
BuildArch: noarch
BuildRequires: java-devel
BuildRequires: jpackage-utils
BuildRequires: maven
BuildRequires: maven-archetype-packaging
BuildRequires: maven-assembly-plugin
BuildRequires: maven-compiler-plugin
BuildRequires: maven-assembly-plugin
BuildRequires: maven-install-plugin
BuildRequires: maven-jar-plugin
BuildRequires: maven-javadoc-plugin
BuildRequires: maven-release-plugin
BuildRequires: maven-resources-plugin
BuildRequires: maven-shared-artifact-resolver
BuildRequires: maven-shared-downloader
BuildRequires: maven-surefire-plugin
BuildRequires: maven-war-plugin
BuildRequires: apache-commons-lang
BuildRequires: apache-mina
BuildRequires: aries-blueprint
BuildRequires: asm2
BuildRequires: batik
BuildRequires: bouncycastle
BuildRequires: cglib
BuildRequires: cxf-build-utils
BuildRequires: cxf-xjc-utils
BuildRequires: ehcache-core
BuildRequires: felix-osgi-core
BuildRequires: geronimo-annotation
BuildRequires: geronimo-saaj
BuildRequires: glassfish-jaxb
BuildRequires: glassfish-jaxb-api
BuildRequires: glassfish-fastinfoset
BuildRequires: javamail
BuildRequires: jboss-connector-1.6-api
BuildRequires: jboss-servlet-3.0-api
BuildRequires: jboss-jaxws-2.2-api
BuildRequires: jibx
BuildRequires: jra
BuildRequires: neethi
BuildRequires: opensaml-java
BuildRequires: opensaml-java-parent
BuildRequires: springframework >= 3.1.1-9
BuildRequires: springframework-aop
BuildRequires: springframework-beans
BuildRequires: springframework-context
BuildRequires: springframework-jms
BuildRequires: springframework-tx
BuildRequires: springframework-web
BuildRequires: springframework-webmvc
BuildRequires: velocity
BuildRequires: wsdl4j
BuildRequires: wss4j >= 1.6
BuildRequires: xml-commons-resolver
BuildRequires: ws-xmlschema
Requires: apache-commons-lang
Requires: bouncycastle
Requires: cxf-xjc-utils
Requires: cglib
Requires: ehcache-core
Requires: geronimo-annotation
Requires: glassfish-jaxb
Requires: java
Requires: jboss-connector-1.6-api
Requires: jboss-servlet-3.0-api
Requires: jboss-jaxws-2.2-api
Requires: jpackage-utils
Requires: jra
Requires: neethi
Requires: opensaml-java
Requires: ws-xmlschema
Requires: wsdl4j
Requires: wss4j >= 1.6
%description
Apache CXF is an open-source services framework that aids in
the development of services using front-end programming APIs,
like JAX-WS and JAX-RS.
%package javadoc
Summary: Javadocs for %{name}
Group: Documentation
Requires: jpackage-utils
%description javadoc
This package contains the API documentation for %{name}.
%package api
Summary: Apache CXF API
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
Requires: %{name}-common = %{version}-%{release}
%description api
Apache CXF API classes.
%package common
Summary: Apache CXF Common
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
Requires: glassfish-jaxb-api
Requires: geronimo-saaj
%description common
This package contains Apache CXF Common classes (including
Apache CXF Common Utilities).
%package maven-plugins
Summary: Apache CXF Maven Plugins
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
Requires: %{name}-api = %{version}-%{release}
Requires: %{name}-common = %{version}-%{release}
%description maven-plugins
Maven plugins required for building or testing Apache CXF.
%package rt
Summary: Apache CXF Runtime
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
Requires: %{name}-api = %{version}-%{release}
Requires: %{name}-common = %{version}-%{release}
Requires: %{name}-tools = %{version}-%{release}
Requires: apache-mina
Requires: aries-blueprint
Requires: asm2
Requires: felix-osgi-core
Requires: glassfish-fastinfoset
Requires: javamail
Requires: jibx
Requires: springframework
Requires: springframework-aop
Requires: springframework-beans
Requires: springframework-context
Requires: springframework-jms
Requires: springframework-tx
Requires: springframework-web
Requires: springframework-webmvc
Requires: xml-commons-resolver
%description rt
This package contains core feature set of Apache CXF;
web service standards support, frontends, and protocols
support.
%package tools
Summary: Apache CXF Tools
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
Requires(pre): %{name}-rt = %{version}-%{release}
Requires: velocity
%description tools
Apache CXF Command Line Tools.
%prep
%setup -q -n %{tarname}
# Replace cglib-nodep with cglib
find . -name "pom.xml" -print | xargs sed -i "s|>cglib<|>net.sf.cglib<|"
find . -name "pom.xml" -print | xargs sed -i "s|cglib-nodep|cglib|"
# Replace bcprov-jdk15 with bcprov-jdk16
find . -name "pom.xml" -print | xargs sed -i "s|bcprov-jdk15|bcprov-jdk16|"
# Not necessary for javadoc generation
%pom_remove_plugin "org.apache.maven.plugins:maven-dependency-plugin" distribution/pom.xml
sed -i "s|<cxf.servlet-api.group>org.apache.geronimo.specs</cxf.servlet-api.group>|<cxf.servlet-api.group>org.jboss.spec.javax.servlet</cxf.servlet-api.group>|" parent/pom.xml
sed -i "s|<cxf.servlet-api.artifact>geronimo-servlet_3.0_spec</cxf.servlet-api.artifact>|<cxf.servlet-api.artifact>jboss-servlet-api_3.0_spec</cxf.servlet-api.artifact>|" parent/pom.xml
# Replace selected Geronimo APIs with other implementations
while read gid aid newgid newaid version
do
for f in $(grep "<artifactId>${aid}</artifactId>" --include "pom.xml" -r | awk -F: '{ print $1 }' | uniq)
do
%pom_remove_dep "${gid}:${aid}" ${f}
%pom_xpath_inject "pom:dependencies" "<dependency><groupId>${newgid}</groupId><artifactId>${newaid}</artifactId></dependency>" ${f}
done
# Make sure we add the version requirements for just added APIs in parent pom.xml
%pom_xpath_inject "pom:dependencyManagement/pom:dependencies/pom:dependency[pom:artifactId='${newaid}']" "<version>${version}</version>" parent/pom.xml
done <<EOF
org.apache.geronimo.specs geronimo-j2ee-connector_1.5_spec org.jboss.spec.javax.resource jboss-connector-api_1.6_spec 1.0.1.Final
org.apache.geronimo.specs geronimo-jaxws_2.2_spec org.jboss.spec.javax.xml.ws jboss-jaxws-api_2.2_spec 2.0.2.Final
org.apache.geronimo.specs geronimo-javamail_1.4_spec javax.mail mail 1.4.3
EOF
# Disable main modules
%pom_disable_module "testutils"
%pom_disable_module "integration"
%pom_disable_module "osgi/karaf"
%pom_disable_module "osgi/bundle"
%pom_disable_module "systests"
# Disable common submodules
%pom_disable_module wstx-msv-validation common/pom.xml
%pom_disable_module xerces-xsd-validation common/pom.xml
# Disable Maven plugins submodules
%pom_disable_module "java2ws-plugin" maven-plugins/pom.xml
%pom_disable_module "wadl2java-plugin" maven-plugins/pom.xml
%pom_disable_module "wsdl-validator-plugin" maven-plugins/pom.xml
%pom_disable_module "corba" maven-plugins/pom.xml
%pom_disable_module "archetypes" maven-plugins/pom.xml
# Disable rt submodules
%pom_disable_module "jbi" rt/bindings/pom.xml
%pom_disable_module "corba" rt/bindings/pom.xml
%pom_disable_module "databinding/xmlbeans" rt/pom.xml
%pom_disable_module "databinding/sdo" rt/pom.xml
%pom_disable_module "frontend/jaxrs" rt/pom.xml
%pom_disable_module "transports/http-jetty" rt/pom.xml
%pom_disable_module "transports/jbi" rt/pom.xml
%pom_disable_module "management-web" rt/pom.xml
# Disable tools submodules
%pom_disable_module "wadlto" tools/pom.xml
%pom_disable_module "corba" tools/pom.xml
%pom_disable_module "frontend/javascript" tools/wsdlto/pom.xml
%pom_disable_module "test" tools/wsdlto/pom.xml
%pom_disable_module "misc" tools/wsdlto/pom.xml
# Disable codegen plugin
%pom_remove_plugin "org.apache.cxf:cxf-codegen-plugin" rt/ws/policy/pom.xml
# Disable remote-resources-plugin
%pom_xpath_remove "pom:build/pom:plugins/pom:plugin[pom:artifactId='maven-remote-resources-plugin']" parent/pom.xml
# Disable xsdvalidation
%pom_remove_dep "org.apache.cxf:cxf-xerces-xsd-validation" rt/frontend/simple/pom.xml
# Fix java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
%pom_xpath_inject "pom:dependencies" "<dependency><groupId>org.apache.xmlgraphics</groupId><artifactId>batik-ext</artifactId><version>1.8</version><scope>runtime</scope></dependency>" tools/common/pom.xml
find . -name "*.jar" -delete
find . -name "*.class" -delete
iconv -f macintosh -t utf8 < licenses/cdd1-1.0.txt > cdd.txt
mv -f cdd.txt licenses/cdd1-1.0.txt
%build
# tests are disabled because of lots of missing dependencies
mvn-rpmbuild \
-Pfastinstall \
-Dmaven.test.skip=true \
-Dproject.build.sourceEncoding=UTF-8 \
package javadoc:aggregate
%install
install_pom_file ()
{
local pom_file=${1}
local module=${2}
install -pm 644 pom.xml %{buildroot}%{_mavenpomdir}/${pom_file}
%add_maven_depmap ${pom_file} -f ${module}
}
install_jar_file ()
{
local pom_file=${1}
local source=${2}
local target=${3}
local module=${4}
install -pm 644 pom.xml %{buildroot}%{_mavenpomdir}/${pom_file}
install -pm 644 ${source} %{buildroot}%{_javadir}/${target}
%add_maven_depmap ${pom_file} ${target} -f ${module}
}
guess_jar_file_and_target ()
{
jar_found=true
jar_file=""
jar_target=""
local guess
guess=target/%{name}-${module}-${aid_name}-%{version}.jar
if [ -f ${guess} ]; then
jar_file=${guess}
jar_target=%{name}/${module}-${aid_name}.jar
return 0
fi
guess=target/%{name}-${module}-%{version}.jar
if [ -f ${guess} ]; then
jar_file=${guess}
jar_target=%{name}/${module}.jar
return 0
fi
guess=target/%{name}-${aid_name}-%{version}.jar
if [ -f ${guess} ]; then
jar_file=${guess}
jar_target=%{name}/${module}-${aid_name}.jar
return 0
fi
jar_found=false
}
install -d -m 755 %{buildroot}%{_javadir}/%{name}
install -d -m 755 %{buildroot}%{_javadocdir}/%{name}
install -d -m 755 %{buildroot}%{_mavenpomdir}
while read module subdir nontemplate_name
do
dir=${module}/${subdir}
pushd $dir
if [ "${subdir}" = "" ]; then
aid_name=""
pom_file=JPP.%{name}-${module}.pom
else
aid_name=${nontemplate_name:-$(echo ${subdir} | tr / -)}
pom_file=JPP.%{name}-${module}-${aid_name}.pom
fi
guess_jar_file_and_target
if $jar_found; then
install_jar_file ${pom_file} ${jar_file} ${jar_target} ${module}
else
install_pom_file ${pom_file} ${module}
fi
popd
done <<EOM
api
maven-plugins
maven-plugins codegen-plugin
common
common common utilities
rt
rt bindings
rt bindings/coloc
rt bindings/http
rt bindings/object
rt bindings/soap
rt bindings/xml
rt core
rt databinding/jaxb
rt databinding/aegis
rt databinding/jibx
rt frontend/simple
rt frontend/jaxws
rt frontend/js
rt javascript
rt management
rt transports/common
rt transports/http
rt transports/jms
rt transports/local
rt ws/addr
rt ws/policy
rt ws/rm
rt ws/security
tools
tools common
tools javato
tools validator
tools wsdlto
tools wsdlto/core
tools wsdlto/databinding/jaxb
tools wsdlto/frontend/jaxws
EOM
# parents
install -pm 644 pom.xml %{buildroot}%{_mavenpomdir}/JPP.%{name}-cxf.pom
install -pm 644 parent/pom.xml %{buildroot}%{_mavenpomdir}/JPP.%{name}-parent.pom
# special cases
install -pm 644 tools/javato/ws/pom.xml %{buildroot}%{_mavenpomdir}/JPP.%{name}-tools-java2ws.pom
install -pm 644 tools/javato/ws/target/cxf-tools-java2ws-%{version}.jar %{buildroot}%{_javadir}/%{name}/tools-java2ws.jar
%add_maven_depmap JPP.%{name}-tools-java2ws.pom %{name}/tools-java2ws.jar -f tools
%add_maven_depmap JPP.%{name}-cxf.pom
%add_maven_depmap JPP.%{name}-parent.pom
# javadoc
cp -rp target/site/apidocs/* %{buildroot}%{_javadocdir}/%{name}
%files
%doc README LICENSE NOTICE
%doc licenses
%{_mavenpomdir}/JPP.%{name}-cxf.pom
%{_mavenpomdir}/JPP.%{name}-parent.pom
%{_mavendepmapfragdir}/%{name}
%dir %{_javadir}/%{name}
%files javadoc
%doc LICENSE NOTICE
%doc licenses
%{_javadocdir}/%{name}
%files api
%{_mavenpomdir}/JPP.%{name}-api.pom
%{_mavendepmapfragdir}/%{name}-api
%{_javadir}/%{name}/api.jar
%files common
%{_mavenpomdir}/JPP.%{name}-common*
%{_mavendepmapfragdir}/%{name}-common
%{_javadir}/%{name}/common-*
%files maven-plugins
%{_mavenpomdir}/JPP.%{name}-maven-plugins*
%{_mavendepmapfragdir}/%{name}-maven-plugins
%{_javadir}/%{name}/maven-plugins-*
%files rt
%{_mavenpomdir}/JPP.%{name}-rt*
%{_mavendepmapfragdir}/%{name}-rt
%{_javadir}/%{name}/rt-*
%files tools
%{_mavenpomdir}/JPP.%{name}-tools*
%{_mavendepmapfragdir}/%{name}-tools
%{_javadir}/%{name}/tools-*
%changelog
* Tue Nov 13 2012 Marek Goldmann <mgoldman@redhat.com> - 2.4.9-3
- Replaced patches with pom macros
- Enbled modules: rt/security, javascript
* Tue Oct 02 2012 Marek Goldmann <mgoldman@redhat.com> - 2.4.9-2
- Place depmap fragments in subpackages
- Add parent of parent POM file
* Tue Sep 25 2012 Patryk Obara <pobara@redhat.com> 2.4.9-1
- Update to latest release
- CVE-2012-2379, RHBZ#846247
- CVE-2012-2378, RHBZ#846242
- CVE-2012-3451, RHBZ#858781
* Mon Aug 13 2012 Patryk Obara <pobara@redhat.com> 2.4.8-5
- Enabled modules: databinding/aegis, databinding/jibx, frontend/js
* Fri Aug 10 2012 Patryk Obara <pobara@redhat.com> 2.4.8-4
- Enabled modules: frontend/jaxws, bindings/http, transports/http, transports/jms, ws/rm
* Wed Jul 18 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.4.8-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Tue Jul 10 2012 Patryk Obara <pobara@redhat.com> 2.4.8-2
- Change source0 url
* Mon Jul 9 2012 Patryk Obara <pobara@redhat.com> 2.4.8-1
- Upgrade to latest bugfix release
- Fix submodule description
- Patch splitting and cleanup
- Added missing build dependencies
* Mon Jun 18 2012 Patryk Obara <pobara@redhat.com> 2.4.7-1
- Initial packaging