Package acegi-security: Specfile

Packager: Igor Vlasenko <viy@altlinux.ru>
BuildRequires: /proc
BuildRequires: jpackage-compat
# Copyright (c) 2000-2009, JPackage Project
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the
#    distribution.
# 3. Neither the name of the JPackage Project nor the names of its
#    contributors may be used to endorse or promote products derived
#    from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#

%define gcj_support 0
%define _full_build 0
%define full_build %{?_with_full_build:1}%{!?_with_full_build:%{?_without_full_build:0}%{!?_without_full_build:%{?_full_build:%{_full_build}}%{!?_full_build:0}}}


Summary:        ACEGI spring security
Name:           acegi-security
Version:        1.0.7
Release:        alt1_2jpp5
Epoch:          0
Group:          Development/Java
License:        Apache License 2.0
URL:            http://www.acegisecurity.org/
Source0:        acegi-security-1.0.7.tar.gz
# svn export http://acegisecurity.svn.sourceforge.net/svnroot/acegisecurity/spring-security/tags/acegi-security-parent-1.0.7/ acegi-security-1.0.7


Source1:        %{name}-jpp-depmap.xml
Source2:        %{name}-settings.xml

Patch0:         acegisecurity-core-pom.patch
Patch1:         acegisecurity-adapters-cas-pom.patch
Patch2:         acegisecurity-nojetty.patch
Patch3:         acegisecurity-adapters-jboss-pom.patch
Patch4:         acegisecurity-noresin.patch
Patch5:         acegisecurity-nocas.patch
Patch6:         acegisecurity-nosamples.patch
Patch7:         acegisecurity-nospringldap.patch

BuildRequires: jpackage-utils >= 0:1.7.5
BuildRequires: junit
BuildRequires: maven2 >= 0:2.0.7
BuildRequires: maven2-plugin-antrun
BuildRequires: maven2-plugin-assembly
BuildRequires: maven2-plugin-clean
BuildRequires: maven2-plugin-compiler
BuildRequires: maven2-plugin-deploy
BuildRequires: maven2-plugin-eclipse
BuildRequires: maven2-plugin-help
BuildRequires: maven2-plugin-idea
BuildRequires: maven2-plugin-install
BuildRequires: maven2-plugin-jar
BuildRequires: maven2-plugin-javadoc
BuildRequires: maven2-plugin-resources
BuildRequires: maven2-plugin-site
BuildRequires: maven2-plugin-source
BuildRequires: maven2-plugin-war
BuildRequires: maven-release
BuildRequires: maven-surefire-plugin
BuildRequires: docbkx

BuildRequires: apacheds10-core
BuildRequires: apacheds-shared-ldap
BuildRequires: cas-client
BuildRequires: ehcache
BuildRequires: hsqldb
BuildRequires: jakarta-commons-modeler
BuildRequires: jakarta-taglibs-standard
BuildRequires: jboss4-common
BuildRequires: jboss4-security
BuildRequires: slf4j
BuildRequires: spring-aop
BuildRequires: spring-core
BuildRequires: spring-jdbc
BuildRequires: spring-ldap
BuildRequires: spring-mock
BuildRequires: spring-remoting
BuildRequires: spring-web
BuildRequires: tomcat5


Requires: ehcache
Requires: jakarta-taglibs-standard
Requires: slf4j
Requires: spring-aop
Requires: spring-core
Requires: spring-jdbc
Requires: spring-mock
Requires: spring-remoting
Requires: spring-web

Requires(post): jpackage-utils >= 0:1.7.5
Requires(postun): jpackage-utils >= 0:1.7.5

%if %{gcj_support}
BuildRequires: java-gcj-compat-devel
Requires(post): java-gcj-compat
Requires(postun): java-gcj-compat
%endif
%if ! %{gcj_support}
BuildArch:      noarch
%endif

