forked from pool/apptainer
Christian Goll
b663e36b45
- Udpated to version 1.1.0-rc2 with following changes: * Fixed longstanding bug in the underlay logic when there are nested bind points separated by more than one path level, for example /var and /var/lib/yum, and the path didn't exist in the container image. The bug only caused an error when there was a directory in the container image that didn't exist on the host. * Improved wildcard matching in the %files directive of build definition files by replacing usage of sh with the mvdan.cc library. * Replaced checks for compatible filesystem types when using fuse-overlayfs with an INFO message when an incompatible filesystem type causes it to be unwritable by a fakeroot user. * The --nvccli option now works without --fakeroot. In that case the option can be used with --writable-tmpfs instead of --writable, and --writable-tmpfs is implied if neither option is given. Note that also /usr/bin has to be writable by the user, so without --fakeroot that probably requires a sandbox image that was built with --fix-perms. * The --nvccli option implies --nv. * Configure squashfuse to always show files to be owned by the current user. That's especially important for fakeroot to prevent most of the files from looking like they are owned by user 65534. * The fakeroot command can now be used even if $PATH is empty in the environment of the apptainer command. * Allow the newuidmap command to be missing if the current user is not listed in /etc/subuid. * Require the uidmap package in Debian packaging. * Improved error handling of unsupported pass protected PEM files with encrypted containers. * Ensure bootstrap_history directory is populated with previous definition files, present in source containers used in a build. * Add additional options to the build command for testing different fakeroot OBS-URL: https://build.opensuse.org/request/show/998137 OBS-URL: https://build.opensuse.org/package/show/network:cluster/apptainer?expand=0&rev=17
159 lines
4.8 KiB
RPMSpec
159 lines
4.8 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.1.0
|
|
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
|
|
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
|
|
|
|
Obsoletes: singularity
|
|
Obsoletes: singularity-ce
|
|
Obsoletes: 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
|
|
|
|
%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} \
|
|
--without-suid
|
|
cd builddir
|
|
make V="" old_config=
|
|
|
|
%install
|
|
export GOPATH=$PWD/gopath
|
|
export GOFLAGS=-mod=vendor
|
|
export PATH=$GOPATH/bin:$PATH
|
|
cd %{name}/builddir
|
|
|
|
make DESTDIR=$RPM_BUILD_ROOT install
|
|
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
|
|
|
|
%fdupes -s .tmp/
|
|
mv .tmp/* .
|
|
rmdir .tmp
|
|
%fdupes -s %buildroot
|
|
|
|
%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
|
|
%{_bindir}/*
|
|
%dir %{_libexecdir}/apptainer
|
|
%dir %{_libexecdir}/apptainer/bin
|
|
%dir %{_libexecdir}/apptainer/cni
|
|
%dir %{_libexecdir}/apptainer/lib
|
|
%{_libexecdir}/apptainer/bin/starter
|
|
%{_libexecdir}/apptainer/lib/offsetpreload.so
|
|
%{_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/*
|
|
|
|
%changelog
|