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
openSUSE Build Service is sponsored by