Files
apptainer/apptainer.spec
Egbert Eich b87bc8f9c0 - Update to 1.4.1
* Fix the use of libsubid which had been broken by the revision applied in 1.4.0-rc.2.
  * Fix a bug introduced in 1.4.0 that caused arm64 to be mis-converted to
    arm64v8 and resulted in a failure when pulling OCI containers.
  * Fix user database lookup in master process preventing instance from
    starting correctly on systems using winbind.
    Update minimum go version to 1.23.6 now that it is current in el8 & el9.
  * Check for existence of /run/systemd/system when verifying cgroups can be
    used via systemd manager.
  * Add a clear error message if someone tries to use privileged network
    options while not using setuid mode.
  * Allow multi-arch oci-archive files that have a nested index with the
    manifest. This is the default format (both for Docker and OCI) when using
    nerdctl save.
  * Test if docker-archive is actually an oci-archive (since Docker version
    25), and if it is oci then use the OCI parser to avoid bugs in the Docker
    parser. Save the daemon-daemon references to a temporary docker-archive, to
    benefit from the same improvements also for those references. Parse as
    oci-archive.
- New Features & Functionality in from ineherited 1.4.0
  * Add support for libsubid, when available at compile time. This library
    enables central management of subuid and subgid mappings and typically
    comes as part of the shadow-utils package, possibly as a shadow-utils-subid
    subpackage.
  * Add new build option --mksquashfs-args to pass additional arguments to the
    mksquashfs command when building SIF files. If a compression method other
    than gzip is selected, the SIF file might not work with older installations
    of Apptainer or Singularity, so an INFO message about that is printed. On
    the other hand, an INFO message that was printed (twice) when running an
    image with non-gzip compression has been removed.

OBS-URL: https://build.opensuse.org/package/show/network:cluster/apptainer?expand=0&rev=96
2025-06-06 09:25:17 +00:00

209 lines
6.7 KiB
RPMSpec

#
# spec file for package apptainer
#
# Copyright (c) 2025 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
Summary: Application and environment virtualization
# CRYPTOGAMS isn't known in OBS
#License: BSD-3-Clause-LBNL and (OpenSSL or CRYPTOGAMS)
License: BSD-3-Clause-LBNL AND OpenSSL
Group: Productivity/Clustering/Computing
Name: apptainer
Version: 1.4.1
Release: 0
# https://spdx.org/licenses/BSD-3-Clause-LBNL.html
URL: https://apptainer.org
Obsoletes: singularity <= 3.8.5
Conflicts: singularity
Conflicts: singularity-ce
Conflicts: singularity-runtime
Source0: https://github.com/apptainer/apptainer/archive/v%{version}%{?vers_suffix}/apptainer-%{version}%{?vers_suffix}.tar.gz
Source1: README.SUSE
Source2: SUSE.def
Source3: SLE-15SP5.def
Source4: SLE-15SP6.def
Source5: SLE-15SP7.def
Source10: Leap.def
Source20: %{name}-rpmlintrc
Source21: vendor.tar.gz
BuildRequires: cryptsetup
BuildRequires: fdupes
BuildRequires: gcc
BuildRequires: git
BuildRequires: go >= 1.19
BuildRequires: libuuid-devel
BuildRequires: make
BuildRequires: openssl-devel
BuildRequires: sysuser-tools
%ifarch aarch64
BuildRequires: binutils-gold
%endif
BuildRequires: libseccomp-devel
Requires: squashfs
Requires: squashfuse
Recommends: fuse2fs
Recommends: gocryptfs
Requires: (apptainer-leap = %version if product(Leap) >= 15.5)
Requires: (apptainer-sle15_5 = %version if product(SUSE_SLE) = 15.5)
Requires: (apptainer-sle15_6 = %version if product(SUSE_SLE) = 15.6)
Requires: (apptainer-sle15_7 = %version if product(SUSE_SLE) = 15.7)
# Needed for container decryption in userspace, upstream rpms include this
# but factory should have this seperately
Recommends: gocryptfs
PreReq: permissions
# there's no golang for ppc64 & %ix86, ppc64le does not have non pie builds
ExcludeArch: ppc64 ppc64le %ix86 s390 s390x
%description
Apptainer provides functionality to make portable
containers that can be used across host environments.
%package sle15_5
Summary: Apptainer Definition File Templates for SLE 15 SP5
BuildArch: noarch
Requires: apptainer = %version
%description sle15_5
The package provides a definition file template for Apptainer containers
based on SUSE Linux Enterprise 15 SP5.
%package sle15_6
Summary: Apptainer Definition File Templates for SLE 15 SP6
BuildArch: noarch
Requires: apptainer = %version
%description sle15_6
The package provides a definition file template for Apptainer containers
based on SUSE Linux Enterprise 15 SP6.
%package sle15_7
Summary: Apptainer Definition File Templates for SLE 15 SP7
BuildArch: noarch
Requires: apptainer = %version
%description sle15_7
The package provides a definition file template for Apptainer containers
based on SUSE Linux Enterprise 15 SP7.
%package leap
Summary: Apptainer Definition File Templates for current openSUSE Leap
BuildArch: noarch
Requires: apptainer = %version
%description leap
The package provides a definition file template for Apptainer containers
based on the latest openSUSE Leap release.
%prep
%autosetup -n %{name}-%{version}%{?vers_suffix} -a21
cp %{S:1} .
%build
# 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.
./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 \
--reproducible
%make_build -C builddir V=""
%install
export GOPATH=$PWD/gopath
export GOFLAGS=-mod=vendor
export PATH=$GOPATH/bin:$PATH
%make_install -C builddir V=
install -d -m 0755 %{buildroot}/%{_datarootdir}/apptainer/templates
install -m 0644 %{S:2} %{S:3} %{S:4} %{S:5} %{S:10} %{buildroot}/%{_datarootdir}/apptainer/templates
%fdupes apptainer/examples
%fdupes -s %buildroot
%files
%doc examples
%doc CONTRIBUTING.md
%doc README.md
%doc CHANGELOG.md
%doc CONTRIBUTORS.md
%doc %{basename:%{S:1}}
%license LICENSE.md
%license LICENSE_THIRD_PARTY.md
%license LICENSE_DEPENDENCIES.md
%{_bindir}/*
%dir %{_libexecdir}/apptainer
%dir %{_libexecdir}/apptainer/bin
%dir %{_libexecdir}/apptainer/cni
%dir %{_libexecdir}/apptainer/lib
%dir %{_datarootdir}/apptainer
%dir %{_datarootdir}/apptainer/templates
%{_libexecdir}/apptainer/bin/starter
%{_libexecdir}/apptainer/lib/offsetpreload.so
%{_libexecdir}/apptainer/cni/*
%{_datarootdir}/apptainer/templates/%{basename:%{S:2}}
%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/*
%files sle15_5
%{_datarootdir}/apptainer/templates/%{basename:%{S:3}}
%files sle15_6
%{_datarootdir}/apptainer/templates/%{basename:%{S:4}}
%files sle15_7
%{_datarootdir}/apptainer/templates/%{basename:%{S:5}}
%files leap
%{_datarootdir}/apptainer/templates/%{basename:%{S:10}}
%changelog