File singularity.spec of Package singularity
#
# spec file for package singularity
#
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
#
%define libsingularity libsingularity1
%define git_version 2.6.1
# slurm build broken
%define have_slurm 0
%define allow_suid 1
# for the perl git file parser to run, none of the
# macros used in the variables must contain shell code.
%define github_ref %{?git_sha}%{!?git_sha:%git_version}
Name: singularity
Version: %git_version
Release: 0
Summary: Application and environment virtualization
License: BSD-3-Clause
Group: Productivity/Clustering/Computing
Url: http://singularity.lbl.gov/
#Source: https://github.com/singularityware/%%{name}/tarball/%%{github_ref}#/%%{name}-%%{version}.tar.gz
Source: https://github.com/singularityware/%{name}/archive/%{github_ref}.tar.gz#/%{name}-%{version}.tar.gz
Source1: README.SUSE
Source5: singularity-rpmlintrc
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libtool
%if 0%{?have_slurm}
BuildRequires: slurm-devel
%endif
BuildRequires: fdupes
BuildRequires: libarchive-devel
BuildRequires: python
%{?allow_suid:Requires(pre): shadow}
PreReq: permissions >= 20170922
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
Singularity provides functionality to build the smallest most minimal
possible containers, and running those containers as single application
environments.
%package devel
Summary: Development package for Singularity
Group: Development/Libraries/C and C++
Requires: %{libsingularity} = %{version}
Requires: %{name} = %{version}
%description devel
Development package for singularity. This package includes the header files
and libraries for the Singularity API.
%package -n %{libsingularity}
Summary: Libraries for Singularity
Group: System/Libraries
%description -n %{libsingularity}
This package contains the library needed to run programs dynamically linked
with Singularity.
%prep
%setup -q -n %{name}-%{github_ref}
cp %{S:1} .
%build
./autogen.sh
%configure \
%{!?allow_suid:--disable-suid} \
--with-userns \
--with-gnu-ld \
%if 0%{?have_slurm}
--with-slurm
%endif
make %{?_smp_mflags} CFLAGS+=-fPIE LDFLAGS+=-pie
%install
%makeinstall
# remove static library stuff
rm -f %{buildroot}/%{_libdir}/%{name}/lib%{name}-*.a
rm -f %{buildroot}/%{_libdir}/%{name}/lib%{name}-*.la
# fix broken permissions
chmod a-x %{buildroot}/%{_libexecdir}/%{name}/python/docker/__init__.py
chmod a-x %{buildroot}/%{_libexecdir}/%{name}/python/__init__.py
mkdir -p %{buildroot}/%{_datadir}/bash-completion/completions/
mv %{buildroot}/%{_sysconfdir}/bash_completion.d/%{name} \
%{buildroot}/%{_datadir}/bash-completion/completions/%{name}
%fdupes %{buildroot}
for file in $(find %{buildroot}/%{_libexecdir} -name \*.py); do grep "/usr/bin/env" $file && sed -i 's@/usr/bin/env python@/usr/bin/python@' $file; done
%post -n %{libsingularity} -p /sbin/ldconfig
%postun -n %{libsingularity} -p /sbin/ldconfig
%if 0%{allow_suid:1}
%pre
getent group %{name} >/dev/null || groupadd -r %{name}
exit 0
%post
%set_permissions %{_libexecdir}/%{name}/bin/expand-suid
%set_permissions %{_libexecdir}/%{name}/bin/mount-suid
%set_permissions %{_libexecdir}/%{name}/bin/create-suid
%set_permissions %{_libexecdir}/%{name}/bin/action-suid
%set_permissions %{_libexecdir}/%{name}/bin/export-suid
%set_permissions %{_libexecdir}/%{name}/bin/import-suid
%set_permissions %{_libexecdir}/%{name}/bin/start-suid
%verifyscript
%verify_permissions %{_libexecdir}/%{name}/bin/expand-suid
%verify_permissions %{_libexecdir}/%{name}/bin/mount-suid
%verify_permissions %{_libexecdir}/%{name}/bin/create-suid
%verify_permissions %{_libexecdir}/%{name}/bin/action-suid
%verify_permissions %{_libexecdir}/%{name}/bin/export-suid
%verify_permissions %{_libexecdir}/%{name}/bin/import-suid
%set_permissions %{_libexecdir}/%{name}/bin/start-suid
%endif
%if 0%{?sle_version} > 120200 || 0%{?suse_version} > 1320
%define files_license %license
%else
%define files_license %doc
%endif
%files
%defattr(-,root,root)
%doc examples CONTRIBUTING.md README.md %{basename:%{S:1}}
%doc CONTRIBUTORS.md CHANGELOG.md LICENSE-LBNL.md
%files_license COPYRIGHT.md LICENSE.md
%attr(0755,root,root) %dir %{_sysconfdir}/%{name}
%config(noreplace) %{_sysconfdir}/%{name}/default-nsswitch.conf
%config(noreplace) %{_sysconfdir}/%{name}/init
%config(noreplace) %{_sysconfdir}/%{name}/%{name}.conf
%config(noreplace) %{_sysconfdir}/%{name}/nvliblist.conf
%{_datadir}/bash-completion/completions/%{name}
%{_bindir}/%{name}
%{_bindir}/run-%{name}
%{_libexecdir}/%{name}
%exclude %{_libdir}/%{name}/lib%{name}-*.so*
%{?allow_suid:%verify(not mode) %attr(4750,root,%{name}) %{_libexecdir}/%{name}/bin/*-suid}
%{_mandir}/man1/%{name}.1.gz
%{_var}/%{name}
%files -n %{libsingularity}
%defattr(-,root,root)
%dir %{_libdir}/%{name}
%{_libdir}/%{name}/lib%{name}-*.so.*
%files devel
%defattr(-,root,root)
%dir /usr/include/%{name}
/usr/include/%{name}/*.h
%{_libdir}/%{name}/lib%{name}-*.so
%changelog