Package drools2: Specfile

Packager: Igor Vlasenko <viy@altlinux.ru>
BuildRequires: /proc
BuildRequires: jpackage-1.5.0-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 oname     drools
%define namedversion     2.5-final

Name:           drools2
Version:        2.5
Release:        alt4_2jpp5
Epoch:          0
Summary:        Drools Rules Engine (Legacy)

Group:          Development/Java
License:        BSD
URL:            http://legacy.drools.codehaus.org/
Source0:        http://dist.codehaus.org/drools/distributions/drools-2.5-final-src.tar.gz

Source1:        pom-maven2jpp-depcat.xsl
Source2:        pom-maven2jpp-newdepmap.xsl
Source3:        pom-maven2jpp-mapdeps.xsl
Source4:        drools2-2.5-jpp-depmap.xml

Patch0:         %{name}-project-properties.patch
Patch1:         %{name}-RuleSetCompiler.patch
Patch2:         %{name}-AbstractSemanticCompiler.patch
Patch3:         %{name}-JavaSemanticFunctionsCompiler.patch
Patch4:         %{name}-JavaSemanticRuleCompiler.patch
Patch5:         %{name}-GroovySemanticFunctionsCompiler.patch
Patch6:         %{name}-GroovySemanticRuleCompiler.patch
Patch7:         %{name}-ExcelParser.patch


BuildArch:      noarch
BuildRequires: jpackage-utils >= 0:1.7.5
BuildRequires: maven1 >= 0:1.1
BuildRequires: maven1-plugins-base
BuildRequires: maven1-plugin-changelog
BuildRequires: maven1-plugin-checkstyle
BuildRequires: checkstyle4
BuildRequires: checkstyle4-optional
BuildRequires: maven1-plugin-developer-activity
BuildRequires: maven1-plugin-file-activity
BuildRequires: maven1-plugin-html2xdoc
BuildRequires: maven1-plugin-jdepend
BuildRequires: maven1-plugin-jxr
BuildRequires: maven1-plugin-license
BuildRequires: maven1-plugin-multiproject
BuildRequires: maven1-plugin-pmd
BuildRequires: maven1-plugin-test
BuildRequires: maven1-plugin-war
BuildRequires: maven1-plugin-xdoc
BuildRequires: saxon
BuildRequires: saxon-scripts
#
BuildRequires: easymock-java5
BuildRequires: easymock-classextension

#
BuildRequires: antlr
BuildRequires: asm
BuildRequires: cglib
BuildRequires: jakarta-commons-jci
BuildRequires: jakarta-commons-logging
BuildRequires: ecj
BuildRequires: groovy
BuildRequires: janino
BuildRequires: jython
BuildRequires: jakarta-poi
BuildRequires: spring-beans
BuildRequires: spring-context
BuildRequires: spring-core
BuildRequires: xerces-j2
BuildRequires: xml-commons-jaxp-1.3-apis

Requires: antlr
Requires: asm
Requires: cglib
Requires: jakarta-commons-jci
Requires: jakarta-commons-logging
Requires: ecj
Requires: groovy
Requires: janino
Requires: jython
Requires: jakarta-poi
Requires: spring-beans
Requires: spring-context
Requires: spring-core
Requires: xerces-j2
Requires: xml-commons-jaxp-1.3-apis

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

%description
Drools is a Rules Engine implementation based on Charles 
Forgy's Rete algorithm tailored for the Java language. 
Adapting Rete to an object-oriented interface allows for 
more natural expression of business rules with regards to 
business objects. Drools is written in Java, but able to run
on Java and .Net.
Drools is designed to allow pluggeable language 
implementations. Currently rules can be written in Java, 
Python and Groovy. More importantly, Drools provides for 
Declarative Programming and is flexible enough to match the
semantics of your problem domain with Domain Specific 
Languages (DSL) via XML using a Schema defined for your 
problem domain. DSLs consist of XML elements and attributes
that represent the problem domain.

Drools is now a JBoss JEMS product.

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

%description    javadoc
%{summary}.

%prep
%setup -q -n %{oname}-%{version}-final
chmod -R go=u-w *
for j in $(find . -name "*.jar"); do
    mv $j $j.no
done
mv lib/easymockcontainer-1.0.1.jar.no lib/easymockcontainer-1.0.1.jar
mv lib/easymockcontainer-jdk5-1.3.jar.no lib/easymockcontainer-jdk5-1.3.jar

export DEPCAT=$(pwd)/drools2-2.5-depcat.new.xml
echo '<?xml version="1.0" standalone="yes"?>' > $DEPCAT
echo '<depset>' >> $DEPCAT
for p in $(find . -name project.xml); do
    pushd $(dirname $p)
    /usr/bin/saxon project.xml %{SOURCE1} >> $DEPCAT
    popd
done
echo >> $DEPCAT
echo '</depset>' >> $DEPCAT
/usr/bin/saxon $DEPCAT %{SOURCE2} > drools2-2.5-depmap.new.xml

for p in $(find . -name pom.xml); do
	sed -i -e 's/beta-1/final/' $p
done
%patch0 -b .sav0
%patch1 -b .sav1
%patch2 -b .sav2
%patch3 -b .sav3
%patch4 -b .sav4
%patch5 -b .sav5
%patch6 -b .sav6
%patch7 -b .sav7

%build
for p in $(find . -name project.xml); do
    pushd $(dirname $p)
    cp project.xml project.xml.orig
    /usr/bin/saxon -o project.xml project.xml.orig %{SOURCE3} map=%{SOURCE4}
    popd
done

export MAVEN_HOME_LOCAL=$(pwd)/.maven

