memcached.spec 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. ##
  2. ## memcached.spec -- OpenPKG RPM Package Specification
  3. ## Copyright (c) 2000-2009 OpenPKG Foundation e.V. <http://openpkg.net/>
  4. ##
  5. ## Permission to use, copy, modify, and distribute this software for
  6. ## any purpose with or without fee is hereby granted, provided that
  7. ## the above copyright notice and this permission notice appear in all
  8. ## copies.
  9. ##
  10. ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  11. ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  12. ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  13. ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
  14. ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  15. ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  16. ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  17. ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  18. ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  19. ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  20. ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  21. ## SUCH DAMAGE.
  22. ##
  23. # package versions
  24. %define V_memcached 1.3.0
  25. %define V_libmemcache 1.4.0.rc2
  26. %define V_libmemcached 0.28
  27. %define V_cache_memcached 1.26
  28. # package information
  29. Name: memcached
  30. Summary: Memory Caching Daemon
  31. URL: http://www.danga.com/memcached/
  32. Vendor: Brad Fitzpatrick
  33. Packager: OpenPKG Foundation e.V.
  34. Distribution: OpenPKG Community
  35. Class: EVAL
  36. Group: System
  37. License: GPL
  38. Version: %{V_memcached}
  39. Release: 20090505
  40. # list of sources
  41. Source0: http://www.danga.com/memcached/dist/memcached-%{V_memcached}.tar.gz
  42. Source1: http://www.cpan.org/authors/id/B/BR/BRADFITZ/Cache-Memcached-%{V_cache_memcached}.tar.gz
  43. Source2: http://people.freebsd.org/~seanc/libmemcache/libmemcache-%{V_libmemcache}.tar.bz2
  44. Source3: http://download.tangent.org/libmemcached-%{V_libmemcached}.tar.gz
  45. Source4: rc.memcached
  46. Patch0: memcached.patch
  47. # build information
  48. Prefix: %{l_prefix}
  49. BuildRoot: %{l_buildroot}
  50. BuildPreReq: OpenPKG, openpkg >= 20060823, gcc, make, perl, perl-openpkg
  51. PreReq: OpenPKG, openpkg >= 20060823
  52. BuildPreReq: libevent
  53. PreReq: libevent
  54. AutoReq: no
  55. AutoReqProv: no
  56. %description
  57. Memcached is a high-performance, distributed memory object caching
  58. system, generic in nature, but intended for use in speeding up
  59. dynamic web applications by alleviating database load. Additionally,
  60. this package contains Perl and C client APIs to memcached.
  61. %track
  62. prog memcached:memcached = {
  63. version = %{V_memcached}
  64. url = http://www.danga.com/memcached/dist/
  65. regex = memcached-(\d+(\.\d+)+)\.tar\.gz
  66. }
  67. prog memcached:cache-memcached = {
  68. version = %{V_cache_memcached}
  69. url = http://www.cpan.org/authors/id/B/BR/BRADFITZ/
  70. regex = Cache-Memcached-(__VER__)\.tar\.gz
  71. }
  72. prog memcached:libmemcache = {
  73. version = %{V_libmemcache}
  74. url = http://people.freebsd.org/~seanc/libmemcache/
  75. regex = libmemcache-(\d+\.\d+(\.\d+)*(\.rc\d+)?)\.tar\.bz2
  76. }
  77. prog memcached:libmemcached = {
  78. version = %{V_libmemcached}
  79. url = http://tangent.org/552/libmemcached.html
  80. regex = libmemcached-(__VER__)\.tar\.gz
  81. }
  82. %prep
  83. %setup -q -c
  84. %setup -q -T -D -a 1
  85. %setup -q -T -D -a 2
  86. %setup -q -T -D -a 3
  87. %patch -p0
  88. %build
  89. # build daemon
  90. ( cd memcached-%{V_memcached}
  91. libs=""
  92. case "%{l_platform -t}" in
  93. *-linux* ) libs="$libs -lrt" ;;
  94. esac
  95. CC="%{l_cc}" \
  96. CFLAGS="%{l_cflags -O}" \
  97. CPPFLAGS="%{l_cppflags}" \
  98. LDFLAGS="%{l_ldflags}" \
  99. LIBS="$libs" \
  100. ./configure \
  101. --prefix=%{l_prefix} \
  102. --with-libevent=%{l_prefix}
  103. %{l_make} %{l_mflags -O}
  104. ) || exit $?
  105. # build Perl client API
  106. %{l_prefix}/bin/perl-openpkg prepare
  107. %{l_prefix}/bin/perl-openpkg -d Cache-Memcached-%{V_cache_memcached} configure build
  108. # build C client APIs
  109. ( cd libmemcache-%{V_libmemcache}
  110. CC="%{l_cc}" \
  111. CFLAGS="%{l_cflags -O}" \
  112. CPPFLAGS="%{l_cppflags}" \
  113. LDFLAGS="%{l_ldflags}" \
  114. ./configure \
  115. --prefix=%{l_prefix} \
  116. --disable-shared
  117. %{l_make} %{l_mflags -O}
  118. ) || exit $?
  119. ( cd libmemcached-%{V_libmemcached}
  120. CC="%{l_cc}" \
  121. CFLAGS="%{l_cflags -O}" \
  122. CPPFLAGS="%{l_cppflags}" \
  123. LDFLAGS="%{l_ldflags}" \
  124. ./configure \
  125. --prefix=%{l_prefix} \
  126. --mandir=%{l_prefix}/man \
  127. --without-memcached \
  128. --disable-shared
  129. %{l_make} %{l_mflags -O}
  130. ) || exit $?
  131. %install
  132. rm -rf $RPM_BUILD_ROOT
  133. # install daemon
  134. ( cd memcached-%{V_memcached}
  135. %{l_shtool} mkdir -f -p -m 775 \
  136. $RPM_BUILD_ROOT%{l_prefix}/bin \
  137. $RPM_BUILD_ROOT%{l_prefix}/man/man1
  138. %{l_shtool} install -c -s -m 775 \
  139. memcached $RPM_BUILD_ROOT%{l_prefix}/bin/
  140. %{l_shtool} install -c -m 644 \
  141. doc/memcached.1 $RPM_BUILD_ROOT%{l_prefix}/man/man1/
  142. ) || exit $?
  143. # install Perl client API
  144. %{l_prefix}/bin/perl-openpkg -d Cache-Memcached-%{V_cache_memcached} install
  145. %{l_prefix}/bin/perl-openpkg -F perl-openpkg-files fixate cleanup
  146. # install C client APIs
  147. ( cd libmemcache-%{V_libmemcache}
  148. %{l_make} %{l_mflags} install AM_MAKEFLAGS="DESTDIR=$RPM_BUILD_ROOT"
  149. ) || exit $?
  150. ( cd libmemcached-%{V_libmemcached}
  151. %{l_make} %{l_mflags} install AM_MAKEFLAGS="DESTDIR=$RPM_BUILD_ROOT"
  152. ) || exit $?
  153. # install daemon run-command script
  154. %{l_shtool} mkdir -f -p -m 755 \
  155. $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d
  156. %{l_shtool} install -c -m 755 %{l_value -s -a} \
  157. %{SOURCE rc.memcached} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
  158. # install daemon run-command script
  159. %{l_shtool} mkdir -f -p -m 755 \
  160. $RPM_BUILD_ROOT%{l_prefix}/var/memcached
  161. # determine installation files
  162. %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
  163. %{l_files_std} `cat perl-openpkg-files` \
  164. '%attr(-,%{l_nusr},%{l_ngrp}) %{l_prefix}/var/memcached'
  165. %files -f files
  166. %clean
  167. rm -rf $RPM_BUILD_ROOT
  168. %post
  169. # after upgrade, restart service
  170. [ $1 -eq 2 ] || exit 0
  171. eval `%{l_rc} memcached status 2>/dev/null`
  172. [ ".$memcached_active" = .yes ] && %{l_rc} memcached restart
  173. exit 0
  174. %preun
  175. # before erase, stop service and remove log files
  176. [ $1 -eq 0 ] || exit 0
  177. %{l_rc} memcached stop 2>/dev/null
  178. rm -f $RPM_INSTALL_PREFIX/var/memcached/* >/dev/null 2>&1 || true
  179. exit 0