[zookeeper] Initial import (#823122).
gil
gil at fedoraproject.org
Tue Jun 11 16:58:55 UTC 2013
commit e5b4022dc967b5692c827ae2ebc2cf66f13ab8bd
Author: gil <puntogil at libero.it>
Date: Tue Jun 11 18:58:39 2013 +0200
Initial import (#823122).
.gitignore | 1 +
ZOOKEEPER-1557.patch | 152 ++++++++
sources | 1 +
zookeeper-3.4.4-build.patch | 447 ++++++++++++++++++++++++
zookeeper-3.4.5-add-PIE-and-RELRO.patch | 85 +++++
zookeeper-3.4.5-build-contrib.patch | 133 +++++++
zookeeper-3.4.5-disable-cygwin-detection.patch | 27 ++
zookeeper-3.4.5-zktreeutil-gcc.patch | 10 +
zookeeper-ZooInspector-template.pom | 48 +++
zookeeper-test-template.pom | 48 +++
zookeeper.service | 14 +
zookeeper.spec | 337 ++++++++++++++++++
12 files changed, 1303 insertions(+), 0 deletions(-)
---
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 @@
+ <property name="src.dir" value="${basedir}/src" />
+ <property name="java.src.dir" value="${src.dir}/java/main" />
+
+- <property name="lib.dir" value="${src.dir}/java/lib" />
++ <property name="lib.dir" value="/usr/share/java" />
+ <property name="lib.dir.includes" value="**/*.jar" />
+ <property name="lib.dir.excludes" value="**/excluded/" />
+
+@@ -89,46 +89,28 @@
+ <property name="dist.dir" value="${build.dir}/${final.name}"/>
+ <property name="dist.maven.dir" value="${dist.dir}/dist-maven"/>
+
+- <property name="clover.home" location="${env.CLOVER_HOME}"/>
+- <property name="clover.jar" location="${clover.home}/lib/clover.jar" />
+- <property name="clover.db.dir" location="${test.java.build.dir}/clover/db"/>
+- <property name="clover.report.dir"
+- location="${test.java.build.dir}/clover/reports"/>
+-
+ <property name="contrib.dir" value="${src.dir}/contrib"/>
+ <property name="recipes.dir" value="${src.dir}/recipes"/>
+
+ <property name="ivy.version" value="2.2.0"/>
+ <property name="ivy.url"
+- value="http://repo2.maven.org/maven2/org/apache/ivy/ivy" />
+- <property name="ivy.home" value="${user.home}/.ant" />
+- <property name="ivy.lib" value="${build.dir}/lib"/>
++ value="file:/usr/share/java/" />
++ <property name="ivy.home" value="${basedir}/.ant" />
++ <property name="ivy.lib" value="/usr/share/java"/>
+ <property name="ivy.package.lib" value="${build.dir}/package/lib"/>
+ <property name="ivy.test.lib" value="${build.dir}/test/lib"/>
+ <property name="ivy.jdiff.lib" value="${build.dir}/jdiff/lib"/>
+ <property name="ivysettings.xml" value="${basedir}/ivysettings.xml"/>
+
+- <available property="clover.present"
+- classname="com.cenqua.clover.CloverInstr"
+- classpath="${clover.home}/lib/clover.jar"/>
+-
+ <available file="${c.src.dir}/Makefile" property="Makefile.present"/>
+
+ <!-- check if clover reports should be generated -->
+- <condition property="clover.enabled">
+- <and>
+- <isset property="run.clover"/>
+- <isset property="clover.present"/>
+- </and>
+- </condition>
+
+
+ <property name="test.cobertura.output.format" value="html" />
+ <property name="coveragereport.dir" value="${build.dir}/cobertura" />
+
+ <!-- rats properties -->
+- <property name="rats_url" value="http://arat.googlecode.com/files/rat-lib-all-0.5.1.jar" />
+- <property name="rat.reporting.classname" value="rat.Report"/>
+
+ <!-- test patch properties -->
+ <property name="scratch.dir" value="${user.home}/tmp"/>
+@@ -198,7 +180,6 @@
+ <fileset dir="${ivy.lib}">
+ <include name="**/*.jar" />
+ </fileset>
+- <pathelement path="${clover.jar}" />
+ </path>
+
+ <path id="test.java.classpath">
+@@ -225,7 +206,7 @@
+ <mkdir dir="${ivy.package.lib}"/>
+ <mkdir dir="${ivy.test.lib}"/>
+ <condition property="ivy.jar.exists">
+- <available file="${lib.dir}/ivy-${ivy.version}.jar"/>
++ <available file="${lib.dir}/ivy.jar"/>
+ </condition>
+
+ <tstamp>
+@@ -312,8 +293,8 @@
+ <target name="ivy-download" unless="ivy.jar.exists" depends="init">
+ <delete dir="${lib.dir}"
+ includes="ivy-*.jar" excludes="ivy-${ivy.version}.jar"/>
+- <get src="${ivy.url}/${ivy.version}/ivy-${ivy.version}.jar"
+- dest="${lib.dir}/ivy-${ivy.version}.jar" usetimestamp="true"/>
++ <get src="${ivy.url}/ivy.jar"
++ dest="${lib.dir}/ivy.jar" usetimestamp="true"/>
+ </target>
+
+ <target name="ivy-taskdef" unless="ivy.initialized">
+@@ -329,32 +310,20 @@
+
+ <target name="ivy-retrieve" depends="init,ivy-init">
+ <ivy:retrieve settingsRef="${ant.project.name}" type="jar" conf="default"
+- pattern="${ivy.lib}/[artifact]-[revision].[ext]"/>
++ pattern="${ivy.lib}/[artifact].[ext]"/>
+ </target>
+
+ <target name="ivy-retrieve-test" depends="init,ivy-init">
+ <ivy:retrieve settingsRef="${ant.project.name}" type="jar" conf="test"
+- pattern="${ivy.test.lib}/[artifact]-[revision].[ext]"/>
++ pattern="${ivy.test.lib}/[artifact].[ext]"/>
+ </target>
+
+ <target name="ivy-retrieve-package" depends="init,ivy-init">
+ <ivy:retrieve settingsRef="${ant.project.name}" conf="package"
+- pattern="${ivy.package.lib}/[artifact]-[revision].[ext]"/>
+- </target>
+-
+- <target name="ivy-retrieve-jdiff" depends="init,ivy-init">
+- <mkdir dir="${ivy.jdiff.lib}"/>
+- <ivy:retrieve settingsRef="${ant.project.name}" type="jar" conf="jdiff"
+- pattern="${ivy.jdiff.lib}/[artifact]-[revision].[ext]"/>
+- </target>
+-
+- <target name="ivy-retrieve-releaseaudit" depends="init,ivy-init">
+- <ivy:retrieve settingsRef="${ant.project.name}" type="jar" conf="releaseaudit"
+- pattern="${ivy.lib}/[artifact]-[revision].[ext]"/>
+- <ivy:cachepath pathid="releaseaudit-classpath" conf="releaseaudit"/>
++ pattern="${ivy.package.lib}/[artifact].[ext]"/>
+ </target>
+
+- <target name="compile" depends="ivy-retrieve,clover,build-generated">
++ <target name="compile" depends="ivy-retrieve">
+ <javac srcdir="${java.src.dir}" destdir="${build.classes}" includeantruntime="false"
+ target="${javac.target}" source="${javac.source}" debug="on">
+ <classpath refid="java.classpath"/>
+@@ -498,7 +467,6 @@
+ <arg value="--revision" />
+ <classpath>
+ <pathelement path="${build.classes}" />
+- <pathelement path="${clover.jar}" />
+ </classpath>
+ </java>
+ <exec executable="hostname" outputproperty="host.name"/>
+@@ -541,7 +509,6 @@
+ <arg value="--revision" />
+ <classpath>
+ <pathelement path="${build.classes}" />
+- <pathelement path="${clover.jar}" />
+ </classpath>
+ </java>
+ <exec executable="hostname" outputproperty="host.name"/>
+@@ -634,7 +601,7 @@
+ <!-- -->
+ <!-- ================================================================== -->
+ <target name="package"
+- depends="jar,bin-jar,src-jar,javadoc-jar,test-jar,api-report,create-cppunit-configure,compile-test"
++ depends="jar,bin-jar,src-jar,javadoc-jar,test-jar,create-cppunit-configure,compile-test"
+ description="Build distribution">
+ <mkdir dir="${dist.dir}"/>
+ <mkdir dir="${dist.dir}/lib"/>
+@@ -733,7 +700,7 @@
+ </target>
+
+ <target name="bin-package"
+- depends="jar,bin-jar,src-jar,javadoc-jar,test-jar,api-report,create-cppunit-configure,compile-test"
++ depends="jar,bin-jar,src-jar,javadoc-jar,test-jar,create-cppunit-configure,compile-test"
+ description="Build binary distribution">
+ <delete dir="${dist.dir}"/>
+ <mkdir dir="${dist.dir}"/>
+@@ -1094,9 +1061,6 @@
+ <delete dir="${docs.src}/build"/>
+ <delete dir="${src_generated.dir}" />
+ <delete dir="${csrc_generated.dir}" />
+- <delete file="${lib.dir}/Null.java"/>
+- <delete file="${lib.dir}/rats.jar" />
+- <delete file="${jdiff.xml.dir}/${name}_${version}.xml"/>
+ <delete file="${jar.name}" />
+ <delete dir="${distribution}"/>
+ <delete dir="${revision.dir}"/>
+@@ -1260,7 +1224,6 @@
+ <env key="LD_LIBRARY_PATH" value="${env.LD_LIBRARY_PATH};${cppunit.lib}"/>
+ <env key="PATH" path="${env.PATH};${c.src.dir};"/>
+ <env key="CALLER" value="ANT"/>
+- <env key="CLOVER_HOME" value="${clover.home}"/>
+ <env key="base_dir" value="${basedir}"/>
+ <arg line="clean run-check"/>
+ </exec>
+@@ -1304,50 +1267,6 @@
+ <!-- Run optional third-party tool targets -->
+ <!-- ====================================================== -->
+
+- <!-- clover code coverage -->
+- <target name="clover" depends="clover.setup, clover.info"
+- description="Instrument the Unit tests using Clover. Requires a Clover license and CLOVER_HOME environment variable set appropriately. To use, specify -Drun.clover=true on the command line."/>
+-
+- <target name="clover.setup" if="clover.enabled">
+- <taskdef resource="cloverlib.xml" classpath="${clover.jar}"/>
+- <mkdir dir="${clover.db.dir}"/>
+- <clover-setup initString="${clover.db.dir}/zookeeper_coverage.db">
+- <fileset dir="${java.src.dir}"
+- includes="org/apache/zookeeper/**/*"
+- excludes="org/apache/zookeeper/version/**/*"/>
+- </clover-setup>
+- </target>
+-
+- <target name="clover.info" if="run.clover" unless="clover.present">
+- <echo>
+- Clover not found. Code coverage reports disabled.
+- </echo>
+- </target>
+-
+- <target name="clover.check">
+- <fail unless="clover.present">
+- ##################################################################
+- 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.
+- ##################################################################
+- </fail>
+- </target>
+-
+- <target name="generate-clover-reports" depends="clover.check, clover">
+- <mkdir dir="${clover.report.dir}"/>
+- <clover-report>
+- <current outfile="${clover.report.dir}" title="${final.name}">
+- <format type="html"/>
+- </current>
+- </clover-report>
+- <clover-report>
+- <current outfile="${clover.report.dir}/clover.xml" title="${final.name}">
+- <format type="xml"/>
+- </current>
+- </clover-report>
+- </target>
+-
+ <!-- Run with 'ant -Dfindbugs.home="path to Findbugs directory" findbugs -->
+ <property name="findbugs.home" value="" />
+ <target name="findbugs" depends="check-for-findbugs, jar" if="findbugs.present">
+@@ -1356,11 +1275,11 @@
+ <property name="findbugs.report.htmlfile" value="${findbugs.out.dir}/zookeeper-findbugs-report.html" />
+ <property name="findbugs.report.xmlfile" value="${findbugs.out.dir}/zookeeper-findbugs-report.xml" />
+ <taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask"
+- classpath="${findbugs.home}/lib/findbugs-ant.jar" />
++ classpath="${ivy.lib}/ant/ant-findbugs.jar" />
+ <mkdir dir="${findbugs.out.dir}" />
+ <findbugs home="${findbugs.home}" output="xml:withMessages" excludeFilter="${findbugs.exclude.file}"
+ outputFile="${findbugs.report.xmlfile}" effort="max" jvmargs="-Xmx512M">
+- <auxClasspath path="${ivy.lib}/log4j-1.2.15.jar" />
++ <auxClasspath path="${ivy.lib}/log4j.jar" />
+ <sourcePath path="${java.src.dir}" />
+ <class location="${build.dir}/${final.name}.jar" />
+ </findbugs>
+@@ -1369,7 +1288,7 @@
+ </target>
+
+ <target name="check-for-findbugs">
+- <available property="findbugs.present" file="${findbugs.home}/lib/findbugs.jar" />
++ <available property="findbugs.present" file="${ivy.lib}/findbugs.jar" />
+ </target>
+
+ <!-- Code coverage -->
+@@ -1479,51 +1398,6 @@
+ <!-- ================================================================== -->
+ <!-- Perform audit activities for the release -->
+ <!-- ================================================================== -->
+- <target name="rats-taskdef" depends="ivy-retrieve-releaseaudit">
+- <typedef format="xml" resource="org/apache/rat/anttasks/antlib.xml" uri="antlib:org.apache.rat.anttasks"
+- classpathref="releaseaudit-classpath"/>
+- </target>
+-
+- <target name="releaseaudit" depends="package,rats-taskdef" description="Release Audit activities">
+- <rat:report xmlns:rat="antlib:org.apache.rat.anttasks">
+- <fileset dir="${dist.dir}">
+- <exclude name="**/*.m4"/>
+- <exclude name="**/*.md5"/>
+- <exclude name="**/*.pom"/>
+- <exclude name="**/*.sha1"/>
+- <exclude name="**/.gitignore"/>
+- <exclude name="**/Makefile**"/>
+- <exclude name="**/winconfig.h"/>
+- <exclude name="**/configure**"/>
+- <exclude name="**/*Doxyfile"/>
+- <exclude name="**/*.am"/>
+- <exclude name="**/compile"/>
+- <exclude name="**/depcomp"/>
+- <exclude name="**/install-sh"/>
+- <exclude name="**/ltmain.sh"/>
+- <exclude name="**/missing"/>
+- <exclude name="**/wrappers*.opt"/>
+- <exclude name="CHANGES.txt"/>
+- <exclude name="**/VERSION"/>
+- <exclude name="**/ChangeLog"/>
+- <exclude name="**/OldChangeLog"/>
+- <exclude name="**/Changes"/>
+- <exclude name="**/contrib/zkperl/MANIFEST"/>
+- <exclude name="**/conf/*"/>
+- <exclude name="**/docs/"/>
+- <exclude name="**/lib/jdiff/"/>
+- <exclude name="src/c/autom4te.cache/**"/>
+- <exclude name="src/c/config**"/>
+- <exclude name="src/c/src/hashtable/"/>
+- <exclude name="src/java/generated/.generated/"/>
+- <exclude name="src/java/test/checkstyle*.xml"/>
+- <exclude name="src/java/test/checkstyle*.xsl"/>
+- <exclude name="src/java/test/config/findbugs*.xml"/>
+- <exclude name="src/**/*.vcproj"/>
+- <exclude name="src/**/*.sln"/>
+- </fileset>
+- </rat:report>
+- </target>
+
+ <target name="findbugs.check" depends="check-for-findbugs" unless="findbugs.present">
+ <fail message="'findbugs.home' is not defined. Please pass -Dfindbugs.home=<base of Findbugs installation>
+@@ -1575,65 +1449,6 @@
+ <!-- this target runs the hudson trunk build -->
+ <target name="hudson-test-trunk" depends="docs,tar,findbugs"/>
+
+- <target name="api-xml" depends="ivy-retrieve-jdiff, javadoc, write-null">
+- <javadoc>
+- <doclet name="jdiff.JDiff"
+- path="${ivy.jdiff.lib}/jdiff-1.0.9.jar:${ivy.jdiff.lib}/xerces-1.4.4.jar">
+- <param name="-apidir" value="${jdiff.xml.dir}"/>
+- <param name="-apiname" value="${name} ${version}"/>
+- </doclet>
+- <packageset dir="${java.src.dir}">
+- <include name="org/apache/zookeeper"/>
+- <exclude name="org/apache/jute"/>
+- </packageset>
+- <classpath>
+- <pathelement location="${build.classes}"/>
+- <fileset dir="${lib.dir}">
+- <include name="**/*.jar" />
+- <exclude name="**/excluded/" />
+- </fileset>
+- <fileset dir="${ivy.lib}">
+- <include name="**/*.jar" />
+- </fileset>
+- </classpath>
+- </javadoc>
+- </target>
+-
+- <target name="write-null">
+- <exec executable="touch">
+- <arg value="${jdiff.home}/Null.java"/>
+- </exec>
+- </target>
+-
+- <target name="api-report" depends="api-xml">
+- <mkdir dir="${jdiff.build.dir}"/>
+- <javadoc sourcepath="${java.src.dir}"
+- destdir="${jdiff.build.dir}"
+- excludepackagenames="org.apache.jute"
+- sourceFiles="${jdiff.home}/Null.java">
+- <doclet name="jdiff.JDiff"
+- path="${ivy.jdiff.lib}/jdiff-1.0.9.jar:${ivy.jdiff.lib}/xerces-1.4.4.jar">
+- <param name="-oldapi" value="${name} ${jdiff.stable}"/>
+- <param name="-newapi" value="${name} ${version}"/>
+- <param name="-oldapidir" value="${jdiff.xml.dir}"/>
+- <param name="-newapidir" value="${jdiff.xml.dir}"/>
+- <param name="-javadocold" value="${jdiff.stable.javadoc}"/>
+- <param name="-javadocnew" value="../../api/"/>
+- <param name="-stats"/>
+- </doclet>
+- <classpath>
+- <pathelement location="${build.classes}"/>
+- <fileset dir="${lib.dir}">
+- <include name="**/*.jar" />
+- <exclude name="**/excluded/" />
+- </fileset>
+- <fileset dir="${ivy.lib}">
+- <include name="**/*.jar" />
+- </fileset>
+- </classpath>
+- </javadoc>
+- </target>
+-
+ <condition property="ant-eclipse.jar.exists">
+ <available file="${lib.dir}/ant-eclipse-1.0-jvm1.2.jar"/>
+ </condition>
+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 @@
+ -->
+
+ <property name="repo.maven.org"
+- value="http://repo1.maven.org/maven2/" override="false"/>
++ value="file:///usr/share/java/" override="false"/>
+ <property name="repo.jboss.org"
+- value="http://repository.jboss.org/nexus/content/groups/public/" override="false"/>
++ value="file:///usr/share/java/" override="false"/>
+ <property name="repo.sun.org"
+- value="http://download.java.net/maven/2/" override="false"/>
++ value="file:///usr/share/java/" override="false"/>
+ <property name="maven2.pattern"
+- value="[organisation]/[module]/[revision]/[module]-[revision]"/>
++ value="[module]"/>
+ <property name="maven2.pattern.ext" value="${maven2.pattern}.[ext]"/>
+ <include url="${ivy.default.conf.dir}/ivyconf-local.xml"/>
+ <settings defaultResolver="default"/>
+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 @@
+ </publications>
+
+ <dependencies>
+- <dependency org="org.slf4j" name="slf4j-api" rev="1.6.1"/>
+- <dependency org="org.slf4j" name="slf4j-log4j12" rev="1.6.1" transitive="false"/>
++ <dependency org="org.slf4j" name="slf4j/api" rev=""/>
++ <dependency org="org.slf4j" name="slf4j/log4j12" rev="" transitive="false"/>
+
+ <!-- transitive false turns off dependency checking, log4j deps seem borked -->
+- <dependency org="log4j" name="log4j" rev="1.2.15" transitive="false" conf="default"/>
+- <dependency org="jline" name="jline" rev="0.9.94" transitive="false" conf="default"/>
++ <dependency org="log4j" name="log4j" rev="" transitive="false" conf="default"/>
++ <dependency org="jline" name="jline" rev="" transitive="false" conf="default"/>
+
+- <dependency org="org.jboss.netty" name="netty" conf="default" rev="3.2.2.Final">
++ <dependency org="org.jboss.netty" name="netty" conf="default" rev="">
+ <artifact name="netty" type="jar" conf="default"/>
+ </dependency>
+
+- <dependency org="org.vafer" name="jdeb" rev="0.8" conf="package->master"/>
++ <!--dependency org="org.vafer" name="jdeb" rev="0.8" conf="package->master"/-->
+
+- <dependency org="junit" name="junit" rev="4.8.1" conf="test->default"/>
+- <dependency org="org.mockito" name="mockito-all" rev="1.8.2"
++ <dependency org="junit" name="junit" rev="" conf="test->default"/>
++ <dependency org="org.mockito" name="mockito" rev=""
+ conf="test->default"/>
+- <dependency org="checkstyle" name="checkstyle" rev="5.0"
++ <dependency org="checkstyle" name="checkstyle" rev=""
+ conf="test->default"/>
+
+- <dependency org="jdiff" name="jdiff" rev="1.0.9"
++ <!--dependency org="jdiff" name="jdiff" rev=""
+ conf="jdiff->default"/>
+- <dependency org="xerces" name="xerces" rev="1.4.4"
++ <dependency org="xerces" name="xerces-j2" rev=""
+ conf="jdiff->default"/>
+
+- <dependency org="org.apache.rat" name="apache-rat-tasks"
+- rev="0.6" conf="releaseaudit->default"/>
++ <dependency org="org.apache.rat" name="apache-rat/apache-rat-tasks"
++ rev="" conf="releaseaudit->default"/>
+ <dependency org="commons-lang" name="commons-lang"
+- rev="2.4" conf="releaseaudit->default"/>
++ rev="" conf="releaseaudit->default"/>
+ <dependency org="commons-collections" name="commons-collections"
+- rev="3.1" conf="releaseaudit->default"/>
++ rev="" conf="releaseaudit->default"/-->
+ </dependencies>
+
+ </ivy-module>
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 @@
+
+ <property name="ivy.version" value="2.2.0"/>
+ <property name="ivy.url"
+- value="http://repo2.maven.org/maven2/org/apache/ivy/ivy" />
++ value="file:/usr/share/java/" />
+ <property name="ivy.home" value="${user.home}/.ant" />
+- <property name="ivy.lib" value="${build.dir}/lib"/>
++ <property name="ivy.lib" value="/usr/share/java"/>
+ <property name="ivy.test.lib" value="${build.test}/lib"/>
+ <property name="ivysettings.xml" value="${zk.root}/ivysettings.xml"/>
+
+@@ -70,24 +70,17 @@
+
+ <path id="classpath">
+ <pathelement location="${build.classes}"/>
+- <!-- allow the user to override (e.g. if there are local versions) -->
+- <fileset dir="${additional.lib.dir}">
+- <include name="${additional.lib.dir.includes}" />
+- <exclude name="${additional.lib.dir.excludes}" />
++ <fileset dir="/usr/share/java">
++ <include name="jline.jar" />
++ <include name="jtoaster.jar" />
++ <include name="log4j.jar" />
++ <include name="netty.jar" />
++ <include name="slf4j/api.jar" />
++ <include name="slf4j/log4j12.jar" />
++ <include name="xerces-j2.jar" />
+ </fileset>
+- <fileset refid="lib.jars"/>
+- <pathelement location="${zk.root}/build/classes"/>
+- <fileset dir="${ivy.lib}">
+- <include name="**/*.jar" />
+- </fileset>
+- <fileset dir="${ivy.test.lib}">
+- <include name="**/*.jar" />
+- </fileset>
+- <fileset dir="${zk.root}/src/java/lib">
+- <include name="**/*.jar" />
+- </fileset>
+- <fileset dir="${ant.home}/lib">
+- <include name="ant.jar" />
++ <fileset dir="${zk.root}/build">
++ <include name="zookeeper-${version}.jar" />
+ </fileset>
+ </path>
+
+@@ -103,7 +96,7 @@
+ <mkdir dir="${ivy.lib}"/>
+ <mkdir dir="${ivy.test.lib}"/>
+ <condition property="ivy.jar.exists">
+- <available file="${lib.dir}/ivy-${ivy.version}.jar"/>
++ <available file="${lib.dir}/ivy.jar"/>
+ </condition>
+
+ <antcall target="init-contrib"/>
+@@ -133,7 +126,7 @@
+ <target name="jar" depends="compile" unless="skip.contrib">
+ <echo message="contrib: ${name}"/>
+ <jar
+- jarfile="${build.dir}/zookeeper-${version}-${name}.jar"
++ jarfile="${build.dir}/zookeeper-${name}.jar"
+ basedir="${build.classes}"
+ />
+ </target>
+@@ -233,15 +226,9 @@
+ </target>
+
+ <target name="ivy-retrieve" depends="init,ivy-init">
+- <ivy:retrieve settingsRef="${ant.project.name}" type="jar" conf="default"
+- pattern="${ivy.lib}/[artifact]-[revision].[ext]"/>
+- <ivy:retrieve settingsRef="${ant.project.name}" type="bundle" conf="default"
+- pattern="${ivy.lib}/[artifact]-[revision].[ext]"/>
+ </target>
+
+ <target name="ivy-retrieve-test" depends="init,ivy-init">
+- <ivy:retrieve settingsRef="${ant.project.name}" type="jar" conf="test"
+- pattern="${ivy.test.lib}/[artifact]-[revision].[ext]"/>
+ </target>
+
+
+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 @@
+
+
+ <target name="setjarname">
+- <property name="jarname" value="${build.dir}/zookeeper-${version}-${name}.jar" />
++ <property name="jarname" value="${build.dir}/zookeeper-${name}-${version}.jar" />
+ </target>
+
+ <target name="init" depends="checkMainCompiled, zookeeperbuildcontrib.init">
+@@ -37,11 +37,11 @@
+ <fileset dir="${basedir}/config" />
+ </copy>
+ <copy todir="${build.dir}/lib">
+- <fileset file="${basedir}/lib/jtoaster-1.0.4.jar" />
++ <!--fileset file="${basedir}/lib/jtoaster-1.0.4.jar" /-->
+ <fileset file="${basedir}/lib/log4j.properties" />
+ </copy>
+ <copy todir="${build.dir}/lib">
+- <fileset file="../../../build/zookeeper-3.3.0.jar" />
++ <fileset file="../../../build/zookeeper-${version}.jar" />
+ </copy>
+ <copy todir="${build.dir}">
+ <fileset dir="${basedir}" includes="*.*" excludes="build.xml,ivy.xml" />
+@@ -55,7 +55,6 @@
+ <jar jarfile="${jarname}">
+ <manifest>
+ <attribute name="Main-Class" value="org.apache.zookeeper.inspector.ZooInspector" />
+- <attribute name="Class-Path" value="lib/log4j-1.2.15.jar lib/TableLayout-20050920.jar lib/zookeeper-3.3.0.jar lib/jToaster-1.0.4.jar lib" />
+ <attribute name="Built-By" value="${user.name}" />
+ <attribute name="Built-At" value="${build.time}" />
+ <attribute name="Built-On" value="${host.name}" />
+@@ -140,12 +139,12 @@
+ <copy todir="${dist.dir}/contrib/${name}/config">
+ <fileset dir="${basedir}/config" />
+ </copy>
+- <copy todir="${dist.dir}/contrib/${name}/lib">
++ <!--copy todir="${dist.dir}/contrib/${name}/lib">
+ <fileset file="${basedir}/lib/jtoaster-1.0.4.jar" />
+ </copy>
+ <copy todir="${dist.dir}/contrib/${name}/lib">
+ <fileset file="../../../build/zookeeper-3.3.0.jar" />
+- </copy>
++ </copy-->
+ </target>
+
+ </project>
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 <string>
+ #include <vector>
++#include <unistd.h>
+
+ 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 @@
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.zookeeper</groupId>
+ <artifactId>zookeeper-ZooInspector</artifactId>
+ <version>@version@</version>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.zookeeper</groupId>
+ <artifactId>zookeeper</artifactId>
+ <version>@version@</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>any</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>any</version>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>any</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.netty</groupId>
+ <artifactId>netty</artifactId>
+ <version>any</version>
+ </dependency>
+ <dependency>
+ <groupId>jline</groupId>
+ <artifactId>jline</artifactId>
+ <version>any</version>
+ </dependency>
+ <dependency>
+ <groupId>com.nitido</groupId>
+ <artifactId>jtoaster</artifactId>
+ <version>any</version>
+ </dependency>
+ <dependency>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ <version>any</version>
+ </dependency>
+ </dependencies>
+</project>
\ 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 @@
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.zookeeper</groupId>
+ <artifactId>zookeeper-test</artifactId>
+ <version>@version@</version>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.zookeeper</groupId>
+ <artifactId>zookeeper</artifactId>
+ <version>@version@</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>any</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>any</version>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>any</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.netty</groupId>
+ <artifactId>netty</artifactId>
+ <version>any</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>any</version>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <version>any</version>
+ </dependency>
+ <dependency>
+ <groupId>com.puppycrawl.tools</groupId>
+ <artifactId>checkstyle</artifactId>
+ <version>any</version>
+ </dependency>
+ </dependencies>
+</project>
\ 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|<packaging>pom</packaging>|<packaging>jar</packaging>|" dist-maven/%{name}-%{version}.pom
+sed -i "s|<groupId>checkstyle</groupId>|<groupId>com.puppycrawl.tools</groupId>|" dist-maven/%{name}-%{version}.pom
+sed -i "s|<artifactId>mockito-all</artifactId>|<artifactId>mockito-core</artifactId>|" 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|<exec executable="hostname" outputproperty="host.name"/>|<!--exec executable="hostname" outputproperty="host.name"/-->|' build.xml
+sed -i 's|<attribute name="Built-On" value="${host.name}" />|<attribute name="Built-On" value="${user.name}" />|' 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 <puntogil at libero.it> 3.4.5-5
+- fixed zookeeper.so non-standard-executable-perm thanks to Björn Esser
+
+* Tue Jun 11 2013 gil cattaneo <puntogil at libero.it> 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 <puntogil at libero.it> 3.4.5-3
+- built ZooInspector
+- added additional poms files
+
+* Tue Apr 23 2013 gil cattaneo <puntogil at libero.it> 3.4.5-2
+- building/packaging of the zookeeper-test.jar thanks to Robert Rati
+
+* Sun Dec 02 2012 gil cattaneo <puntogil at libero.it> 3.4.5-1
+- update to 3.4.5
+
+* Tue Oct 30 2012 gil cattaneo <puntogil at libero.it> 3.4.4-3
+- fix missing hostname
+
+* Fri Oct 12 2012 gil cattaneo <puntogil at libero.it> 3.4.4-2
+- add ant-junit as BR
+
+* Fri Oct 12 2012 gil cattaneo <puntogil at libero.it> 3.4.4-1
+- update to 3.4.4
+
+* Fri May 18 2012 gil cattaneo <puntogil at libero.it> 3.4.3-1
+- initial rpm
\ No newline at end of file
More information about the scm-commits
mailing list