maven -Dmaven.compile.target=1.5 -Dmaven.javadoc.source=1.5  -e \
        -Dmaven.repo.remote=file:/usr/share/maven/repository \
        -Dmaven.home.local=$MAVEN_HOME_LOCAL \
	-Dmaven.multiproject.excludes="drools*examples/**,drools-jsr94/**" \
        drools:default drools:javadoc-standard

#	-Dmaven.multiproject.excludes="drools-core-3.0/**,drools*examples/**,drools-jsr94/**" \

%install
install -dm 755 $RPM_BUILD_ROOT%{_javadir}/%{name}
install -dm 755 $RPM_BUILD_ROOT%{_datadir}/maven2/poms

install -m 644 target/%{oname}-all-jdk5-%{namedversion}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}-all-%{version}.jar
install -m 644 target/%{oname}-base-%{namedversion}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/base-%{version}.jar
install -m 644 target/%{oname}-core-%{namedversion}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/core-%{version}.jar
install -m 644 target/%{oname}-core-3.0-%{namedversion}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/core-3.0-%{version}.jar
install -m 644 target/%{oname}-decisiontables-%{namedversion}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/decisiontables-%{version}.jar
install -m 644 target/%{oname}-groovy-%{namedversion}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/groovy-%{version}.jar
install -m 644 target/%{oname}-io-%{namedversion}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/io-%{version}.jar
install -m 644 target/%{oname}-java-%{namedversion}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/java-%{version}.jar
#install -m 644 target/%{oname}-jsr94-%{namedversion}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/jsr94-%{version}.jar
install -m 644 target/%{oname}-python-%{namedversion}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/python-%{version}.jar
install -m 644 target/%{oname}-smf-%{namedversion}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/smf-%{version}.jar
install -m 644 target/%{oname}-smftest-%{namedversion}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/smftest-%{version}.jar
install -m 644 target/%{oname}-spring-%{namedversion}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/spring-%{version}.jar
install -m 644 target/%{oname}-spring-jdk5-%{namedversion}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}/spring-jdk5-%{version}.jar
(cd $RPM_BUILD_ROOT%{_javadir}/%{name} && for jar in *-%{version}*; do ln -sf ${jar} `echo $jar| sed  "s|-%{version}||g"`; done)
(cd $RPM_BUILD_ROOT%{_javadir} && for jar in *-%{version}*; do ln -sf ${jar} `echo $jar| sed  "s|-%{version}||g"`; done)

install -m 644 pom.xml $RPM_BUILD_ROOT%{_datadir}/maven2/poms/JPP.%{name}-drools.pom
%add_to_maven_depmap org.drools drools %{namedversion} JPP/%{name} drools
install -m 644 drools-base/pom.xml $RPM_BUILD_ROOT%{_datadir}/maven2/poms/JPP.%{name}-base.pom
%add_to_maven_depmap org.drools drools-base %{namedversion} JPP/%{name} base
install -m 644 drools-core/pom.xml $RPM_BUILD_ROOT%{_datadir}/maven2/poms/JPP.%{name}-core.pom
%add_to_maven_depmap org.drools drools-core %{namedversion} JPP/%{name} core
install -m 644 drools-groovy/pom.xml $RPM_BUILD_ROOT%{_datadir}/maven2/poms/JPP.%{name}-groovy.pom
%add_to_maven_depmap org.drools drools-groovy %{namedversion} JPP/%{name} groovy
install -m 644 drools-io/pom.xml $RPM_BUILD_ROOT%{_datadir}/maven2/poms/JPP.%{name}-io.pom
%add_to_maven_depmap org.drools drools-io %{namedversion} JPP/%{name} io
install -m 644 drools-java/pom.xml $RPM_BUILD_ROOT%{_datadir}/maven2/poms/JPP.%{name}-java.pom
%add_to_maven_depmap org.drools drools-java %{namedversion} JPP/%{name} java
install -m 644 drools-python/pom.xml $RPM_BUILD_ROOT%{_datadir}/maven2/poms/JPP.%{name}-python.pom
%add_to_maven_depmap org.drools drools-python %{namedversion} JPP/%{name} python
install -m 644 drools-smf/pom.xml $RPM_BUILD_ROOT%{_datadir}/maven2/poms/JPP.%{name}-smf.pom
%add_to_maven_depmap org.drools drools-smf %{namedversion} JPP/%{name} smf
install -m 644 drools-smftest/pom.xml $RPM_BUILD_ROOT%{_datadir}/maven2/poms/JPP.%{name}-smftest.pom
%add_to_maven_depmap org.drools drools-smftest %{namedversion} JPP/%{name} smftest

# javadoc
install -dm 755 $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}
cp -pr target/docs/apidocs/* $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}
ln -s %{name}-%{version} $RPM_BUILD_ROOT%{_javadocdir}/%{name} # ghost symlink

%files
%dir %{_javadir}/%{name}
%{_javadir}/%{name}/*.jar
%{_javadir}/*.jar
%doc {LICENSE,README}.txt
%{_datadir}/maven2/poms/*
%{_mavendepmapfragdir}/*

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

%changelog
* Tue Aug 30 2011 Igor Vlasenko <viy@altlinux.ru> 0:2.5-alt4_2jpp5
- use maven1

* Mon Feb 14 2011 Igor Vlasenko <viy@altlinux.ru> 0:2.5-alt3_2jpp5
- fixed build

* Wed May 19 2010 Igor Vlasenko <viy@altlinux.ru> 0:2.5-alt2_2jpp5
- selected java5 compiler explicitly

* Tue May 19 2009 Igor Vlasenko <viy@altlinux.ru> 0:2.5-alt1_2jpp5
- fixed build

* Tue Mar 03 2009 Igor Vlasenko <viy@altlinux.ru> 0:2.5-alt1_1jpp5
- first build