mirror of
https://github.com/Ponce/slackbuilds
synced 2024-11-22 19:44:21 +01:00
development/nvidia-container-toolkit: Added (NVidia container toolkit).
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
This commit is contained in:
parent
e815173dbd
commit
a6d5b664aa
7 changed files with 294 additions and 0 deletions
7
development/nvidia-container-toolkit/README
Normal file
7
development/nvidia-container-toolkit/README
Normal file
|
@ -0,0 +1,7 @@
|
|||
The NVIDIA Container Toolkit allows user to build and run GPU accelerated
|
||||
containers. The toolkit includes a container runtime library and utilities
|
||||
to automatically configure containers to leverage NVIDIA GPUs.
|
||||
|
||||
Warning: This SlackBuild requires network access when it runs, meaning
|
||||
it downloads files from the Internet with root access. You should
|
||||
decide for yourself whether or not you think this is a good idea.
|
32
development/nvidia-container-toolkit/config.toml.new
Normal file
32
development/nvidia-container-toolkit/config.toml.new
Normal file
|
@ -0,0 +1,32 @@
|
|||
disable-require = false
|
||||
#swarm-resource = "DOCKER_RESOURCE_GPU"
|
||||
#accept-nvidia-visible-devices-envvar-when-unprivileged = true
|
||||
#accept-nvidia-visible-devices-as-volume-mounts = false
|
||||
|
||||
[nvidia-container-cli]
|
||||
#root = "/run/nvidia/driver"
|
||||
#path = "/usr/bin/nvidia-container-cli"
|
||||
environment = []
|
||||
#debug = "/var/log/nvidia-container-toolkit.log"
|
||||
#ldcache = "/etc/ld.so.cache"
|
||||
load-kmods = true
|
||||
#no-cgroups = false
|
||||
user = "root:video"
|
||||
ldconfig = "@/sbin/ldconfig"
|
||||
|
||||
[nvidia-container-runtime]
|
||||
#debug = "/var/log/nvidia-container-runtime.log"
|
||||
log-level = "info"
|
||||
|
||||
# Specify the runtimes to consider. This list is processed in order and the PATH
|
||||
# searched for matching executables unless the entry is an absolute path.
|
||||
runtimes = [
|
||||
"docker-runc",
|
||||
"runc",
|
||||
]
|
||||
|
||||
mode = "auto"
|
||||
|
||||
[nvidia-container-runtime.modes.csv]
|
||||
|
||||
mount-spec-path = "/etc/nvidia-container-runtime/host-files-for-container.d"
|
99
development/nvidia-container-toolkit/doinst.sh
Normal file
99
development/nvidia-container-toolkit/doinst.sh
Normal file
|
@ -0,0 +1,99 @@
|
|||
# $RCSfile: doinst.sh,v $
|
||||
# $Revision: 1.9 $
|
||||
# $Date: 2023-05-11 07:58:15+01 $
|
||||
# DW
|
||||
|
||||
# NOTE DO:
|
||||
# PLEASE only keep the functions/sections/commands that you need.
|
||||
# PLEASE delete EVERYTHING else (including these comments).
|
||||
# PLEASE let us know in the comment section of the upload form if including
|
||||
# custom functions or commands.
|
||||
|
||||
# NOTE PLEASE DO NOT:
|
||||
# Add or change user or group accounts.
|
||||
# Change any of the default system settings files.
|
||||
# Add commands that take forever to complete.
|
||||
# Use applications like checkinstall or installwatch, that 'touch' every file
|
||||
# on the system.
|
||||
|
||||
|
||||
# NOTE on paths
|
||||
# Most commands do not have an initial '/' in directory path arguments so that
|
||||
# they work correctly when using pkgtools --root <path> or $ROOT options.
|
||||
# Installpkg and friends chdir to $ROOT or --root <path> before installing packages.
|
||||
# The exceptions are the 'chroot' commands which do use an initial '/'.
|
||||
# The chroot command is used to avoid files on the host being changed when
|
||||
# using --root or $ROOT.
|
||||
#
|
||||
# Example: /usr/bin/update-desktop-database -q usr/share/applications
|
||||
# ^Full path for command^ ^No initial slash^
|
||||
|
||||
# NOTE on tests
|
||||
# [ -e <path> ] => Tests if a directory or file exists.
|
||||
# [ -x <command> ] => Tests if command is executable.
|
||||
# Will also fail silently if not -e too.
|
||||
|
||||
# NOTE on redirections
|
||||
# Most commands redirect stdout and stderr to /dev/null to keep down the noise.
|
||||
# If you need to see error messages while testing, the easiest way is to
|
||||
# temporarily comment out 2>&1.
|
||||
|
||||
# FUNCTION: config()
|
||||
# DESCRIPTION: Discards identical copies of config and rc.INIT files.
|
||||
# ARGUMENTS: A single filename.
|
||||
# NOTE
|
||||
# Files should be installed with a .new extension.
|
||||
# Example: etc/rc.d/rc.myshinynewdaemon.new
|
||||
# We don't clobber if it's avoidable.
|
||||
# "slackpkg new-config" is one way that users can list+process .new files.
|
||||
|
||||
config() {
|
||||
NEW="$1"
|
||||
OLD="$(dirname $NEW)/$(basename $NEW .new)"
|
||||
# If there's no config file by that name, mv it over:
|
||||
if [ ! -r $OLD ]; then
|
||||
mv $NEW $OLD
|
||||
elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
|
||||
# toss the redundant copy
|
||||
rm $NEW
|
||||
fi
|
||||
# Otherwise, we leave the .new copy for the admin to consider...
|
||||
}
|
||||
|
||||
# FUNCTION: preserve_perms()
|
||||
# DESCRIPTION: Keeps the executable bit that a user may have set (or unset) on
|
||||
# an rc.INIT or config file since she first installed a package.
|
||||
# ARGUMENTS: A single filename.
|
||||
# NOTE
|
||||
# This calls the above config() function to discard identical copies.
|
||||
# Files should be installed with a .new extension.
|
||||
# Use for files in etc/rc.d/ and etc/profile.d/
|
||||
# Other config files may also need this.
|
||||
|
||||
preserve_perms() {
|
||||
NEW="$1"
|
||||
OLD="$(dirname $NEW)/$(basename $NEW .new)"
|
||||
if [ -e $OLD ]; then
|
||||
cp -a $OLD ${NEW}.incoming
|
||||
cat $NEW > ${NEW}.incoming
|
||||
mv ${NEW}.incoming $NEW
|
||||
fi
|
||||
config $NEW
|
||||
}
|
||||
|
||||
# FUNCTION: schema_install()
|
||||
# DESCRIPTION: Installs options (schemas) to the gnome config database.
|
||||
# ARGUMENTS: A single filename.
|
||||
# NOTE Not to be confused with glib schemas
|
||||
|
||||
schema_install() {
|
||||
SCHEMA="$1"
|
||||
GCONF_CONFIG_SOURCE="xml::etc/gconf/gconf.xml.defaults" \
|
||||
chroot . gconftool-2 --makefile-install-rule \
|
||||
/etc/gconf/schemas/$SCHEMA \
|
||||
1>/dev/null
|
||||
}
|
||||
|
||||
config etc/nvidia-container-runtime/config.toml.new
|
||||
config usr/share/containers/oci/hooks.d/oci-nvidia-hook.json.new
|
||||
|
|
@ -0,0 +1,112 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Slackware build script for nvidia-container-toolkit
|
||||
|
||||
# Copyright 2024 Chris Walker Kempner, TX
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use of this script, with or without modification, is
|
||||
# permitted provided that the following conditions are met:
|
||||
#
|
||||
# 1. Redistributions of this script must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
cd $(dirname $0) ; CWD=$(pwd)
|
||||
|
||||
PRGNAM=nvidia-container-toolkit
|
||||
VERSION=${VERSION:-1.14.6}
|
||||
BUILD=${BUILD:-1}
|
||||
TAG=${TAG:-_SBo}
|
||||
PKGTYPE=${PKGTYPE:-tgz}
|
||||
|
||||
if [ -z "$ARCH" ]; then
|
||||
case "$( uname -m )" in
|
||||
i?86) ARCH=i586 ;;
|
||||
arm*) ARCH=arm ;;
|
||||
*) ARCH=$( uname -m ) ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
|
||||
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
TMP=${TMP:-/tmp/SBo}
|
||||
PKG=$TMP/package-$PRGNAM
|
||||
OUTPUT=${OUTPUT:-/tmp}
|
||||
|
||||
if [ "$ARCH" = "i586" ]; then
|
||||
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
|
||||
LIBDIRSUFFIX=""
|
||||
elif [ "$ARCH" = "i686" ]; then
|
||||
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
|
||||
LIBDIRSUFFIX=""
|
||||
elif [ "$ARCH" = "x86_64" ]; then
|
||||
SLKCFLAGS="-O2 -fPIC"
|
||||
LIBDIRSUFFIX="64"
|
||||
elif [ "$ARCH" = "aarch64" ]; then
|
||||
SLKCFLAGS="-O2 -fPIC"
|
||||
LIBDIRSUFFIX="64"
|
||||
else
|
||||
SLKCFLAGS="-O2"
|
||||
LIBDIRSUFFIX=""
|
||||
fi
|
||||
|
||||
set -e
|
||||
|
||||
rm -rf $PKG
|
||||
mkdir -p $TMP $PKG $OUTPUT
|
||||
cd $TMP
|
||||
rm -rf $PRGNAM-$VERSION
|
||||
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
|
||||
cd $PRGNAM-$VERSION
|
||||
chown -R root:root .
|
||||
find -L . \
|
||||
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
|
||||
-o -perm 511 \) -exec chmod 755 {} \; -o \
|
||||
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
|
||||
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
|
||||
|
||||
CFLAGS="" \
|
||||
CPPFLAGS="" \
|
||||
LDLIBS="" \
|
||||
make binaries
|
||||
|
||||
mkdir -p $PKG/usr/bin
|
||||
install -m 755 -t $PKG/usr/bin nvidia-container-runtime-hook
|
||||
install -m 755 -t $PKG/usr/bin nvidia-container-runtime
|
||||
install -m 755 -t $PKG/usr/bin nvidia-container-runtime.cdi
|
||||
install -m 755 -t $PKG/usr/bin nvidia-container-runtime.legacy
|
||||
install -m 755 -t $PKG/usr/bin nvidia-ctk
|
||||
|
||||
mkdir -p $PKG/etc/nvidia-container-runtime/host-files-for-container.d
|
||||
cat $CWD/config.toml.new > $PKG/etc/nvidia-container-runtime/config.toml.new
|
||||
|
||||
mkdir -p $PKG/usr/share/containers/oci/hooks.d
|
||||
cat $CWD/oci-nvidia-hook.json.new > $PKG/usr/share/containers/oci/hooks.d/oci-nvidia-hook.json.new
|
||||
|
||||
#find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
|
||||
# | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
|
||||
|
||||
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
|
||||
cp LICENSE $PKG/usr/doc/$PRGNAM-$VERSION
|
||||
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
|
||||
|
||||
mkdir -p $PKG/install
|
||||
cat $CWD/slack-desc > $PKG/install/slack-desc
|
||||
cat $CWD/doinst.sh > $PKG/install/doinst.sh
|
||||
|
||||
cd $PKG
|
||||
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
|
|
@ -0,0 +1,10 @@
|
|||
PRGNAM="nvidia-container-toolkit"
|
||||
VERSION="1.14.6"
|
||||
HOMEPAGE="https://github.com/NVIDIA/nvidia-container-toolkit"
|
||||
DOWNLOAD="UNSUPPORTED"
|
||||
MD5SUM=""
|
||||
DOWNLOAD_x86_64="https://github.com/NVIDIA/nvidia-container-toolkit/archive/v1.14.6/nvidia-container-toolkit-1.14.6.tar.gz"
|
||||
MD5SUM_x86_64="0f26467a05b623f744a1433e04f359ff"
|
||||
REQUIRES="google-go-lang libnvidia-container"
|
||||
MAINTAINER="Chris Walker"
|
||||
EMAIL="kris240376@gmail.com"
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"version": "1.0.0",
|
||||
"hook": {
|
||||
"path": "/usr/bin/nvidia-container-runtime-hook",
|
||||
"args": ["nvidia-container-runtime-hook", "prestart"],
|
||||
"env": [
|
||||
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||
]
|
||||
},
|
||||
"when": {
|
||||
"always": true,
|
||||
"commands": [".*"]
|
||||
},
|
||||
"stages": ["prestart"]
|
||||
}
|
19
development/nvidia-container-toolkit/slack-desc
Normal file
19
development/nvidia-container-toolkit/slack-desc
Normal file
|
@ -0,0 +1,19 @@
|
|||
# HOW TO EDIT THIS FILE:
|
||||
# The "handy ruler" below makes it easier to edit a package description.
|
||||
# Line up the first '|' above the ':' following the base package name, and
|
||||
# the '|' on the right side marks the last column you can put a character in.
|
||||
# You must make exactly 11 lines for the formatting to be correct. It's also
|
||||
# customary to leave one space after the ':' except on otherwise blank lines.
|
||||
|
||||
|-----handy-ruler------------------------------------------------------|
|
||||
nvidia-container-toolkit: nvidia-container-toolkit (NVIDIA container toolkit)
|
||||
nvidia-container-toolkit:
|
||||
nvidia-container-toolkit: The NVIDIA Container Toolkit allows user to build and run GPU
|
||||
nvidia-container-toolkit: accelerated containers. The toolkit includes a container runtime
|
||||
nvidia-container-toolkit: library and utilities to automatically configure containers to
|
||||
nvidia-container-toolkit: leverage NVIDIA GPUs.
|
||||
nvidia-container-toolkit:
|
||||
nvidia-container-toolkit: Homepage: https://github.com/NVIDIA/nvidia-container-toolkit
|
||||
nvidia-container-toolkit:
|
||||
nvidia-container-toolkit:
|
||||
nvidia-container-toolkit:
|
Loading…
Reference in a new issue