Package cxf: Specfile

BuildRequires: /proc
BuildRequires: jpackage-compat
# %name or %version is ahead of its definition. Predefining for rpm 4.0 compatibility.
%define name cxf
%define version 2.4.9
# vim: set ts=4 sw=4 sts=4 et:
%global tarname apache-%{name}-%{version}-src

Name:           cxf
Version:        2.4.9
Release:        alt1_2jpp7
Summary:        Apache CXF
License:        ASL 2.0
Group:          Development/Java
URL:            http://cxf.apache.org/

Source0:        http://archive.apache.org/dist/%{name}/%{version}/%{tarname}.tar.gz

Patch0:         0001-replace-geronimo-j2ee-connector.patch
Patch1:         0002-replace-cglib-nodep-with-cglib.patch
Patch2:         0003-disable-common-submodules.patch
Patch3:         0004-disable-maven-plugins-submodules.patch
Patch4:         0005-disable-modules.patch
Patch5:         0006-disable-rt-submodules.patch
Patch6:         0007-disable-tools-submodules.patch
Patch7:         0008-disable-plugin-for-ws-policy.patch
Patch8:         0009-replace-geronimo-javamail.patch
Patch9:         0010-disable-maven-remote-resources-plugin.patch
Patch10:        0011-disable-optional-xsd-validation.patch
Patch11:        0012-enable-http-jms-related-modules.patch
Patch12:        0013-enable-databindings-modules.patch

BuildArch:      noarch

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:  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:  jibx
BuildRequires:  jra
BuildRequires:  neethi
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
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:       jboss-connector-1.6-api
Requires:       jboss-servlet-3.0-api
Requires:       jpackage-utils
Requires:       jra
Requires:       neethi
Requires:       ws-xmlschema
Requires:       wsdl4j
Requires:       wss4j
Source44: import.info


%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:          Development/Java
Requires:       jpackage-utils
BuildArch: noarch

%description javadoc
This package contains the API documentation for %{name}.


%package api
Summary:        Apache CXF API
Group:          Development/Java
Requires:       %{name} = %{version}-%{release}
Requires:       %{name}-common = %{version}-%{release}

%description api
Apache CXF API classes.


%package common
Summary:        Apache CXF Common
Group:          Development/Java
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/Java
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/Java
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/Java
Requires:       %{name} = %{version}-%{release}
Requires(pre):  %{name}-rt = %{version}-%{release}
Requires:       velocity

%description tools
Apache CXF Command Line Tools.

%prep

%setup -q -n %{tarname}

%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1

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 management
rt transports/common
rt transports/http
rt transports/jms
rt transports/local
rt ws/addr
rt ws/policy
rt ws/rm
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

%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 Oct 09 2012 Igor Vlasenko <viy@altlinux.ru> 2.4.9-alt1_2jpp7
- new version

* Sun Sep 16 2012 Igor Vlasenko <viy@altlinux.ru> 2.4.8-alt1_5jpp7
- new version