The package rpms/redict.git has added or updated architecture specific content in its spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s): https://src.fedoraproject.org/cgit/rpms/redict.git/commit/?id=136d65d0309149....
Change: +%ifarch ppc64 ppc64le aarch64
Thanks.
Full change: ============
commit 136d65d03091494cb96885af8a4eaf267dda39d7 Author: Jonathan Wright jonathan@almalinux.org Date: Wed Mar 27 11:54:11 2024 -0500
initial commit
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..83c4fda --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/redict.tar.gz +/redict-7.3.0~rc1.tar.gz diff --git a/macros.redict b/macros.redict new file mode 100644 index 0000000..22ed39d --- /dev/null +++ b/macros.redict @@ -0,0 +1,2 @@ +%redict_modules_abi 1 +%redict_modules_dir %{_libdir}/redict/modules diff --git a/redict-limit-systemd b/redict-limit-systemd new file mode 100644 index 0000000..a792937 --- /dev/null +++ b/redict-limit-systemd @@ -0,0 +1,14 @@ +# If you need to change max open file limit +# for example, when you change maxclient in configuration +# you can change the LimitNOFILE value below. +# See "man systemd.exec" for more information. + +# Slave nodes on large system may take lot of time to start. +# You may need to uncomment TimeoutStartSec and TimeoutStopSec +# directives below and raise their value. +# See "man systemd.service" for more information. + +[Service] +LimitNOFILE=10240 +#TimeoutStartSec=90s +#TimeoutStopSec=90s diff --git a/redict-sentinel.service b/redict-sentinel.service new file mode 100644 index 0000000..07ac077 --- /dev/null +++ b/redict-sentinel.service @@ -0,0 +1,18 @@ +[Unit] +Description=Redict Sentinel +After=network.target +After=network-online.target +Wants=network-online.target + +[Service] +EnvironmentFile=-/etc/sysconfig/redict-sentinel +ExecStart=/usr/bin/redict-sentinel /etc/redict/sentinel.conf --daemonize no --supervised systemd $OPTIONS +Type=notify +User=redict +Group=redict +RuntimeDirectory=redict +RuntimeDirectoryMode=0755 + +[Install] +WantedBy=multi-user.target + diff --git a/redict-sentinel.sysconfig b/redict-sentinel.sysconfig new file mode 100644 index 0000000..1003851 --- /dev/null +++ b/redict-sentinel.sysconfig @@ -0,0 +1 @@ +OPTIONS="--logfile /var/log/redict/sentinel.log --unixsocket /var/run/redict/sentinel.sock --pidfile /var/run/redict/sentinel.pid" diff --git a/redict.logrotate b/redict.logrotate new file mode 100644 index 0000000..9549dca --- /dev/null +++ b/redict.logrotate @@ -0,0 +1,9 @@ +/var/log/redict/*.log { + weekly + rotate 10 + copytruncate + delaycompress + compress + notifempty + missingok +} diff --git a/redict.service b/redict.service new file mode 100644 index 0000000..5d80d33 --- /dev/null +++ b/redict.service @@ -0,0 +1,18 @@ +[Unit] +Description=Redict persistent key-value database +After=network.target +After=network-online.target +Wants=network-online.target + +[Service] +EnvironmentFile=-/etc/sysconfig/redict +ExecStart=/usr/bin/redict-server /etc/redict/redict.conf --daemonize no --supervised systemd $OPTIONS +Type=notify +User=redict +Group=redict +RuntimeDirectory=redict +RuntimeDirectoryMode=0755 + +[Install] +WantedBy=multi-user.target + diff --git a/redict.spec b/redict.spec new file mode 100644 index 0000000..ccbd0e0 --- /dev/null +++ b/redict.spec @@ -0,0 +1,230 @@ +# Tests fail in mock, not in local build. +%bcond_without tests + +Name: redict +Version: 7.3.0~rc1 +Release: 1%{?dist} +Summary: A persistent key-value database +# redict: LGPL-3.0-only +# hiredict: BSD-3-Clause +# hdrhistogram, jemalloc, lzf, linenoise: BSD-2-Clause +# lua: MIT +# fpconv: BSL-1.0 +License: BSD-3-Clause AND BSD-2-Clause AND MIT AND BSL-1.0 AND LGPL-3.0-only AND LGPL-3.0-or-later +URL: https://redict.io +Source0: https://codeberg.org/redict/redict/archive/%%7Bversion_no_tilde%7D.tar.gz#/%... +Source1: %{name}.logrotate +Source2: %{name}-sentinel.service +Source3: %{name}.service +Source4: %{name}.sysusers +# could have pulled this out of unpacked sources but +# our copy has additional options pre-programmed in +Source5: %{name}-limit-systemd +Source6: %{name}.sysconfig +Source7: %{name}-sentinel.sysconfig +Source8: macros.%{name} + +BuildRequires: make +BuildRequires: gcc +%if %{with tests} +BuildRequires: procps-ng +BuildRequires: tcl +%endif +BuildRequires: pkgconfig(libsystemd) +BuildRequires: systemd-devel +BuildRequires: systemd-rpm-macros +BuildRequires: openssl-devel +Requires: logrotate +Requires(pre): shadow-utils +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd +# from deps/hiredict/hiredict.h +Provides: bundled(hiredict) = 1.0.3 +# from deps/jemalloc/VERSION +Provides: bundled(jemalloc) = 5.3.0 +# from deps/lua/src/lua.h +Provides: bundled(lua-libs) = 5.1.5 +# from deps/linenoise/linenoise.h +Provides: bundled(linenoise) = 1.0 +Provides: bundled(lzf) +# from deps/hdr_histogram/README.md +Provides: bundled(hdr_histogram) = 0.11.0 +# no version +Provides: bundled(fpconv) + +%global redict_modules_abi 1 +%global redict_modules_dir %{_libdir}/%{name}/modules +Provides: redict(modules_abi)%{?_isa} = %{redict_modules_abi} + +ExcludeArch: %{ix86} + +%description +Redict is an advanced key-value store. It is often referred to as a data +structure server since keys can contain strings, hashes, lists, sets and +sorted sets. + +You can run atomic operations on these types, like appending to a string; +incrementing the value in a hash; pushing to a list; computing set +intersection, union and difference; or getting the member with highest +ranking in a sorted set. + +In order to achieve its outstanding performance, Redict works with an +in-memory dataset. Depending on your use case, you can persist it either +by dumping the dataset to disk every once in a while, or by appending +each command to a log. + +Redict also supports trivial-to-setup master-slave replication, with very +fast non-blocking first synchronization, auto-reconnection on net split +and so forth. + +Other features include Transactions, Pub/Sub, Lua scripting, Keys with a +limited time-to-live, and configuration settings to make Redict behave like +a cache. + +You can use Redict from most programming languages also. + +%package devel +Summary: Development header for Redict module development +# Header-Only Library (https://fedoraproject.org/wiki/Packaging:Guidelines) +Provides: %{name}-static = %{version}-%{release} + +%description devel +Header file required for building loadable Redict modules. + +%prep +%autosetup -n %{name} -p1 + +mv deps/lua/COPYRIGHT COPYRIGHT-lua +mv deps/jemalloc/COPYING COPYING-jemalloc +mv deps/hiredict/LICENSES/BSD-3-Clause.txt COPYING-hiredict-BSD-3-Clause +mv deps/hdr_histogram/LICENSE.txt LICENSE-hdrhistogram +mv deps/hdr_histogram/COPYING.txt COPYING-hdrhistogram +mv deps/fpconv/LICENSE.txt LICENSE-fpconv + +# See https://bugzilla.redhat.com/2240293 +# See https://src.fedoraproject.org/rpms/jemalloc/blob/rawhide/f/jemalloc.spec#_34 +%ifarch %ix86 %arm x86_64 s390x +sed -e 's/--with-lg-quantum/--with-lg-page=12 --with-lg-quantum/' -i deps/Makefile +%endif +%ifarch ppc64 ppc64le aarch64 +sed -e 's/--with-lg-quantum/--with-lg-page=16 --with-lg-quantum/' -i deps/Makefile +%endif + +# Module API version safety check +api=`sed -n -e 's/#define REDICTMODULE_APIVER_[0-9][0-9]* //p' src/redictmodule.h` +if test "$api" != "%{redict_modules_abi}"; then + : Error: Upstream API version is now ${api}, expecting %%{redict_modules_abi}. + : Update the redict_modules_abi macro, the rpmmacros file, and rebuild. + exit 1 +fi + +%global make_flags DEBUG="" V="echo" PREFIX=%{_prefix} BUILD_WITH_SYSTEMD=yes BUILD_TLS=yes + +%build +%make_build %{make_flags} + +%install +%make_install %{make_flags} + +#System user +install -p -D -m 0644 %{S:4} %{buildroot}%{_sysusersdir}/%{name}.conf + +# Filesystem. +install -d %{buildroot}%{_sharedstatedir}/%{name} +install -d %{buildroot}%{_localstatedir}/log/%{name} +install -d %{buildroot}%{_localstatedir}/run/%{name} +install -d %{buildroot}%{redict_modules_dir} + +# Install logrotate file. +install -pDm644 %{S:1} %{buildroot}%{_sysconfdir}/logrotate.d/%{name} + +# Install configuration files. +install -pDm640 %{name}.conf %{buildroot}%{_sysconfdir}/%{name}/%{name}.conf +install -pDm640 sentinel.conf %{buildroot}%{_sysconfdir}/%{name}/sentinel.conf + +# Install systemd unit files. +mkdir -p %{buildroot}%{_unitdir} +install -pm644 %{S:3} %{buildroot}%{_unitdir} +install -pm644 %{S:2} %{buildroot}%{_unitdir} + +# Install systemd limit files +install -p -D -m 644 %{S:5} %{buildroot}%{_unitdir}/%{name}.service.d/limit.conf +install -p -D -m 644 %{S:5} %{buildroot}%{_unitdir}/%{name}-sentinel.service.d/limit.conf + +# Fix non-standard-executable-perm error. +chmod 755 %{buildroot}%{_bindir}/%{name}-* + +# Install redict module header +install -pDm644 src/%{name}module.h %{buildroot}%{_includedir}/%{name}module.h + +# Install rpm macros for redict modules +#mkdir -p %{buildroot}%{_rpmmacrodir} +install -pDm644 %{S:8} %{buildroot}%{_rpmmacrodir}/macros.%{name} + +# Install sysconfig files +install -Dpm 644 %{S:6} %{buildroot}%{_sysconfdir}/sysconfig/%{name} +install -Dpm 644 %{S:7} %{buildroot}%{_sysconfdir}/sysconfig/%{name}-sentinel + +%check +%if %{with tests} +# https://github.com/redis/redis/issues/1417 (for "taskset -c 1") +taskset -c 1 make %{make_flags} test +make %{make_flags} test-sentinel +%endif + +%pre +%sysusers_create_compat %{S:4} + + +%post +%systemd_post %{name}.service +%systemd_post %{name}-sentinel.service + +%preun +%systemd_preun %{name}.service +%systemd_preun %{name}-sentinel.service + +%postun +%systemd_postun_with_restart %{name}.service +%systemd_postun_with_restart %{name}-sentinel.service + +%files +%license LICENSES/LGPL-3.0-only.txt +%license COPYRIGHT-lua +%license COPYING-jemalloc +%license LICENSE-hdrhistogram +%license COPYING-hdrhistogram +%license LICENSE-fpconv +%license COPYING-hiredict-BSD-3-Clause +%config(noreplace) %{_sysconfdir}/logrotate.d/%{name} +%attr(0750, redict, root) %dir %{_sysconfdir}/%{name} +%attr(0640, redict, root) %config(noreplace) %{_sysconfdir}/%{name}/%{name}.conf +%attr(0640, redict, root) %config(noreplace) %{_sysconfdir}/%{name}/sentinel.conf +%dir %{_libdir}/%{name} +%dir %{redict_modules_dir} +%dir %attr(0750, redict, redict) %{_sharedstatedir}/%{name} +%dir %attr(0750, redict, redict) %{_localstatedir}/log/%{name} +%{_bindir}/%{name}-* +%{_unitdir}/%{name}.service +%{_unitdir}/%{name}-sentinel.service +%dir %{_unitdir}/%{name}.service.d +%{_unitdir}/%{name}.service.d/limit.conf +%dir %{_unitdir}/%{name}-sentinel.service.d +%{_unitdir}/%{name}-sentinel.service.d/limit.conf +%dir %attr(0755, redict, redict) %ghost %{_localstatedir}/run/%{name} +%{_sysusersdir}/%{name}.conf +%config(noreplace) %{_sysconfdir}/sysconfig/%{name} +%config(noreplace) %{_sysconfdir}/sysconfig/%{name}-sentinel + + +%files devel +# main package is not required +%license LICENSES/BSD-3-Clause.txt +%{_includedir}/%{name}module.h +%{_rpmmacrodir}/macros.%{name} + + +%changelog +* Sun Mar 24 2024 Jonathan Wright jonathan@almalinux.org - 7.3.0~rc1-1 +- Initial package build, release candidate diff --git a/redict.sysconfig b/redict.sysconfig new file mode 100644 index 0000000..6f95793 --- /dev/null +++ b/redict.sysconfig @@ -0,0 +1 @@ +OPTIONS="--logfile /var/log/redict/redict.log --dir /var/lib/redict --unixsocket /var/run/redict/redict.sock --pidfile /var/run/redict/redict.pid" diff --git a/redict.sysusers b/redict.sysusers new file mode 100644 index 0000000..8c820f9 --- /dev/null +++ b/redict.sysusers @@ -0,0 +1 @@ +u redict - "Redict Database Server" /dev/null /sbin/nologin diff --git a/sources b/sources new file mode 100644 index 0000000..a3d472c --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (redict-7.3.0~rc1.tar.gz) = f3c7e038cba4b1ed2632282d93eaf5f59695745508873f77b4c6349760f8ee279adfd30081d7e6703e249eb71e2bf8484aaaa4a6b5a08be3784702ac920f6e9b
arch-excludes@lists.fedoraproject.org