# Conditionals to help breaking solr(lucene) <-> carrot2 dependency cycle
%if 0%{?fedora}
%bcond_with carrot2
# Unavailable deps
%bcond_with randomizedtesting
%bcond_with uima
%bcond_with webapp
%bcond_with jetty8
%bcond_with kite
%endif
Name: solr
Version: 4.7.0
Release: 1%{?dist}
Summary: Ultra-fast Lucene-based Search Server
# MIT/X11 (BSD like) solr/contrib/map-reduce/src/java/org/apache/solr/hadoop/AlphaNumericComparator.java
License: ASL 2.0 and BSD
URL: http://lucene.apache.org/solr/
Source0: http://www.apache.org/dist/lucene/solr/%{version}/%{name}-%{version}-src.tgz
# taken from http://central.maven.org/maven2/org/apache/solr and http://repo1.maven.org/maven2/org/apache/lucene/
Source1: sorl-poms-%{version}.tar.xz
BuildRequires: java-devel
BuildRequires: mvn(com.cybozu.labs:langdetect)
BuildRequires: mvn(com.google.guava:guava)
BuildRequires: mvn(com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru)
BuildRequires: mvn(com.ibm.icu:icu4j)
BuildRequires: mvn(com.spatial4j:spatial4j)
BuildRequires: mvn(commons-cli:commons-cli)
BuildRequires: mvn(commons-codec:commons-codec)
BuildRequires: mvn(commons-fileupload:commons-fileupload)
BuildRequires: mvn(commons-io:commons-io)
BuildRequires: mvn(commons-lang:commons-lang)
BuildRequires: mvn(jakarta-regexp:jakarta-regexp)
BuildRequires: mvn(javax.mail:mail)
BuildRequires: mvn(javax.servlet:servlet-api)
BuildRequires: mvn(joda-time:joda-time)
BuildRequires: mvn(log4j:log4j)
BuildRequires: mvn(net.arnx:jsonic)
BuildRequires: mvn(net.sourceforge.nekohtml:nekohtml)
BuildRequires: mvn(org.antlr:antlr-runtime)
BuildRequires: mvn(org.apache.commons:commons-compress)
BuildRequires: mvn(org.apache.hadoop:hadoop-annotations)
BuildRequires: mvn(org.apache.hadoop:hadoop-auth)
BuildRequires: mvn(org.apache.hadoop:hadoop-common)
BuildRequires: mvn(org.apache.hadoop:hadoop-hdfs)
BuildRequires: mvn(org.apache.httpcomponents:httpclient)
BuildRequires: mvn(org.apache.httpcomponents:httpmime)
BuildRequires: mvn(org.apache.tika:tika-parsers)
BuildRequires: mvn(org.apache.velocity:velocity)
BuildRequires: mvn(org.apache.velocity:velocity-tools)
BuildRequires: mvn(org.apache.zookeeper:zookeeper)
BuildRequires: mvn(org.carrot2:morfologik-polish)
BuildRequires: mvn(org.codehaus.woodstox:woodstox-core-asl)
%if %{without jetty8}
BuildRequires: mvn(org.eclipse.jetty:jetty-server)
BuildRequires: mvn(org.eclipse.jetty:jetty-servlet)
BuildRequires: mvn(org.eclipse.jetty:jetty-util)
BuildRequires: mvn(org.eclipse.jetty:jetty-webapp)
%else
# 8.1.14.v20131031
BuildRequires: mvn(org.eclipse.jetty:jetty-server:8.1.14)
BuildRequires: mvn(org.eclipse.jetty:jetty-servlet:8.1.14)
BuildRequires: mvn(org.eclipse.jetty:jetty-util:8.1.14)
BuildRequires: mvn(org.eclipse.jetty:jetty-webapp:8.1.14)
Requires: jetty8
%endif
BuildRequires: mvn(org.noggit:noggit)
BuildRequires: mvn(org.ow2.asm:asm)
BuildRequires: mvn(org.ow2.asm:asm-commons)
BuildRequires: mvn(org.restlet.jee:org.restlet)
BuildRequires: mvn(org.restlet.jee:org.restlet.ext.servlet)
BuildRequires: mvn(org.slf4j:jcl-over-slf4j)
BuildRequires: mvn(org.slf4j:jul-to-slf4j)
BuildRequires: mvn(org.slf4j:slf4j-api)
BuildRequires: mvn(org.slf4j:slf4j-log4j12)
BuildRequires: mvn(xerces:xercesImpl)
%if %{?fedora} > 20
BuildRequires: mvn(io.netty:netty:3)
%else
BuildRequires: mvn(io.netty:netty)
%endif
# Optional?
%if %{with carrot2}
# solr/contrib/clustering
# work in progress ... circular deps
BuildRequires: mvn(org.carrot2:carrot2-mini:3.8.0)
%endif
%if %{with randomizedtesting}
# {lucene,solr}/test-framework
BuildRequires: mvn(com.carrotsearch.randomizedtesting:randomizedtesting-runner)
BuildRequires: mvn(junit:junit)
%endif
%if %{without uima}
# {lucene/analysis,solr/contrib}/uima
BuildRequires: mvn(org.apache.uima:uimaj-core)
BuildRequires: mvn(org.apache.uima:AlchemyAPIAnnotator)
BuildRequires: mvn(org.apache.uima:OpenCalaisAnnotator)
BuildRequires: mvn(org.apache.uima:Tagger)
BuildRequires: mvn(org.apache.uima:WhitespaceTokenizer)
BuildRequires: mvn(org.apache.uima:parent-pom)
%endif
%if %{with webapp}
# solr/webapp
BuildRequires: mvn(org.eclipse.jetty.orbit:javax.servlet)
%endif
%if %{with kite}
# solr/contrib/{map-reduce,morphlines-cell,morphlines-core}
BuildRequires: mvn(com.codahale.metrics:metrics-core)
BuildRequires: mvn(com.codahale.metrics:metrics-healthchecks)
BuildRequires: mvn(com.typesafe:config)
BuildRequires: mvn(org.apache.hadoop:hadoop-mapreduce-client-core)
# http://gil.fedorapeople.org/argparse4j-0.4.3-1.fc19.src.rpm
BuildRequires: mvn(net.sourceforge.argparse4j:argparse4j)
# NOT available
BuildRequires: mvn(net.sf.saxon:Saxon-HE:9.5.1-4)
# ... work in progress ... circular deps
BuildRequires: mvn(org.kitesdk:kite-morphlines-avro)
BuildRequires: mvn(org.kitesdk:kite-morphlines-core)
BuildRequires: mvn(org.kitesdk:kite-morphlines-hadoop-sequencefile)
BuildRequires: mvn(org.kitesdk:kite-morphlines-json)
BuildRequires: mvn(org.kitesdk:kite-morphlines-saxon)
BuildRequires: mvn(org.kitesdk:kite-morphlines-tika-core)
BuildRequires: mvn(org.kitesdk:kite-morphlines-tika-decompress)
BuildRequires: mvn(org.kitesdk:kite-morphlines-twitter)
%endif
BuildRequires: lucene >= %{version}
%if 0
# test deps
BuildRequires: mvn(dom4j:dom4j)
BuildRequires: mvn(hsqldb:hsqldb:1.8.0.10)
BuildRequires: mvn(org.apache.ant:ant:1.8.2)
BuildRequires: mvn(org.apache.derby:derby:10.9.1.0)
BuildRequires: mvn(org.apache.hadoop:hadoop-common:tests:2.0.5-alpha)
BuildRequires: mvn(org.apache.hadoop:hadoop-hdfs:tests:2.0.5-alpha)
BuildRequires: mvn(org.easymock:easymock:3.0)
BuildRequires: mvn(org.mortbay.jetty:jetty:6.1.26)
BuildRequires: mvn(org.mortbay.jetty:jetty-util:6.1.26)
%endif
# lucene-analyzers-kuromoji
# mecab:mecab-ipadic:2.7.0-20070801
# mecab:mecab-naist-jdic:0.6.3b-20111013
# http://gil.fedorapeople.org/mecab-naist-jdic-0.6.3b-0.1.20111013.fc19.src.rpm
# http://gil.fedorapeople.org/mecab-naist-jdic.spec
# lucene-core
# https://bitbucket.org/jpbarrette/moman/get/5c5c2a1e4dea.zip
# see lucene/core/src/java/org/apache/lucene/util/automaton/createLevAutomata.py
BuildRequires: buildnumber-maven-plugin
BuildRequires: maven-local
BuildRequires: maven-enforcer-plugin
BuildRequires: maven-plugin-bundle
BuildRequires: maven-remote-resources-plugin
BuildRequires: maven-site-plugin
BuildArch: noarch
%description
Solr is the popular, blazing fast open source enterprise search platform
from the Apache Lucene project.
For a complete description of the Solr project, team composition, source
code repositories, and other details, please see the Solr web site at
http://lucene.apache.org/solr
%package javadoc
Summary: Javadoc for %{name}
%description javadoc
This package contains javadoc for %{name}.
%prep
%setup -q
find . -name "*.class" -print -delete
find . -name "*.jar" -print -delete
find . -name "*.js" -print -delete
tar -xf %{SOURCE1}
# Fix parent pom
sed -i "s|../../../pom.xml|../pom.xml|" $(find lucene -name "pom.xml")
sed -i "s|../../../pom.xml|../pom.xml|" $(find solr -name "pom.xml")
# Fix non standard source/resources directories structure
sed -i 's|${module-path}|${basedir}/src/java|' \
lucene/core/pom.xml lucene/codecs/pom.xml \
solr/core/pom.xml solr/solrj/pom.xml
for p in lucene/test-framework/pom.xml lucene/analysis/common/pom.xml \
lucene/analysis/icu/pom.xml lucene/analysis/kuromoji/pom.xml \
lucene/analysis/morfologik/pom.xml lucene/analysis/phonetic/pom.xml \
lucene/analysis/smartcn/pom.xml lucene/analysis/stempel/pom.xml \
lucene/analysis/uima/pom.xml lucene/memory/pom.xml lucene/queries/pom.xml \
lucene/highlighter/pom.xml lucene/sandbox/pom.xml lucene/queryparser/pom.xml \
lucene/facet/pom.xml lucene/demo/pom.xml lucene/classification/pom.xml \
lucene/benchmark/pom.xml lucene/grouping/pom.xml lucene/join/pom.xml \
lucene/misc/pom.xml lucene/replicator/pom.xml lucene/spatial/pom.xml \
lucene/suggest/pom.xml lucene/expressions/pom.xml solr/test-framework/pom.xml solr/contrib/analysis-extras/pom.xml \
solr/contrib/clustering/pom.xml solr/contrib/dataimporthandler/pom.xml solr/contrib/dataimporthandler-extras/pom.xml \
solr/contrib/extraction/pom.xml solr/contrib/langid/pom.xml solr/contrib/uima/pom.xml solr/contrib/velocity/pom.xml; do
sed -i 's|${module-path}/src/java|${basedir}/src/java|' ${p}
sed -i 's|${module-path}/src/test|${basedir}/src/test|' ${p}
done
sed -i 's|${module-path}/src/resources|${basedir}/src/resources|' \
lucene/test-framework/pom.xml lucene/analysis/common/pom.xml lucene/analysis/icu/pom.xml lucene/facet/pom.xml \
lucene/analysis/kuromoji/pom.xml lucene/analysis/morfologik/pom.xml lucene/analysis/phonetic/pom.xml \
lucene/analysis/smartcn/pom.xml lucene/analysis/stempel/pom.xml lucene/analysis/uima/pom.xml lucene/demo/pom.xml \
lucene/classification/pom.xml lucene/queryparser/pom.xml lucene/expressions/pom.xml solr/contrib/langid/pom.xml solr/contrib/uima/pom.xml \
solr/contrib/clustering/pom.xml
sed -i 's|${module-path}/../resources|${basedir}/src/resources|' \
lucene/codecs/pom.xml lucene/core/pom.xml
sed -i 's|${module-path}/src/test-files|${basedir}/src/test-files|' \
lucene/analysis/uima/pom.xml lucene/spatial/pom.xml solr/contrib/langid/pom.xml solr/contrib/uima/pom.xml \
solr/contrib/clustering/pom.xml solr/contrib/extraction/pom.xml solr/contrib/velocity/pom.xml \
solr/contrib/analysis-extras/pom.xml solr/contrib/dataimporthandler/pom.xml solr/contrib/dataimporthandler-extras/pom.xml
sed -i 's|${module-path}|${basedir}|' \
lucene/benchmark/pom.xml
sed -i 's|${module-path}|${basedir}/src/java|' solr/test-framework/pom.xml
sed -i 's|${module-path}|${basedir}/src/test|' \
solr/solrj/pom.xml
# Remove unavailable plugins
%pom_remove_plugin org.codehaus.gmaven:gmaven-plugin
%pom_remove_plugin de.thetaphi:forbiddenapis
for m in lucene lucene/core lucene/test-framework lucene/codecs \
lucene/analysis/stempel lucene/queryparser lucene/facet \
lucene/benchmark lucene/misc lucene/demo solr solr/core solr/solrj solr/test-framework \
solr/contrib/extraction solr/contrib/velocity solr/contrib/uima solr/contrib/langid; do
%pom_remove_plugin de.thetaphi:forbiddenapis ${m}
done
%pom_xpath_inject "pom:build/pom:pluginManagement/pom:plugins/pom:plugin[pom:artifactId = 'maven-javadoc-plugin' ]" '
UTF-8
true
true
Apache Solr ${project.version} API
true
${project.artifactId}/src/java/overview.html
Apache Solr
org.apache.solr*
'
# Disabled for now
# Unavailable deps
%if %{without carrot2}
%pom_disable_module clustering solr/contrib
%endif
%if %{without randomizedtesting}
%pom_disable_module test-framework lucene
%pom_disable_module test-framework solr
%endif
%if %{with uima}
%pom_disable_module uima lucene/analysis
%pom_disable_module uima solr/contrib
%endif
%if %{without webapp}
# Require JQuery.js and other js libraries https://bugzilla.redhat.com/show_bug.cgi?id=857992
%pom_disable_module webapp solr
%endif
%if %{without kite}
%pom_disable_module map-reduce solr/contrib
%pom_disable_module morphlines-cell solr/contrib
%pom_disable_module morphlines-core solr/contrib
%endif
# Fix aId
%pom_xpath_set "pom:dependencies/pom:dependency[pom:groupId = 'org.codehaus.woodstox']/pom:artifactId" woodstox-core-asl solr/core
%pom_xpath_set "pom:dependencies/pom:dependency[pom:groupId = 'org.codehaus.woodstox']/pom:artifactId" woodstox-core-asl solr/solrj
%pom_xpath_set "pom:dependencies/pom:dependency[pom:groupId = 'org.codehaus.woodstox']/pom:artifactId" woodstox-core-asl solr/test-framework
%pom_xpath_set "pom:dependencies/pom:dependency[pom:groupId = 'org.codehaus.woodstox']/pom:artifactId" woodstox-core-asl solr/contrib/analysis-extras
%pom_xpath_set "pom:dependencies/pom:dependency[pom:groupId = 'org.codehaus.woodstox']/pom:artifactId" woodstox-core-asl solr/contrib/langid
%pom_xpath_set "pom:dependencies/pom:dependency[pom:groupId = 'org.codehaus.woodstox']/pom:artifactId" woodstox-core-asl solr/contrib/dataimporthandler
%pom_xpath_set "pom:dependencies/pom:dependency[pom:groupId = 'org.codehaus.woodstox']/pom:artifactId" woodstox-core-asl solr/contrib/dataimporthandler-extras
%pom_xpath_set "pom:dependencies/pom:dependency[pom:groupId = 'org.codehaus.woodstox']/pom:artifactId" woodstox-core-asl solr/contrib/extraction
%pom_xpath_set "pom:dependencies/pom:dependency[pom:groupId = 'org.codehaus.woodstox']/pom:artifactId" woodstox-core-asl solr/contrib/uima
%pom_xpath_set "pom:dependencies/pom:dependency[pom:groupId = 'org.codehaus.woodstox']/pom:artifactId" woodstox-core-asl solr/contrib/velocity
# Use system jvm apis
%pom_remove_dep javax.activation:activation solr/contrib/dataimporthandler
%pom_remove_dep javax.activation:activation solr/contrib/dataimporthandler-extras
# Remove fake BR
%pom_remove_dep com.googlecode.mp4parser:isoparser
%pom_remove_dep com.googlecode.mp4parser:isoparser solr/contrib/extraction
%pom_remove_dep com.googlecode.mp4parser:isoparser solr/contrib/langid
%pom_remove_dep com.googlecode.mp4parser:isoparser solr/contrib/dataimporthandler-extras
%pom_remove_dep com.drewnoakes:metadata-extractor solr/contrib/dataimporthandler-extras
%pom_remove_dep com.drewnoakes:metadata-extractor solr/contrib/extraction
%pom_remove_dep com.drewnoakes:metadata-extractor solr/contrib/langid
%pom_remove_dep org.apache.tika:tika-xmp solr/contrib/dataimporthandler-extras
%pom_remove_dep org.apache.tika:tika-xmp solr/contrib/extraction
%pom_remove_dep org.apache.tika:tika-xmp solr/contrib/langid
%pom_remove_dep org.bouncycastle:bcmail-jdk15 solr/contrib/dataimporthandler-extras
%pom_remove_dep org.bouncycastle:bcmail-jdk15 solr/contrib/extraction
%pom_remove_dep org.bouncycastle:bcmail-jdk15 solr/contrib/langid
%pom_remove_dep org.bouncycastle:bcprov-jdk15 solr/contrib/dataimporthandler-extras
%pom_remove_dep org.bouncycastle:bcprov-jdk15 solr/contrib/extraction
%pom_remove_dep org.bouncycastle:bcprov-jdk15 solr/contrib/langid
%if %{?fedora} > 20
%pom_xpath_set "pom:dependencyManagement/pom:dependencies/pom:dependency[pom:groupId = 'io.netty']/pom:version" 3
%endif
# Disable lucene
%pom_disable_module lucene
rm -r lucene
# Disable Jetty8 support ... for now
rm -r solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
%build
# Test skipped for unavailable test deps {lucene,solr}/test-framework
%mvn_build -f
%install
%mvn_install
%files -f .mfiles
%dir %{_javadir}/%{name}
%doc solr/CHANGES.txt LICENSE.txt NOTICE.txt README.txt
%files javadoc -f .mfiles-javadoc
%doc LICENSE.txt NOTICE.txt
%changelog
* Tue Mar 04 2014 gil cattaneo 4.7.0-1
- update to 4.7.0
* Tue Jan 28 2014 gil cattaneo 4.6.1-1
- update to 4.6.1
* Sat Nov 30 2013 gil cattaneo 4.6.0-1
- update to 4.6.0
* Sun Oct 27 2013 gil cattaneo 4.5.1-1
- update to 4.5.1
* Mon Sep 09 2013 gil cattaneo 4.5.0-1
- update to 4.5.0
* Fri Aug 23 2013 gil cattaneo 4.4.0-1
- initial rpm