forked from pool/apptainer
Christian Goll
8016c940db
- Udpated to 1.1.2 which fixed CVE-2022-39237 * CVE-2022-39237: The sif dependency included in Apptainer before this release does not verify that the hash algorithm(s) used are cryptographically secure when verifying digital signatures. This release updates to sif v2.8.1 which corrects this issue. See the linked advisory for references and a workaround. OBS-URL: https://build.opensuse.org/request/show/1008777 OBS-URL: https://build.opensuse.org/package/show/network:cluster/apptainer?expand=0&rev=23
177 lines
5.4 KiB
RPMSpec
177 lines
5.4 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
|
|
|
|
%global squashfuse_version 0.1.105
|
|
|
|
Summary: Application and environment virtualization
|
|
License: BSD-3-Clause-LBNL
|
|
Group: Productivity/Clustering/Computing
|
|
Name: apptainer
|
|
Version: 1.1.2
|
|
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
|
|
Source9: vendor.tar.gz
|
|
%if "%{?squashfuse_version}" != ""
|
|
Source10: https://github.com/vasi/squashfuse/archive/%{squashfuse_version}/squashfuse-%{squashfuse_version}.tar.gz
|
|
Patch10: https://github.com/vasi/squashfuse/pull/70.patch
|
|
%endif
|
|
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
|
|
%if "%{?squashfuse_version}" != ""
|
|
BuildRequires: autoconf
|
|
BuildRequires: automake
|
|
BuildRequires: fuse3-devel
|
|
BuildRequires: libtool
|
|
BuildRequires: pkgconfig
|
|
BuildRequires: zlib-devel
|
|
%endif
|
|
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
|
|
%if "%{?squashfuse_version}" != ""
|
|
# the default directory for other steps is where the %prep section ends
|
|
# so do main package last
|
|
%setup -b 10 -n squashfuse-%{squashfuse_version}
|
|
%patch -P 10 -p1
|
|
%endif
|
|
%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:9}
|
|
./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
|