File singularity-ce.spec of Package singularity-ce

#
# spec file for package singularity-ce
#
# Copyright (c) 2022 SUSE LLC
# Copyright (c) 2017-2022, SyLabs, Inc. All rights reserved.
# Copyright (c) 2017, SingularityWare, LLC. All rights reserved.
# Copyright (c) 2015-2017, Gregory M. Kurtzer. All rights reserved.
# Copyright (c) 2016, The Regents of the University of California, through
# Lawrence Berkeley National Laboratory (subject to receipt of any required
# approvals from the U.S. Dept. of Energy).  All rights reserved.
#
# 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 https://bugs.opensuse.org/
#


%undefine _debugsource_packages
# will define the singularity group for comaptibilty to non community version
%define noncename singularity

Summary:        Application and environment virtualization
Name:           singularity-ce
Version:        3.10.2
Release:        0
License:        Apache-2.0 AND BSD-3-Clause-LBNL
URL:            https://www.sylabs.io/singularity/
Provides:       singularity
Obsoletes:      singularity <= 3.8.5
Source:         https://github.com/sylabs/singularity/releases/download/v%{version}/%{name}-%{version}.tar.gz
Source1:        README.SUSE
Patch1:         useful_error_message.patch
ExclusiveOS: linux

BuildRequires:  cryptsetup
BuildRequires:  gcc
BuildRequires:  git
BuildRequires:  glib2-devel
BuildRequires:  go
BuildRequires:  libseccomp-devel
BuildRequires:  make
BuildRequires:  sysuser-tools

Requires:       cryptsetup
Requires:       runc
%if "%{_target_vendor}" == "suse"
Requires:       squashfs
%else
Requires:       libseccomp
Requires:       squashfs-tools
%endif
PreReq:         permissions

# there's no golang for ppc64, just ppc64le
ExcludeArch:    ppc64

Provides:       %{name}-runtime

# Conflicts with non-CE packages
Conflicts:      singularity
# Conflicts with Apptainer, which installs the `/usr/bin/singularity` compatibility executable
Conflicts:      apptainer
# Conflicts with SingularityPRO basic packaging (not other variants).
Conflicts:      singularitypro24
Conflicts:      singularitypro25
Conflicts:      singularitypro26
Conflicts:      singularitypro31
Conflicts:      singularitypro35
Conflicts:      singularitypro37
Conflicts:      singularitypro39

%description
SingularityCE is the Community Edition of Singularity, an open source
container platform designed to be simple, fast, and secure.

%prep
# Extract the source
%setup  -q -n %{name}-%{version}
cp %{S:1} .
%patch1 -p1

%build
# Setup an empty GOPATH for the build
export GOPATH=$PWD/gopath
mkdir -p "$GOPATH"
# remove stray binary https://github.com/sylabs/singularity/issues/941
rm third_party/conmon/bin/conmon

# Not all of these parameters currently have an effect, but they might be
#  used someday.  They are the same parameters as in the configure macro.
./mconfig -V %{version}-%{release} \
        -P release \
        --prefix=%{_prefix} \
        --exec-prefix=%{_exec_prefix} \
        --bindir=%{_bindir} \
        --sbindir=%{_sbindir} \
        --sysconfdir=%{_sysconfdir} \
        --datadir=%{_datadir} \
        --includedir=%{_includedir} \
        --libdir=%{_libdir} \
        --libexecdir=%{_libexecdir} \
        --localstatedir=%{_localstatedir}/lib/ \
        --sharedstatedir=%{_sharedstatedir} \
        --mandir=%{_mandir} \
        --infodir=%{_infodir} \

make -C builddir old_config=

%install
export GOPATH=$PWD/gopath

make -C builddir DESTDIR=%{buildroot} install

# cleanup stuff
mkdir -p %{buildroot}%{_datadir}/bash-completion/completions/
mv %{buildroot}%{_sysconfdir}/bash_completion.d/* %{buildroot}%{_datadir}/bash-completion/completions/

echo "g %noncename -" > system-group-%{name}.conf
%sysusers_generate_pre system-group-%{name}.conf %{name} system-group-%{name}.conf
install -D -m 644 system-group-%{name}.conf %{buildroot}%{_sysusersdir}/system-group-%{name}.conf

%pre -f %{name}.pre

%post
%set_permissions %{_libexecdir}/singularity/bin/starter-suid

%verifyscript
%set_permissions %{_libexecdir}/singularity/bin/starter-suid

%files
%attr(4750, root, %noncename)  %{_libexecdir}/singularity/bin/starter-suid
%{_bindir}/singularity
%{_bindir}/run-singularity
%dir %{_libexecdir}/singularity
%{_libexecdir}/singularity/cni
%{_libexecdir}/singularity/bin
%{_libexecdir}/singularity/bin/starter
%{_libexecdir}/singularity/cni/*
%dir %{_sysconfdir}/singularity
%dir %{_sysconfdir}/singularity/cgroups
%dir %{_sysconfdir}/singularity/network
%dir %{_sysconfdir}/singularity/seccomp-profiles
%config(noreplace) %{_sysconfdir}/singularity/*.conf
%config(noreplace) %{_sysconfdir}/singularity/*.toml
%config(noreplace) %{_sysconfdir}/singularity/*.json
%config(noreplace) %{_sysconfdir}/singularity/*.yaml
%config(noreplace) %{_sysconfdir}/singularity/global-pgp-public
%config(noreplace) %{_sysconfdir}/singularity/cgroups/*
%config(noreplace) %{_sysconfdir}/singularity/network/*
%config(noreplace) %{_sysconfdir}/singularity/seccomp-profiles/*
%dir %{_sysconfdir}/bash_completion.d
%{_datadir}/bash-completion/completions/*
%dir %{_localstatedir}/lib/singularity
%dir %{_localstatedir}/lib/singularity/mnt
%dir %{_localstatedir}/lib/singularity/mnt/session
%{_mandir}/man1/singularity*
%license LICENSE.md
%license LICENSE_THIRD_PARTY.md
%license LICENSE_DEPENDENCIES.md
%doc %{basename:%{S:1}}
%doc README.md
%doc CHANGELOG.md
%doc CONTRIBUTING.md
%doc CONTRIBUTORS.md
%{_sysusersdir}/system-group-%{name}.conf

%changelog
openSUSE Build Service is sponsored by