mfs/mfs.spec

Name: mfs
Summary: Fault tolerant, network distributed file system
Version: 1.6.26
Release: 1
License: GPL
Group: System Environment/Daemons
URL: http://www.moosefs.org/
Description: MooseFS is a fault tolerant, network distributed file system. It spreads data over several physical servers which are visible to the user as one resource. For standard file operations MooseFS acts as other Unix-alike file systems. It has a hierarchical structure (directory tree), stores file attributes (permissions, last access and modification times) as well as makes it possible to create special files (block and character devices, pipes and sockets), symbolic links (file names pointing to target files, not necessarily on MooseFS) and hard links (different names of files which refer to the same data on MooseFS). Access to the file system can be limited based on IP address and/or password.

Distinctive features of MooseFS are:

Install this package to run a MooseFS master server, metalogger server, or chunk server. MooseFS clients require only the mfs-client package; however, you may want to install mfs-client on your servers as well, for administrative reasons.

CentOS 7 x86_64

The build was not successful.

Build Status

CentOS 6 x86_64

The build was succesful. The following RPMs were generated:

Build Status

Contents

The spec file used by the build system currently has the following contents:

# $Id$
# Authority: shuff
# Upstream: <moosefs-users@lists.sourceforge.net>

Summary: Fault tolerant, network distributed file system
Name: mfs
Version: 1.6.26
Release: 1%{?dist}
License: GPL
Group: System Environment/Daemons
URL: http://www.moosefs.org/

Source: http://moosefs.org/tl_files/mfscode/mfs-%{version}.tar.gz
Patch0: mfs-1.6.16_cgi.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root

BuildRequires: autoconf, automake
BuildRequires: binutils
BuildRequires: fuse-devel >= 2.6
BuildRequires: gcc-c++
BuildRequires: glibc-devel
BuildRequires: make
BuildRequires: pkgconfig >= 0.9.0
BuildRequires: python
BuildRequires: zlib-devel

Requires: chkconfig
Requires: python

Provides: moosefs = %{version}
Provides: moosefs(server) = %{version}

%description
MooseFS is a fault tolerant, network distributed file system. It spreads data
over several physical servers which are visible to the user as one resource.
For standard file operations MooseFS acts as other Unix-alike file systems. It
has a hierarchical structure (directory tree), stores file attributes
(permissions, last access and modification times) as well as makes it possible
to create special files (block and character devices, pipes and sockets),
symbolic links (file names pointing to target files, not necessarily on
MooseFS) and hard links (different names of files which refer to the same data
on MooseFS). Access to the file system can be limited based on IP address
and/or password.

Distinctive features of MooseFS are:

* higher reliability (data can be stored in several copies on separate
  computers)
