diff --git a/.gitignore b/.gitignore index 742d868..a812f1f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,3 @@ -*.rpm /sheepdog-0.2.3.tar.gz /sheepdog-0.2.4.tar.gz /collie-sheepdog-v0.3.0-0-gbb41896.tar.gz -/v1.0.1.tar.gz diff --git a/sha1-extern.patch b/sha1-extern.patch deleted file mode 100644 index 388793c..0000000 --- a/sha1-extern.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/include/sha1.h b/include/sha1.h -index e026998..bd45181 100644 ---- a/include/sha1.h -+++ b/include/sha1.h -@@ -27,9 +27,9 @@ typedef void (*sha1_init_func_t)(void *); - typedef void (*sha1_update_func_t)(void *, const uint8_t *, unsigned int); - typedef void (*sha1_final_func_t)(void *, uint8_t *); - --sha1_init_func_t sha1_init; --sha1_update_func_t sha1_update; --sha1_final_func_t sha1_final; -+extern sha1_init_func_t sha1_init; -+extern sha1_update_func_t sha1_update; -+extern sha1_final_func_t sha1_final; - - const char *sha1_to_hex(const unsigned char *sha1); - void get_buffer_sha1(unsigned char *buf, unsigned len, unsigned char *sha1); diff --git a/sheepdog b/sheepdog deleted file mode 100644 index ddd3bac..0000000 --- a/sheepdog +++ /dev/null @@ -1,11 +0,0 @@ -# use stdout for journal; other possibilities include "default" and "syslog" -SHEEPDOG_LOGDEST=stdout -SHEEPDOG_LOGLEVEL=info -SHEEPDOG_LOGFMT=default - -SHEEPDOG_PORT=7000 - -# --no-sync, --directio, --gateway, --journal, --wq-threads, ... -SHEEPDOG_EXTRA_OPTS= - -SHEEPDOG_PATH=/var/lib/sheepdog diff --git a/sheepdog.service b/sheepdog.service index 6e55331..c8fd01e 100644 --- a/sheepdog.service +++ b/sheepdog.service @@ -1,18 +1,10 @@ [Unit] Description=Sheepdog QEMU/KVM Block Storage -After=network.target -Requires=corosync.service +After=syslog.target [Service] -EnvironmentFile=/etc/sysconfig/sheepdog -ExecStart=/usr/sbin/sheep -f --log level=${SHEEPDOG_LOGLEVEL},dst=${SHEEPDOG_LOGDEST},format=${SHEEPDOG_LOGFMT} $SHEEPDOG_EXTRA_OPTS ${SHEEPDOG_PATH} -Restart=on-failure -RestartSec=2s -LimitNOFILE=32768 +ExecStart=/usr/sbin/sheep +Type=forking -# Use sheepdog.timer instead. Because corosync does not provide -# notification via sd_notify, we introduce an arbitrary delay between -# starting corosync.service and starting sheepdog. - -#[Install] -#WantedBy=multi-user.target +[Install] +WantedBy=multi-user.target diff --git a/sheepdog.spec b/sheepdog.spec index bec8630..edad9bb 100644 --- a/sheepdog.spec +++ b/sheepdog.spec @@ -1,252 +1,104 @@ Name: sheepdog -Summary: The Sheepdog distributed storage system for KVM/QEMU -Version: 1.0.1 -Release: 27%{?dist} -# Automatically converted from old format: GPLv2 and GPLv2+ - review is highly recommended. -License: GPL-2.0-only AND GPL-2.0-or-later -URL: http://sheepdog.github.io/sheepdog -Source0: https://github.com/sheepdog/sheepdog/archive/v1.0.1.tar.gz +Summary: The Sheepdog Distributed Storage System for KVM/QEMU +Version: 0.3.0 +Release: 2%{?dist} +License: GPLv2 and GPLv2+ +Group: System Environment/Base +URL: http://www.osrg.net/sheepdog +Source0: collie-sheepdog-v0.3.0-0-gbb41896.tar.gz +#get source from github here https://github.com/collie/sheepdog/tarball/v0.3.0 Source1: sheepdog.service -Source2: sheepdog.timer -Source3: sheepdog +Patch0: update_cpg_to_cs_defines.patch -Patch0: sha1-extern.patch - -%{?systemd_requires} +# Runtime bits +Requires: corosync +Requires(post): chkconfig +Requires(preun): chkconfig +Requires(preun): initscripts +Requires(post): systemd-units +Requires(preun): systemd-units +Requires(postun): systemd-units +Requires(post): systemd-sysv # Build bits -BuildRequires: make -BuildRequires: autoconf automake libtool systemd +BuildRequires: autoconf automake systemd-units BuildRequires: corosync corosynclib corosynclib-devel -BuildRequires: userspace-rcu-devel -# For sheepfs -BuildRequires: fuse-devel +BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) -%ifarch x86_64 -BuildRequires: yasm -%endif - -# corosync not available on these architectures %if 0%{?rhel} >= 6 -Excludearch: aarch64 Excludearch: ppc Excludearch: ppc64 -Excludearch: ppc64le %endif + + %description -This package contains the Sheepdog server and the "dog" command line tool, -which offer a distributed object storage system for KVM. - -%package devel -Summary: Header files for the Sheepdog distributed storage system -# Automatically converted from old format: GPLv2 and GPLv2+ - review is highly recommended. -License: GPL-2.0-only AND GPL-2.0-or-later -Requires: %{name}-libs%{?_isa} = %{version}-%{release} - -%description devel -This package contains the header files for libsheepdog. - -%package libs -Summary: Libraries for the Sheepdog distributed storage system -# Automatically converted from old format: GPLv2 and GPLv2+ - review is highly recommended. -License: GPL-2.0-only AND GPL-2.0-or-later - -%description libs -This package contains the libsheepdog shared library. +This package contains the Sheepdog server, and command line tool which offer +a distributed object storage system for KVM. %prep -%setup -q -%patch -P0 -p1 - -# urcu/compiler.h from userspace-rcu-devel requires __STDC_VERSION__ 201112L -sed -r -i 's/-std=gnu99/-std=gnu23/' configure.ac +%setup -qn collie-sheepdog-bb41896 +%patch0 -p1 %build ./autogen.sh +%{configure} --with-initddir=%{_initrddir} -# TODO: add LTTng-ust support -%{configure} \ - --without-initddir \ - --without-systemdsystemunitdir \ - --disable-static - -make %{_smp_mflags} V=1 - +make %{_smp_mflags} %install rm -rf %{buildroot} make install DESTDIR=%{buildroot} -rm -f %{buildroot}/%{_libdir}/libsheepdog.la -rm -f %{buildroot}/%{_libdir}/libsheepdog.a - mkdir -p %{buildroot}/%{_unitdir} cp -a %{SOURCE1} %{buildroot}/%{_unitdir}/ -cp -a %{SOURCE2} %{buildroot}/%{_unitdir}/ - -mkdir -p %{buildroot}/%{_sysconfdir}/sysconfig -cp -a %{SOURCE3} %{buildroot}/%{_sysconfdir}/sysconfig +## tree fixup +# drop static libs +rm -f %{buildroot}%{_libdir}/*.a +rm -f %{buildroot}%{_initddir}/sheepdog +%clean +rm -rf %{buildroot} %post -%systemd_post sheepdog.timer +if [ $1 -eq 1 ] ; then + # Initial installation + /bin/systemctl daemon-reload >/dev/null 2>&1 || : +fi %preun -%systemd_preun sheepdog.timer +if [ $1 -eq 0 ] ; then + # Package removal, not upgrade + /bin/systemctl --no-reload disable sheepdog.service > /dev/null 2>&1 || : + /bin/systemctl stop sheepdog.service > /dev/null 2>&1 || : +fi %postun -%systemd_postun_with_restart sheepdog.timer +%triggerun -- sheepdog < 0.2.4-2 +/usr/bin/systemd-sysv-convert --save httpd >/dev/null 2>&1 ||: +/sbin/chkconfig --del httpd >/dev/null 2>&1 || : +/bin/systemctl try-restart sheepdog.service >/dev/null 2>&1 || : +/bin/systemctl daemon-reload >/dev/null 2>&1 || : +if [ $1 -ge 1 ] ; then + # Package upgrade, not uninstall + /bin/systemctl try-restart sheepdog.service >/dev/null 2>&1 || : +fi %files -%doc COPYING README -%{_bindir}/dog +%defattr(-,root,root,-) +%doc COPYING README INSTALL %{_sbindir}/sheep -%{_sbindir}/sheepfs -%{_sbindir}/shepherd -%{_sysconfdir}/bash_completion.d/dog - +%{_sbindir}/collie +#%attr(755,-,-)%config %{_initddir}/sheepdog %{_unitdir}/sheepdog.service -%{_unitdir}/sheepdog.timer -%config %{_sysconfdir}/sysconfig/sheepdog - %dir %{_localstatedir}/lib/sheepdog %{_mandir}/man8/sheep.8* -%{_mandir}/man8/dog.8* -%{_mandir}/man8/sheepfs.8* - -%files devel -%dir %{_includedir}/sheepdog -%{_includedir}/sheepdog/internal.h -%{_includedir}/sheepdog/list.h -%{_includedir}/sheepdog/sheepdog.h -%{_includedir}/sheepdog/sheepdog_proto.h -%{_includedir}/sheepdog/util.h - -%files libs -%{_libdir}/libsheepdog.so %changelog -* Fri Jul 17 2026 Fedora Release Engineering - 1.0.1-27 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild - -* Sat Jan 17 2026 Fedora Release Engineering - 1.0.1-26 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild - -* Fri Jul 25 2025 Fedora Release Engineering - 1.0.1-25 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Sun Jan 19 2025 Fedora Release Engineering - 1.0.1-24 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Wed Aug 07 2024 Miroslav Suchý - 1.0.1-23 -- convert license to SPDX - -* Sat Jul 20 2024 Fedora Release Engineering - 1.0.1-22 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Sat Jan 27 2024 Fedora Release Engineering - 1.0.1-21 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sat Jul 22 2023 Fedora Release Engineering - 1.0.1-20 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Sat Jan 21 2023 Fedora Release Engineering - 1.0.1-19 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Sat Jul 23 2022 Fedora Release Engineering - 1.0.1-18 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Sat Jan 22 2022 Fedora Release Engineering - 1.0.1-17 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Fri Jul 23 2021 Fedora Release Engineering - 1.0.1-16 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 1.0.1-15 -- Rebuilt for updated systemd-rpm-macros - See https://pagure.io/fesco/issue/2583. - -* Wed Jan 27 2021 Fedora Release Engineering - 1.0.1-14 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Wed Jul 29 2020 Fedora Release Engineering - 1.0.1-13 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Mon Mar 30 2020 Paolo Bonzini - 1.0.1-12 -- New patch sha1-extern.patch to fix FTBFS -- Delete obsolete patches - -* Thu Jan 30 2020 Fedora Release Engineering - 1.0.1-11 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Fri Jul 26 2019 Fedora Release Engineering - 1.0.1-10 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Sat Feb 02 2019 Fedora Release Engineering - 1.0.1-9 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Sat Jul 14 2018 Fedora Release Engineering - 1.0.1-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Thu Mar 22 2018 Kevin Fenzi - 1.0.1-7 -- Rebuild for new corosync. Fixes bug #1559672 - -* Fri Feb 09 2018 Fedora Release Engineering - 1.0.1-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Thu Aug 03 2017 Fedora Release Engineering - 1.0.1-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Thu Jul 27 2017 Fedora Release Engineering - 1.0.1-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Sat Feb 11 2017 Fedora Release Engineering - 1.0.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Mon Jan 09 2017 Paolo Bonzini - 1.0.1-2 -- Introduce sheepdog.timer -- For EPEL7, disable on aarch64 - -* Mon Jan 09 2017 Paolo Bonzini - 1.0.1-1 -- Update to 1.0.1 (Resolves: #1396430) -- /usr/bin/collie is now /usr/bin/dog -- Added /usr/sbin/sheepfs and /usr/sbin/shepherd -- Revamped systemd spec file, added /etc/sysconfig/sheepdog - -* Thu Feb 04 2016 Fedora Release Engineering - 0.3.0-11 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Fri Jun 19 2015 Fedora Release Engineering - 0.3.0-10 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Thu Aug 21 2014 Kevin Fenzi - 0.3.0-9 -- Rebuild for rpm bug 1131960 - -* Mon Aug 18 2014 Fedora Release Engineering - 0.3.0-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Sun Jun 08 2014 Fedora Release Engineering - 0.3.0-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Sat Dec 21 2013 Ville Skyttä - 0.3.0-6 -- Drop empty %%postun script. -- Drop INSTALL from docs. -- Fix bogus date in %%changelog. - -* Sun Aug 04 2013 Fedora Release Engineering - 0.3.0-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild - -* Thu Feb 14 2013 Fedora Release Engineering - 0.3.0-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild - -* Sat Jul 21 2012 Fedora Release Engineering - 0.3.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - * Fri Mar 16 2012 Fabio M. Di Nitto - 0.3.0-2 - Rebuild against new corosync (soname change). - Add patch to fix build against new corosync headers. -* Thu Jan 12 2012 David Nalley - 0.3.0-1 +* Wed Jan 15 2012 David Nalley - 0.3.0-1 - updating to 0.3.0 * Thu Nov 24 2011 David Nalley - 0.2.4-2 diff --git a/sheepdog.timer b/sheepdog.timer deleted file mode 100644 index 7ee0cc2..0000000 --- a/sheepdog.timer +++ /dev/null @@ -1,12 +0,0 @@ -[Unit] -Description=Sheepdog QEMU/KVM Block Storage -After=network.target -Requires=corosync.service - -[Timer] -OnActiveSec=2s -AccuracySec=100ms -Unit=sheepdog.service - -[Install] -WantedBy=multi-user.target diff --git a/sources b/sources index 14ded64..e6f62d0 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (v1.0.1.tar.gz) = fc8c90f9631a12032e380f7ad559e18859211df65c7b53a1cf4a64fcf5c85fb4e2f08a9fbb9330f0eb6e67e9848a885af10013bba5f8665f0e2864ea8770bcf8 +9b28dad11926ee52cda15a961d9b54fe collie-sheepdog-v0.3.0-0-gbb41896.tar.gz diff --git a/update_cpg_to_cs_defines.patch b/update_cpg_to_cs_defines.patch new file mode 100644 index 0000000..d610f46 --- /dev/null +++ b/update_cpg_to_cs_defines.patch @@ -0,0 +1,61 @@ +diff -Naurd collie-sheepdog-bb41896.orig/sheep/cluster/corosync.c collie-sheepdog-bb41896/sheep/cluster/corosync.c +--- collie-sheepdog-bb41896.orig/sheep/cluster/corosync.c 2011-12-28 18:03:36.000000000 +0100 ++++ collie-sheepdog-bb41896/sheep/cluster/corosync.c 2012-03-16 10:47:39.378340300 +0100 +@@ -196,9 +196,9 @@ + retry: + ret = cpg_mcast_joined(cpg_handle, CPG_TYPE_AGREED, iov, iov_cnt); + switch (ret) { +- case CPG_OK: ++ case CS_OK: + break; +- case CPG_ERR_TRY_AGAIN: ++ case CS_ERR_TRY_AGAIN: + dprintf("failed to send message: retrying\n"); + sleep(1); + goto retry; +@@ -632,7 +632,7 @@ + corosync_handlers = *handlers; + + ret = cpg_initialize(&cpg_handle, &cb); +- if (ret != CPG_OK) { ++ if (ret != CS_OK) { + eprintf("failed to initialize cpg (%d) - is corosync running?\n", ret); + return -1; + } +@@ -659,7 +659,7 @@ + this_node.pid = getpid(); + + ret = cpg_fd_get(cpg_handle, &fd); +- if (ret != CPG_OK) { ++ if (ret != CS_OK) { + eprintf("failed to get cpg file descriptor (%d)\n", ret); + return -1; + } +@@ -681,13 +681,13 @@ + retry: + ret = cpg_join(cpg_handle, &cpg_group); + switch (ret) { +- case CPG_OK: ++ case CS_OK: + break; +- case CPG_ERR_TRY_AGAIN: ++ case CS_ERR_TRY_AGAIN: + dprintf("failed to join the sheepdog group: retrying\n"); + sleep(1); + goto retry; +- case CPG_ERR_SECURITY: ++ case CS_ERR_SECURITY: + eprintf("permission denied to join the sheepdog group\n"); + return -1; + default: +@@ -740,8 +740,8 @@ + { + int ret; + +- ret = cpg_dispatch(cpg_handle, CPG_DISPATCH_ALL); +- if (ret != CPG_OK) ++ ret = cpg_dispatch(cpg_handle, CS_DISPATCH_ALL); ++ if (ret != CS_OK) + return -1; + + return 0;