Blob Blame History Raw
Name: orangefs
Version: 2.9.7
Release: 1%{?dist}
Summary: Parallel network file system client
URL: http://www.orangefs.org/
# BSD (2 clause) maint/config/ssl.m4
# BSD (3 clause) src/client/usrint/fts.c
# BSD (3 clause) src/client/usrint/fts.h
# MIT maint/config/install-sh
# zlib src/common/misc/md5.c
# zlib src/common/misc/md5.h
# LGPLv2 src/apps/admin/pvfs2-config.in
# LGPLv2 src/common/dotconf/dotconf.c
# LGPLv2+ remainder
License: LGPLv2+ and LGPLv2 and BSD and MIT and zlib
BuildRequires: automake
BuildRequires: bison flex libattr-devel openssl-devel
BuildRequires: perl(Math::BigInt) perl(Getopt::Long)
BuildRequires: systemd
BuildRequires: libselinux-devel
BuildRequires: lmdb-devel fuse-devel
%ifnarch armv7hl
BuildRequires: libibverbs-devel
%endif
BuildRequires: texlive latex2html

Source0: https://s3.amazonaws.com/download.orangefs.org/current/source/orangefs-%version.tar.gz
Source1: orangefs-server.service
Source2: orangefs-client.service
Source3: orangefs.conf
Source4: pvfs2tab
# Change the configuration generator to default to options and paths
# appropriate to Fedora.  This causes genconfig to enable syslog logging
# and to use /var/lib/orangefs for the storage paths.
Patch0: orangefs-genconfig.patch
# Remove bundled LMDB, so it cannot be built.
Patch1: orangefs-lmdb.patch
# These are scripts which connect to several machines and start or stop
# the server.  They would require editing and don't work with systemd,
# so this removes them.
Patch2: orangefs-no-start-stop.patch

%global _hardened_build 1

%global desc OrangeFS (formerly PVFS2) is a high-performance parallel \
network file system designed for use on high performance computing \
systems.  It provides very high performance access to disk storage for \
parallel applications.  It is accessible through a variety of \
interfaces, including the native OrangeFS library, the kernel, FUSE, \
and MPI-IO. \
\
This package provides the pvfs2-client-core which is required to use \
the kernel module.

%description
%desc

%prep
%autosetup -N -n orangefs-%version
%patch0 -p1
%patch1 -p1
%patch2 -p1

rm -r src/apps/devel/lmdb
rm -r src/common/lmdb

rm src/client/webpack/ltmain.sh

mv doc/man/pvfs2.conf.5 doc/man/orangefs.conf.5

./prepare

%build
export LDFLAGS="%{optflags} -Wl,--as-needed"
%ifarch armv7hl
%configure --enable-external-lmdb --enable-shared --disable-static \
    --enable-fuse --with-db-backend=lmdb
%else
%ifarch aarch64
%configure --enable-external-lmdb --enable-shared --disable-static \
   --enable-fuse --disable-usrint --with-db-backend=lmdb \
   --with-openib=/usr
%else
%configure --enable-external-lmdb --enable-shared --disable-static \
    --enable-fuse --with-db-backend=lmdb --with-openib=/usr
%endif
%endif
%make_build
make docs

%install
%make_install
mkdir -p %{buildroot}%{_docdir}/orangefs
install -p -m 644 doc/*.pdf %{buildroot}%{_docdir}/orangefs
mkdir -p %{buildroot}%{_docdir}/orangefs/coding
install -p -m 644 doc/coding/*.pdf %{buildroot}%{_docdir}/orangefs/coding
mkdir -p %{buildroot}%{_docdir}/orangefs/design
install -p -m 644 doc/design/*.pdf %{buildroot}%{_docdir}/orangefs/design
mkdir -p %{buildroot}%{_docdir}/orangefs/random
install -p -m 644 doc/random/*.pdf %{buildroot}%{_docdir}/orangefs/random
install -p -m 644 COPYING %{buildroot}%{_docdir}/orangefs
mkdir -p %{buildroot}%{_unitdir}
install -p -m 644 %{SOURCE1} %{buildroot}%{_unitdir}
install -p -m 644 %{SOURCE2} %{buildroot}%{_unitdir}
mkdir -p %{buildroot}%{_sharedstatedir}/orangefs
mkdir -p %{buildroot}%{_sysconfdir}/orangefs
install -p -m 644 %{SOURCE3} %{buildroot}%{_sysconfdir}/orangefs
install -p -m 644 %{SOURCE4} %{buildroot}%{_sysconfdir}

%ifnarch aarch64
chmod 644 %{buildroot}%{_libdir}/liborangefsposix.so.%version
%endif

%files

%config(noreplace) %{_sysconfdir}/pvfs2tab
%ifnarch aarch64
%{_bindir}/getmattr
%{_bindir}/ofs_cp
%{_bindir}/ofs_graphite_driver
%{_bindir}/ofs_rm
%{_bindir}/ofs_setdirhint
%endif
%{_bindir}/pvfs2-check-server
%{_bindir}/pvfs2-chmod
%{_bindir}/pvfs2-chown
%{_bindir}/pvfs2-cp
%{_bindir}/pvfs2-drop-caches
%{_bindir}/pvfs2-fs-dump
%{_bindir}/pvfs2-fsck
%{_bindir}/pvfs2-get-uid
%{_bindir}/pvfs2-getmattr
%{_bindir}/pvfs2-ln
%{_bindir}/pvfs2-ls
%{_bindir}/pvfs2-lsplus
%{_bindir}/pvfs2-mkdir
%{_bindir}/pvfs2-perf-mon-example
%{_bindir}/pvfs2-perf-mon-snmp
%{_bindir}/pvfs2-perror
%{_bindir}/pvfs2-ping
%{_bindir}/pvfs2-remove-object
%ifnarch aarch64
%{_bindir}/pvfs2-rm
%endif
%{_bindir}/pvfs2-set-debugmask
%{_bindir}/pvfs2-set-eventmask
%{_bindir}/pvfs2-set-mode
%{_bindir}/pvfs2-set-perf-history
%{_bindir}/pvfs2-set-perf-interval
%{_bindir}/pvfs2-set-sync
%{_bindir}/pvfs2-set-turn-off-timeouts
%{_bindir}/pvfs2-setmattr
%{_bindir}/pvfs2-stat
%{_bindir}/pvfs2-statfs
%{_bindir}/pvfs2-touch
%{_bindir}/pvfs2-validate
%{_bindir}/pvfs2-viewdist
%{_bindir}/pvfs2-write
%{_bindir}/pvfs2-xattr
%ifnarch aarch64
%{_bindir}/setmattr
%endif
%{_sbindir}/pvfs2-client
%{_sbindir}/pvfs2-client-core
%{_unitdir}/orangefs-client.service
%ifnarch aarch64
%{_libdir}/libofs.so.2
%{_libdir}/libofs.so.%version
%{_libdir}/liborangefs.so.2
%{_libdir}/liborangefs.so.%version
%{_libdir}/liborangefsposix.so.2
%{_libdir}/liborangefsposix.so.%version
%endif
%{_libdir}/libpvfs2.so.2
%{_libdir}/libpvfs2.so.%version
%dir %{_docdir}/orangefs
%license %{_docdir}/orangefs/COPYING
%{_docdir}/orangefs/pvfs2-guide.pdf
%dir %{_docdir}/orangefs/coding
%{_docdir}/orangefs/coding/developer-guidelines.pdf
%dir %{_docdir}/orangefs/design
%{_docdir}/orangefs/design/bmi-design.pdf
%{_docdir}/orangefs/design/concepts.pdf
%{_docdir}/orangefs/design/distributions.pdf
%{_docdir}/orangefs/design/flow-design.pdf
%{_docdir}/orangefs/design/fs-semantics.pdf
%{_docdir}/orangefs/design/handle-allocator.pdf
%{_docdir}/orangefs/design/pvfs2-client.pdf
%{_docdir}/orangefs/design/pvfs2-trove-usage.pdf
%{_docdir}/orangefs/design/trove-dbpf.pdf
%{_docdir}/orangefs/design/request-design.pdf
%{_docdir}/orangefs/design/storage-interface.pdf
%{_docdir}/orangefs/pvfs2-ha.pdf
%{_docdir}/orangefs/pvfs2-ha-heartbeat-v2.pdf
%{_docdir}/orangefs/pvfs2-faq.pdf
%{_docdir}/orangefs/pvfs2-quickstart.pdf
%{_docdir}/orangefs/pvfs2-status.pdf
%{_docdir}/orangefs/pvfs2-tuning.pdf
%dir %{_docdir}/orangefs/random
%{_docdir}/orangefs/random/SystemInterfaceTesting.pdf
%{_mandir}/man1/getmattr.1.gz
%{_mandir}/man1/pvfs2-client-core.1.gz
%{_mandir}/man1/pvfs2-client.1.gz
%{_mandir}/man1/pvfs2-cp.1.gz
%{_mandir}/man1/pvfs2-check-server.1.gz
%{_mandir}/man1/pvfs2-chmod.1.gz
%{_mandir}/man1/pvfs2-chown.1.gz
%{_mandir}/man1/pvfs2-drop-caches.1.gz
%{_mandir}/man1/pvfs2-fs-dump.1.gz
%{_mandir}/man1/pvfs2-fsck.1.gz
%{_mandir}/man1/pvfs2-get-uid.1.gz
%{_mandir}/man1/pvfs2-getmattr.1.gz
%{_mandir}/man1/pvfs2-ln.1.gz
%{_mandir}/man1/pvfs2-ls.1.gz
%{_mandir}/man1/pvfs2-lsplus.1.gz
%{_mandir}/man1/pvfs2-mkdir.1.gz
%{_mandir}/man1/pvfs2-perf-mon-example.1.gz
%{_mandir}/man1/pvfs2-perf-mon-snmp.1.gz
%{_mandir}/man1/pvfs2-perror.1.gz
%{_mandir}/man1/pvfs2-ping.1.gz
%{_mandir}/man1/pvfs2-remove-object.1.gz
%{_mandir}/man1/pvfs2-rm.1.gz
%{_mandir}/man1/pvfs2-set-debugmask.1.gz
%{_mandir}/man1/pvfs2-set-eventmask.1.gz
%{_mandir}/man1/pvfs2-set-mode.1.gz
%{_mandir}/man1/pvfs2-set-perf-history.1.gz
%{_mandir}/man1/pvfs2-set-perf-interval.1.gz
%{_mandir}/man1/pvfs2-set-sync.1.gz
%{_mandir}/man1/pvfs2-set-turn-off-timeouts.1.gz
%{_mandir}/man1/pvfs2-setmattr.1.gz
%{_mandir}/man1/pvfs2-stat.1.gz
%{_mandir}/man1/pvfs2-statfs.1.gz
%{_mandir}/man1/pvfs2-touch.1.gz
%{_mandir}/man1/pvfs2-validate.1.gz
%{_mandir}/man1/pvfs2-viewdist.1.gz
%{_mandir}/man1/pvfs2-write.1.gz
%{_mandir}/man1/pvfs2-xattr.1.gz
%{_mandir}/man1/pvfs2.1.gz
%{_mandir}/man1/setmattr.1.gz
%{_mandir}/man5/pvfs2tab.5.gz

%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig

%package devel

Summary: Parallel network file system development libraries

Requires: %{name}%{?_isa} = %{version}-%{release}

%description devel
%desc

This package contains the headers and libraries necessary for client
development.

%files devel
%{_bindir}/pvfs2-config
%{_includedir}/orange.h
%{_includedir}/pvfs2-compat.h
%{_includedir}/pvfs2-debug.h
%{_includedir}/pvfs2-encode-stubs.h
%{_includedir}/pvfs2-hint.h
%{_includedir}/pvfs2-mgmt.h
%{_includedir}/pvfs2-mirror.h
%{_includedir}/pvfs2-request.h
%{_includedir}/pvfs2-sysint.h
%{_includedir}/pvfs2-types.h
%{_includedir}/pvfs2-usrint.h
%{_includedir}/pvfs2-util.h
%{_includedir}/pvfs2.h
%ifnarch aarch64
%{_libdir}/libofs.so
%{_libdir}/liborangefs.so
%{_libdir}/liborangefsposix.so
%endif
%{_libdir}/libpvfs2.so

%package server

Summary: Parallel network file system server

Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: perl(Math::BigInt)

%description server
%desc

This package contains the server.

%files server
%dir %{_sysconfdir}/orangefs
%config(noreplace) %{_sysconfdir}/orangefs/orangefs.conf
%{_bindir}/pvfs2-genconfig
%{_bindir}/pvfs2-mkspace
%{_bindir}/pvfs2-showcoll
%{_sbindir}/pvfs2-server
%{_unitdir}/orangefs-server.service
%{_mandir}/man1/pvfs2-genconfig.1.gz
%{_mandir}/man1/pvfs2-mkspace.1.gz
%{_mandir}/man1/pvfs2-server.1.gz
%{_mandir}/man1/pvfs2-showcoll.1.gz
%{_mandir}/man5/orangefs.conf.5.gz
%dir %{_sharedstatedir}/orangefs

%package fuse

Summary: Parallel network file system FUSE client

Requires: %{name}%{?_isa} = %{version}-%{release}

%description fuse
%desc

This package contains the FUSE client.

%files fuse
%{_bindir}/pvfs2fuse

%changelog
* Thu Nov 30 2017 Martin Brandenburg <martin@martinbrandenburg.com> - 2.9.7-1
- Update to 2.9.7.

* Fri Oct 27 2017 Martin Brandenburg <martin@martinbrandenburg.com> - 2.9.6-0.8.20171023svn
- Need -n orangefs-svn-13093 in percent-autosetup.

* Fri Oct 27 2017 Martin Brandenburg <martin@martinbrandenburg.com> - 2.9.6-0.7.20171023svn
- Prettier description.
- Move pvfs2tab to main package.
- Update to SVN revision 13093.

* Tue Oct 17 2017 Martin Brandenburg <martin@martinbrandenburg.com> - 2.9.6-0.6.20171011svn
- Add missing changelog entry.
- Add license to main package.
- Require main package by all subpackages.
- Own directores for package.
- Do not make linker script executable.
- Preserve timestamps of installed files.
- Remove commented out percent-post section.
- Expand description.
- Add patch descriptions.

* Wed Oct 11 2017 Martin Brandenburg <martin@martinbrandenburg.com> - 2.9.6-0.5.20171011svn
- Fix mistakes caught by rpmlint in changelog.
- Set noreplace on configuration files.
- Remove unnecessary provides.
- Make -devel require base package.
- Do not link against unused libraries.
- Add documentation.

* Wed Oct 11 2017 Martin Brandenburg <martin@martinbrandenburg.com> - 2.9.6-0.4.20171004svn
- Disable Karma GUI tool.
- Enable aarch64 without usrint.
- Do not package pvfs2-start-all and pvfs2-stop-all scripts.

* Mon Oct  2 2017 Martin Brandenburg <martin@martinbrandenburg.com> - 2.9.6-0.3.20171002svn
- Remove upstream LMDB so it cannot be built.
- Do not use -example for example configurations.
- Patch genconfig to prompt for config path with default if not specified.
- Stop the client from forking.
- Rename pvfs2.conf man page to orangefs.conf.
- Comment default pvfs2tab so it cannot be used.
- Run pvfs2-client-core from systemd instead of pvfs2-client.
- Move to upstream SVN revision 13065.
- Remove Dave Love's orangefs-soname.patch since it is upstream.

* Thu Sep 21 2017 Martin Brandenburg <martin@martinbrandenburg.com> - 2.9.6-0.2.20170904svn
- Remove percent-doc from manpages.
- Remove static libraries.
- Change license line to switch MIT for NTP and merge LGPLv2 variants.
- Add orangefs-soname.patch.
- Most genconfig.patch to orangefs-genconfig.patch.
- Use -example for example configurations.

* Fri Sep 15 2017 Martin Brandenburg <martin@martinbrandenburg.com> - 2.9.6-0.1.20170904svn
- Initial Packaging