* dynamically expanding disk space by attaching new computers/disks
* possibility of storing deleted files for a defined period of time ("trash
  bin" service on a file system level)
* possibility of creating snapshots of files, which means coherent copies of
  the whole file, even while the file is being written/accessed.

Install this package to run a MooseFS master server, metalogger server, or
chunk server.  MooseFS clients require only the %{name}-client package;
however, you may want to install %{name}-client on your servers as well, for
administrative reasons.

%package client
Summary: Client tools for MooseFS
Group: System Environment/Utilities
Requires: fuse >= 2.6

Provides: moosefs(client) = %{version}

%description client
Install this package to run a MooseFS client.  This package contains
administrative utilities for MooseFS in addition to basic client tools.

%package cgi
Summary: Status CGI for MooseFS
Group: System Environment/Utilities
Requires: httpd

Provides: moosefs(cgi) = %{version}

%description cgi
Install this package to display MooseFS status via Apache-hosted CGI.  The CGI
attempts to connect to localhost by default; if running on a host that is not
the MooseFS master server, modify index.html accordingly. 

If you just want to run the status CGI using the bundled CGI server, not
Apache, it is not necessary to install this package.

%prep
%setup

%build
%configure \
    --disable-dependency-tracking \
    --disable-static \
    --sysconfdir=%{_sysconfdir}/mfs \
    --with-mfscgi-dir=%{_datadir}/mfscgi \
    --with-default-user=daemon \
    --with-default-group=daemon
%{__make} %{?_smp_mflags}

%install
rm -rf %{buildroot}
%{__make} install DESTDIR=%{buildroot}

# yes, really apply the patch here rather than during %setup
%{__patch} -p1 < %{_sourcedir}/mfs-1.6.16_cgi.patch

# copy the CGI stuff into the right place for Apache
%{__install} -m0755 -d %{buildroot}%{_localstatedir}/www/cgi-bin/mfs
%{__install} -m0755 mfscgi/mfs.cgi %{buildroot}%{_localstatedir}/www/cgi-bin/mfs
%{__install} -m0755 mfscgi/chart.cgi %{buildroot}%{_localstatedir}/www/cgi-bin/mfs
%{__install} -m0755 -d %{buildroot}%{_localstatedir}/www/html/mfs
%{__install} -m0644 mfscgi/index.html %{buildroot}%{_localstatedir}/www/html/mfs
%{__install} -m0644 mfscgi/mfs.css %{buildroot}%{_localstatedir}/www/html/mfs
%{__install} -m0644 mfscgi/err.gif %{buildroot}%{_localstatedir}/www/html/mfs
%{__install} -m0644 mfscgi/logomini.png %{buildroot}%{_localstatedir}/www/html/mfs

# create the mfsmaster init script
%{__install} -m0755 -d %{buildroot}%{_initrddir}
%{__cat} > %{buildroot}%{_initrddir}/mfsmaster <<'MFSMASTER'
#!/bin/bash
#
# Init file for the MooseFS master service
#
# chkconfig: - 92 84
#
# description: MooseFS master
#
# processname: mfsmaster
# config: %{_sysconfdir}/mfs/mfsmaster.cfg

# Source function library.
. %{_initrddir}/functions

# Source networking configuration.
. %{_sysconfdir}/sysconfig/network

# Source initialization configuration.
[ -r "%{_sysconfdir}/sysconfig/mfsmaster" ] && . %{_sysconfdir}/sysconfig/mfsmaster

# Check that networking is up.
[ "${NETWORKING}" == "no" ] && exit 0
[ -x "%{_sbindir}/mfsmaster" ] || exit 1
[ -r "%{_sysconfdir}/mfs/mfsmaster.cfg" ] || exit 1
[ -r "%{_sysconfdir}/mfs/mfsexports.cfg" ] || exit 1

RETVAL=0
prog="mfsmaster"

start () {
    echo -n $"Starting $prog: "
    daemon $prog >/dev/null 2>&1
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch %{_localstatedir}/lock/subsys/\$prog
    return $RETVAL
}

stop () {
    echo -n $"Stopping $prog: "
    $prog stop >/dev/null 2>&1 || killproc $prog >/dev/null 2>&1
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f %{_localstatedir}/lock/subsys/$prog
    return $RETVAL
}

restart () {
    stop
    start
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart|reload)
    restart
    ;;
  condrestart)
    [ -e %{_localstatedir}/lock/subsys/$prog ] && restart
    RETVAL=$?
    ;;
  status)
    status $prog
    RETVAL=$?
    ;;
  *)
    echo $"Usage: $0 {start|stop|restart|condrestart|status}"
    RETVAL=1
esac

exit $RETVAL
MFSMASTER

# create the mfsmetalogger init script
%{__cat} > %{buildroot}%{_initrddir}/mfsmetalogger <<'MFSMETALOGGER'
#!/bin/bash
#
# Init file for the MooseFS metalogger service
#
# chkconfig: - 92 84
#
# description: MooseFS metalogger
#
# processname: mfsmetalogger
# config: %{_sysconfdir}/mfs/mfsmetalogger.cfg

# Source function library.
. %{_initrddir}/functions

# Source networking configuration.
. %{_sysconfdir}/sysconfig/network

# Source initialization configuration.
[ -r "%{_sysconfdir}/sysconfig/mfsmetalogger" ] && . %{_sysconfdir}/sysconfig/mfsmetalogger

# Check that networking is up.
[ "${NETWORKING}" == "no" ] && exit 0
[ -x "%{_sbindir}/mfsmetalogger" ] || exit 1
[ -r "%{_sysconfdir}/mfs/mfsmetalogger.cfg" ] || exit 1

RETVAL=0
prog="mfsmetalogger"

start () {
    echo -n $"Starting $prog: "
    daemon $prog >/dev/null 2>&1
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch %{_localstatedir}/lock/subsys/\$prog
    return $RETVAL
}

stop () {
    echo -n $"Stopping $prog: "
    $prog stop >/dev/null 2>&1 || killproc $prog >/dev/null 2>&1
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f %{_localstatedir}/lock/subsys/$prog
    return $RETVAL
}

restart () {
    stop
    start
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart|reload)
    restart
    ;;
  condrestart)
    [ -e %{_localstatedir}/lock/subsys/$prog ] && restart
    RETVAL=$?
    ;;
  status)
    status $prog
    RETVAL=$?
    ;;
  *)
    echo $"Usage: $0 {start|stop|restart|condrestart|status}"
    RETVAL=1
esac

exit $RETVAL
MFSMETALOGGER

# create the mfschunkserver init script
%{__cat} > %{buildroot}%{_initrddir}/mfschunkserver <<'MFSCHUNKSERVER'
#!/bin/bash
#
# Init file for the MooseFS chunkserver service
#
# chkconfig: - 93 83
#
# description: MooseFS chunkserver
#
# processname: mfschunkserver
# config: %{_sysconfdir}/mfs/mfschunkserver.cfg

# Source function library.
. %{_initrddir}/functions

# Source networking configuration.
. %{_sysconfdir}/sysconfig/network

# Source initialization configuration.
[ -r "%{_sysconfdir}/sysconfig/mfschunkserver" ] && . %{_sysconfdir}/sysconfig/mfschunkserver

