redis-vl.spec 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410
  1. %bcond_with systemd
  2. # Check for status of man pages
  3. # http://code.google.com/p/redis/issues/detail?id=202
  4. # Commit IDs for the (unversioned) redis-doc repository
  5. # https://fedoraproject.org/wiki/Packaging:SourceURL "Commit Revision"
  6. #global doc_commit 4f1da37c03daa943f2cf3cd5fda8dbd1bf1f22d7
  7. %global doc_commit af4e30177017ba5db4c6d06786b6afb6eb03012d
  8. %global short_doc_commit %(c=%{doc_commit}; echo ${c:0:7})
  9. # %%{rpmmacrodir} not usable on EL-6
  10. %global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d)
  11. %ifarch %{ix86} x86_64 ppc
  12. # available only on selected architectures
  13. %global with_perftools 1
  14. %endif
  15. Name: redis
  16. Version: 6.2.3
  17. Release: 1%{?_dist_release}%{?with_systemd:.systemd}
  18. Summary: A persistent in-memory key-value database
  19. Summary(ja): 永続化可能なキー・バリュー型インメモリデータベース
  20. Group: servers
  21. Vendor: Project Vine
  22. Distribution: Vine Linux
  23. Packager: daisuke
  24. License: BSD
  25. URL: https://redis.io
  26. Source0: https://github.com/redis-io/redis/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz
  27. Source1: %{name}.logrotate
  28. Source2: %{name}-sentinel.service
  29. Source3: %{name}.service
  30. Source4: %{name}-sentinel.init
  31. Source5: %{name}.init
  32. Source6: %{name}-shutdown
  33. Source7: %{name}-limit-systemd
  34. Source8: %{name}-limit-init
  35. Source9: macros.%{name}
  36. Source10: https://github.com/redis/%{name}-doc/archive/%{doc_commit}/%{name}-doc-%{short_doc_commit}.tar.gz
  37. # To refresh patches:
  38. # tar xf redis-xxx.tar.gz && cd redis-xxx && git init && git add . && git commit -m "%%{version} baseline"
  39. # git am %%{patches}
  40. # Then refresh your patches
  41. # git format-patch HEAD~<number of expected patches>
  42. # Update configuration for Fedora
  43. # https://github.com/antirez/redis/pull/3491 - man pages
  44. Patch0001: 0001-1st-man-pageis-for-redis-cli-redis-benchmark-redis-c.patch
  45. BuildRoot: %{_tmppath}/%{name}-%{version}-root
  46. BuildRequires: jemalloc-devel
  47. %if %{?with_perftools}
  48. BuildRequires: gperftools-devel
  49. %endif
  50. Requires: logrotate
  51. %if %{with systemd}
  52. BuildRequires: systemd
  53. Requires(post): systemd
  54. Requires(preun): systemd
  55. Requires(postun): systemd
  56. %else
  57. Requires(post): chkconfig
  58. Requires(postun): initscripts
  59. Requires(preun): chkconfig
  60. Requires(preun): initscripts
  61. %endif
  62. Requires(pre): shadow-utils
  63. %global redis_modules_abi 1
  64. %global redis_modules_dir %{_libdir}/%{name}/modules
  65. Provides: redis(modules_abi)%{?_isa} = %{redis_modules_abi}
  66. %description
  67. Redis is an advanced key-value store. It is similar to memcached but the data
  68. set is not volatile, and values can be strings, exactly like in memcached, but
  69. also lists, sets, and ordered sets. All this data types can be manipulated with
  70. atomic operations to push/pop elements, add/remove elements, perform server side
  71. union, intersection, difference between sets, and so forth. Redis supports
  72. different kind of sorting abilities.
  73. %package devel
  74. Summary: Development header for Redis module development
  75. Group: programming
  76. # Header-Only Library (https://fedoraproject.org/wiki/Packaging:Guidelines)
  77. Provides: %{name}-static = %{version}-%{release}
  78. %description devel
  79. Header file required for building loadable Redis modules. Detailed
  80. API documentation is available in the redis-doc package.
  81. %package doc
  82. Summary: Documentation for Redis including man pages
  83. Group: documentation
  84. License: CC-BY-SA
  85. BuildArch: noarch
  86. # http://fedoraproject.org/wiki/Packaging:Conflicts "Splitting Packages"
  87. Conflicts: redis < 4.0
  88. %description doc
  89. Manual pages and detailed documentation for many aspects of Redis use,
  90. administration and development.
  91. %debug_package
  92. %prep
  93. %setup -q -b 10
  94. %setup -q
  95. mv ../%{name}-doc-%{doc_commit} doc
  96. %patch0001 -p1
  97. mv deps/lua/COPYRIGHT COPYRIGHT-lua
  98. mv deps/hiredis/COPYING COPYING-hiredis
  99. # Configuration file changes
  100. sed -i -e 's|^logfile .*$|logfile /var/log/redis/redis.log|g' redis.conf
  101. sed -i -e 's|^logfile .*$|logfile /var/log/redis/sentinel.log|g' sentinel.conf
  102. sed -i -e 's|^dir .*$|dir /var/lib/redis|g' redis.conf
  103. sed -i -e 's|^daemonize no$|daemonize yes|g' redis.conf
  104. sed -i -e 's|^protected-mode no$|protected-mode yes|g' redis.conf
  105. sed -i -e 's|^# bind 127\.0\.0\.1$|bind 127.0.0.1|g' redis.conf
  106. # Module API version safety check
  107. api=`sed -n -e 's/#define REDISMODULE_APIVER_[0-9][0-9]* //p' src/redismodule.h`
  108. if test "$api" != "%{redis_modules_abi}"; then
  109. : Error: Upstream API version is now ${api}, expecting %%{redis_modules_abi}.
  110. : Update the redis_modules_abi macro, the rpmmacros file, and rebuild.
  111. exit 1
  112. fi
  113. %global make_flags DEBUG="" V="echo" LDFLAGS="%{?__global_ldflags}" CFLAGS+="%{optflags} -fPIC" INSTALL="install -p" PREFIX=%{buildroot}%{_prefix}
  114. %build
  115. make %{?_smp_mflags} %{make_flags} all
  116. %install
  117. make %{make_flags} install
  118. # Filesystem.
  119. install -d %{buildroot}%{_sharedstatedir}/%{name}
  120. install -d %{buildroot}%{_localstatedir}/log/%{name}
  121. install -d %{buildroot}%{_localstatedir}/run/%{name}
  122. install -d %{buildroot}%{redis_modules_dir}
  123. # Install logrotate file.
  124. install -pDm644 %{S:1} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
  125. # Install configuration files.
  126. mkdir -p %{buildroot}%{_sysconfdir}/%{name}
  127. install -pDm640 %{name}.conf %{buildroot}%{_sysconfdir}/%{name}/%{name}.conf
  128. install -pDm640 sentinel.conf %{buildroot}%{_sysconfdir}/%{name}/%{name}-sentinel.conf
  129. %if %{with systemd}
  130. # Install systemd unit files.
  131. mkdir -p %{buildroot}%{_unitdir}
  132. install -pm644 %{S:3} %{buildroot}%{_unitdir}
  133. install -pm644 %{S:2} %{buildroot}%{_unitdir}
  134. # Install systemd limit files (requires systemd >= 204)
  135. install -p -D -m 644 %{S:7} %{buildroot}%{_sysconfdir}/systemd/system/%{name}.service.d/limit.conf
  136. install -p -D -m 644 %{S:7} %{buildroot}%{_sysconfdir}/systemd/system/%{name}-sentinel.service.d/limit.conf
  137. %else
  138. mkdir -p %{buildroot}%{_initdir}
  139. install -pm755 %{S:4} %{buildroot}%{_initdir}/%{name}-sentinel
  140. install -pm755 %{S:5} %{buildroot}%{_initdir}/%{name}
  141. install -pm755 %{S:8} %{buildroot}%{_initdir}/%{name}-limit
  142. %endif
  143. # Fix non-standard-executable-perm error.
  144. chmod 755 %{buildroot}%{_bindir}/%{name}-*
  145. # Install redis-shutdown
  146. install -pDm755 %{S:6} %{buildroot}%{_libexecdir}/%{name}-shutdown
  147. # Install redis module header
  148. install -pDm644 src/%{name}module.h %{buildroot}%{_includedir}/%{name}module.h
  149. # Install man pages
  150. man=$(dirname %{buildroot}%{_mandir})
  151. for page in man/man?/*; do
  152. install -Dpm644 $page $man/$page
  153. done
  154. ln -s redis-server.1 %{buildroot}%{_mandir}/man1/redis-sentinel.1
  155. ln -s redis.conf.5 %{buildroot}%{_mandir}/man5/redis-sentinel.conf.5
  156. # Install documentation and html pages
  157. doc=$(echo %{buildroot}/%{_docdir}/%{name})
  158. for page in 00-RELEASENOTES BUGS CONTRIBUTING MANIFESTO; do
  159. install -Dpm644 $page $doc/$page
  160. done
  161. for page in $(find doc -name \*.md | sed -e 's|.md$||g'); do
  162. base=$(echo $page | sed -e 's|doc/||g')
  163. install -Dpm644 $page.md $doc/$base.md
  164. done
  165. # Install rpm macros for redis modules
  166. mkdir -p %{buildroot}%{macrosdir}
  167. install -pDm644 %{S:9} %{buildroot}%{macrosdir}/macros.%{name}
  168. %check
  169. # make test
  170. %post
  171. %if %{with systemd}
  172. %systemd_post %{name}.service
  173. %systemd_post %{name}-sentinel.service
  174. %else
  175. if [ $1 -eq 1 ]; then
  176. /sbin/chkconfig --add %{name}
  177. /sbin/chkconfig --add %{name}-sentinel
  178. fi
  179. %endif
  180. %pre
  181. getent group %{name} &> /dev/null || \
  182. groupadd -r %{name} &> /dev/null
  183. getent passwd %{name} &> /dev/null || \
  184. useradd -r -g %{name} -d %{_sharedstatedir}/%{name} -s /sbin/nologin \
  185. -c 'Redis Database Server' %{name} &> /dev/null
  186. exit 0
  187. %preun
  188. %if %{with systemd}
  189. %systemd_preun %{name}.service
  190. %systemd_preun %{name}-sentinel.service
  191. %else
  192. if [ $1 -eq 0 -o -x /sbin/systemctl ]; then
  193. /sbin/service %{name} stop ||:
  194. /sbin/service %{name}-sentinel stop ||:
  195. /sbin/chkconfig --del %{name}
  196. /sbin/chkconfig --del %{name}-sentinel
  197. fi
  198. %endif
  199. %postun
  200. %if %{with systemd}
  201. %systemd_postun_with_restart %{name}.service
  202. %systemd_postun_with_restart %{name}-sentinel.service
  203. %else
  204. if [ $1 -gt 0 ]; then
  205. if [ -x /sbin/systemctl ]; then
  206. /sbin/service %{name} stop ||:
  207. else
  208. /sbin/service %{name} condrestart ||:
  209. fi
  210. fi
  211. %endif
  212. %files
  213. %{!?_licensedir:%global license %%doc}
  214. %license COPYING
  215. %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
  216. %dir %{_sysconfdir}/%{name}
  217. %attr(0640, redis, root) %config(noreplace) %{_sysconfdir}/%{name}/%{name}.conf
  218. %attr(0640, redis, root) %config(noreplace) %{_sysconfdir}/%{name}/%{name}-sentinel.conf
  219. %dir %attr(0750, redis, redis) %{_libdir}/%{name}
  220. %dir %attr(0750, redis, redis) %{redis_modules_dir}
  221. %dir %attr(0750, redis, redis) %{_sharedstatedir}/%{name}
  222. %dir %attr(0750, redis, redis) %{_localstatedir}/log/%{name}
  223. %exclude %{macrosdir}
  224. %exclude %{_includedir}
  225. %exclude %{_docdir}/%{name}/*
  226. %{_bindir}/%{name}-*
  227. %{_libexecdir}/%{name}-*
  228. %{_mandir}/man1/%{name}*
  229. %{_mandir}/man5/%{name}*
  230. %if %{with systemd}
  231. %{_unitdir}/%{name}.service
  232. %{_unitdir}/%{name}-sentinel.service
  233. %dir %{_sysconfdir}/systemd/system/%{name}.service.d
  234. %config(noreplace) %{_sysconfdir}/systemd/system/%{name}.service.d/limit.conf
  235. %dir %{_sysconfdir}/systemd/system/%{name}-sentinel.service.d
  236. %config(noreplace) %{_sysconfdir}/systemd/system/%{name}-sentinel.service.d/limit.conf
  237. %else
  238. %{_initdir}/*
  239. %endif
  240. %dir %attr(0755, redis, redis) %{_localstatedir}/run/%{name}
  241. %files devel
  242. %license COPYING
  243. %license COPYRIGHT-lua
  244. %license COPYING-hiredis
  245. %{_includedir}/%{name}module.h
  246. %{macrosdir}/*
  247. %files doc
  248. %docdir %{_docdir}/%{name}
  249. %{_docdir}/%{name}
  250. %changelog
  251. * Tue May 18 2021 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 6.2.3-1
  252. - new upstream release.
  253. * Tue Mar 09 2021 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 6.2.1-1
  254. - new upstream release.
  255. - dropped Patch0002: fixed in upstream.
  256. * Sat Dec 19 2020 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 6.0.9-1
  257. - new upstream release.
  258. * Thu Jul 02 2020 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 6.0.5-1
  259. - new upstream release.
  260. * Fri Apr 10 2020 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 5.0.8-1
  261. - new upstream release.
  262. * Sun Sep 08 2019 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> 5.0.5-1
  263. - new upstream release.
  264. * Mon Mar 11 2013 Daisuke SUZUKI <daisuke@linux.or.jp> 2.6.10-1
  265. - update to 2.6.10
  266. * Sat Oct 27 2012 Daisuke SUZUKI <daisuke@linux.or.jp> 2.4.15-1
  267. - initial build for Vine Linux
  268. * Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.4.15-3
  269. - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
  270. * Sun Jul 08 2012 Silas Sewell <silas@sewell.org> - 2.4.15-2
  271. - Remove TODO from docs
  272. * Sun Jul 08 2012 Silas Sewell <silas@sewell.org> - 2.4.15-1
  273. - Update to redis 2.4.15
  274. * Sat May 19 2012 Silas Sewell <silas@sewell.org> - 2.4.13-1
  275. - Update to redis 2.4.13
  276. * Sat Mar 31 2012 Silas Sewell <silas@sewell.org> - 2.4.10-1
  277. - Update to redis 2.4.10
  278. * Fri Feb 24 2012 Silas Sewell <silas@sewell.org> - 2.4.8-1
  279. - Update to redis 2.4.8
  280. * Sat Feb 04 2012 Silas Sewell <silas@sewell.org> - 2.4.7-1
  281. - Update to redis 2.4.7
  282. * Wed Feb 01 2012 Fabian Deutsch <fabiand@fedoraproject.org> - 2.4.6-4
  283. - Fixed a typo in the spec
  284. * Tue Jan 31 2012 Fabian Deutsch <fabiand@fedoraproject.org> - 2.4.6-3
  285. - Fix .service file, to match config (Type=simple).
  286. * Tue Jan 31 2012 Fabian Deutsch <fabiand@fedoraproject.org> - 2.4.6-2
  287. - Fix .service file, credits go to Timon.
  288. * Thu Jan 12 2012 Fabian Deutsch <fabiand@fedoraproject.org> - 2.4.6-1
  289. - Update to 2.4.6
  290. - systemd unit file added
  291. - Compiler flags changed to compile 2.4.6
  292. - Remove doc/ and Changelog
  293. * Sun Jul 24 2011 Silas Sewell <silas@sewell.org> - 2.2.12-1
  294. - Update to redis 2.2.12
  295. * Fri May 06 2011 Dan Horák <dan[at]danny.cz> - 2.2.5-2
  296. - google-perftools exists only on selected architectures
  297. * Sat Apr 23 2011 Silas Sewell <silas@sewell.ch> - 2.2.5-1
  298. - Update to redis 2.2.5
  299. * Sat Mar 26 2011 Silas Sewell <silas@sewell.ch> - 2.2.2-1
  300. - Update to redis 2.2.2
  301. * Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.0.4-2
  302. - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
  303. * Sun Dec 19 2010 Silas Sewell <silas@sewell.ch> - 2.0.4-1
  304. - Update to redis 2.0.4
  305. * Tue Oct 19 2010 Silas Sewell <silas@sewell.ch> - 2.0.3-1
  306. - Update to redis 2.0.3
  307. * Fri Oct 08 2010 Silas Sewell <silas@sewell.ch> - 2.0.2-1
  308. - Update to redis 2.0.2
  309. - Disable checks section for el5
  310. * Sat Sep 11 2010 Silas Sewell <silas@sewell.ch> - 2.0.1-1
  311. - Update to redis 2.0.1
  312. * Sat Sep 04 2010 Silas Sewell <silas@sewell.ch> - 2.0.0-1
  313. - Update to redis 2.0.0
  314. * Thu Sep 02 2010 Silas Sewell <silas@sewell.ch> - 1.2.6-3
  315. - Add Fedora build flags
  316. - Send all scriplet output to /dev/null
  317. - Remove debugging flags
  318. - Add redis.conf check to init script
  319. * Mon Aug 16 2010 Silas Sewell <silas@sewell.ch> - 1.2.6-2
  320. - Don't compress man pages
  321. - Use patch to fix redis.conf
  322. * Tue Jul 06 2010 Silas Sewell <silas@sewell.ch> - 1.2.6-1
  323. - Initial package