Package tiles: Specfile

Packager: Igor Vlasenko <viy@altlinux.ru>
BuildRequires: xpp3
BuildRequires: /proc
BuildRequires: jpackage-compat
# Copyright (c) 2000-2008, 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.
#


# If you don't want to build with maven, and use straight ant instead,
# give rpmbuild option '--without maven'
%define _without_maven 1
%define with_maven %{!?_without_maven:1}%{?_without_maven:0}
%define without_maven %{?_without_maven:1}%{!?_without_maven:0}

Name:           tiles
Version:        2.0.5
Release:        alt4_1jpp5
Epoch:          0
Summary:        Apache Tiles
License:        Apache Software License 2.0
Group:          Development/Java
URL:            http://tiles.apache.org/
Source0:        http://www.apache.org/dist/tiles/v2.0.5/tiles-2.0.5-src.tar.gz

Source1:        %{name}-build.xml
Source2:        %{name}-jpp-depmap.xml
Source3:        %{name}-settings.xml
Source4:        %{name}-autogenerated-files.tar.gz
Source5:        tiles-master-1.pom
Patch0:         %{name}-%{version}-pom.patch


BuildArch:      noarch
BuildRequires: jpackage-utils >= 0:1.7.4
BuildRequires: ant >= 0:1.6.5
BuildRequires: junit
BuildRequires: sed
%if %{with_maven}
BuildRequires: cargo-maven2-plugin
BuildRequires: maven2-common-poms
BuildRequires: maven2 >= 0:2.0.7
BuildRequires: maven2-plugin-ant
BuildRequires: maven2-plugin-antrun
BuildRequires: maven2-plugin-assembly
BuildRequires: maven2-plugin-checkstyle
BuildRequires: maven2-plugin-compiler
BuildRequires: maven2-plugin-dependency
BuildRequires: maven2-plugin-install
BuildRequires: maven2-plugin-jar
BuildRequires: maven2-plugin-javadoc
BuildRequires: maven2-plugin-jxr
BuildRequires: maven2-plugin-plugin
BuildRequires: maven2-plugin-pmd
BuildRequires: maven2-plugin-project-info-reports
BuildRequires: maven2-plugin-release
BuildRequires: maven2-plugin-resources
BuildRequires: maven2-plugin-site
BuildRequires: maven2-plugin-source
BuildRequires: maven-surefire-plugin
BuildRequires: maven2-plugin-surefire-report
BuildRequires: maven2-plugin-war
%endif
BuildRequires: easymock2
BuildRequires: freemarker
BuildRequires: jakarta-commons-digester
BuildRequires: jakarta-commons-logging
BuildRequires: jakarta-taglibs-standard
BuildRequires: jsp_2_0_api
BuildRequires: portlet_1_0_api
BuildRequires: servlet_2_4_api
BuildRequires: shale-test
BuildRequires: umlgraph

Requires: freemarker
Requires: jakarta-commons-digester
Requires: jakarta-commons-logging
Requires: jakarta-taglibs-standard
Requires: jsp_2_0_api
Requires: portlet_1_0_api
Requires: servlet_2_4_api

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

%description
Apache Tiles is a templating framework built to simplify the
development of web application user interfaces. Tiles allows
authors to define page fragments which can be assembled into
a complete page at runtime. These fragments, or tiles, can
be used as simple includes in order to reduce the duplication
of common page elements or embedded within other tiles to
develop a series of reusable templates. These templates
streamline the development of a consistent look and feel
across an entire application. Tiles grew in popularity as a
component of the popular Struts framework. It has since been
extracted from Struts and is now integrated with various
frameworks, such as Struts 2 and Shale. 


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

%description javadoc
%{summary}.

%prep
%setup -q 
cp %{SOURCE1} build.xml
cp %{SOURCE3} settings.xml
%if %{without_maven}
gzip -dc %{SOURCE4} | tar xf -
%endif
sed -i -e "s|<url>__JPP_URL_PLACEHOLDER__</url>|<url>file://`pwd`/.m2/repository</url>|g" settings.xml
sed -i -e "s|<url>__JAVADIR_PLACEHOLDER__</url>|<url>file://`pwd`/external_repo</url>|g" settings.xml
sed -i -e "s|<url>__MAVENREPO_DIR_PLACEHOLDER__</url>|<url>file://`pwd`/.m2/repository</url>|g" settings.xml
%patch0 -b .sav0