%description
Acegi Security is an open source project that provides 
comprehensive authentication and authorisation services for 
enterprise applications based on The Spring Framework. Acegi 
Security can authenticate using a variety of pluggable 
providers, and can authorise both web requests and method 
invocations. Acegi Security provides an integrated security 
approach across these various targets, and also offers 
access control list (ACL) capabilities to enable individual 
domain object instances to be secured. At an implementation 
level, Acegi Security is managed through Spring's inversion 
of control and lifecycle services, and actually enforces 
security using interception through servlet Filters and Java 
AOP frameworks. In terms of AOP framework support, Acegi 
Security currently supports AOP Alliance (which is what the 
Spring IoC container uses internally) and AspectJ, although 
additional frameworks can be easily supported.

%package adapter-catalina
Group:          Development/Java
Summary:        Catalina adapter for %{name}
Requires: %{name} = %{epoch}:%{version}-%{release}
Requires: jakarta-commons-modeler
Requires: tomcat5-server-lib

%description adapter-catalina
%{summary}.

%package adapter-jboss
Group:          Development/Java
Summary:        JBoss adapter for %{name}
Requires: %{name} = %{epoch}:%{version}-%{release}
Requires: jboss4-common
Requires: jboss4-security

%description adapter-jboss
%{summary}.

%if %{full_build}
%package adapter-cas
Group:          Development/Java
Summary:        CAS adapter for %{name}
Requires: %{name} = %{epoch}:%{version}-%{release}
Requires: cas-client

%description adapter-cas
%{summary}.

%endif

%package javadoc
Group:          Development/Documentation
Summary:        Javadoc for %{name}

%description javadoc
%{summary}.

%prep
%setup -q 
#for j in $(find . -name "*.jar"); do
#    mv $j $j.no
#done

%patch0 -b .sav0
%patch1 -b .sav1
%patch2 -b .sav2
%patch3 -b .sav3
%patch4 -b .sav4
%if ! %{full_build}
%patch5 -b .sav5
%patch6 -b .sav6
%patch7 -b .sav7
%endif


%build
cp %{SOURCE2} maven2-settings.xml

sed -i -e "s|<url>__JPP_URL_PLACEHOLDER__</url>|<url>file://`pwd`/m2_repo/repository</url>|g" maven2-settings.xml
sed -i -e "s|<url>__JAVADIR_PLACEHOLDER__</url>|<url>file://`pwd`/external_repo</url>|g" maven2-settings.xml
sed -i -e "s|<url>__MAVENREPO_DIR_PLACEHOLDER__</url>|<url>file://`pwd`/m2_repo/repository</url>|g" maven2-settings.xml
sed -i -e "s|<url>__MAVENDIR_PLUGIN_PLACEHOLDER__</url>|<url>file:///usr/share/maven2/plugins</url>|g" maven2-settings.xml
sed -i -e "s|<url>__ECLIPSEDIR_PLUGIN_PLACEHOLDER__</url>|<url>file:///usr/share/eclipse/plugins</url>|g" maven2-settings.xml

mkdir external_repo
ln -s %{_javadir} external_repo/JPP

export JAVA_HOME=%{_jvmdir}/java-1.5.0


export M2SETTINGS=$(pwd)/maven2-settings.xml
export MAVEN_REPO_LOCAL=`pwd`/m2_repo/repository

mvn-jpp -e \
        -s ${M2SETTINGS} \
        -Dmaven.repo.local=$MAVEN_REPO_LOCAL \
        -Dmaven2.jpp.depmap.file=%{SOURCE1} \
        -N antrun:run

mvn-jpp -e \
        -s ${M2SETTINGS} \
        -Dmaven.repo.local=$MAVEN_REPO_LOCAL \
        -Dmaven2.jpp.depmap.file=%{SOURCE1} \
        -Dmaven.test.failure.ignore=true \
        install

mvn-jpp -e \
        -s ${M2SETTINGS} \
        -Daggregate=true \
        -Dmaven.repo.local=$MAVEN_REPO_LOCAL \
        -Dmaven2.jpp.depmap.file=%{SOURCE1} \
        javadoc:javadoc

%install

# jars
install -d -m 0755 $RPM_BUILD_ROOT%{_javadir}/%{name}
install -d -m 0755 $RPM_BUILD_ROOT%{_datadir}/maven2/poms

