diff --git a/memcached/memcached.spec b/memcached/memcached.spec new file mode 100644 index 0000000000..7756932205 --- /dev/null +++ b/memcached/memcached.spec @@ -0,0 +1,153 @@ +## +## memcached.spec -- OpenPKG RPM Specification +## Copyright (c) 2000-2004 The OpenPKG Project +## Copyright (c) 2000-2004 Ralf S. Engelschall +## Copyright (c) 2000-2004 Cable & Wireless +## +## Permission to use, copy, modify, and distribute this software for +## any purpose with or without fee is hereby granted, provided that +## the above copyright notice and this permission notice appear in all +## copies. +## +## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +## SUCH DAMAGE. +## + +# package versions +%define V_memcached 1.1.11 +%define V_libmemcache 1.0.2 +%define V_cache_memcached 1.14 + +# package information +Name: memcached +Summary: Memory Caching Daemon +URL: http://www.danga.com/memcached/ +Vendor: Brad Fitzpatrick +Packager: The OpenPKG Project +Distribution: OpenPKG +Class: EVAL +Group: System +License: GPL +Version: 1.1.11 +Release: 20041208 + +# list of sources +Source0: http://www.danga.com/memcached/dist/memcached-%{V_memcached}.tar.gz +Source1: http://www.danga.com/memcached/dist/Cache-Memcached-%{V_cache_memcached}.tar.gz +Source2: http://people.freebsd.org/~seanc/libmemcache/libmemcache-%{V_libmemcache}.tar.bz2 +Source3: rc.memcached + +# build information +Prefix: %{l_prefix} +BuildRoot: %{l_buildroot} +BuildPreReq: OpenPKG, openpkg >= 20040130, gcc, make, pmk +PreReq: OpenPKG, openpkg >= 20040130 +BuildPreReq: libevent +PreReq: libevent +AutoReq: no +AutoReqProv: no + +%description + Memcached is a high-performance, distributed memory object caching + system, generic in nature, but intended for use in speeding up + dynamic web applications by alleviating database load. Additionally, + this package contains Perl and C client APIs to memcached. + +%track + prog memcached:memcached = { + version = %{V_memcached} + url = http://www.danga.com/memcached/download.bml + regex = memcached-(__VER__)\.tar\.gz + } + prog memcached:cache-memcached = { + version = %{V_cache_memcached} + url = http://www.danga.com/memcached/apis.bml + regex = Cache-Memcached-(__VER__)\.tar\.gz + } + prog memcached:libmemcache = { + version = %{V_libmemcache} + url = http://people.freebsd.org/~seanc/libmemcache/ + regex = libmemcache-(__VER__)\.tar\.bz2 + } + +%prep + %setup -q -c + %setup -q -T -D -a 1 + %setup -q -T -D -a 2 + +%build + # build daemon + ( cd memcached-%{V_memcached} + CC="%{l_cc}" \ + CFLAGS="%{l_cflags -O}" \ + CPPFLAGS="%{l_cppflags}" \ + LDFLAGS="%{l_ldflags}" \ + ./configure \ + --prefix=%{l_prefix} \ + --with-libevent=%{l_prefix} + %{l_make} %{l_mflags -O} + ) || exit $? + + # build Perl client API + %{l_prefix}/bin/perl-openpkg prepare + %{l_prefix}/bin/perl-openpkg -d Cache-Memcached-%{V_cache_memcached} configure build + + # build C client API + ( cd libmemcache-%{V_libmemcache} + %{l_prefix}/bin/pmk >/dev/null + %{l_make} %{l_mflags -O} + ) || exit $? + +%install + rm -rf $RPM_BUILD_ROOT + + # install daemon + ( cd memcached-%{V_memcached} + %{l_shtool} mkdir -f -p -m 775 \ + $RPM_BUILD_ROOT%{l_prefix}/bin \ + $RPM_BUILD_ROOT%{l_prefix}/man/man1 + %{l_shtool} install -c -s -m 775 \ + memcached $RPM_BUILD_ROOT%{l_prefix}/bin/ + %{l_shtool} install -c -m 644 \ + doc/memcached.1 $RPM_BUILD_ROOT%{l_prefix}/man/man1/ + ) || exit $? + + # install Perl client API + %{l_prefix}/bin/perl-openpkg -d Cache-Memcached-%{V_cache_memcached} install + %{l_prefix}/bin/perl-openpkg -F perl-openpkg-files fixate cleanup + + # install C client API + ( cd libmemcache-%{V_libmemcache} + %{l_shtool} mkdir -f -p -m 755 \ + $RPM_BUILD_ROOT%{l_prefix}/lib \ + $RPM_BUILD_ROOT%{l_prefix}/include + %{l_shtool} install -c -m 644 \ + libmemcache.a $RPM_BUILD_ROOT%{l_prefix}/lib/ + %{l_shtool} install -c -m 644 \ + memcache.h $RPM_BUILD_ROOT%{l_prefix}/include/ + ) || exit $? + + # install daemon run-command script + %{l_shtool} mkdir -f -p -m 755 \ + $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d + %{l_shtool} install -c -m 755 %{l_value -s -a} \ + %{SOURCE rc.memcached} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/ + + # determine installation files + %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std} `cat perl-openpkg-files` + +%files -f files + +%clean + rm -rf $RPM_BUILD_ROOT + diff --git a/memcached/rc.memcached b/memcached/rc.memcached new file mode 100644 index 0000000000..b72442bf7a --- /dev/null +++ b/memcached/rc.memcached @@ -0,0 +1,46 @@ +#!@l_prefix@/lib/openpkg/bash @l_prefix@/etc/rc +## +## rc.memcached -- Run-Commands +## + +%config + memcached_enable="$openpkg_rc_def" + memcached_flags="" + memcached_log_prolog="true" + memcached_log_epilog="true" + memcached_log_numfiles="10" + memcached_log_minsize="1M" + memcached_log_complevel="9" + +%status -u @l_susr@ -o + memcached_usable="no" + memcached_active="no" + echo "memcached_enable=\"$memcached_enable\"" + echo "memcached_usable=\"$memcached_usable\"" + echo "memcached_active=\"$memcached_active\"" + +%start -p 100 -u @l_susr@ + rcService memcached enable yes || exit 0 + rcService memcached active yes && exit 0 + @l_prefix@/bin/memcached ${memcached_flags} + +%stop -p 900 -u @l_susr@ + rcService memcached enable yes || exit 0 + rcService memcached active no && exit 0 + # FIXME + sleep 2 + +%restart -p 100 -u @l_susr@ + rcService memcached enable yes || exit 0 + rcService memcached active no && exit 0 + rc memcached stop start + +%daily -u @l_susr@ + rcService memcached enable yes || exit 0 + shtool rotate -f \ + -n ${memcached_log_numfiles} -s ${memcached_log_minsize} -d \ + -z ${memcached_log_complevel} -m 644 -o @l_rusr@ -g @l_rgrp@ \ + -P "${memcached_log_prolog}" \ + -E "${memcached_log_epilog} && rc memcached reload" \ + @l_prefix@/var/memcached/memcached.log +