forked from pool/apptainer
- 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
172 lines
5.3 KiB
RPMSpec
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
|