michael@378: ## michael@378: ## memcached.spec -- OpenPKG RPM Package Specification michael@378: ## Copyright (c) 2000-2011 OpenPKG Foundation e.V. michael@378: ## michael@378: ## Permission to use, copy, modify, and distribute this software for michael@378: ## any purpose with or without fee is hereby granted, provided that michael@378: ## the above copyright notice and this permission notice appear in all michael@378: ## copies. michael@378: ## michael@378: ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED michael@378: ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF michael@378: ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. michael@378: ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR michael@378: ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, michael@378: ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT michael@378: ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF michael@378: ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND michael@378: ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, michael@378: ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT michael@378: ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF michael@378: ## SUCH DAMAGE. michael@378: ## michael@378: michael@378: # package versions michael@378: %define V_memcached 1.4.6 michael@378: %define V_libmemcached 0.48 michael@378: %define V_cache_memcached 1.28 michael@378: michael@378: # package information michael@378: Name: memcached michael@378: Summary: Memory Caching Daemon michael@378: URL: http://memcached.org/ michael@378: Vendor: Brad Fitzpatrick michael@378: Packager: OpenPKG Foundation e.V. michael@378: Distribution: OpenPKG Community michael@378: Class: EVAL michael@378: Group: System michael@378: License: GPL michael@378: Version: %{V_memcached} michael@379: Release: 20110914 michael@378: michael@378: # list of sources michael@378: Source0: http://memcached.googlecode.com/files/memcached-%{V_memcached}.tar.gz michael@378: Source1: http://download.tangent.org/libmemcached-%{V_libmemcached}.tar.gz michael@378: Source2: http://www.cpan.org/authors/id/B/BR/BRADFITZ/Cache-Memcached-%{V_cache_memcached}.tar.gz michael@378: Source3: rc.memcached michael@378: Patch0: memcached.patch michael@378: michael@378: # build information michael@379: Prefix: %{l_prefix} michael@379: BuildRoot: %{l_buildroot} michael@379: BuildPreReq: OpenPKG, openpkg >= 20060823, gcc, make, perl, perl-openpkg michael@379: PreReq: OpenPKG, openpkg >= 20060823 michael@378: BuildPreReq: libevent, sasl michael@378: PreReq: libevent, sasl michael@379: AutoReq: no michael@379: AutoReqProv: no michael@378: michael@378: %description michael@378: Memcached is a high-performance, distributed memory object caching michael@378: system, generic in nature, but intended for use in speeding up michael@378: dynamic web applications by alleviating database load. Additionally, michael@378: this package contains Perl and C client APIs to memcached. michael@378: michael@378: %track michael@378: prog memcached:memcached = { michael@378: version = %{V_memcached} michael@378: url = http://code.google.com/p/memcached/downloads/list michael@378: regex = memcached-(\d+(\.\d+)+)\.tar\.gz michael@378: } michael@378: prog memcached:cache-memcached = { michael@378: version = %{V_cache_memcached} michael@378: url = http://www.cpan.org/authors/id/B/BR/BRADFITZ/ michael@378: regex = Cache-Memcached-(__VER__)\.tar\.gz michael@378: } michael@378: prog memcached:libmemcached = { michael@378: version = %{V_libmemcached} michael@378: url = http://tangent.org/552/libmemcached.html michael@378: regex = libmemcached-(__VER__)\.tar\.gz michael@378: } michael@378: michael@378: %prep michael@378: %setup -q -c michael@378: %setup -q -T -D -a 1 michael@378: %setup -q -T -D -a 2 michael@378: %patch -p0 michael@379: %{l_shtool} subst \ michael@379: -e 's; *-Werror;;g' \ michael@379: memcached-%{V_memcached}/configure michael@379: %{l_shtool} subst \ michael@379: -e 's;\(libdir="\${libdir}\)/\${isainfo_k};\1;g' \ michael@379: libmemcached-%{V_libmemcached}/configure michael@378: michael@378: %build michael@378: # build daemon michael@378: ( cd memcached-%{V_memcached} michael@378: libs="" michael@378: case "%{l_platform -t}" in michael@378: *-linux* ) libs="$libs -lrt" ;; michael@379: *-sunos* ) libs="$libs -lsocket -lnsl" ;; michael@378: esac michael@378: CC="%{l_cc}" \ michael@378: CFLAGS="%{l_cflags -O}" \ michael@378: CPPFLAGS="%{l_cppflags}" \ michael@378: LDFLAGS="%{l_ldflags}" \ michael@378: LIBS="$libs" \ michael@378: ./configure \ michael@378: --prefix=%{l_prefix} \ michael@378: --with-libevent=%{l_prefix} \ michael@378: --enable-sasl \ michael@378: --enable-sasl-pwdb michael@378: %{l_make} %{l_mflags -O} michael@378: ) || exit $? michael@378: michael@378: # build C client API michael@378: ( cd libmemcached-%{V_libmemcached} michael@378: CC="%{l_cc}" \ michael@378: CFLAGS="%{l_cflags -O}" \ michael@378: CPPFLAGS="%{l_cppflags}" \ michael@378: LDFLAGS="%{l_ldflags}" \ michael@378: ./configure \ michael@378: --prefix=%{l_prefix} \ michael@378: --mandir=%{l_prefix}/man \ michael@378: --without-memcached \ michael@378: --enable-libevent \ michael@378: --with-libevent-prefix=%{l_prefix} \ michael@378: --enable-sasl \ michael@378: --with-libsasl2-prefix=%{l_prefix} \ michael@378: --without-libinnodb-prefix \ michael@378: --disable-shared michael@378: %{l_make} %{l_mflags -O} michael@378: ) || exit $? michael@378: michael@378: # build Perl client API michael@378: %{l_prefix}/bin/perl-openpkg prepare michael@378: %{l_prefix}/bin/perl-openpkg -d Cache-Memcached-%{V_cache_memcached} configure build michael@378: michael@378: %install michael@379: # remove build cruft michael@379: rm -rf $RPM_BUILD_ROOT michael@378: michael@378: # install daemon michael@378: ( cd memcached-%{V_memcached} michael@378: %{l_shtool} mkdir -f -p -m 775 \ michael@378: $RPM_BUILD_ROOT%{l_prefix}/bin \ michael@378: $RPM_BUILD_ROOT%{l_prefix}/man/man1 michael@378: %{l_shtool} install -c -s -m 775 \ michael@378: memcached $RPM_BUILD_ROOT%{l_prefix}/bin/ michael@378: %{l_shtool} install -c -m 644 \ michael@378: doc/memcached.1 $RPM_BUILD_ROOT%{l_prefix}/man/man1/ michael@378: ) || exit $? michael@378: michael@378: # install C client API michael@378: ( cd libmemcached-%{V_libmemcached} michael@378: %{l_make} %{l_mflags} install AM_MAKEFLAGS="DESTDIR=$RPM_BUILD_ROOT" michael@378: ) || exit $? michael@378: michael@378: # install Perl client API michael@378: %{l_prefix}/bin/perl-openpkg -d Cache-Memcached-%{V_cache_memcached} install michael@378: %{l_prefix}/bin/perl-openpkg -F perl-openpkg-files fixate cleanup michael@378: michael@378: # install daemon run-command script michael@378: %{l_shtool} mkdir -f -p -m 755 \ michael@378: $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d michael@378: %{l_shtool} install -c -m 755 %{l_value -s -a} \ michael@378: %{SOURCE rc.memcached} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/ michael@378: michael@378: # install daemon run-command script michael@378: %{l_shtool} mkdir -f -p -m 755 \ michael@378: $RPM_BUILD_ROOT%{l_prefix}/var/memcached michael@378: michael@378: # determine installation files michael@378: %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \ michael@378: %{l_files_std} `cat perl-openpkg-files` \ michael@378: '%attr(-,%{l_nusr},%{l_ngrp}) %{l_prefix}/var/memcached' michael@378: michael@378: %files -f files michael@378: michael@378: %clean michael@379: rm -rf $RPM_BUILD_ROOT michael@378: michael@378: %post michael@378: # after upgrade, restart service michael@378: [ $1 -eq 2 ] || exit 0 michael@378: eval `%{l_rc} memcached status 2>/dev/null` michael@378: [ ".$memcached_active" = .yes ] && %{l_rc} memcached restart michael@378: exit 0 michael@378: michael@378: %preun michael@378: # before erase, stop service and remove log files michael@378: [ $1 -eq 0 ] || exit 0 michael@378: %{l_rc} memcached stop 2>/dev/null michael@378: rm -f $RPM_INSTALL_PREFIX/var/memcached/* >/dev/null 2>&1 || true michael@378: exit 0 michael@378: