Blob Blame History Raw
%global cpan_name MogileFS-Server
Name:       perl-%{cpan_name}
Version:    2.73
Release:    4%{?dist}
Summary:    Server part of the MogileFS distributed file system
# LICENSE:      GPL+ or Artistic
# mogautomount: GPL+ or Artistic
# mogstored:    "Same terms as Perl itself.  Artistic/GPLv2, at your choosing"
# mogilefsd:    "Same terms as Perl itself.  Artistic/GPLv2, at your choosing"
# There are two readings of the "Same terms as Perl itself.  Artistic/GPLv2,
# at your choosing":
#   (GPL+ or Artistic) and (GPLv2 or Artistic)
#   (GPL+ or Artistic) or (GPLv2 or Artistic)
# Author clarified that he wants "(GPL+ or Artistic)". The "GPLv2" was a mistake.
# MogileFS-Server-license_clarification:        GPL+ or Artistic
License:    GPL+ or Artistic
Group:      System Environment/Daemons
URL:        https://metacpan.org/release/%{cpan_name}
Source0:    https://cpan.metacpan.org/authors/id/D/DO/DORMANDO/%{cpan_name}-%{version}.tar.gz
Source1:    mogilefsd.service
Source2:    mogstored.service
Source3:    mogilefsd.conf
Source4:    mogstored
Source5:    README.mogilefsd
Source6:    README.mogstored
# License clarification from the author
Source7:    MogileFS-Server-license_clarification
# To be able to split back-ends
Patch0:     %{cpan_name}-2.67-Load-only-selected-Mogstored-HTTPServer-implementati.patch
# Adjust to Apache 2.4
Patch1:     %{cpan_name}-2.67-Apache-2.4-support.patch
BuildArch:  noarch
BuildRequires:  coreutils
BuildRequires:  make
BuildRequires:  perl-interpreter
BuildRequires:  perl-generators
BuildRequires:  perl(ExtUtils::MakeMaker) >= 6.76
BuildRequires:  sed
BuildRequires:  systemd
# Run-time:
BuildRequires:  perl(base)
BuildRequires:  perl(Carp)
BuildRequires:  perl(constant)
BuildRequires:  perl(Danga::Socket) >= 1.56
# DBD::mysql not used
# DBD::Pg not used
BuildRequires:  perl(DBD::SQLite) >= 1.13
BuildRequires:  perl(DBI)
BuildRequires:  perl(Digest)
BuildRequires:  perl(Digest::MD5)
BuildRequires:  perl(Exporter)
# Fcntl not used at tests
BuildRequires:  perl(fields)
BuildRequires:  perl(File::Basename)
BuildRequires:  perl(File::Copy)
BuildRequires:  perl(File::Path)
BuildRequires:  perl(File::Temp)
BuildRequires:  perl(FindBin)
BuildRequires:  perl(Getopt::Long)
BuildRequires:  perl(HTTP::Response)
BuildRequires:  perl(IO::AIO) >= 1.6
BuildRequires:  perl(IO::Handle)
BuildRequires:  perl(IO::Socket)
BuildRequires:  perl(IO::Socket::INET)
BuildRequires:  perl(lib)
BuildRequires:  perl(List::Util)
BuildRequires:  perl(LWP::UserAgent)
BuildRequires:  perl(MIME::Base64)
BuildRequires:  perl(Net::HTTP::NB)
BuildRequires:  perl(Net::Netmask)
BuildRequires:  perl(overload)
# Perlbal 1.79 not used at tests
# Perlbal::Socket not used at tests
# Perlbal::TCPListener not used at tests
BuildRequires:  perl(POSIX)
BuildRequires:  perl(Socket)
BuildRequires:  perl(strict)
BuildRequires:  perl(Symbol)
BuildRequires:  perl(Sys::Hostname)
BuildRequires:  perl(Sys::Syscall) >= 0.22
BuildRequires:  perl(Sys::Syslog)
BuildRequires:  perl(Time::HiRes)
BuildRequires:  perl(vars)
BuildRequires:  perl(warnings)
# Tests:
# net-tools for netstat program
# net-tools not used because t/mogstored-shutdown.t is removed
BuildRequires:  perl(Data::Dumper)
BuildRequires:  perl(HTTP::Request)
BuildRequires:  perl(Test::More) >= 0.88
BuildRequires:  perl(MogileFS::Admin)
BuildRequires:  perl(MogileFS::Client)
BuildRequires:  perl-MogileFS-Utils
Requires:       perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
Provides:       perl-mogilefs-server = %{version}-%{release}
Obsoletes:      perl-mogilefs-server < 2.37

# Filter under-specified dependencies
%global __requires_exclude %{?__requires_exclude:%{__requires_exclude}|}^perl\\((Danga::Socket|Perlbal)\\)$

%description
Server part of the MogileFS distributed file system.


%package -n mogilefsd
Summary:        MogileFS tracker daemon
Group:          System Environment/Daemons
Requires:       perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
Requires:       mogilefsd-storage
Recommends:     mogilefsd-storage-mysql
Requires(pre):      glibc-common
Requires(pre):      shadow-utils
Requires(post):     systemd
Requires(preun):    systemd
Requires(postun):   systemd

%description -n mogilefsd
This is MogileFS tracker daemon. It supports various storages. After selecting
one, you have to install corresponding storage backend (mogilefsd-storage-*
packages), adjust %{_sysconfdir}/mogilefs/mogilefsd.conf, and configure and
start the storage DBMS before the mogilefsd.service.


%package -n mogilefsd-storage-mysql
Summary:        MySQL storage for MogileFS tracker daemon
Group:          System Environment/Daemons
Requires:       perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
Provides:       mogilefsd-storage

%description -n mogilefsd-storage-mysql
%{summary}.


%package -n mogilefsd-storage-postgres
Summary:        PostgreSQL storage for MogileFS tracker daemon
Group:          System Environment/Daemons
Requires:       perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
Provides:       mogilefsd-storage

%description -n mogilefsd-storage-postgres
%{summary}.


%package -n mogilefsd-storage-sqlite
Summary:        SQLite storage for MogileFS tracker daemon
Group:          System Environment/Daemons
Requires:       perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
Provides:       mogilefsd-storage

%description -n mogilefsd-storage-sqlite
%{summary}.


%package -n mogstored
Summary:        MogileFS storage daemon
Group:          System Environment/Daemons
Requires:       perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
Requires:       perl(Mogstored::ChildProcess::DiskUsage)
Requires:       perl(Mogstored::ChildProcess::IOStat)
Requires:       perl(Mogstored::HTTPServer::None)
Requires:       perl(Pod::Usage)
# sysstat for iostat program
Requires:       sysstat
Requires(pre):      glibc-common
Requires(pre):      shadow-utils
Requires(post):     systemd
Requires(preun):    systemd
Requires(postun):   systemd

%description -n mogstored
The MogileFS storage daemon mogstored.


%package -n mogstored-backend-apache
Summary:    Apache back-end for mogstored
Group:      System Environment/Daemons
Requires:   httpd
Requires:   perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))

%description -n mogstored-backend-apache
Apache back-end for mogstored, the MogileFS storage daemon.


%package -n mogstored-backend-lighttpd
Summary:    Lighttpd back-end for mogstored
Group:      System Environment/Daemons
Requires:   lighttpd
Requires:   perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))

%description -n mogstored-backend-lighttpd
Lighttpd back-end for mogstored, the MogileFS storage daemon.


%package -n mogstored-backend-nginx
Summary:    Nginx back-end for mogstored
Group:      System Environment/Daemons
Requires:   nginx
Requires:   perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))

%description -n mogstored-backend-nginx
Nginx back-end for mogstored, the MogileFS storage daemon.


%package -n mogstored-backend-none
Summary:    Back-end which allows mogstored to work with unmanaged DAV servers
Group:      System Environment/Daemons
Requires:   perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))

%description -n mogstored-backend-none
Back-end which allows mogstored to work with unmanaged DAV servers.


%package -n mogstored-backend-perlbal
Summary:    Perlbal back-end for mogstored
Group:      System Environment/Daemons
Requires:   perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
Requires:   perl(IO::AIO) >= 1.6
Requires:   perl(Perlbal) >= 1.79

%description -n mogstored-backend-perlbal
Perlbal back-end for mogstored, the MogileFS storage daemon.


%prep
%setup -q -n %{cpan_name}-%{version}
%patch0 -p1
%patch1 -p1
cp -p %{SOURCE5} %{SOURCE6} %{SOURCE7} .
# Remove test that interfere with system service
rm t/mogstored-shutdown.t
sed -i -e '/^t\/mogstored-shutdown\.t/d' MANIFEST


%build
perl Makefile.PL INSTALLDIRS=vendor NO_PACKLIST=1
make %{?_smp_mflags}


%install
make pure_install DESTDIR=%{buildroot}
%{_fixperms} %{buildroot}/*

install -d -m0755 %{buildroot}%{_unitdir}
install -p -m0644 %{SOURCE1} %{SOURCE2} %{buildroot}%{_unitdir}

install -d -m0755 %{buildroot}%{_sysconfdir}/mogilefs
install -p -m0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/mogilefs

install -d -m0755 %{buildroot}%{_sysconfdir}/sysconfig
install -p -m0644 %{SOURCE4} %{buildroot}%{_sysconfdir}/sysconfig

install -d -m0770 %{buildroot}%{_localstatedir}/mogdata

%check
# SQLite back-end fails in mock. MySQL or PostgreSQL in mock is also no-go.
# make test MOGTEST_DBTYPE=SQLite
# Disabling network tests.
make test


%pre -n mogilefsd
getent group mogilefsd >/dev/null || groupadd -r mogilefsd
getent passwd mogilefsd >/dev/null || \
    useradd -r -g mogilefsd -d / -s /sbin/nologin \
        -c "MogileFS tracker daemon" mogilefsd
exit 0

%post -n mogilefsd
%systemd_post mogilefsd.service

%preun -n mogilefsd
%systemd_preun mogilefsd.service

%postun -n mogilefsd
%systemd_postun_with_restart mogilefsd.service


%pre -n mogstored
getent group mogstored >/dev/null || groupadd -r mogstored
getent passwd mogstored >/dev/null || \
    useradd -r -g mogstored -d / -s /sbin/nologin \
        -c "MogileFS storage daemon" mogstored
exit 0

%post -n mogstored
%systemd_post mogstored.service

%preun -n mogstored
%systemd_preun mogstored.service

%postun -n mogstored
%systemd_postun_with_restart mogstored.service


%files -n mogilefsd
%doc CHANGES doc examples LICENSE MogileFS-Server-license_clarification
%doc TODO README.mogilefsd
%{_bindir}/mogilefsd
%{_bindir}/mogdbsetup
%{_mandir}/man1/mogilefsd.*
%{_mandir}/man3/MogileFS::*.*
%exclude %{_mandir}/man3/MogileFS::Store::*
%{perl_vendorlib}/MogileFS
%exclude %{perl_vendorlib}/MogileFS/Store/*
%dir %{_sysconfdir}/mogilefs
%config(noreplace) %attr(0640,root,mogilefsd) %{_sysconfdir}/mogilefs/mogilefsd.conf
%{_unitdir}/mogilefsd.service

%files -n mogilefsd-storage-mysql
%{_mandir}/man3/MogileFS::Store::MySQL.*
%{perl_vendorlib}/MogileFS/Store/MySQL.pm

%files -n mogilefsd-storage-postgres
%{_mandir}/man3/MogileFS::Store::Postgres.*
%{perl_vendorlib}/MogileFS/Store/Postgres.pm

%files -n mogilefsd-storage-sqlite
%{_mandir}/man3/MogileFS::Store::SQLite.*
%{perl_vendorlib}/MogileFS/Store/SQLite.pm

%files -n mogstored
%doc LICENSE MogileFS-Server-license_clarification README.mogstored
%{_bindir}/mogstored
%{_bindir}/mogautomount
%{_mandir}/man1/mogstored.*
%{_mandir}/man1/mogautomount.*
%dir %{perl_vendorlib}/Mogstored
%{perl_vendorlib}/Mogstored/ChildProcess*
%{perl_vendorlib}/Mogstored/FIDStatter.pm
%{perl_vendorlib}/Mogstored/HTTPServer.pm
%{perl_vendorlib}/Mogstored/SideChannel*
%{perl_vendorlib}/Mogstored/TaskQueue.pm
%config(noreplace) %{_sysconfdir}/sysconfig/mogstored
%{_unitdir}/mogstored.service
%dir %attr(-,mogstored,mogstored) %{_localstatedir}/mogdata

%files -n mogstored-backend-apache
%{perl_vendorlib}/Mogstored/HTTPServer/Apache.pm

%files -n mogstored-backend-lighttpd
%{perl_vendorlib}/Mogstored/HTTPServer/Lighttpd.pm

%files -n mogstored-backend-nginx
%{perl_vendorlib}/Mogstored/HTTPServer/Nginx.pm

%files -n mogstored-backend-none
%{perl_vendorlib}/Mogstored/HTTPServer/None.pm

%files -n mogstored-backend-perlbal
%{perl_vendorlib}/Mogstored/HTTPServer/Perlbal.pm

%changelog
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.73-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild

* Thu Jun 28 2018 Jitka Plesnikova <jplesnik@redhat.com> - 2.73-3
- Perl 5.28 rebuild

* Thu Feb 08 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.73-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild

* Mon Jan 22 2018 Jitka Plesnikova <jplesnik@redhat.com> - 2.73-1
- 2.73 bump

* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.72-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild

* Mon Jun 05 2017 Jitka Plesnikova <jplesnik@redhat.com> - 2.72-3
- Perl 5.26 rebuild

* Tue May 02 2017 Petr Pisar <ppisar@redhat.com> - 2.72-2
- Generate dependencies

* Fri Nov 27 2015 Petr Pisar <ppisar@redhat.com> - 2.72-1
- 2.72 version, replaces perl-mogilefs-server