%build

export MAVEN_REPO_LOCAL=$(pwd)/.m2/repository
mkdir -p $MAVEN_REPO_LOCAL/JPP/maven2/default_poms/
cp %{SOURCE5} .m2/repository/JPP/maven2/default_poms/org.apache.tiles-tiles-master.pom

mkdir -p $MAVEN_REPO_LOCAL/org.apache.tiles
ln -sf ../org/apache/tiles/tiles-api/%{version}/tiles-api-%{version}.jar $MAVEN_REPO_LOCAL/org.apache.tiles/tiles-api.jar
ln -sf ../org/apache/tiles/tiles-core/%{version}/tiles-core-%{version}.jar $MAVEN_REPO_LOCAL/org.apache.tiles/tiles-core.jar
ln -sf ../org/apache/tiles/tiles-jsp/%{version}/tiles-jsp-%{version}.jar $MAVEN_REPO_LOCAL/org.apache.tiles/tiles-jsp.jar

# 208 hacks
mkdir -p $MAVEN_REPO_LOCAL/org/apache/tiles/tiles-master/1/
cp %{SOURCE5} .m2/repository/org/apache/tiles/tiles-master/1/tiles-master-1.pom
mkdir -p $MAVEN_REPO_LOCAL/org/apache/tiles/tiles-{api,core,jsp}/%{version}/
ln -sf ../org/apache/tiles/tiles-api/%{version}/tiles-api-%{version}.jar $MAVEN_REPO_LOCAL/org/apache/tiles/tiles-api/%{version}/
ln -sf ../org/apache/tiles/tiles-core/%{version}/tiles-core-%{version}.jar $MAVEN_REPO_LOCAL/org/apache/tiles/tiles-core/%{version}/
ln -sf ../org/apache/tiles/tiles-jsp/%{version}/tiles-jsp-%{version}.jar $MAVEN_REPO_LOCAL/org/apache/tiles/tiles-jsp/%{version}/
# end 208 hacks

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

export M2_SETTINGS=$(pwd)/settings.xml
cd src
%if %{with_maven}
mvn-jpp -Dmaven.compile.target=1.5 -Dmaven.javadoc.source=1.5  \
        -e \
        -s $M2_SETTINGS \
        -Dmaven.test.failure.ignore=true \
        -Dmaven2.jpp.depmap.file=%{SOURCE2} \
        -Dmaven.repo.local=$MAVEN_REPO_LOCAL \
        ant:ant install javadoc:javadoc 
cd assembly
mvn-jpp -Dmaven.compile.target=1.5 -Dmaven.javadoc.source=1.5  \
        -e \
        -s $M2_SETTINGS \
        -Dmaven.test.failure.ignore=true \
        -Dmaven2.jpp.depmap.file=%{SOURCE2} \
        -Dmaven.repo.local=$MAVEN_REPO_LOCAL \
        assembly:assembly
%else
#[INFO] Reactor build order:
#[INFO]   Tiles 2
#[INFO]   Tiles - API
#[INFO]   Tiles - Core Library
#[INFO]   Tiles - JSP support
#[INFO]   Tiles - Apps - Test
#[INFO]   Tiles Assembly

export OPT_JAR_LIST="umlgraph"
export CLASSPATH=$(build-classpath \
commons-logging \
easymock2 \
servlet_2_4_api \
)
CLASSPATH=$CLASSPATH:target/classes:target/test-classes
pushd tiles-api
ant -Dant.build.javac.source=1.5 -Dant.build.javac.target=1.5 -Dmaven.settings.offline=true -Dbuild.sysclasspath=only jar javadoc
popd
export CLASSPATH=$(build-classpath \
commons-digester \
commons-logging \
easymock2 \
portlet_1_0_api \
servlet_2_4_api \
shale/test \
)
CLASSPATH=$CLASSPATH:$(pwd)/tiles-api/target/tiles-api-%{version}.jar
CLASSPATH=$CLASSPATH:target/classes:target/test-classes
pushd tiles-core
ant -Dant.build.javac.source=1.5 -Dant.build.javac.target=1.5 -Dmaven.settings.offline=true -Dbuild.sysclasspath=only jar javadoc
popd
export CLASSPATH=$(build-classpath \
commons-logging \
jsp_2_0_api \
servlet_2_4_api \
shale/test \
)
CLASSPATH=$CLASSPATH:$(pwd)/tiles-api/target/tiles-api-%{version}.jar
CLASSPATH=$CLASSPATH:$(pwd)/tiles-core/target/tiles-core-%{version}.jar
CLASSPATH=$CLASSPATH:target/classes:target/test-classes
pushd tiles-jsp
ant -Dant.build.javac.source=1.5 -Dant.build.javac.target=1.5 -Dmaven.settings.offline=true -Dbuild.sysclasspath=only jar javadoc
popd
pushd tiles-test
ant -Dant.build.javac.source=1.5 -Dant.build.javac.target=1.5 \
    -Dfreemarker.jar=$(build-classpath freemarker) \
    -Djstl.jar=$(build-classpath taglibs-core) \
    -Dstandard.jar=$(build-classpath taglibs-standard) \
    -Dtiles-jsp.jar=$(pwd)/../tiles-jsp/target/tiles-jsp-%{version}.jar \
    -Dmaven.settings.offline=true -Dbuild.sysclasspath=only war
