From 94aec2748a05c37ca72661dfbec181e1d240a262 Mon Sep 17 00:00:00 2001 From: Jeffrey C. Ollie Date: Jul 18 2013 15:19:04 +0000 Subject: Add a server subpackage. Signed-off-by: Timothy St. Clair --- diff --git a/zookeeper-3.4.5-log4j.patch b/zookeeper-3.4.5-log4j.patch new file mode 100644 index 0000000..a513ef3 --- /dev/null +++ b/zookeeper-3.4.5-log4j.patch @@ -0,0 +1,26 @@ +--- a/conf/log4j.properties 2012-09-30 12:53:31.000000000 -0500 ++++ b/conf/log4j.properties 2013-06-25 12:28:56.833948571 -0500 +@@ -1,10 +1,11 @@ + # Define some default values that can be overridden by system properties +-zookeeper.root.logger=INFO, CONSOLE ++zookeeper.root.logger=INFO, SYSTEMD + zookeeper.console.threshold=INFO +-zookeeper.log.dir=. ++zookeeper.systemd.threshold=INFO ++zookeeper.log.dir=/var/log/zookeeper + zookeeper.log.file=zookeeper.log + zookeeper.log.threshold=DEBUG +-zookeeper.tracelog.dir=. ++zookeeper.tracelog.dir=/var/log/zookeeper + zookeeper.tracelog.file=zookeeper_trace.log + + # +@@ -56,3 +57,8 @@ + log4j.appender.TRACEFILE.layout=org.apache.log4j.PatternLayout + ### Notice we are including log4j's NDC here (%x) + log4j.appender.TRACEFILE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L][%x] - %m%n ++ ++log4j.appender.SYSTEMD=org.apache.log4j.ConsoleAppender ++log4j.appender.SYSTEMD.Threshold=${zookeeper.systemd.threshold} ++log4j.appender.SYSTEMD.layout=org.apache.log4j.PatternLayout ++log4j.appender.SYSTEMD.layout.ConversionPattern=[myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n diff --git a/zookeeper.service b/zookeeper.service index ebe6d1a..e5ae08e 100644 --- a/zookeeper.service +++ b/zookeeper.service @@ -1,14 +1,20 @@ [Unit] -Description=Zookeeper +Description=Apache ZooKeeper +After=network.target +ConditionPathExists=/etc/zookeeper/zoo.cfg +ConditionPathExists=/etc/zookeeper/log4j.properties +ConditionPathExists=/var/lib/zookeeper/data/myid [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 +WorkingDirectory=/var/lib/zookeeper +UMask=0027 +Environment="CP=/etc/zookeeper:/usr/share/java/slf4j/slf4j-log4j12.jar:/usr/share/java/slf4j/slf4j-api.jar:/usr/share/java/netty.jar:/usr/share/java/log4j.jar:/usr/share/java/jline.jar:/usr/share/java/zookeeper/zookeeper.jar" +Environment="IPv6=-Djava.net.preferIPv4Stack=false -Djava.net.preferIPv6Addresses=true" +#Environment="JMX=-Dcom.sun.management.jmxremote" +ExecStart=/usr/lib/jvm/jre-1.7.0/bin/java -cp $CP $JMX $IPv6 org.apache.zookeeper.server.quorum.QuorumPeerMain /etc/zookeeper/zoo.cfg [Install] -WantedBy=multi-user.service +WantedBy=multi-user.target diff --git a/zookeeper.spec b/zookeeper.spec index b12ed5c..daab0eb 100644 --- a/zookeeper.spec +++ b/zookeeper.spec @@ -1,7 +1,7 @@ %global _hardened_build 1 Name: zookeeper Version: 3.4.5 -Release: 6%{?dist} +Release: 7%{?dist} Summary: A high-performance coordination service for distributed applications Group: Development/Libraries License: ASL 2.0 and BSD @@ -21,6 +21,8 @@ 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 Patch6: %{name}-3.4.5-atomic.patch +# remove date/time from console output since journald will keep track of date/time +Patch7: %{name}-3.4.5-log4j.patch BuildRequires: autoconf BuildRequires: automake @@ -57,6 +59,8 @@ BuildRequires: xml-commons-apis # BuildRequires: apache-commons-lang # BuildRequires: jdiff +BuildRequires: systemd + %description ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. @@ -122,6 +126,19 @@ Provides: zkpython%{?_isa} = %{version}-%{release} %description -n python-ZooKeeper ZooKeeper python binding library +%package server +Group: System Environment/Daemons +Summary: ZooKeeper server +Requires: %{name}-java = %{version}-%{release} +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd +Requires(pre): shadow-utils +BuildArch: noarch + +%description server +ZooKeeper server + %prep %setup -q find -name "*.jar" -delete @@ -146,6 +163,7 @@ find -name "*.dll" -delete %patch4 -p1 %patch5 -p1 %patch6 -p1 +%patch7 -p1 sed -i "s|pom|jar|" dist-maven/%{name}-%{version}.pom sed -i "s|checkstyle|com.puppycrawl.tools|" dist-maven/%{name}-%{version}.pom @@ -162,6 +180,8 @@ sed -i 's/\r//' src/c/ChangeLog sed -i 's|||' build.xml sed -i 's|||' build.xml +sed -i 's@^dataDir=.*$@dataDir=%{_sharedstatedir}/zookeeper/data\ndataLogDir=%{_sharedstatedir}/zookeeper/log@' conf/zoo_sample.cfg + %build # ensure that source and target are 1.5 @@ -258,15 +278,40 @@ popd find %{buildroot} -name '*.la' -exec rm -f {} ';' +mkdir -p %{buildroot}%{_unitdir} +mkdir -p %{buildroot}%{_sysconfdir}/zookeeper +mkdir -p %{buildroot}%{_localstatedir}/log/zookeeper +mkdir -p %{buildroot}%{_sharedstatedir}/zookeeper +mkdir -p %{buildroot}%{_sharedstatedir}/zookeeper/data +mkdir -p %{buildroot}%{_sharedstatedir}/zookeeper/log +install -p -m 0644 %{SOURCE3} %{buildroot}%{_unitdir} +install -p -m 0640 conf/log4j.properties %{buildroot}%{_sysconfdir}/zookeeper +install -p -m 0640 conf/zoo_sample.cfg %{buildroot}%{_sysconfdir}/zookeeper +touch %{buildroot}%{_sysconfdir}/zookeeper/zoo.cfg +touch %{buildroot}%{_sharedstatedir}/zookeeper/data/myid + # TODO # bin/zkCleanup.sh # bin/zkCli.sh # bin/zkEnv.sh -# bin/zkServer.sh %post lib -p /sbin/ldconfig %postun lib -p /sbin/ldconfig +%pre server +getent group zookeeper >/dev/null || groupadd -r zookeeper +getent passwd zookeeper >/dev/null || \ + useradd -r -g zookeeper -d %{_sharedstatedir}/zookeeper -s /sbin/nologin \ + -c "ZooKeeper service account" zookeeper +%post server +%systemd_post zookeeper.service + +%preun server +%systemd_preun zookeeper.service + +%postun server +%systemd_postun_with_restart zookeeper.service + %files %{_bindir}/cli_mt %{_bindir}/cli_st @@ -306,7 +351,23 @@ find %{buildroot} -name '*.la' -exec rm -f {} ';' %{python_sitearch}/zookeeper.so %doc LICENSE.txt NOTICE.txt src/contrib/zkpython/README +%files server +%attr(0750,zookeeper,zookeeper) %dir %{_sysconfdir}/zookeeper +%attr(0640,zookeeper,zookeeper) %ghost %config(noreplace) %{_sysconfdir}/zookeeper/zoo.cfg +%attr(0640,zookeeper,zookeeper) %{_sysconfdir}/zookeeper/zoo_sample.cfg +%attr(0640,zookeeper,zookeeper) %config(noreplace) %{_sysconfdir}/zookeeper/log4j.properties + +%attr(0750,zookeeper,zookeeper) %dir %{_localstatedir}/log/zookeeper +%attr(0750,zookeeper,zookeeper) %dir %{_sharedstatedir}/zookeeper +%attr(0750,zookeeper,zookeeper) %dir %{_sharedstatedir}/zookeeper/data +%attr(0640,zookeeper,zookeeper) %ghost %{_sharedstatedir}/zookeeper/data/myid +%attr(0750,zookeeper,zookeeper) %dir %{_sharedstatedir}/zookeeper/log +%{_unitdir}/zookeeper.service + %changelog +* Tue Jun 25 2013 Jeffrey C. Ollie - 3.4.5-7 +- add server subpackage + * Fri Jun 14 2013 Dan HorĂ¡k - 3.4.5-6 - use fetch_and_add from GCC, fixes build on non-x86 arches @@ -339,4 +400,4 @@ find %{buildroot} -name '*.la' -exec rm -f {} ';' - update to 3.4.4 * Fri May 18 2012 gil cattaneo 3.4.3-1 -- initial rpm \ No newline at end of file +- initial rpm