SHA256
1
0
forked from pool/apptainer
apptainer/apptainer.spec
Christian Goll 5c09db8b93 Accepting request 962878 from home:mslacken:pr
- Updated to v1.0.1 with following bug fixes
  * Don't prompt for y/n to overwrite an existing file when build is called
    from a non-interactive environment. Fail with an error.
  * Preload NSS libraries prior to mountspace name creation to avoid
    circumstances that can cause loading those libraries from the container
    image instead of the host, for example in the startup environment.
  * Fix race condition where newly created loop devices can sometimes not be opened.
  * Support nvidia-container-cli v1.8.0 and above, via fix to capability set.

OBS-URL: https://build.opensuse.org/request/show/962878
OBS-URL: https://build.opensuse.org/package/show/network:cluster/apptainer?expand=0&rev=6
2022-03-18 16:15:06 +00:00

172 lines
5.3 KiB
RPMSpec

#
# spec file for package apptainer
#
# Copyright (c) 2022 SUSE LLC
#
# 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/
#
%define apptainerpath src/github.com/apptainer/
%define _buildshell /bin/bash
#%%define vers_suffix -rc.2
Summary: Application and environment virtualization
License: BSD-3-Clause-LBNL
Group: Productivity/Clustering/Computing
Name: apptainer
Version: 1.0.1
Release: 0
# https://spdx.org/licenses/BSD-3-Clause-LBNL.html
URL: https://apptainer.org
Source0: https://github.com/apptainer/apptainer/archive/v%{version}%{?vers_suffix}/apptainer-%{version}%{?vers_suffix}.tar.gz
Source1: README.SUSE
Source2: SLE-12SP5.def
Source3: SLE-15SP3.def
Source5: %{name}-rpmlintrc
Source10: vendor.tar.gz
Patch1: useful_error_message.patch
BuildRequires: cryptsetup
BuildRequires: fdupes
BuildRequires: gcc
BuildRequires: git
BuildRequires: go >= 1.17
BuildRequires: libuuid-devel
BuildRequires: make
BuildRequires: openssl-devel
BuildRequires: sysuser-tools
%ifarch aarch64
BuildRequires: binutils-gold
%endif
BuildRequires: libseccomp-devel
Requires: squashfs
PreReq: permissions
# there's no golang for ppc64, ppc64le does not have non pie builds
ExcludeArch: ppc64 ppc64le
Provides: %{name}-runtime
Provides: singularity
Provides: singularity-runtime
%description
Singularity provides functionality to make portable
containers that can be used across host environments.
%prep
%setup -q -n gopath/%{apptainerpath} -c
cp %{S:1} %{S:2} %{S:3} .
mv %{name}-%{version}%{?vers_suffix} %{name}
cd %{_builddir}/gopath/%{apptainerpath}/apptainer
%patch1 -p1
%build
cd %{name}
# create VERSION file
echo %version > VERSION
# 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.
tar xzf %{S:10}
./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}
cd builddir
make V="" old_config=
%install
export GOPATH=$PWD/gopath
export GOFLAGS=-mod=vendor
export PATH=$GOPATH/bin:$PATH
cd %{name}/builddir
mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1
make DESTDIR=$RPM_BUILD_ROOT install man
cd ../..
%fdupes apptainer/examples
mkdir -p .tmp
for j in LICENSE.md LICENSE; do
for i in `find . -name $j`; do
k="`basename ${i/%\/$j/-$j}`"
if ! [[ $k =~ apptainer-.* ]]; then
cp $i .tmp/$k
fi
done
done
echo "g %name -" > 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
%fdupes -s .tmp
mv .tmp/* .
rmdir .tmp
%pre -f %{name}.pre
%post
%set_permissions %{_libexecdir}/apptainer/bin/starter-suid
%verifyscript
%set_permissions %{_libexecdir}/apptainer/bin/starter-suid
%files
%doc apptainer/examples
%doc apptainer/CONTRIBUTING.md
%doc apptainer/README.md
%doc apptainer/CHANGELOG.md
%doc apptainer/CONTRIBUTORS.md
%doc %{basename:%{S:1}}
%doc %{basename:%{S:2}}
%doc %{basename:%{S:3}}
%license apptainer/LICENSE.md
%license *-LICENSE.md *-LICENSE
%attr(4750, root, apptainer) %{_libexecdir}/apptainer/bin/starter-suid
%{_bindir}/*
%dir %{_libexecdir}/apptainer
%dir %{_libexecdir}/apptainer/bin
%dir %{_libexecdir}/apptainer/cni
%{_libexecdir}/apptainer/bin/starter
%{_libexecdir}/apptainer/cni/*
%dir %{_sysconfdir}/apptainer
%config(noreplace) %{_sysconfdir}/apptainer/capability.json
%config(noreplace) %{_sysconfdir}/apptainer/cgroups
%config(noreplace) %{_sysconfdir}/apptainer/ecl.toml
%config(noreplace) %{_sysconfdir}/apptainer/global-pgp-public
%config(noreplace) %{_sysconfdir}/apptainer/network
%config(noreplace) %{_sysconfdir}/apptainer/nvliblist.conf
%config(noreplace) %{_sysconfdir}/apptainer/seccomp-profiles
%config(noreplace) %{_sysconfdir}/apptainer/apptainer.conf
%config(noreplace) %{_sysconfdir}/apptainer/remote.yaml
%config(noreplace) %{_sysconfdir}/apptainer/rocmliblist.conf
%config(noreplace) %{_sysconfdir}/apptainer/dmtcp-conf.yaml
%{_datadir}/bash-completion/completions/*
%dir %{_localstatedir}/lib/apptainer
%dir %{_localstatedir}/lib/apptainer/mnt
%dir %{_localstatedir}/lib/apptainer/mnt/session
%{_mandir}/man1/*
%{_sysusersdir}/system-group-%{name}.conf
%changelog