redis-vl.spec 14 KB

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