# Check that networking is up.
[ "${NETWORKING}" == "no" ] && exit 0
[ -x "%{_sbindir}/mfschunkserver" ] || exit 1
[ -r "%{_sysconfdir}/mfs/mfschunkserver.cfg" ] || exit 1
[ -r "%{_sysconfdir}/mfs/mfshdd.cfg" ] || exit 1

RETVAL=0
prog="mfschunkserver"

start () {
    echo -n $"Starting $prog: "
    daemon $prog >/dev/null 2>&1
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch %{_localstatedir}/lock/subsys/\$prog
    return $RETVAL
}

stop () {
    echo -n $"Stopping $prog: "
    $prog stop >/dev/null 2>&1 || killproc $prog >/dev/null 2>&1
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f %{_localstatedir}/lock/subsys/$prog
    return $RETVAL
}

restart () {
    stop
    start
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart|reload)
    restart
    ;;
  condrestart)
    [ -e %{_localstatedir}/lock/subsys/$prog ] && restart
    RETVAL=$?
    ;;
  status)
    status $prog
    RETVAL=$?
    ;;
  *)
    echo $"Usage: $0 {start|stop|restart|condrestart|status}"
    RETVAL=1
esac

exit $RETVAL
MFSCHUNKSERVER

%post
/sbin/chkconfig --add mfsmaster >/dev/null 2>&1
/sbin/chkconfig --add mfsmetalogger >/dev/null 2>&1
/sbin/chkconfig --add mfschunkserver >/dev/null 2>&1

%clean
rm -rf %{buildroot}

%files
%defattr(-,root,root,0755)
%doc COPYING INSTALL NEWS README UPGRADE
%doc %{_mandir}/man?/*
%exclude %{_mandir}/man1/*
%exclude %{_mandir}/man8/mfsmount.8.gz
%{_sbindir}/*
%{_sysconfdir}/mfs/
%exclude %{_sysconfdir}/mfs/mfsmount.cfg.dist
%dir %{_initrddir}
%attr(0755,root,root) %{_initrddir}/*
%{_datadir}/mfscgi/
%attr(-,daemon,daemon) %{_localstatedir}/mfs/

%files client
%doc %{_mandir}/man1/*
%doc %{_mandir}/man8/mfsmount.8.gz
%{_bindir}/*
%{_sysconfdir}/mfs/mfsmount.cfg.dist

%files cgi
%defattr(-,apache,apache,0755)
%dir %{_localstatedir}/www/cgi-bin/mfs
%config %{_localstatedir}/www/cgi-bin/mfs/mfs.cgi
%config %{_localstatedir}/www/cgi-bin/mfs/chart.cgi
%dir %{_localstatedir}/www/html/mfs
%config %{_localstatedir}/www/html/mfs/index.html
%config %{_localstatedir}/www/html/mfs/mfs.css
%config %{_localstatedir}/www/html/mfs/err.gif
%config %{_localstatedir}/www/html/mfs/logomini.png

%changelog
* Mon Dec 17 2012 David Hrbáč <david@hrbac.cz> - 1.6.26-1
- new upstream release

* Wed May 02 2012 David Hrbáč <david@hrbac.cz> - 1.6.25-1
- new upstream release

* Fri Apr 20 2012 Steve Huff <shuff@vecna.org> - 1.6.24-2
- Move mfsmount-related files to mfs-client package (thanks Ricardo!)

* Thu Mar  5 2012 Steve Huff <shuff@vecna.org> - 1.6.24-1
- Update to 1.6.24.

* Thu Feb 24 2011 Steve Huff <shuff@vecna.org> - 1.6.20-1
- Update to 1.6.20.

* Tue Dec 28 2010 Steve Huff <shuff@vecna.org> - 1.6.19-1
- Added additional Provides: per Michal Borychowski's request.

* Wed Dec 22 2010 Steve Huff <shuff@vecna.org>
- Update to 1.6.19.

* Wed Sep 15 2010 Steve Huff <shuff@vecna.org> - 1.6.17-2
- Captured missing fuse dependency in mfs-client (thanks Laurent!)

* Wed Jul 28 2010 Steve Huff <shuff@vecna.org> - 1.6.17-1
- Update to 1.6.17.

* Tue Jul 20 2010 Steve Huff <shuff@vecna.org> - 1.6.16-1
- Update to 1.6.16.

* Fri Jun 11 2010 Steve Huff <shuff@vecna.org> - 1.6.15-3
- Ported to RPMforge.
- Split out client into a separate package.
- Split out cgi into a separate package.

* Fri Jun 11 2010 Laurent Wandrebeck <lw@hygeos.com> - 1.6.15-2
- Put config files in /etc/mfs instead of /etc.

* Mon May 31 2010 Laurent Wandrebeck <lw@hygeos.com> - 1.6.15-1
- Update to 1.6.15

* Mon Mar 08 2010 Kirby Zhou - 1.6.13-1
- initial rpm spec