popd
%endif
for f in $(find . -name "*.dot"); do
    sed -i -e 's|/usr/local/bin/dot|/usr/bin/dot|' $f
done


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

%add_to_maven_depmap org.apache.tiles %{name}-master %{version} JPP/%{name} master
install -m 644 %{SOURCE5} $RPM_BUILD_ROOT/%{_datadir}/maven2/poms/JPP.%{name}-master.pom

%add_to_maven_depmap org.apache.tiles %{name}-parent %{version} JPP/%{name} parent
install -m 644 src/pom.xml $RPM_BUILD_ROOT/%{_datadir}/maven2/poms/JPP.%{name}-parent.pom

install -m 644 src/%{name}-api/target/%{name}-api-%{version}.jar \
               $RPM_BUILD_ROOT%{_javadir}/%{name}/api-%{version}.jar
%add_to_maven_depmap org.apache.tiles %{name}-api %{version} JPP/%{name} api
install -m 644 src/%{name}-api/pom.xml $RPM_BUILD_ROOT/%{_datadir}/maven2/poms/JPP.%{name}-api.pom

install -m 644 src/%{name}-core/target/%{name}-core-%{version}.jar \
               $RPM_BUILD_ROOT%{_javadir}/%{name}/core-%{version}.jar
%add_to_maven_depmap org.apache.tiles %{name}-core %{version} JPP/%{name} core
install -m 644 src/%{name}-core/pom.xml $RPM_BUILD_ROOT/%{_datadir}/maven2/poms/JPP.%{name}-core.pom

install -m 644 src/%{name}-jsp/target/%{name}-jsp-%{version}.jar \
               $RPM_BUILD_ROOT%{_javadir}/%{name}/jsp-%{version}.jar
%add_to_maven_depmap org.apache.tiles %{name}-jsp %{version} JPP/%{name} jsp
install -m 644 src/%{name}-jsp/pom.xml $RPM_BUILD_ROOT/%{_datadir}/maven2/poms/JPP.%{name}-jsp.pom

(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 755 $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}/api
#cp -pr src/%{name}-api/target/site/apidocs/* \
#                    $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}/api
install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}/core
#cp -pr src/%{name}-core/target/site/apidocs/* \
#                    $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}/core
install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}/jsp
#cp -pr src/%{name}-jsp/target/site/apidocs/* \
#                    $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}/jsp
ln -s %{name}-%{version} $RPM_BUILD_ROOT%{_javadocdir}/%{name} # ghost symlink

# test war
install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}
install -m 644 src/%{name}-test/target/tiles-test.war $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}

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

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

%files
%{_javadir}/%{name}
%{_datadir}/maven2
%{_mavendepmapfragdir}
%{_datadir}/%{name}-%{version}

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

%changelog
* Tue Sep 06 2011 Igor Vlasenko <viy@altlinux.ru> 0:2.0.5-alt4_1jpp5
- fixed build

* Wed Sep 29 2010 Igor Vlasenko <viy@altlinux.ru> 0:2.0.5-alt3_1jpp5
- fixed build with new maven 2.0.8

* Wed May 12 2010 Igor Vlasenko <viy@altlinux.ru> 0:2.0.5-alt2_1jpp5
- fixes for java6 support

* Fri Feb 13 2009 Igor Vlasenko <viy@altlinux.ru> 0:2.0.5-alt1_1jpp5
- new version