diff --git a/.gitignore b/.gitignore index e69de29..f69aee1 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/zookeeper-3.4.5.tar.gz diff --git a/ZOOKEEPER-1557.patch b/ZOOKEEPER-1557.patch new file mode 100644 index 0000000..e273685 --- /dev/null +++ b/ZOOKEEPER-1557.patch @@ -0,0 +1,152 @@ +diff --git src/java/test/org/apache/zookeeper/test/SaslAuthFailNotifyTest.java src/java/test/org/apache/zookeeper/test/SaslAuthFailNotifyTest.java +new file mode 100644 +index 0000000..2b00d86 +--- /dev/null ++++ src/java/test/org/apache/zookeeper/test/SaslAuthFailNotifyTest.java +@@ -0,0 +1,98 @@ ++/** ++ * Licensed to the Apache Software Foundation (ASF) under one ++ * or more contributor license agreements. See the NOTICE file ++ * distributed with this work for additional information ++ * regarding copyright ownership. The ASF licenses this file ++ * to you under the Apache License, Version 2.0 (the ++ * "License"); you may not use this file except in compliance ++ * with the License. You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ */ ++ ++package org.apache.zookeeper.test; ++ ++import java.io.File; ++import java.io.FileWriter; ++import java.io.IOException; ++import java.util.concurrent.atomic.AtomicInteger; ++ ++import org.apache.zookeeper.CreateMode; ++import org.apache.zookeeper.TestableZooKeeper; ++import org.apache.zookeeper.WatchedEvent; ++import org.apache.zookeeper.ZooKeeper; ++import org.apache.zookeeper.Watcher.Event.KeeperState; ++import org.apache.zookeeper.ZooDefs.Ids; ++import org.junit.Test; ++import org.junit.Assert; ++ ++public class SaslAuthFailNotifyTest extends ClientBase { ++ static { ++ System.setProperty("zookeeper.authProvider.1","org.apache.zookeeper.server.auth.SASLAuthenticationProvider"); ++ System.setProperty("zookeeper.allowSaslFailedClients","true"); ++ ++ try { ++ File tmpDir = createTmpDir(); ++ File saslConfFile = new File(tmpDir, "jaas.conf"); ++ FileWriter fwriter = new FileWriter(saslConfFile); ++ ++ fwriter.write("" + ++ "Server {\n" + ++ " org.apache.zookeeper.server.auth.DigestLoginModule required\n" + ++ " user_super=\"test\";\n" + ++ "};\n" + ++ "Client {\n" + ++ " org.apache.zookeeper.server.auth.DigestLoginModule required\n" + ++ " username=\"super\"\n" + ++ " password=\"test1\";\n" + // NOTE: wrong password ('test' != 'test1') : this is to test SASL authentication failure. ++ "};" + "\n"); ++ fwriter.close(); ++ System.setProperty("java.security.auth.login.config",saslConfFile.getAbsolutePath()); ++ } ++ catch (IOException e) { ++ // could not create tmp directory to hold JAAS conf file. ++ } ++ } ++ ++ private AtomicInteger authFailed = new AtomicInteger(0); ++ ++ @Override ++ protected TestableZooKeeper createClient(String hp) ++ throws IOException, InterruptedException ++ { ++ MyWatcher watcher = new MyWatcher(); ++ return createClient(watcher, hp); ++ } ++ ++ private class MyWatcher extends CountdownWatcher { ++ @Override ++ public synchronized void process(WatchedEvent event) { ++ if (event.getState() == KeeperState.AuthFailed) { ++ synchronized(authFailed) { ++ authFailed.incrementAndGet(); ++ authFailed.notify(); ++ } ++ } ++ else { ++ super.process(event); ++ } ++ } ++ } ++ ++ @Test ++ public void testBadSaslAuthNotifiesWatch() throws Exception { ++ ZooKeeper zk = createClient(); ++ // wait for authFailed event from client's EventThread. ++ synchronized(authFailed) { ++ authFailed.wait(); ++ } ++ Assert.assertEquals(authFailed.get(),1); ++ zk.close(); ++ } ++} +diff --git src/java/test/org/apache/zookeeper/test/SaslAuthFailTest.java src/java/test/org/apache/zookeeper/test/SaslAuthFailTest.java +index 1589b1f..33a505e 100644 +--- src/java/test/org/apache/zookeeper/test/SaslAuthFailTest.java ++++ src/java/test/org/apache/zookeeper/test/SaslAuthFailTest.java +@@ -59,43 +59,6 @@ public class SaslAuthFailTest extends ClientBase { + // could not create tmp directory to hold JAAS conf file. + } + } +- +- private AtomicInteger authFailed = new AtomicInteger(0); +- +- @Override +- protected TestableZooKeeper createClient(String hp) +- throws IOException, InterruptedException +- { +- MyWatcher watcher = new MyWatcher(); +- return createClient(watcher, hp); +- } +- +- private class MyWatcher extends CountdownWatcher { +- @Override +- public synchronized void process(WatchedEvent event) { +- if (event.getState() == KeeperState.AuthFailed) { +- synchronized(authFailed) { +- authFailed.incrementAndGet(); +- authFailed.notify(); +- } +- } +- else { +- super.process(event); +- } +- } +- } +- +- @Test +- public void testBadSaslAuthNotifiesWatch() throws Exception { +- ZooKeeper zk = createClient(); +- // wait for authFailed event from client's EventThread. +- synchronized(authFailed) { +- authFailed.wait(); +- } +- Assert.assertEquals(authFailed.get(),1); +- zk.close(); +- } +- + + @Test + public void testAuthFail() throws Exception { diff --git a/sources b/sources index e69de29..0f42bf6 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +f64fef86c0bf2e5e0484d19425b22dcb zookeeper-3.4.5.tar.gz diff --git a/zookeeper-3.4.4-build.patch b/zookeeper-3.4.4-build.patch new file mode 100644 index 0000000..609c76e --- /dev/null +++ b/zookeeper-3.4.4-build.patch @@ -0,0 +1,447 @@ +diff -Nru zookeeper-3.4.4/build.xml zookeeper-3.4.4-gil/build.xml +--- zookeeper-3.4.4/build.xml 2012-09-17 10:34:37.000000000 +0200 ++++ zookeeper-3.4.4-gil/build.xml 2012-10-12 17:51:43.676211458 +0200 +@@ -36,7 +36,7 @@ + + + +- ++ + + + +@@ -89,46 +89,28 @@ + + + +- +- +- +- +- + + + + + +- +- ++ value="file:/usr/share/java/" /> ++ ++ + + + + + +- +- + + + +- +- +- +- +- +- + + + + + + +- +- + + + +@@ -198,7 +180,6 @@ + + + +- + + + +@@ -225,7 +206,7 @@ + + + +- ++ + + + +@@ -312,8 +293,8 @@ + + +- ++ + + + +@@ -329,32 +310,20 @@ + + + ++ pattern="${ivy.lib}/[artifact].[ext]"/> + + + + ++ pattern="${ivy.test.lib}/[artifact].[ext]"/> + + + + +- +- +- +- +- +- +- +- +- +- ++ pattern="${ivy.package.lib}/[artifact].[ext]"/> + + +- ++ + + +@@ -498,7 +467,6 @@ + + + +- + + + +@@ -541,7 +509,6 @@ + + + +- + + + +@@ -634,7 +601,7 @@ + + + + + +@@ -733,7 +700,7 @@ + + + + + +@@ -1094,9 +1061,6 @@ + + + +- +- +- + + + +@@ -1260,7 +1224,6 @@ + + + +- + + + +@@ -1304,50 +1267,6 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- Clover not found. Code coverage reports disabled. +- +- +- +- +- +- ################################################################## +- Clover not found. +- Please make sure clover.jar is in ANT_HOME/lib, or made available +- to Ant using other mechanisms like -lib or CLASSPATH. +- ################################################################## +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- + + + +@@ -1356,11 +1275,11 @@ + + + ++ classpath="${ivy.lib}/ant/ant-findbugs.jar" /> + + +- ++ + + + +@@ -1369,7 +1288,7 @@ + + + +- ++ + + + +@@ -1479,51 +1398,6 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- + + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- + + + +diff -Nru zookeeper-3.4.4/ivysettings.xml zookeeper-3.4.4-gil/ivysettings.xml +--- zookeeper-3.4.4/ivysettings.xml 2012-09-17 10:34:37.000000000 +0200 ++++ zookeeper-3.4.4-gil/ivysettings.xml 2012-10-12 17:02:35.706545077 +0200 +@@ -18,13 +18,13 @@ + --> + + ++ value="file:///usr/share/java/" override="false"/> + ++ value="file:///usr/share/java/" override="false"/> + ++ value="file:///usr/share/java/" override="false"/> + ++ value="[module]"/> + + + +diff -Nru zookeeper-3.4.4/ivy.xml zookeeper-3.4.4-gil/ivy.xml +--- zookeeper-3.4.4/ivy.xml 2012-09-17 10:34:37.000000000 +0200 ++++ zookeeper-3.4.4-gil/ivy.xml 2012-10-12 17:41:46.216338834 +0200 +@@ -39,36 +39,36 @@ + + + +- +- ++ ++ + + +- +- ++ ++ + +- ++ + + + +- ++ + +- +- ++ +- + +- +- + +- ++ + ++ rev="" conf="releaseaudit->default"/> + ++ rev="" conf="releaseaudit->default"/--> + + + diff --git a/zookeeper-3.4.5-add-PIE-and-RELRO.patch b/zookeeper-3.4.5-add-PIE-and-RELRO.patch new file mode 100644 index 0000000..7a40d93 --- /dev/null +++ b/zookeeper-3.4.5-add-PIE-and-RELRO.patch @@ -0,0 +1,85 @@ +diff -Nru zookeeper-3.4.5/contrib/zktreeutil/src/Makefile.am zookeeper-3.4.5-gil/contrib/zktreeutil/src/Makefile.am +--- zookeeper-3.4.5/contrib/zktreeutil/src/Makefile.am 2012-09-30 19:53:30.000000000 +0200 ++++ zookeeper-3.4.5-gil/contrib/zktreeutil/src/Makefile.am 2013-06-11 18:09:15.097330579 +0200 +@@ -16,7 +16,7 @@ + + AM_CXXFLAGS = -I${ZOOKEEPER_PATH}/include -I${ZOOKEEPER_PATH}/generated \ + -I$(top_srcdir)/include -I${LOG4CXX_INCLUDE} -I/usr/include \ +- -I${XML2_INCLUDE} ++ -I${XML2_INCLUDE} -fPIE + + bin_PROGRAMS = zktreeutil + +diff -Nru zookeeper-3.4.5/recipes/lock/src/c/Makefile.am zookeeper-3.4.5-gil/recipes/lock/src/c/Makefile.am +--- zookeeper-3.4.5/recipes/lock/src/c/Makefile.am 2012-09-30 19:53:31.000000000 +0200 ++++ zookeeper-3.4.5-gil/recipes/lock/src/c/Makefile.am 2013-06-11 17:10:22.808629998 +0200 +@@ -17,14 +17,14 @@ + include $(top_srcdir)/aminclude.am + + AM_CFLAGS = -Wall -fPIC -I${ZOOKEEPER_PATH}/include -I${ZOOKEEPER_PATH}/generated \ +- -I$(top_srcdir)/include -I/usr/include ++ -I$(top_srcdir)/include -I/usr/include -fPIE + AM_CPPFLAGS = -Wall -I${ZOOKEEPER_PATH}/include -I${ZOOKEEPER_PATH}/generated\ +- -I${top_srcdir}/include -I/usr/include ++ -I${top_srcdir}/include -I/usr/include -fPIE + EXTRA_DIST = LICENSE + lib_LTLIBRARIES = libzoolock.la + libzoolock_la_SOURCES = src/zoo_lock.c include/zoo_lock.h + libzoolock_la_CPPFLAGS = -DDLOPEN_MODULE +-libzoolock_la_LDFLAGS = -version-info 0:1:0 ++libzoolock_la_LDFLAGS = -version-info 0:1:0 -pie -Wl,-z,relro -Wl,-z,now + + #run the tests now + +diff -Nru zookeeper-3.4.5/recipes/queue/src/c/Makefile.am zookeeper-3.4.5-gil/recipes/queue/src/c/Makefile.am +--- zookeeper-3.4.5/recipes/queue/src/c/Makefile.am 2012-09-30 19:53:31.000000000 +0200 ++++ zookeeper-3.4.5-gil/recipes/queue/src/c/Makefile.am 2013-06-11 17:09:50.816288611 +0200 +@@ -17,14 +17,14 @@ + include $(top_srcdir)/aminclude.am + + AM_CFLAGS = -Wall -fPIC -I${ZOOKEEPER_PATH}/include -I${ZOOKEEPER_PATH}/generated \ +- -I$(top_srcdir)/include -I/usr/include ++ -I$(top_srcdir)/include -I/usr/include -fPIE + AM_CPPFLAGS = -Wall -I${ZOOKEEPER_PATH}/include -I${ZOOKEEPER_PATH}/generated\ +- -I${top_srcdir}/include -I/usr/include ++ -I${top_srcdir}/include -I/usr/include -fPIE + EXTRA_DIST = LICENSE + lib_LTLIBRARIES = libzooqueue.la + libzooqueue_la_SOURCES = src/zoo_queue.c include/zoo_queue.h + libzooqueue_la_CPPFLAGS = -DDLOPEN_MODULE +-libzooqueue_la_LDFLAGS = -version-info 0:1:0 ++libzooqueue_la_LDFLAGS = -version-info 0:1:0 -pie -Wl,-z,relro -Wl,-z,now + + #run the tests now + +diff -Nru zookeeper-3.4.5/src/c/Makefile.am zookeeper-3.4.5-gil/src/c/Makefile.am +--- zookeeper-3.4.5/src/c/Makefile.am 2012-09-30 19:53:31.000000000 +0200 ++++ zookeeper-3.4.5-gil/src/c/Makefile.am 2013-06-11 17:02:31.701054099 +0200 +@@ -1,11 +1,11 @@ + # need this for Doxygen integration + include $(top_srcdir)/aminclude.am + +-AM_CPPFLAGS = -I${srcdir}/include -I${srcdir}/tests -I${srcdir}/generated +-AM_CFLAGS = -Wall -Werror +-AM_CXXFLAGS = -Wall $(USEIPV6) ++AM_CPPFLAGS = -I${srcdir}/include -I${srcdir}/tests -I${srcdir}/generated -fPIE ++AM_CFLAGS = -Wall -Werror -fPIE ++AM_CXXFLAGS = -Wall $(USEIPV6) -fPIE + +-LIB_LDFLAGS = -no-undefined -version-info 2 ++LIB_LDFLAGS = -no-undefined -version-info 2 -pie -Wl,-z,relro -Wl,-z,now + + pkginclude_HEADERS = include/zookeeper.h include/zookeeper_version.h include/zookeeper_log.h include/proto.h include/recordio.h generated/zookeeper.jute.h + EXTRA_DIST=LICENSE +diff -Nru zookeeper-3.4.5/src/contrib/zktreeutil/src/Makefile.am zookeeper-3.4.5-gil/src/contrib/zktreeutil/src/Makefile.am +--- zookeeper-3.4.5/src/contrib/zktreeutil/src/Makefile.am 2012-09-30 19:53:32.000000000 +0200 ++++ zookeeper-3.4.5-gil/src/contrib/zktreeutil/src/Makefile.am 2013-06-11 18:12:03.908634751 +0200 +@@ -16,7 +16,7 @@ + + AM_CXXFLAGS = -I${ZOOKEEPER_PATH}/include -I${ZOOKEEPER_PATH}/generated \ + -I$(top_srcdir)/include -I${LOG4CXX_INCLUDE} -I/usr/include \ +- -I${XML2_INCLUDE} ++ -I${XML2_INCLUDE} -fPIE + + bin_PROGRAMS = zktreeutil + diff --git a/zookeeper-3.4.5-build-contrib.patch b/zookeeper-3.4.5-build-contrib.patch new file mode 100644 index 0000000..8e988aa --- /dev/null +++ b/zookeeper-3.4.5-build-contrib.patch @@ -0,0 +1,133 @@ +diff -Nru zookeeper-3.4.5/src/contrib/build-contrib.xml zookeeper-3.4.5-gil/src/contrib/build-contrib.xml +--- zookeeper-3.4.5/src/contrib/build-contrib.xml 2012-09-30 19:53:32.000000000 +0200 ++++ zookeeper-3.4.5-gil/src/contrib/build-contrib.xml 2013-04-27 11:51:59.684011892 +0200 +@@ -43,9 +43,9 @@ + + + ++ value="file:/usr/share/java/" /> + +- ++ + + + +@@ -70,24 +70,17 @@ + + + +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ + +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ + + + +@@ -103,7 +96,7 @@ + + + +- ++ + + + +@@ -133,7 +126,7 @@ + + + + +@@ -233,15 +226,9 @@ + + + +- +- + + + +- + + + +diff -Nru zookeeper-3.4.5/src/contrib/zooinspector/build.xml zookeeper-3.4.5-gil/src/contrib/zooinspector/build.xml +--- zookeeper-3.4.5/src/contrib/zooinspector/build.xml 2012-09-30 19:53:32.000000000 +0200 ++++ zookeeper-3.4.5-gil/src/contrib/zooinspector/build.xml 2013-04-27 11:42:13.257105341 +0200 +@@ -20,7 +20,7 @@ + + + +- ++ + + + +@@ -37,11 +37,11 @@ + + + +- ++ + + + +- ++ + + + +@@ -55,7 +55,6 @@ + + + +- + + + +@@ -140,12 +139,12 @@ + + + +- ++ + + + diff --git a/zookeeper-3.4.5-disable-cygwin-detection.patch b/zookeeper-3.4.5-disable-cygwin-detection.patch new file mode 100644 index 0000000..f639907 --- /dev/null +++ b/zookeeper-3.4.5-disable-cygwin-detection.patch @@ -0,0 +1,27 @@ +--- bin/zkServer.sh 2012-09-30 19:53:31.000000000 +0200 ++++ bin/zkServer.sh-gil 2013-04-27 11:27:59.972764863 +0200 +@@ -69,15 +69,6 @@ + ZOOCFG="$2" + fi + +-if $cygwin +-then +- ZOOCFG=`cygpath -wp "$ZOOCFG"` +- # cygwin has a "kill" in the shell itself, gets confused +- KILL=/bin/kill +-else +- KILL=kill +-fi +- + echo "Using config: $ZOOCFG" >&2 + + if [ -z $ZOOPIDFILE ]; then +@@ -140,7 +131,7 @@ + then + echo "no zookeeper to stop (could not find file $ZOOPIDFILE)" + else +- $KILL -9 $(cat "$ZOOPIDFILE") ++ kill -9 $(cat "$ZOOPIDFILE") + rm "$ZOOPIDFILE" + echo STOPPED + fi diff --git a/zookeeper-3.4.5-zktreeutil-gcc.patch b/zookeeper-3.4.5-zktreeutil-gcc.patch new file mode 100644 index 0000000..7cee0fb --- /dev/null +++ b/zookeeper-3.4.5-zktreeutil-gcc.patch @@ -0,0 +1,10 @@ +--- src/contrib/zktreeutil/src/ZkAdaptor.h 2012-09-30 19:53:32.000000000 +0200 ++++ src/contrib/zktreeutil/src/ZkAdaptor.h-gil 2013-04-04 03:37:46.731950855 +0200 +@@ -21,6 +21,7 @@ + + #include + #include ++#include + + extern "C" { + #include "zookeeper.h" diff --git a/zookeeper-ZooInspector-template.pom b/zookeeper-ZooInspector-template.pom new file mode 100644 index 0000000..c7b0a3c --- /dev/null +++ b/zookeeper-ZooInspector-template.pom @@ -0,0 +1,48 @@ + + 4.0.0 + org.apache.zookeeper + zookeeper-ZooInspector + @version@ + + + org.apache.zookeeper + zookeeper + @version@ + + + org.slf4j + slf4j-api + any + + + org.slf4j + slf4j-log4j12 + any + + + log4j + log4j + any + + + org.jboss.netty + netty + any + + + jline + jline + any + + + com.nitido + jtoaster + any + + + xerces + xercesImpl + any + + + \ No newline at end of file diff --git a/zookeeper-test-template.pom b/zookeeper-test-template.pom new file mode 100644 index 0000000..2c957f4 --- /dev/null +++ b/zookeeper-test-template.pom @@ -0,0 +1,48 @@ + + 4.0.0 + org.apache.zookeeper + zookeeper-test + @version@ + + + org.apache.zookeeper + zookeeper + @version@ + + + org.slf4j + slf4j-api + any + + + org.slf4j + slf4j-log4j12 + any + + + log4j + log4j + any + + + org.jboss.netty + netty + any + + + junit + junit + any + + + org.mockito + mockito-core + any + + + com.puppycrawl.tools + checkstyle + any + + + \ No newline at end of file diff --git a/zookeeper.service b/zookeeper.service new file mode 100644 index 0000000..ebe6d1a --- /dev/null +++ b/zookeeper.service @@ -0,0 +1,14 @@ +[Unit] +Description=Zookeeper + +[Service] +Type=simple +Environment=JAVA_HOME=/usr/lib/jvm/jre-1.7.0 +Environment=ZOO_LOG_DIR=/home/zookeeper +WorkingDirectory=/home/zookeeper/zookeeper-3.4.5 +User=zookeeper +ExecStart=/home/zookeeper/zookeeper-3.4.5/bin/zkServer.sh start-foreground +SyslogIdentifier=zookeeper + +[Install] +WantedBy=multi-user.service diff --git a/zookeeper.spec b/zookeeper.spec new file mode 100644 index 0000000..d2797f1 --- /dev/null +++ b/zookeeper.spec @@ -0,0 +1,337 @@ +%global _hardened_build 1 +Name: zookeeper +Version: 3.4.5 +Release: 5%{?dist} +Summary: A high-performance coordination service for distributed applications +Group: Development/Libraries +License: ASL 2.0 and BSD +URL: http://zookeeper.apache.org/ +Source0: http://www.apache.org/dist/%{name}/stable/%{name}-%{version}.tar.gz +Source1: %{name}-test-template.pom +Source2: %{name}-ZooInspector-template.pom +Source3: %{name}.service +# remove non free clover references +# configure ivy to use system libraries +# disable rat-lib and jdiff support +Patch0: %{name}-3.4.4-build.patch +# https://issues.apache.org/jira/browse/ZOOKEEPER-1557 +Patch1: https://issues.apache.org/jira/secure/attachment/12548109/ZOOKEEPER-1557.patch +Patch2: %{name}-3.4.5-zktreeutil-gcc.patch +Patch3: %{name}-3.4.5-disable-cygwin-detection.patch +Patch4: %{name}-3.4.5-build-contrib.patch +Patch5: %{name}-3.4.5-add-PIE-and-RELRO.patch + +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: boost-devel +BuildRequires: cppunit-devel +BuildRequires: dos2unix +BuildRequires: doxygen +BuildRequires: graphviz +BuildRequires: java-devel +BuildRequires: java-javadoc +BuildRequires: jpackage-utils +BuildRequires: libtool +BuildRequires: libxml2-devel +BuildRequires: log4cxx-devel +BuildRequires: python-devel + +BuildRequires: ant +BuildRequires: ant-junit +BuildRequires: apache-ivy +BuildRequires: checkstyle +BuildRequires: jline +BuildRequires: jtoaster +BuildRequires: junit +BuildRequires: log4j +BuildRequires: mockito +BuildRequires: netty +BuildRequires: slf4j +BuildRequires: xerces-j2 +BuildRequires: xml-commons-apis + +# BuildRequires: rat-lib +# BuildRequires: apache-rat-tasks +# BuildRequires: apache-commons-collections +# BuildRequires: apache-commons-lang +# BuildRequires: jdiff + +%description +ZooKeeper is a centralized service for maintaining configuration information, +naming, providing distributed synchronization, and providing group services. + +%package lib +Summary: Zookeeper C client library +Group: System Environment/Libraries + +%description lib +ZooKeeper C client library for communicating with ZooKeeper Server. + +%package lib-devel +Summary: Development files for the %{name} library +Group: Development/Libraries +Requires: %{name}-lib%{?_isa} = %{version}-%{release} + +%description lib-devel +Development files for the ZooKeeper C client library. + +%package lib-doc +Summary: Documentation for the %{name} library +Group: Documentation +BuildArch: noarch + +%description lib-doc +Documentation for the ZooKeeper C client library. + +%package java +Group: Development/Libraries +Summary: Zookeeper Java client library +# Requires: felix-framework +# Requires: felix-osgi-compendium +Requires: checkstyle +Requires: jline +Requires: jtoaster +Requires: junit +Requires: log4j +Requires: mockito +Requires: netty +Requires: slf4j + +Requires: java +Requires: jpackage-utils +BuildArch: noarch + +%description java +This package provides a Java client interface to Zookeeper server. + +%package javadoc +Group: Documentation +Summary: Javadoc for %{name} +BuildArch: noarch + +%description javadoc +This package contains javadoc for %{name}. + +%package -n python-ZooKeeper +Group: Development/Libraries +Summary: ZooKeeper python binding library +Requires: %{name}-lib%{?_isa} = %{version}-%{release} +Provides: zkpython%{?_isa} = %{version}-%{release} + +%description -n python-ZooKeeper +ZooKeeper python binding library + +%prep +%setup -q +find -name "*.jar" -delete +find -name "*.class" -delete +find -name "*.cmd" -delete +find -name "*.so*" -delete +find -name "*.dll" -delete + +%patch0 -p1 +%patch1 -p0 +%pom_remove_dep org.vafer:jdeb dist-maven/%{name}-%{version}.pom +# jdiff task deps +%pom_remove_dep jdiff:jdiff dist-maven/%{name}-%{version}.pom +%pom_remove_dep xerces:xerces dist-maven/%{name}-%{version}.pom +# rat-lib task deps +%pom_remove_dep org.apache.rat:apache-rat-tasks dist-maven/%{name}-%{version}.pom +%pom_remove_dep commons-collections:commons-collections dist-maven/%{name}-%{version}.pom +%pom_remove_dep commons-lang:commons-lang dist-maven/%{name}-%{version}.pom + +%patch2 -p0 +%patch3 -p0 +%patch4 -p1 +%patch5 -p1 + +sed -i "s|pom|jar|" dist-maven/%{name}-%{version}.pom +sed -i "s|checkstyle|com.puppycrawl.tools|" dist-maven/%{name}-%{version}.pom +sed -i "s|mockito-all|mockito-core|" dist-maven/%{name}-%{version}.pom + +cp -p %{SOURCE1} dist-maven/%{name}-%{version}-test.pom +cp -p %{SOURCE2} dist-maven/%{name}-%{version}-ZooInspector.pom +sed -i "s|@version@|%{version}|" dist-maven/%{name}-%{version}-test.pom dist-maven/%{name}-%{version}-ZooInspector.pom + +iconv -f iso8859-1 -t utf-8 src/c/ChangeLog > src/c/ChangeLog.conv && mv -f src/c/ChangeLog.conv src/c/ChangeLog +sed -i 's/\r//' src/c/ChangeLog + +# fix build problem on f18 +sed -i 's|||' build.xml +sed -i 's|||' build.xml + +%build + +# ensure that source and target are 1.5 +%ant -Dtarget.jdk=1.5 \ + -Djavadoc.link.java=%{_javadocdir}/java \ + -Dant.build.javac.source=1.5 \ + -Dant.build.javac.target=1.5 \ + build-generated jar test-jar javadoc javadoc-dev + +( +cd src/contrib +%ant -Dversion=%{version} \ + -Dcontribfilesetincludes="zooinspector/build.xml" \ + -Dant.build.javac.source=1.5 \ + -Dant.build.javac.target=1.5 \ + -Dtarget.jdk=1.5 \ + -DlastRevision=-1 \ + -Divy.jar.exists=true \ + -Divy.initialized=true \ + -Ddest.dir=../../build/zookeeper +) + +pushd src/c +rm -rf autom4te.cache +autoreconf -fis + +%configure --disable-static --disable-rpath --with-syncapi +# Remove rpath +sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool +sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool +%{__make} %{?_smp_mflags} +make doxygen-doc +popd + +# Compile zktreeutil +pushd src/contrib/zktreeutil +rm -rf autom4te.cache +autoreconf -if +%configure +%{__make} %{?_smp_mflags} +popd + +%if 0 +%check +# Execute multi-threaded test suite +mkdir -p build/lib +for jar in jline log4j xerces-j2 xml-commons-apis; do \ +ln -sf %{_javadir}/$jar.jar build/lib/$jar.jar; \ +done +pushd src/c +%{__make} %{?_smp_mflags} zktest-mt +./zktest-mt +popd +%ifarch i386 +# Run core Java test suite against zookeeper +ant -Dversion=%{version} -DlastRevision=-1 test-core-java +%endif +%endif + +%install + +mkdir -p %{buildroot}%{_javadir}/%{name} +install -pm 644 build/%{name}-%{version}.jar %{buildroot}%{_javadir}/%{name}/%{name}.jar +install -pm 644 build/%{name}-%{version}-test.jar %{buildroot}%{_javadir}/%{name}/%{name}-test.jar +install -pm 644 build/contrib/ZooInspector/%{name}-ZooInspector-%{version}.jar %{buildroot}%{_javadir}/%{name}/%{name}-ZooInspector.jar + +mkdir -p %{buildroot}%{_mavenpomdir} +install -pm 644 dist-maven/%{name}-%{version}.pom %{buildroot}%{_mavenpomdir}/JPP.%{name}-%{name}.pom +%add_maven_depmap JPP.%{name}-%{name}.pom %{name}/%{name}.jar +install -pm 644 dist-maven/%{name}-%{version}-test.pom %{buildroot}%{_mavenpomdir}/JPP.%{name}-%{name}-test.pom +%add_maven_depmap JPP.%{name}-%{name}-test.pom %{name}/%{name}-test.jar +install -pm 644 dist-maven/%{name}-%{version}-ZooInspector.pom %{buildroot}%{_mavenpomdir}/JPP.%{name}-%{name}-ZooInspector.pom +%add_maven_depmap JPP.%{name}-%{name}-ZooInspector.pom %{name}/%{name}-ZooInspector.jar + +mkdir -p %{buildroot}%{_javadocdir}/%{name}/dev +cp -pr build/docs/api/* %{buildroot}%{_javadocdir}/%{name}/ +cp -pr build/docs/dev-api/* %{buildroot}%{_javadocdir}/%{name}/dev/ + +pushd src/c +%{__make} install DESTDIR=%{buildroot} +# cleanup +rm -f docs/html/*.map +popd + +pushd src/contrib/zktreeutil +%{__make} install DESTDIR=%{buildroot} +popd + +pushd src/contrib/zkpython +%{__python} src/python/setup.py build --build-base=$PWD/build \ +install --root=%{buildroot} ;\ +chmod 0755 %{buildroot}%{python_sitearch}/zookeeper.so +popd + +find %{buildroot} -name '*.la' -exec rm -f {} ';' + +# TODO +# bin/zkCleanup.sh +# bin/zkCli.sh +# bin/zkEnv.sh +# bin/zkServer.sh + +%post lib -p /sbin/ldconfig +%postun lib -p /sbin/ldconfig + +%files +%{_bindir}/cli_mt +%{_bindir}/cli_st +%{_bindir}/load_gen +%{_bindir}/zktreeutil +%doc src/c/ChangeLog src/c/LICENSE src/c/NOTICE.txt src/c/README src/contrib/zktreeutil/README.txt + +%files lib +%{_libdir}/lib*.so.* +%doc src/c/LICENSE src/c/NOTICE.txt + +%files lib-devel +%dir %{_includedir}/%{name} +%{_includedir}/%{name}/*.h +%{_libdir}/*.so +%doc src/c/LICENSE src/c/NOTICE.txt + +%files lib-doc +%doc src/c/LICENSE src/c/NOTICE.txt src/c/docs/html/* + +%files java +%{_javadir}/%{name}/%{name}.jar +%{_javadir}/%{name}/%{name}-test.jar +%{_javadir}/%{name}/%{name}-ZooInspector.jar +%{_mavenpomdir}/JPP.%{name}-%{name}.pom +%{_mavenpomdir}/JPP.%{name}-%{name}-test.pom +%{_mavenpomdir}/JPP.%{name}-%{name}-ZooInspector.pom +%{_mavendepmapfragdir}/%{name} +%doc CHANGES.txt LICENSE.txt NOTICE.txt README.txt + +%files javadoc +%{_javadocdir}/%{name} +%doc LICENSE.txt NOTICE.txt + +%files -n python-ZooKeeper +%{python_sitearch}/ZooKeeper-?.?-py%{python_version}.egg-info +%{python_sitearch}/zookeeper.so +%doc LICENSE.txt NOTICE.txt src/contrib/zkpython/README + +%changelog +* Tue Jun 11 2013 gil cattaneo 3.4.5-5 +- fixed zookeeper.so non-standard-executable-perm thanks to Björn Esser + +* Tue Jun 11 2013 gil cattaneo 3.4.5-4 +- enabled hardened-builds +- fixed fully versioned dependency in subpackages (lib-devel and python) +- fixed License tag +- moved large documentation in lib-doc subpackage + +* Sat Apr 27 2013 gil cattaneo 3.4.5-3 +- built ZooInspector +- added additional poms files + +* Tue Apr 23 2013 gil cattaneo 3.4.5-2 +- building/packaging of the zookeeper-test.jar thanks to Robert Rati + +* Sun Dec 02 2012 gil cattaneo 3.4.5-1 +- update to 3.4.5 + +* Tue Oct 30 2012 gil cattaneo 3.4.4-3 +- fix missing hostname + +* Fri Oct 12 2012 gil cattaneo 3.4.4-2 +- add ant-junit as BR + +* Fri Oct 12 2012 gil cattaneo 3.4.4-1 +- update to 3.4.4 + +* Fri May 18 2012 gil cattaneo 3.4.3-1 +- initial rpm \ No newline at end of file