forked from pool/apptainer
Accepting request 955828 from home:mslacken:pr
following the apptainer fork OBS-URL: https://build.opensuse.org/request/show/955828 OBS-URL: https://build.opensuse.org/package/show/network:cluster/apptainer?expand=0&rev=1
This commit is contained in:
commit
ba0684af03
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.osc
|
94
README.SUSE
Normal file
94
README.SUSE
Normal file
@ -0,0 +1,94 @@
|
||||
openSUSE/SUSE specific Settings
|
||||
===============================
|
||||
|
||||
openSUSE and SUSE have a small difference with upstream default.
|
||||
This means the SUID root binaries distributed by singularty are
|
||||
executable only by users belonging to the group 'singularity'.
|
||||
|
||||
Otherwise, users will get an error message like this one:
|
||||
|
||||
FATAL: while executing /usr/lib/singularity/bin/starter-suid: permission denied
|
||||
|
||||
To add a user to the group singularity, execute (as root):
|
||||
|
||||
# usermod -a -G singularity <user_login>
|
||||
|
||||
Create Singularity Images from openSUSE/SLE
|
||||
===========================================
|
||||
|
||||
To create openSUSE/SLE singularity images from scratch a number
|
||||
of bootdef variables need to be specified:
|
||||
|
||||
1. Create a bootdef file (for instance 'sle.def'), add
|
||||
BootStrap: zypper
|
||||
2. Set the OS version:
|
||||
OSVersion: 15.0
|
||||
The version number corresponds to the Leap version or the
|
||||
SLE version and service pack level: <version>.<service_pack_level>
|
||||
Example: SLE-12 SP4 would be 12.4.
|
||||
The inital release of a major version corresponds to
|
||||
<service_pack_level> 0.
|
||||
3. For openSUSE the following additional variables need to be
|
||||
specified:
|
||||
* MirrorURL: URL to the installation repository.
|
||||
Check 'man 8 zypper' for supported formats
|
||||
* UpdateURL: (optional) URI of the update repository
|
||||
4. For SLE, all required settings are obtained from SCC.
|
||||
The following variables are recognized:
|
||||
* Product: The product code: The following forms may be
|
||||
used:
|
||||
<product_id>
|
||||
<product_id>/<os_version>
|
||||
<product_id>/<os_version>/<arch>
|
||||
<product_id>: SLES, SLE-HPC (SLE-12),
|
||||
SLE_HPC (SLE-15), SLED
|
||||
<os_version>: optional, if ommitted, the value
|
||||
of OSVersion will be used.
|
||||
The variable %{OSVERSION} is
|
||||
recognized and replaced by OSVersion.
|
||||
<arch> : The architecture to use. Defaults
|
||||
to 'uname -m'.
|
||||
* User: The email a subscription is registed with SCC.
|
||||
* Regcode: The SCC registration code provided with the subscription.
|
||||
* ProductPGP: The PGP key used to sign the repositories. Each line must
|
||||
be terminated with \n. Long lines may be broken using the
|
||||
continuation character '\'. See below.
|
||||
Note: this is not required when an installer repository is
|
||||
provided with MirrorURL.
|
||||
Beginning with version 15, the URI to the installer image needs to be
|
||||
provided as well:
|
||||
* MirrorURL: Repository containing the SLE Installer (see also above).
|
||||
Since SLE-15 consists of modules, a list of modules to be used should
|
||||
to be specified as well:
|
||||
* Modules: Specify the modules in a comma separated list without
|
||||
spaces. Example:
|
||||
SLEModules: sle-module-basesystem,sle-module-server-applications,sle-module-web-scripting,sle-module-hpc
|
||||
|
||||
Examples
|
||||
========
|
||||
Example defintions for SLE12-SP5 and SLE15-SP3 are in the same
|
||||
directory as README.SUSE
|
||||
|
||||
ProductPGP
|
||||
==========
|
||||
SLEpgp: -----BEGIN PGP PUBLIC KEY BLOCK-----\n\
|
||||
Version: rpm-4.11.2 (NSS-3)\n\
|
||||
\n\
|
||||
mQENBFEKlmsBCADbpZZbbSC5Zi+HxCR/ynYsVxU5JNNiSSZabN5GMgc9Z0hxeXxp\n\
|
||||
YWvFoE/4n0+IXIsp83iKvxf06Eu8je/DXp0lMqDZu7WiT3XXAlkOPSNV4akHTDoY\n\
|
||||
91SJaZCpgUJ7K1QXOPABNbREsAMN1a7rxBowjNjBUyiTJ2YuvQRLtGdK1kExsVma\n\
|
||||
hieh/QxpoDyYd5w/aky3z23erCoEd+OPfAqEHd5tQIa6LOosa63BSCEl3milJ7J9\n\
|
||||
vDmoGPAoS6ui7S2R5X4/+PLN8Mm2kOBrFjhmL93LX0mrGCMxsNsKgP6zabYKQEb8\n\
|
||||
L028SXvl7EGoA+Vw5Vd3wIGbM73PfbgNrXjfABEBAAG0KFN1U0UgUGFja2FnZSBT\n\
|
||||
aWduaW5nIEtleSA8YnVpbGRAc3VzZS5kZT6JATwEEwECACYCGwMGCwkIBwMCBBUC\n\
|
||||
CAMEFgIDAQIeAQIXgAUCWEfrHwUJDsIitAAKCRBwr56BOdt8gpqUB/wPSSS5BcDu\n\
|
||||
Oi4n02cj4Hdt7WITKBjjo0lG1fXG1ppx1wOST+s8FertMVFY53TW6FGjcYtwVOIq\n\
|
||||
rsMYiV6kf1NxUV/jcAy7VmC5EZnO0R/D3sT4Oh5hsLtERauZolK5BZmd0S51Qa8e\n\
|
||||
TxZ5mX9PL2i3s/ShETc30drf83ugc7B4yZPNQWXNDPgGcC+hEeC5qw48RzHYIpUt\n\
|
||||
RzHmefR5Z3ioTUbDlzy+SGP2uA7mhR4Lfk/df5fYxWfCoKlyGjtrvA65cB+Pksyn\n\
|
||||
xrAeBuB+vBM+KnDrxW2Sn4AbWkzH//dfz9OJDJu4UM91hb7qxM0OkrXHQV3iNqzg\n\
|
||||
MDEhky/9NqMy\n\
|
||||
=GdP5\n\
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
|
52
SLE-12SP5.def
Normal file
52
SLE-12SP5.def
Normal file
@ -0,0 +1,52 @@
|
||||
BootStrap: zypper
|
||||
OSVersion: 12.5
|
||||
Include: zypper
|
||||
Product: SLE-HPC/12.5/x86_64
|
||||
User: EMAIL
|
||||
Regcode: REGCODE
|
||||
Modules: \n\
|
||||
sle-module-hpc/12/x86_64,\n\
|
||||
sle-module-web-scripting/12/x86_64,\n\
|
||||
sle-module-legacy/12/x86_64,\n\
|
||||
sle-sdk/12.5/x86_64,\n\
|
||||
sle-module-toolchain/12/x86_64
|
||||
|
||||
ProductPGP:\n\
|
||||
SLEpgp: -----BEGIN PGP PUBLIC KEY BLOCK-----\n\
|
||||
Version: rpm-4.11.2 (NSS-3)\n\
|
||||
\n\
|
||||
mQENBFEKlmsBCADbpZZbbSC5Zi+HxCR/ynYsVxU5JNNiSSZabN5GMgc9Z0hxeXxp\n\
|
||||
YWvFoE/4n0+IXIsp83iKvxf06Eu8je/DXp0lMqDZu7WiT3XXAlkOPSNV4akHTDoY\n\
|
||||
91SJaZCpgUJ7K1QXOPABNbREsAMN1a7rxBowjNjBUyiTJ2YuvQRLtGdK1kExsVma\n\
|
||||
hieh/QxpoDyYd5w/aky3z23erCoEd+OPfAqEHd5tQIa6LOosa63BSCEl3milJ7J9\n\
|
||||
vDmoGPAoS6ui7S2R5X4/+PLN8Mm2kOBrFjhmL93LX0mrGCMxsNsKgP6zabYKQEb8\n\
|
||||
L028SXvl7EGoA+Vw5Vd3wIGbM73PfbgNrXjfABEBAAG0KFN1U0UgUGFja2FnZSBT\n\
|
||||
aWduaW5nIEtleSA8YnVpbGRAc3VzZS5kZT6JATwEEwECACYCGwMGCwkIBwMCBBUC\n\
|
||||
CAMEFgIDAQIeAQIXgAUCWEfrHwUJDsIitAAKCRBwr56BOdt8gpqUB/wPSSS5BcDu\n\
|
||||
Oi4n02cj4Hdt7WITKBjjo0lG1fXG1ppx1wOST+s8FertMVFY53TW6FGjcYtwVOIq\n\
|
||||
rsMYiV6kf1NxUV/jcAy7VmC5EZnO0R/D3sT4Oh5hsLtERauZolK5BZmd0S51Qa8e\n\
|
||||
TxZ5mX9PL2i3s/ShETc30drf83ugc7B4yZPNQWXNDPgGcC+hEeC5qw48RzHYIpUt\n\
|
||||
RzHmefR5Z3ioTUbDlzy+SGP2uA7mhR4Lfk/df5fYxWfCoKlyGjtrvA65cB+Pksyn\n\
|
||||
xrAeBuB+vBM+KnDrxW2Sn4AbWkzH//dfz9OJDJu4UM91hb7qxM0OkrXHQV3iNqzg\n\
|
||||
MDEhky/9NqMy\n\
|
||||
=GdP5\n\
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
|
||||
|
||||
%post
|
||||
ln -s /etc/products.d/SLE-HPC.prod /etc/products.d/baseproduct
|
||||
SUSEConnect -p PackageHub/12.5/x86_64
|
||||
zypper install -y bash coreutils e2fsprogs \
|
||||
ethtool filesystem findutils gawk grep \
|
||||
iputils iproute2 net-tools nfs-client pam psmisc rsync sed \
|
||||
rsyslog util-linux words wicked tar less \
|
||||
gzip which util-linux \
|
||||
pciutils vim strace sudo syslinux tcpdump timezone chrony cpio \
|
||||
wget openssh
|
||||
# up to here, its a base container, line below can be used
|
||||
# used for warewulf
|
||||
zypper install -y ipmitool kernel-default
|
||||
|
||||
systemctl enable sshd
|
||||
|
53
SLE-15SP3.def
Normal file
53
SLE-15SP3.def
Normal file
@ -0,0 +1,53 @@
|
||||
BootStrap: zypper
|
||||
OSVersion: 15.3
|
||||
Include: zypper
|
||||
Product: SLES/15.3/x86_64
|
||||
User: EMAIL
|
||||
Regcode: REGCODE
|
||||
MirrorURL: https://updates.suse.com/SUSE/Products/SLE-BCI/15-SP3/x86_64/product/
|
||||
# Just base modules here, other modules are installed in post
|
||||
Modules: \n\
|
||||
sle-module-basesystem,\n\
|
||||
sle-module-server-applications
|
||||
|
||||
ProductPGP:\n\
|
||||
SLEpgp: -----BEGIN PGP PUBLIC KEY BLOCK-----\n\
|
||||
Version: rpm-4.11.2 (NSS-3)\n\
|
||||
\n\
|
||||
mQENBFEKlmsBCADbpZZbbSC5Zi+HxCR/ynYsVxU5JNNiSSZabN5GMgc9Z0hxeXxp\n\
|
||||
YWvFoE/4n0+IXIsp83iKvxf06Eu8je/DXp0lMqDZu7WiT3XXAlkOPSNV4akHTDoY\n\
|
||||
91SJaZCpgUJ7K1QXOPABNbREsAMN1a7rxBowjNjBUyiTJ2YuvQRLtGdK1kExsVma\n\
|
||||
hieh/QxpoDyYd5w/aky3z23erCoEd+OPfAqEHd5tQIa6LOosa63BSCEl3milJ7J9\n\
|
||||
vDmoGPAoS6ui7S2R5X4/+PLN8Mm2kOBrFjhmL93LX0mrGCMxsNsKgP6zabYKQEb8\n\
|
||||
L028SXvl7EGoA+Vw5Vd3wIGbM73PfbgNrXjfABEBAAG0KFN1U0UgUGFja2FnZSBT\n\
|
||||
aWduaW5nIEtleSA8YnVpbGRAc3VzZS5kZT6JATwEEwECACYCGwMGCwkIBwMCBBUC\n\
|
||||
CAMEFgIDAQIeAQIXgAUCWEfrHwUJDsIitAAKCRBwr56BOdt8gpqUB/wPSSS5BcDu\n\
|
||||
Oi4n02cj4Hdt7WITKBjjo0lG1fXG1ppx1wOST+s8FertMVFY53TW6FGjcYtwVOIq\n\
|
||||
rsMYiV6kf1NxUV/jcAy7VmC5EZnO0R/D3sT4Oh5hsLtERauZolK5BZmd0S51Qa8e\n\
|
||||
TxZ5mX9PL2i3s/ShETc30drf83ugc7B4yZPNQWXNDPgGcC+hEeC5qw48RzHYIpUt\n\
|
||||
RzHmefR5Z3ioTUbDlzy+SGP2uA7mhR4Lfk/df5fYxWfCoKlyGjtrvA65cB+Pksyn\n\
|
||||
xrAeBuB+vBM+KnDrxW2Sn4AbWkzH//dfz9OJDJu4UM91hb7qxM0OkrXHQV3iNqzg\n\
|
||||
MDEhky/9NqMy\n\
|
||||
=GdP5\n\
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
|
||||
|
||||
%post
|
||||
update-ca-certificates
|
||||
SUSEConnect -p PackageHub/15.3/x86_64
|
||||
SUSEConnect -p sle-module-web-scripting/15.3/x86_64
|
||||
SUSEConnect -p sle-module-hpc/15.3/x86_64
|
||||
zypper install -y bash coreutils e2fsprogs \
|
||||
ethtool filesystem findutils gawk grep \
|
||||
iputils iproute2 net-tools nfs-client pam psmisc rsync sed \
|
||||
rsyslog util-linux words wicked tar less \
|
||||
gzip which util-linux \
|
||||
pciutils vim strace sudo syslinux tcpdump timezone chrony cpio \
|
||||
wget openssh
|
||||
# up to here, its a base container, line below can be used
|
||||
# used for warewulf
|
||||
zypper in -y kernel-default ipmitool
|
||||
|
||||
systemctl enable sshd
|
||||
|
5
_service
Normal file
5
_service
Normal file
@ -0,0 +1,5 @@
|
||||
<services>
|
||||
<service name="go_modules" mode="disabled">
|
||||
</service>
|
||||
</services>
|
||||
|
3
apptainer-1.0.0-rc.2.tar.gz
Normal file
3
apptainer-1.0.0-rc.2.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:98de8783a34d648a0bf5dbc8ec2c549737c8f8319faae0ea264faa578272fda4
|
||||
size 5102474
|
2
apptainer-rpmlintrc
Normal file
2
apptainer-rpmlintrc
Normal file
@ -0,0 +1,2 @@
|
||||
# Have the same binary with and without setuid bit
|
||||
addFilter("files-duplicated-waste")
|
84
apptainer.changes
Normal file
84
apptainer.changes
Normal file
@ -0,0 +1,84 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu Feb 17 15:29:45 UTC 2022 - Christian Goll <cgoll@suse.com>
|
||||
|
||||
- Updated to v1.0.0-rc1 changes to singularity 3.9.5 are
|
||||
* The primary executable has been changed from singularity to apptainer.
|
||||
However, a singularity command symlink alias has been created pointing to
|
||||
the apptainer command. The contents of containers are unchanged and
|
||||
continue to use the singularity name for startup scripts, etc.
|
||||
* The per-user configuration directory has changed from ~/.singularity to
|
||||
~/.apptainer. The first time the apptainer command accesses the user
|
||||
configuration directory, relevant configuration is automatically imported
|
||||
from the old directory to the new one.
|
||||
* Environment variables have all been changed to have an APPTAINER prefix
|
||||
instead of a SINGULARITY prefix. However, SINGULARITY prefix variables are
|
||||
still recognized. If only a SINGULARITY prefix variable exists, a warning
|
||||
will be printed about deprecated usage and then the value will be used. If
|
||||
both prefixes exist and the value is the same, no warning is printed; this
|
||||
is the recommended method to set environment variables for those who need
|
||||
to support both apptainer and singularity. If both prefixes exist for the
|
||||
same variable and the value is different then a warning is also printed.
|
||||
* The default SylabsCloud remote endpoint has been removed and replaced by
|
||||
one called DefaultRemote which has no defined server for the library://
|
||||
URI. System administrators may restore the old default if they wish by
|
||||
adding it to /etc/apptainer/remote.yaml with a URI of cloud.sylabs.io and
|
||||
setting it there as the Active remote, or users can add it to their own
|
||||
configuration with the commands apptainer remote add SylabsCloud
|
||||
cloud.sylabs.io and apptainer remote use SylabsCloud.
|
||||
* The DefaultRemote's key server is https://keys.openpgp.org instead of the
|
||||
Sylabs key server
|
||||
* The apptainer build --remote option has been removed because there is no
|
||||
standard protocol or non-commercial service that supports it.
|
||||
- New Features:
|
||||
* Honor image binds and user binds in the order they're given instead of
|
||||
always doing image binds first.
|
||||
* Experimental support for checkpointing of instances using DMTCP has been
|
||||
added. Additional flags --dmtcp-launch and --dmtcp-restart has been added
|
||||
to the apptainer instance start command, and a checkpoint command group has
|
||||
been added to manage the checkpoint state. A new
|
||||
/etc/apptainer/dmtcp-conf.yaml configuration file is also added.
|
||||
Limitations are that it can only work with dynamically linked applications
|
||||
and the container has to be based on glibc.
|
||||
* --writable-tmpfs can be used with apptainer build to run the %test section
|
||||
of the build with a ephemeral tmpfs overlay, permitting tests that write to
|
||||
the container filesystem.
|
||||
* The --compat flag for actions is a new short-hand to enable a number of
|
||||
options that increase OCI/Docker compatibility. Infers --containall,
|
||||
--no-init, --no-umask, --writable-tmpfs. Does not use user, uts, or network
|
||||
namespaces as these may not be supported on many installations.
|
||||
* The experimental --nvccli flag will use nvidia-container-cli to setup the
|
||||
container for Nvidia GPU operation. Apptainer will not bind GPU libraries
|
||||
itself. Environment variables that are used with Nvidia's docker-nvidia
|
||||
runtime to configure GPU visibility / driver capabilities & requirements
|
||||
are parsed by the --nvccli flag from the environment of the calling user.
|
||||
By default, the compute and utility GPU capabilities are configured. The
|
||||
use nvidia-container-cli option in apptainer.conf can be set to yes to
|
||||
always use nvidia-container-cli when supported. --nvccli is not supported
|
||||
in the setuid workflow, and it requires being used in combination with
|
||||
--writable in user namespace mode. Please see documentation for more
|
||||
details.
|
||||
* The --apply-cgroups flag can be used to apply cgroups resource and device
|
||||
restrictions on a system using the v2 unified cgroups hierarchy. The
|
||||
resource restrictions must still be specified in the v1 / OCI format, which
|
||||
will be translated into v2 cgroups resource restrictions, and eBPF device
|
||||
restrictions.
|
||||
* A new --mount flag and APPTAINER_MOUNT environment variable can be used to
|
||||
specify bind mounts in
|
||||
type=bind,source=<src>,destination=<dst>[,options...] format. This improves
|
||||
CLI compatibility with other runtimes, and allows binding paths containing
|
||||
: and , characters (using CSV style escaping).
|
||||
* Perform concurrent multi-part downloads for library:// URIs. Uses 3
|
||||
concurrent downloads by default, and is configurable in apptainer.conf or
|
||||
via environment variables.
|
||||
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Dec 15 08:38:57 UTC 2021 - Christian Goll <cgoll@suse.com>
|
||||
|
||||
- Explicit dependcy on go1.16.12 or go1.17.5 which fix
|
||||
(CVE-2021-44717) and (CVE-2021-44716) that may affect singualrity
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Dec 13 12:55:47 UTC 2021 - Christian Goll <cgoll@suse.com>
|
||||
|
||||
- inital commit of apptainer which is a singularity fork
|
177
apptainer.spec
Normal file
177
apptainer.spec
Normal file
@ -0,0 +1,177 @@
|
||||
#
|
||||
# spec file for package apptainer
|
||||
#
|
||||
# Copyright (c) 2021 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.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
|
||||
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
|
||||
# move bash completion to the right place
|
||||
mkdir -pv %{buildroot}/%{_datadir}/bash-completion/completions/
|
||||
mv %{buildroot}/%{_sysconfdir}/bash_completion.d/apptainer \
|
||||
%{buildroot}/%{_datadir}/bash-completion/completions/
|
||||
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-LBNL.md
|
||||
%license apptainer/COPYRIGHT.md
|
||||
%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/apptainer
|
||||
%dir %{_localstatedir}/lib/apptainer
|
||||
%dir %{_localstatedir}/lib/apptainer/mnt
|
||||
%dir %{_localstatedir}/lib/apptainer/mnt/session
|
||||
%{_mandir}/man1/*
|
||||
%{_sysusersdir}/system-group-%{name}.conf
|
||||
|
||||
%changelog
|
26
useful_error_message.patch
Normal file
26
useful_error_message.patch
Normal file
@ -0,0 +1,26 @@
|
||||
From 5194ad8f863e971dde1c668d9c9de844b58ae893 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Goll <cgoll@suse.de>
|
||||
Date: Mon, 13 Dec 2021 14:35:41 +0100
|
||||
Subject: [PATCH] Add an useful error message when the user doesn't belong to
|
||||
the singularity group
|
||||
|
||||
---
|
||||
internal/pkg/util/starter/starter.go | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/internal/pkg/util/starter/starter.go b/internal/pkg/util/starter/starter.go
|
||||
index 11858ee20..5f76ac08d 100644
|
||||
--- a/internal/pkg/util/starter/starter.go
|
||||
+++ b/internal/pkg/util/starter/starter.go
|
||||
@@ -94,7 +94,7 @@ func Exec(name string, config *config.Common, ops ...CommandOp) error {
|
||||
return fmt.Errorf("while initializing starter command: %s", err)
|
||||
}
|
||||
err := unix.Exec(c.path, []string{name}, c.env)
|
||||
- return fmt.Errorf("while executing %s: %s", c.path, err)
|
||||
+ return fmt.Errorf("while executing %s: %s\nPlease read /usr/share/doc/packages/singularity/README.SUSE to get help\n", c.path, err)
|
||||
}
|
||||
|
||||
// Run executes the starter binary and returns once starter
|
||||
--
|
||||
2.34.1
|
||||
|
3
vendor.tar.gz
Normal file
3
vendor.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4ca008a34c696055f9849bb7660cf23d2959e3aa55d67438199bdf5a6c699a56
|
||||
size 6827382
|
Loading…
x
Reference in New Issue
Block a user