-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathlibnvidia-container_1.00.bb
More file actions
70 lines (56 loc) · 2.89 KB
/
libnvidia-container_1.00.bb
File metadata and controls
70 lines (56 loc) · 2.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
require libnvidia-container.inc
inherit features_check
SUMMARY = "libNVIDIA Container for Yocto"
PACKAGECONFIG ??= "seccomp"
PACKAGECONFIG[seccomp] = "WITH_SECCOMP=yes,WITH_SECCOMP=no,libseccomp"
# We need to link with libelf, otherwise we need to
# include bmake-native which does not exist at the moment.
EXTRA_OEMAKE = "EXCLUDE_BUILD_FLAGS=1 PLATFORM=${HOST_ARCH} WITH_NVCGO=yes WITH_LIBELF=yes WITH_SECCOMP=yes COMPILER=${@d.getVar('CC').split()[0]} REVISION=${SRCREV_libnvidia} ${PACKAGECONFIG_CONFARGS} \
NVIDIA_MODPROBE_EXTRA_CFLAGS=${NVIDIA_MODPROBE_EXTRA_CFLAGS} \
GOCACHE=${WORKDIR}/go-cache GOPATH=${WORKDIR}/go GOMODCACHE=${WORKDIR}/go-mod \
GOFLAGS=-mod=vendor"
NVIDIA_MODPROBE_EXTRA_CFLAGS ?= "-ffile-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}"
CFLAGS:prepend = " -I${RECIPE_SYSROOT_NATIVE}/usr/include/tirpc "
export OBJCPY="${OBJCOPY}"
GO_IMPORT = "github.com/NVIDIA/nvidia-container-toolkit"
SECURITY_LDFLAGS = ""
LDFLAGS += "-Wl,-z,lazy"
GO_LINKSHARED = ""
REQUIRED_DISTRO_FEATURES = "virtualization"
do_configure:append() {
# Apply the nvidia-modprobe patch that the Makefile's download rule would
# normally apply after curl. Since we fetch via SRC_URI instead, we need
# to apply it here and then mark as downloaded.
cd ${S}/deps/src/nvidia-modprobe-${NVIDIA_MODPROBE_VERSION}
patch -p1 < ${S}/mk/nvidia-modprobe.patch
touch ${S}/deps/src/nvidia-modprobe-${NVIDIA_MODPROBE_VERSION}/.download_stamp
}
do_compile() {
# Ensure the copied bmake is used during the build
export PATH=${WORKDIR}:$PATH
#go fix
export GOPATH="${WORKDIR}/go"
export GOCACHE="${WORKDIR}/go-cache"
export GOMODCACHE="${WORKDIR}/go-mod"
mkdir -p ${GOPATH} ${GOCACHE} ${GOMODCACHE}
# Ensure reproducible builds
export SOURCE_DATE_EPOCH="${@d.getVar('SOURCE_DATE_EPOCH') or '0'}"
export CGO_LDFLAGS="${CGO_LDFLAGS} -Wl,--build-id=none"
# Point curl to the correct CA certificates in the native sysroot
export CURL_CA_BUNDLE="${RECIPE_SYSROOT_NATIVE}/etc/ssl/certs/ca-certificates.crt"
oe_runmake
}
do_install() {
oe_runmake install DESTDIR=${D}
install -d ${D}${sysconfdir}/nvidia-container-runtime
# install -m 0644 ${S}/src/${GO_IMPORT}/config/config.toml.ubuntu ${D}${sysconfdir}/nvidia-container-runtime/config.toml
# sed -i -e's,ldconfig\.real,ldconfig,' ${D}${sysconfdir}/nvidia-container-runtime/config.toml
# sed -i -e's,mode = "auto",mode = "legacy",' ${D}${sysconfdir}/nvidia-container-runtime/config.toml
ln -sf nvidia-container-runtime-hook ${D}${bindir}/nvidia-container-toolkit
}
FILES_${PN} += "/usr/local/bin /usr/local/lib"
RDEPENDS:${PN}:append = " ldconfig"
# Added to skip buildpath QA errors for files generated by rpcgen
INSANE_SKIP:${PN}-src = "buildpaths"
# Skip QA checks for Go shared library
INSANE_SKIP:${PN} = "already-stripped ldflags buildpaths"