Blob Blame History Raw
# 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