From 421b55faed17105ea5a139fac6f5f09263b1de06 Mon Sep 17 00:00:00 2001 From: Stephen Soltesz Date: Tue, 11 Nov 2008 23:27:46 +0000 Subject: [PATCH] spec file to build zabbix packages. Makefile to fetch package and test rpm build... --- Makefile | 45 +++++++++ zabbix.spec | 273 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 318 insertions(+) create mode 100644 zabbix.spec diff --git a/Makefile b/Makefile index bc69f35..3197758 100644 --- a/Makefile +++ b/Makefile @@ -1,2 +1,47 @@ +# $Id$ +CURL := curl -H Pragma: -O -R -S --fail --show-error +SHA1SUM = sha1sum + +# default - overridden by the build +SPECFILE = zabbix.spec + +main.URL := http://voxel.dl.sourceforge.net/sourceforge/zabbix/zabbix-1.6.1.tar.gz +main.SHA1SUM:= 6e66efdbbdf23dc3de01379b30ded7b005fb49d9 +main.FILE := $(notdir $(main.URL)) + +# Thierry - when called from within the build, PWD is /build +SOURCEFILES := $(main.FILE) + +$(main.FILE): #FORCE + @if [ ! -e "$@" ] ; then echo "$(CURL) $(main.URL)" ; $(CURL) $(main.URL) ; fi + @if [ ! -e "$@" ] ; then echo "Could not download source file: $@ does not exist" ; exit 1 ; fi + @if test "$$(sha1sum $@ | awk '{print $$1}')" != "$(main.SHA1SUM)" ; then \ + echo "sha1sum of the downloaded $@ does not match the one from 'sources' file" ; \ + echo "Local copy: $$(sha1sum $@)" ; \ + echo "In sources: $$(grep $@ sources)" ; \ + exit 1 ; \ + else \ + ls -l $@ ; \ + fi + +sources: $(SOURCEFILES) +.PHONY: sources + +PWD=$(shell pwd) +PREPARCH ?= noarch +RPMDIRDEFS = --define "_sourcedir $(PWD)" --define "_builddir $(PWD)" --define "_srcrpmdir $(PWD)" --define "_rpmdir $(PWD)" + +trees: sources + rpmbuild $(RPMDIRDEFS) $(RPMDEFS) --nodeps -bp --target $(PREPARCH) $(SPECFILE) + +srpm: sources + rpmbuild $(RPMDIRDEFS) $(RPMDEFS) --nodeps -bs $(SPECFILE) + +TARGET ?= $(shell uname -m) +rpm: sources + rpmbuild $(RPMDIRDEFS) $(RPMDEFS) --nodeps --target $(TARGET) -bb $(SPECFILE) + +clean: + rm -f *.rpm *.tgz *.bz2 *.gz clean: rm *.pyc *.dat *.log diff --git a/zabbix.spec b/zabbix.spec new file mode 100644 index 0000000..8d7aec5 --- /dev/null +++ b/zabbix.spec @@ -0,0 +1,273 @@ +%define debug_package %{nil} + +%define _prefix /usr/local/zabbix + +Name: zabbix +Version: 1.6.1 +Release: 1 +Group: System Environment/Daemons +License: GPL +Summary: ZABBIX network monitor server +Vendor: ZABBIX SIA +URL: http://www.zabbix.org +Packager: Eugene Grigorjev +Source: zabbix-1.6.1.tar.gz + +Autoreq: no +Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot + + +#Prefix: %{_prefix} + +%define zabbix_bindir %{_prefix}/bin +%define zabbix_datadir %{_prefix}/misc +%define zabbix_confdir %{_prefix}/conf +%define zabbix_initdir %{_prefix}/init.d +%define zabbix_docdir %{_prefix}/doc +%define zabbix_webdir /var/www/html/zabbix +#%define zabbix_piddir %{_tmppath} +#%define zabbix_logdir %{_tmppath} + +%define zabbix_piddir /var/run +%define zabbix_logdir /var/log + +%description +The ZABBIX server is a network monitor + +%package client +Summary: ZABBIX network monitor agent daemon +Group: System Environment/Daemons +%description client +The ZABBIX client is a network monitor + +%package server +Summary: ZABBIX network monitor server daemon +Group: System Environment/Daemons +BuildPrereq: postgresql-devel +BuildPrereq: net-snmp-devel +#BuildPrereq: gnutls-devel +#BuildPrereq: libtasn1-devel + +Requires: gnutls +Requires: postgresql-server +Requires: net-snmp + +%description server +The ZABBIX server is a network monitor + +%package gui +Summary: ZABBIX network monitor server frontend +Group: Productivity/Networking/Web/Frontends +Requires: php +Requires: php-bcmath +Requires: postgresql-server + +%description gui +The ZABBIX gui frontend + +%prep +%setup -n zabbix-1.6.1 + +%build + +# TODO: there must be a better way. unfortunately, this package doesn't build +# after running ./configure from a subdir, i.e. mkdir client; cd client; ../configure... ; make-> fails. +mkdir client +cp -r * client || : +mkdir server +cp -r client/* server + +pushd client +./configure --enable-static --enable-agent +make +popd + +pushd server +./configure --enable-server --with-pgsql --with-net-snmp --with-libcurl +make +popd + +%clean +rm -fr $RPM_BUILD_ROOT + +%install +rm -fr $RPM_BUILD_ROOT + +################# SERVER + +# copy documentation +install -d %{buildroot}%{zabbix_docdir} +install -m 644 server/AUTHORS %{buildroot}%{zabbix_docdir}/AUTHORS +install -m 644 server/COPYING %{buildroot}%{zabbix_docdir}/COPYING +install -m 644 server/NEWS %{buildroot}%{zabbix_docdir}/NEWS +install -m 644 server/README %{buildroot}%{zabbix_docdir}/README + +# copy binaries +install -d %{buildroot}%{zabbix_bindir} +install -s -m 755 server/src/zabbix_server/zabbix_server %{buildroot}%{zabbix_bindir}/zabbix_server + +# copy config files +install -d %{buildroot}%{zabbix_confdir} +install -m 755 server/misc/conf/zabbix_server.conf %{buildroot}%{zabbix_confdir}/zabbix_server.conf +install -d %{buildroot}/etc/zabbix +install -m 755 server/misc/conf/zabbix_server.conf %{buildroot}/etc/zabbix + +# copy startup script +install -d %{buildroot}%{zabbix_initdir} +install -m 755 server/misc/init.d/fedora/core/zabbix_server %{buildroot}%{zabbix_initdir}/zabbix_server + +install -d %{buildroot}%{zabbix_datadir} +cp -r server/create %{buildroot}%{zabbix_datadir} + +################# CLIENT +# copy binaries +install -d %{buildroot}%{zabbix_bindir} +install -s -m 755 client/src/zabbix_agent/zabbix_agentd %{buildroot}%{zabbix_bindir}/zabbix_agentd + +# copy config files +install -d %{buildroot}%{zabbix_confdir} +install -m 755 client/misc/conf/zabbix_agentd.conf %{buildroot}%{zabbix_confdir}/zabbix_agentd.conf +install -d %{buildroot}/etc/zabbix +install -m 755 client/misc/conf/zabbix_agentd.conf %{buildroot}/etc/zabbix + +# copy startup script +install -d %{buildroot}%{zabbix_initdir} +install -m 755 client/misc/init.d/fedora/core/zabbix_agentd %{buildroot}%{zabbix_initdir}/zabbix_agentd + +################# GUI +# copy php frontend +install -d %{buildroot}%{zabbix_webdir} +cp -r frontends/php/* %{buildroot}%{zabbix_webdir} + +%post client +# create ZABBIX group +if [ -z "`grep zabbix /etc/group`" ]; then + /usr/sbin/groupadd zabbix >/dev/null 2>&1 +fi + +# create ZABBIX uzer +if [ -z "`grep zabbix /etc/passwd`" ]; then + /usr/sbin/useradd -g zabbix zabbix >/dev/null 2>&1 +fi + +# configure ZABBIX agentd daemon +TMP_FILE=`mktemp $TMPDIR/zbxtmpXXXXXX` + +# TODO: setup Server=, Hostname=, +SERVER=`grep PLC_MONITOR_HOST /etc/planetlab/plc_config | tr "'" ' ' | awk '{print $2}'` +HOST=`hostname` +sed -e "s#Hostname=.*#Hostname=$HOST#g" \ + -e "s#Server=.*#Server=$SERVER#g" \ + -e "s#PidFile=/var/tmp/zabbix_agentd.pid#PidFile=%{zabbix_piddir}/zabbix_agentd.pid#g" \ + -e "s#LogFile=/tmp/zabbix_agentd.log#LogFile=%{zabbix_logdir}/zabbix_agentd.log#g" \ + %{zabbix_confdir}/zabbix_agentd.conf > $TMP_FILE +cat $TMP_FILE > %{zabbix_confdir}/zabbix_agentd.conf +mkdir -p /etc/zabbix +cp %{zabbix_confdir}/zabbix_agentd.conf /etc/zabbix/ +# TODO: copy to /etc/zabbix/ + +sed -e "s#BASEDIR=/opt/zabbix#BASEDIR=%{_prefix}#g" \ + -e "s#PIDFILE=/var/tmp/zabbix_agentd.pid#PIDFILE=%{zabbix_piddir}/zabbix_agentd.pid#g" \ + %{zabbix_initdir}/zabbix_agentd > $TMP_FILE +cat $TMP_FILE > %{zabbix_initdir}/zabbix_agentd +# TODO: copy to /etc/init.d/ +cp %{zabbix_initdir}/zabbix_agentd /etc/init.d + +rm -f $TMP_FILE + +chkconfig zabbix_agentd on + +%post server + +# create ZABBIX group +if [ -z "`grep zabbix /etc/group`" ]; then + /usr/sbin/groupadd zabbix >/dev/null 2>&1 +fi + +# create ZABBIX uzer +if [ -z "`grep zabbix /etc/passwd`" ]; then + /usr/sbin/useradd -g zabbix zabbix >/dev/null 2>&1 +fi + +# configure ZABBIX server daemon +TMP_FILE=`mktemp $TMPDIR/zbxtmpXXXXXX` + +# SETUP DBHost, DBName, DBUser, DBPassword +#SERVER=`grep PLC_MONITOR_HOST /etc/planetlab/plc_config | tr "'" ' ' | awk '{print $2}'` + +sed -e "s#AlertScriptsPath=/home/zabbix/bin/#AlertScriptsPath=%{zabbix_bindir}/#g" \ + -e "s#PidFile=/var/tmp/zabbix_server.pid#PidFile=%{zabbix_piddir}/zabbix_server.pid#g" \ + -e "s#LogFile=/tmp/zabbix_server.log#LogFile=%{zabbix_logdir}/zabbix_server.log#g" \ + %{zabbix_confdir}/zabbix_server.conf > $TMP_FILE +cat $TMP_FILE > %{zabbix_confdir}/zabbix_server.conf +mkdir -p /etc/zabbix +cp %{zabbix_confdir}/zabbix_server.conf /etc/zabbix/ + +sed -e "s#BASEDIR=/opt/zabbix#BASEDIR=%{_prefix}#g" \ + -e "s#PIDFILE=/var/tmp/zabbix_server.pid#PIDFILE=%{zabbix_piddir}/zabbix_server.pid#g" \ + %{zabbix_initdir}/zabbix_server > $TMP_FILE +cat $TMP_FILE > %{zabbix_initdir}/zabbix_server +cp %{zabbix_initdir}/zabbix_server /etc/init.d + +rm -f $TMP_FILE + +chkconfig zabbix_server on + +%postun +rm -f %{zabbix_piddir}/zabbix_server.pid +rm -f %{zabbix_logdir}/zabbix_server.log + +rm -f %{zabbix_piddir}/zabbix_agentd.pid +rm -f %{zabbix_logdir}/zabbix_agentd.log + +%files client +%defattr(-,root,root) + +%dir %attr(0755,root,root) %{zabbix_confdir} +%attr(0644,root,root) %config(noreplace) %{zabbix_confdir}/zabbix_agentd.conf + +%dir %attr(0755,root,root) %{zabbix_bindir} +%attr(0755,root,root) %{zabbix_bindir}/zabbix_agentd + +%dir %attr(0755,root,root) %{zabbix_initdir} +%attr(0755,root,root) %{zabbix_initdir}/zabbix_agentd + +%config /etc/zabbix/zabbix_agentd.conf + +%files server +%defattr(-,root,root) + +%dir %attr(0755,root,root) %{zabbix_docdir} +%attr(0644,root,root) %{zabbix_docdir}/AUTHORS +%attr(0644,root,root) %{zabbix_docdir}/COPYING +%attr(0644,root,root) %{zabbix_docdir}/NEWS +%attr(0644,root,root) %{zabbix_docdir}/README + +%dir %attr(0755,root,root) %{zabbix_confdir} +%attr(0644,root,root) %config(noreplace) %{zabbix_confdir}/zabbix_server.conf + +%dir %attr(0755,root,root) %{zabbix_bindir} +%attr(0755,root,root) %{zabbix_bindir}/zabbix_server + +%dir %attr(0755,root,root) %{zabbix_initdir} +%attr(0755,root,root) %{zabbix_initdir}/zabbix_server + +%dir %attr(0755,root,root) %{zabbix_datadir} +%attr(0755,root,root) %{zabbix_datadir}/create/ + +%config /etc/zabbix/zabbix_server.conf + +%files gui +%defattr(-,root,root) +%dir %{zabbix_webdir} +%{zabbix_webdir} + +%changelog +* Tue Nov 11 2008 Stephen Soltesz +- 1.6.1 +- initial re-packaging + +* Thu Dec 01 2005 Eugene Grigorjev +- 1.1beta2 +- initial packaging + -- 2.43.0