install -m 644 pom.xml $RPM_BUILD_ROOT%{_datadir}/maven2/poms/JPP.%{name}-parent.pom
%add_to_maven_depmap org.acegisecurity acegi-security-parent %{version} JPP/%{name} parent

install -m 644 core/target/%{name}-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/core-%{version}.jar
install -m 644 core/pom.xml $RPM_BUILD_ROOT%{_datadir}/maven2/poms/JPP.%{name}-core.pom
%add_to_maven_depmap org.acegisecurity acegi-security %{version} JPP/%{name} core

install -m 644 core-tiger/target/%{name}-tiger-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/tiger-%{version}.jar
install -m 644 core-tiger/pom.xml $RPM_BUILD_ROOT%{_datadir}/maven2/poms/JPP.%{name}-tiger.pom
%add_to_maven_depmap org.acegisecurity acegi-security-tiger %{version} JPP/%{name} tiger

install -m 644 adapters/pom.xml $RPM_BUILD_ROOT%{_datadir}/maven2/poms/JPP.%{name}-adapters.pom
%add_to_maven_depmap org.acegisecurity acegi-security-adapters %{version} JPP/%{name} adapters

install -m 644 adapters/catalina/target/%{name}-catalina-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/catalina-%{version}.jar
install -m 644 adapters/catalina/pom.xml $RPM_BUILD_ROOT%{_datadir}/maven2/poms/JPP.%{name}-catalina.pom
%add_to_maven_depmap org.acegisecurity acegi-security-catalina %{version} JPP/%{name} catalina

install -m 644 adapters/jboss/target/%{name}-jboss-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/jboss-%{version}.jar
install -m 644 adapters/jboss/pom.xml $RPM_BUILD_ROOT%{_datadir}/maven2/poms/JPP.%{name}-jboss.pom
%add_to_maven_depmap org.acegisecurity acegi-security-jboss %{version} JPP/%{name} jboss

%if %{full_build}
install -m 644 adapters/cas/target/%{name}-cas-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/cas-%{version}.jar
install -m 644 adapters/cas/pom.xml $RPM_BUILD_ROOT%{_datadir}/maven2/poms/JPP.%{name}-cas.pom
%add_to_maven_depmap org.acegisecurity acegi-security-cas %{version} JPP/%{name} cas
%endif

(cd $RPM_BUILD_ROOT%{_javadir}/%{name} && for jar in *-%{version}*; do ln -sf ${jar} `echo $jar| sed  "s|-%{version}||g"`; done)


# javadoc
install -d -m 0755 $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}
cp -pr target/site/apidocs/* $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}
ln -s %{name}-%{version} $RPM_BUILD_ROOT%{_javadocdir}/%{name} # ghost symlink

%if %{gcj_support}
%{_bindir}/aot-compile-rpm
%endif

%post javadoc
rm -f %{_javadocdir}/%{name}
ln -s %{name}-%{version} %{_javadocdir}/%{name}

%postun javadoc
if [ "$1" = "0" ]; then
    rm -f %{_javadocdir}/%{name}
fi

%files
%dir %{_javadir}/%{name}
%{_javadir}/%{name}/core*.jar
%{_javadir}/%{name}/tiger*.jar
%{_datadir}/maven2/poms
%{_mavendepmapfragdir}
%if %{gcj_support}
%dir %{_libdir}/gcj/%{name}
%{_libdir}/gcj/%{name}/core-%{version}.jar.*
%{_libdir}/gcj/%{name}/tiger-%{version}.jar.*
%endif

%files adapter-catalina
%{_javadir}/%{name}/catalina*.jar

%files adapter-jboss
%{_javadir}/%{name}/jboss*.jar


%if %{full_build}
%files adapter-cas
%{_javadir}/%{name}/cas*.jar

%endif

%files javadoc
%{_javadocdir}/%{name}-%{version}
%ghost %{_javadocdir}/%{name}

%changelog
* Sat Mar 14 2009 Igor Vlasenko <viy@altlinux.ru> 0:1.0.7-alt1_2jpp5
- first build