Canfield commited on
Commit
93bb8ea
·
verified ·
1 Parent(s): 88800a0

llama.cpp c1d0e7a CUDA 12.8.1 Linux x86-64: the qualified reproducible archive 7fd27fca

Browse files
BUILD-INFO.txt ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ llama.cpp commit: c1d0e7a004015f23bc0233470b747b596f29b264
2
+ cuda image: nvidia/cuda:12.8.1-devel-ubuntu22.04@sha256:a99a1860ba8e2916e5c3e73b72ec4c4301653a84586e05bfc9a2aa2d58027e97
3
+ cuda architectures: 50-real;52-real;60-real;61-real;70-real;75-real;80-real;86-real;89-real;90-real;100-real;120-real
4
+ Build cuda_12.8.r12.8/compiler.35583870_0
5
+ gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
6
+ ubuntu snapshot: 20260929T000000Z
7
+ ca-certificates 20260601~22.04.1
8
+ cmake 3.22.1-1ubuntu1.22.04.2
9
+ git 1:2.34.1-1ubuntu1.17
10
+ ninja-build 1.10.1-1
11
+ patchelf 0.14.3-1
12
+ build container: Docker default seccomp profile plus personality(ADDR_NO_RANDOMIZE)
13
+ seccomp profile passed to docker: 8cf97f143e83686dbb89219ad2d8f84c054a9db0b19bcd0797278bf6e37f477d
14
+ 536529b665dd0972c37bfb569f5d4ac8a53592e7b00752bc39ff063ca9864c74 docker-default-seccomp.json
15
+ 49408aa77e29734b9102b535e31ede762fdb39be647874b2c22f6fee0f135740 seccomp.py
16
+ 16b7f6d55f39a97b6e4541bba9ec29d67830506e76644b8a3f5b76b3bfb11b59 nvcc_launcher.sh
17
+ a997bd388cf887bb3f428a7c46a37420ff81956a6c0f96fd9088ab8b93a8c69d fixed_pid.c
18
+ c2025a721b3c1ae810b70a0d377ce2e08a51d77e6eec27e9cdee87be66c60d03 pin_source_times.sh
19
+ 4324218250797daeba0190f9f48503be0755e8c4e2b7e518f56128e3e80f0aac apt_snapshot.sh
20
+ 9639aa9d7df18a9eb548b903abe23034c35ad5375070ee30b8e3ed1a0646ea2f cmake_flags.txt
LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2023-2026 The ggml authors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
README.md ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ tags:
4
+ - llama.cpp
5
+ - cuda
6
+ - linux
7
+ ---
8
+
9
+ # llama.cpp c1d0e7a, CUDA 12.8.1, Linux x86-64
10
+
11
+ This is a CUDA build of [llama.cpp](https://github.com/ggml-org/llama.cpp) at commit
12
+ `c1d0e7a004015f23bc0233470b747b596f29b264` (release `b10621`), for Linux x86-64. llama.cpp
13
+ publishes no Linux CUDA archive for that commit, so this one is built from source by a pinned,
14
+ reproducible recipe, which is included here.
15
+
16
+ | File | Bytes | SHA-256 |
17
+ |---|---|---|
18
+ | `llama-c1d0e7a-cuda12.8.1-linux-x64.tar.gz` | 191,811,056 | `7fd27fca6917b1f5aeae38eef9815eed932cf1f7c490227e0eb15612cb238a21` |
19
+
20
+ Files here are never overwritten. A new build gets a new name, so a pinned URL and its hash stay
21
+ true together.
22
+
23
+ ## What it contains
24
+
25
+ `llama-server` with its libraries, built for CUDA architectures 50, 52, 60, 61, 70, 75, 80, 86, 89,
26
+ 90, 100 and 120, with the web UI off. `BUILD-INFO.txt` records the source commit, the build image
27
+ digest, the compiler, the Ubuntu snapshot, the package versions and the SHA-256 of every recipe
28
+ file.
29
+
30
+ ## NVIDIA's libraries are not included
31
+
32
+ The server also needs NVIDIA's CUDA runtime and cuBLAS, which are fetched from NVIDIA and placed
33
+ beside `llama-server`:
34
+
35
+ | Archive | SHA-256 |
36
+ |---|---|
37
+ | `cuda_cudart-linux-x86_64-12.8.90-archive.tar.xz` | `8d566b5fe745c46842dc16945cf36686227536decd2302c372be86da37faca68` |
38
+ | `libcublas-linux-x86_64-12.8.4.1-archive.tar.xz` | `21718957c2cf000bacd69d36c95708a2319199e39e056f8b4f0f68e3b9f323bb` |
39
+
40
+ Both are from `https://developer.download.nvidia.com/compute/cuda/redist/`. Copy `libcudart.so*`,
41
+ `libcublas.so*` and `libcublasLt.so*` from their `lib/` folders. The GPU driver comes from the
42
+ system.
43
+
44
+ ## How it was built
45
+
46
+ Run `recipe/scripts/build_runtime.sh`. It builds in the pinned `nvidia/cuda:12.8.1-devel-ubuntu22.04`
47
+ image, with packages from a fixed Ubuntu snapshot. Every source file gets a fixed time. The
48
+ compiler runs with address randomization off and a fixed process ID. Docker's default seccomp
49
+ profile is used, plus one `personality` rule. Before packaging, the build's CMake cache is checked
50
+ against the expected configuration. `recipe/scripts/check_runtime_reproducible.sh` builds twice and
51
+ requires the same archive. It did here: two independent builds gave identical bytes.
52
+
53
+ ## Qualification
54
+
55
+ It was checked on an NVIDIA RTX 3090, with Qwen3.5-9B Q4_K_M (SHA-256 `cd76ec20…2a13`), a 32,768-token
56
+ context, flash attention and thinking off. The test set was 33 labeled invoices, run twice:
57
+
58
+ - 33 of 33 documents completed in each run, at a mean of 13.1 and 13.4 seconds per document,
59
+ with the slowest at 41.1 s;
60
+ - 271 of 273 line items were exact in each run;
61
+ - the two runs' answers were identical on 33 of 33;
62
+ - the answers were identical, on 33 of 33, to those of the earlier build this one replaces;
63
+ - peak graphics memory for the server was 6,393 MiB.
64
+
65
+ ## License
66
+
67
+ llama.cpp is MIT-licensed; its license is in `LICENSE`. The build recipe in `recipe/` is also
68
+ offered under the MIT license.
llama-c1d0e7a-cuda12.8.1-linux-x64.tar.gz ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7fd27fca6917b1f5aeae38eef9815eed932cf1f7c490227e0eb15612cb238a21
3
+ size 191811056
recipe/scripts/build_runtime.sh ADDED
@@ -0,0 +1,160 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+ # The committed recipe for the gpu-cuda runtime (MODEL-SETUP MS-PIN-3).
3
+ #
4
+ # Builds llama.cpp's llama-server at the commit every qualified run used, with CUDA, for every
5
+ # NVIDIA architecture the pinned toolkit supports, inside NVIDIA's own build container, so the
6
+ # result depends on nothing on this machine. The output directory holds the server and the
7
+ # libraries it loads next to it (run path $ORIGIN), a manifest of every file's SHA-256, and one
8
+ # archive of the directory. NVIDIA's CUDA runtime and cuBLAS are not part of it: setup fetches
9
+ # those from NVIDIA (MS-PIN-3, Q2) and places them beside the server.
10
+ #
11
+ # The archive's hash enters the profile only after the qualification lane passes on exactly
12
+ # this build (MS-PIN-4).
13
+ #
14
+ # Two runs give byte-identical archives (MS-PIN-3, "The build is reproducible"): no web UI is
15
+ # downloaded, every source file gets the commit's time, and nvcc runs through
16
+ # runtime_build/nvcc_launcher.sh in a container whose seccomp
17
+ # profile is Docker's default plus the one rule the launcher needs. check_runtime_reproducible.sh
18
+ # builds twice and compares.
19
+ #
20
+ # usage: scripts/build_runtime.sh <output directory>
21
+ set -euo pipefail
22
+ # Command substitutions inherit errexit too, so a failure inside $( ... ) stops the script.
23
+ shopt -s inherit_errexit
24
+
25
+ LLAMA_COMMIT="c1d0e7a004015f23bc0233470b747b596f29b264" # tag v0.3.0, llama.cpp build b10621
26
+ # CUDA 12.8.1, the first toolkit that compiles for 12.0 (Blackwell). Pinned by digest, not tag:
27
+ # a tag can be pushed again, and the build must be reproducible from this line alone.
28
+ CUDA_IMAGE="nvidia/cuda:12.8.1-devel-ubuntu22.04@sha256:a99a1860ba8e2916e5c3e73b72ec4c4301653a84586e05bfc9a2aa2d58027e97"
29
+ # The build tools come from this Ubuntu snapshot, not the live mirrors, so a rebuild on any
30
+ # date installs the same versions (runtime_build/apt_snapshot.sh; MS-PIN-3).
31
+ UBUNTU_SNAPSHOT="20260929T000000Z"
32
+ NAME="llama-c1d0e7a-cuda12.8.1-linux-x64"
33
+
34
+ here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
35
+ out="${1:?usage: $0 <output directory>}"
36
+ mkdir -p "$out"
37
+ out="$(cd "$out" && pwd)"
38
+ if [ -e "$out/$NAME" ] || [ -e "$out/$NAME.tar.gz" ]; then
39
+ echo "refusing: $out already holds a build; use an empty directory" >&2
40
+ exit 2
41
+ fi
42
+
43
+ # Docker's default seccomp profile, pinned, plus personality(ADDR_NO_RANDOMIZE) for setarch -R.
44
+ profile="$(mktemp)"
45
+ trap 'rm -f "$profile"' EXIT
46
+ python3 "$here/runtime_build/seccomp.py" "$profile"
47
+ profile_sha256="$(sha256sum "$profile" | cut -d" " -f1)"
48
+
49
+ docker run --rm \
50
+ --user 0:0 \
51
+ --security-opt "seccomp=$profile" \
52
+ -e LLAMA_COMMIT="$LLAMA_COMMIT" \
53
+ -e UBUNTU_SNAPSHOT="$UBUNTU_SNAPSHOT" \
54
+ -e SECCOMP_PROFILE_SHA256="$profile_sha256" \
55
+ -e NAME="$NAME" \
56
+ -e OWNER="$(id -u):$(id -g)" \
57
+ -v "$out:/out" \
58
+ -v "$here/runtime_build:/recipe:ro" \
59
+ "$CUDA_IMAGE" \
60
+ bash -euo pipefail -c '
61
+ export DEBIAN_FRONTEND=noninteractive
62
+ /recipe/apt_snapshot.sh "$UBUNTU_SNAPSHOT"
63
+ apt-get install -y -qq --no-install-recommends git cmake ninja-build ca-certificates patchelf >/dev/null
64
+ git init -q /src && cd /src
65
+ git remote add origin https://github.com/ggml-org/llama.cpp.git
66
+ git fetch -q --depth 1 origin "$LLAMA_COMMIT"
67
+ git checkout -q FETCH_HEAD
68
+ test "$(git rev-parse HEAD)" = "$LLAMA_COMMIT"
69
+ # Every source file gets the commit'"'"'s time, not the checkout'"'"'s (MS-PIN-3).
70
+ /recipe/pin_source_times.sh /src
71
+ # The launcher'"'"'s process id shim, built with the image'"'"'s own compiler; a build tool only.
72
+ gcc -shared -fPIC -O2 -o /opt/fixed_pid.so /recipe/fixed_pid.c
73
+ export NVCC_PID_SHIM=/opt/fixed_pid.so
74
+ # The configure flags have one owner, runtime_build/cmake_flags.txt (MS-PIN-3). Why each:
75
+ # Real code for every x86 NVIDIA generation from 5.0 through 12.0 ("no GPU limit"):
76
+ # Maxwell, Pascal, Volta, Turing, Ampere, Ada, Hopper, Blackwell datacenter and consumer.
77
+ # No PTX, so no JIT: the kernels a machine runs are the kernels this build compiled.
78
+ # GGML_NATIVE=OFF with every CPU variant loaded at run time: the build machine'"'"'s CPU
79
+ # features must not become a requirement of the machines that run it.
80
+ # LLAMA_OPENSSL=OFF: no TLS in the binary, so its built-in Hugging Face and Docker pulls
81
+ # cannot fetch anything; the server is reached over a local socket and needs no TLS.
82
+ # (LLAMA_CURL is deprecated and ignored at this commit; it stays only as a no-op.)
83
+ # GGML_CUDA_NCCL=OFF: NCCL is in this build image but not on the machines that run the
84
+ # server, and one missing library stops the CUDA backend loading at all. The server uses
85
+ # one device (ADR-0011), so multi-GPU collectives are not needed.
86
+ # LLAMA_BUILD_UI=OFF, LLAMA_USE_PREBUILT_UI=OFF: with the UI on, the build downloads it
87
+ # from a moving "latest" (a one-commit clone is build 1, and b1 does not exist). The
88
+ # server runs with --no-webui, so the UI is never served.
89
+ # CMAKE_CUDA_COMPILER_LAUNCHER: every nvcc compile depends on its input alone (MS-PIN-3).
90
+ mapfile -t flags < /recipe/cmake_flags.txt
91
+ cmake -S . -B build -G Ninja "${flags[@]}" >/dev/null
92
+ cmake --build build --target llama-server -j "$(nproc)"
93
+ # What is packaged was configured exactly as expected, however the configure was written
94
+ # (MS-PIN-3: the enforcement is the effect, not the shell text).
95
+ /recipe/check_cmake_cache.sh build /recipe/cmake_cache_expected.txt
96
+ mkdir -p "/out/$NAME"
97
+ cp -a build/bin/llama-server "/out/$NAME/"
98
+ find build/bin -maxdepth 1 -name "*.so*" -exec cp -a {} "/out/$NAME/" \;
99
+ for file in "/out/$NAME"/*; do
100
+ [ -L "$file" ] && continue
101
+ patchelf --set-rpath "\$ORIGIN" "$file"
102
+ done
103
+ {
104
+ echo "llama.cpp commit: $LLAMA_COMMIT"
105
+ echo "cuda image: '"$CUDA_IMAGE"'"
106
+ echo "cuda architectures: $(sed -n "s/^-DCMAKE_CUDA_ARCHITECTURES=//p" /recipe/cmake_flags.txt)"
107
+ nvcc --version | tail -1
108
+ gcc --version | head -1
109
+ # The build tools come from the pinned Ubuntu snapshot; their versions are recorded.
110
+ echo "ubuntu snapshot: $UBUNTU_SNAPSHOT"
111
+ dpkg-query --show git cmake ninja-build ca-certificates patchelf
112
+ echo "build container: Docker default seccomp profile plus personality(ADDR_NO_RANDOMIZE)"
113
+ echo "seccomp profile passed to docker: $SECCOMP_PROFILE_SHA256"
114
+ (cd /recipe && sha256sum docker-default-seccomp.json seccomp.py nvcc_launcher.sh \
115
+ fixed_pid.c pin_source_times.sh apt_snapshot.sh cmake_flags.txt)
116
+ } > "/out/$NAME/BUILD-INFO.txt"
117
+ chown -R "$OWNER" /out
118
+ '
119
+
120
+ cd "$out"
121
+ # Every library the artifact needs must ship in it, come from NVIDIA beside it (MS-PIN-3, Q2),
122
+ # or belong to the base system or the GPU driver. Anything else (NCCL, TLS, an HTTP client)
123
+ # would be missing on a user's machine or would be a network capability, so it is refused.
124
+ BASE_SYSTEM="libc.so.6 libm.so.6 libstdc++.so.6 libgcc_s.so.1 libgomp.so.1 libdl.so.2 libpthread.so.0 librt.so.1 ld-linux-x86-64.so.2 libcuda.so.1"
125
+ FROM_NVIDIA="libcudart.so.12 libcublas.so.12 libcublasLt.so.12"
126
+ # Read every shipped ELF in the main shell, so a file readelf cannot read is a refusal
127
+ # wherever it sits in the list, never a file whose needs are silently skipped.
128
+ needed=""
129
+ for file in "$NAME"/llama-server "$NAME"/*.so*; do
130
+ [ -L "$file" ] && continue
131
+ if ! dynamic="$(readelf -d "$file" 2>&1)"; then
132
+ echo "refusing: cannot read $file as an ELF file: $dynamic" >&2
133
+ exit 1
134
+ fi
135
+ needed+="$(sed -n 's/.*(NEEDED).*\[\(.*\)\]/\1/p' <<<"$dynamic")"$'\n'
136
+ done
137
+ libs="$(sort -u <<<"$needed")"
138
+ unexpected=""
139
+ while read -r lib; do
140
+ [ -z "$lib" ] && continue
141
+ [ -e "$NAME/$lib" ] && continue
142
+ case " $BASE_SYSTEM $FROM_NVIDIA " in *" $lib "*) continue ;; esac
143
+ unexpected+="$lib "
144
+ done <<<"$libs"
145
+ if [ -n "$unexpected" ]; then
146
+ echo "refusing: the build needs libraries it neither ships nor may expect: ${unexpected% }" >&2
147
+ exit 1
148
+ fi
149
+ ( cd "$NAME" && find . -type f -o -type l | sort | while read -r file; do
150
+ if [ -L "$file" ]; then
151
+ echo "link $file -> $(readlink "$file")"
152
+ else
153
+ echo "file $file $(sha256sum "$file" | cut -d" " -f1)"
154
+ fi
155
+ done ) > "$NAME.MANIFEST.tmp"
156
+ mv "$NAME.MANIFEST.tmp" "$NAME/MANIFEST.txt" # written outside, so it never lists itself
157
+ # Same files, same archive bytes: fixed order, times, owners, and no gzip name or timestamp.
158
+ tar --sort=name --mtime=@0 --owner=0 --group=0 --numeric-owner -cf - "$NAME" | gzip -n > "$NAME.tar.gz"
159
+ sha256sum "$NAME.tar.gz" | tee "$NAME.tar.gz.sha256"
160
+ readelf -d "$NAME/llama-server" | grep -E "RUNPATH|RPATH"
recipe/scripts/check_runtime_reproducible.sh ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+ # Build the gpu-cuda runtime twice and require the same archive (MODEL-SETUP MS-PIN-3,
3
+ # "The build is reproducible"). Each build is a full run of build_runtime.sh into its own empty
4
+ # folder. On a difference, the files that differ are named from the two manifests.
5
+ #
6
+ # usage: scripts/check_runtime_reproducible.sh <empty work directory>
7
+ set -euo pipefail
8
+ shopt -s inherit_errexit
9
+
10
+ here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
11
+ work="${1:?usage: $0 <empty work directory>}"
12
+ mkdir -p "$work"
13
+ work="$(cd "$work" && pwd)"
14
+ if [ -n "$(ls -A "$work")" ]; then
15
+ echo "refusing: $work is not empty" >&2
16
+ exit 2
17
+ fi
18
+
19
+ "$here/build_runtime.sh" "$work/first"
20
+ "$here/build_runtime.sh" "$work/second"
21
+
22
+ archive() {
23
+ local found=("$1"/*.tar.gz)
24
+ if [ "${#found[@]}" -ne 1 ] || [ ! -f "${found[0]}" ]; then
25
+ echo "refusing: $1 does not hold exactly one archive" >&2
26
+ exit 1
27
+ fi
28
+ printf '%s' "${found[0]}"
29
+ }
30
+ first="$(archive "$work/first")"
31
+ second="$(archive "$work/second")"
32
+ first_sha="$(sha256sum "$first" | cut -d" " -f1)"
33
+ second_sha="$(sha256sum "$second" | cut -d" " -f1)"
34
+ if [ "$first_sha" = "$second_sha" ]; then
35
+ echo "reproducible: $(basename "$first") $first_sha"
36
+ exit 0
37
+ fi
38
+ echo "NOT reproducible: $first_sha (first) and $second_sha (second)" >&2
39
+ name="$(basename "$first" .tar.gz)"
40
+ diff "$work/first/$name/MANIFEST.txt" "$work/second/$name/MANIFEST.txt" >&2 || true
41
+ exit 1
recipe/scripts/runtime_build/apt_snapshot.sh ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+ # The build container's apt sources: only the pinned Ubuntu snapshot (MODEL-SETUP MS-PIN-3,
3
+ # "The build tools come from a pinned Ubuntu snapshot").
4
+ #
5
+ # The live mirrors change whenever Ubuntu updates a package, and BUILD-INFO.txt, which is in the
6
+ # archive, records the installed versions; a snapshot never changes. The image's own sources and
7
+ # NVIDIA's repository are removed, not added to. Release signatures are still checked; only the
8
+ # Valid-Until expiry is ignored, because a snapshot's Release file expires while its content
9
+ # stays fixed.
10
+ #
11
+ # usage: apt_snapshot.sh <snapshot timestamp, e.g. 20260929T000000Z>
12
+ set -euo pipefail
13
+
14
+ stamp="${1:?usage: $0 <snapshot timestamp>}"
15
+ if ! [[ "$stamp" =~ ^[0-9]{8}T[0-9]{6}Z$ ]]; then
16
+ echo "refusing: $stamp is not a snapshot timestamp" >&2
17
+ exit 2
18
+ fi
19
+ . /etc/os-release
20
+ snapshot="https://snapshot.ubuntu.com/ubuntu/$stamp"
21
+ rm -f /etc/apt/sources.list.d/*
22
+ printf 'deb %s %s main universe\n' \
23
+ "$snapshot" "$VERSION_CODENAME" \
24
+ "$snapshot" "$VERSION_CODENAME-updates" \
25
+ "$snapshot" "$VERSION_CODENAME-security" > /etc/apt/sources.list
26
+ apt-get -o Acquire::Check-Valid-Until=false update -qq
recipe/scripts/runtime_build/check_cmake_cache.sh ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+ # The packaged build is configured exactly as expected (MODEL-SETUP MS-PIN-3, "The enforcement
3
+ # is the effect").
4
+ #
5
+ # Shell text cannot be checked for every way of writing a configure call; the CMake cache records
6
+ # the configuration that was built, however it was set. Every entry of <build>/CMakeCache.txt,
7
+ # with its comment lines dropped and sorted, must equal the expected cache: a changed, extra or
8
+ # missing entry is a refusal. The recipe runs this after the build and before packaging.
9
+ #
10
+ # usage: check_cmake_cache.sh <build directory> <expected cache>
11
+ set -euo pipefail
12
+
13
+ build="${1:?usage: $0 <build directory> <expected cache>}"
14
+ expected="${2:?usage: $0 <build directory> <expected cache>}"
15
+ cache="$build/CMakeCache.txt"
16
+ for file in "$cache" "$expected"; do
17
+ if [ ! -f "$file" ]; then
18
+ echo "refusing: $file is not there, so the build's configuration cannot be checked" >&2
19
+ exit 1
20
+ fi
21
+ done
22
+ actual="$({ grep -v -E '^(//|#|$)' "$cache" || true; } | LC_ALL=C sort)"
23
+ if ! difference="$(diff <(printf '%s\n' "$actual") "$expected")"; then
24
+ echo "refusing: the build is not configured exactly as cmake_cache_expected.txt says:" >&2
25
+ printf '%s\n' "$difference" | head -20 >&2
26
+ exit 1
27
+ fi
28
+ echo "configuration: as expected ($(wc -l < "$expected") entries)"
recipe/scripts/runtime_build/cmake_cache_expected.txt ADDED
@@ -0,0 +1,490 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ BUILD_SHARED_LIBS:BOOL=ON
2
+ CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
3
+ CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line
4
+ CMAKE_AR-ADVANCED:INTERNAL=1
5
+ CMAKE_AR:FILEPATH=/usr/bin/ar
6
+ CMAKE_ASM_COMPILER-ADVANCED:INTERNAL=1
7
+ CMAKE_ASM_COMPILER:FILEPATH=/usr/bin/cc
8
+ CMAKE_ASM_COMPILER_AR-ADVANCED:INTERNAL=1
9
+ CMAKE_ASM_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar
10
+ CMAKE_ASM_COMPILER_RANLIB-ADVANCED:INTERNAL=1
11
+ CMAKE_ASM_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib
12
+ CMAKE_ASM_COMPILER_WORKS:INTERNAL=1
13
+ CMAKE_ASM_FLAGS-ADVANCED:INTERNAL=1
14
+ CMAKE_ASM_FLAGS:STRING=
15
+ CMAKE_ASM_FLAGS_DEBUG-ADVANCED:INTERNAL=1
16
+ CMAKE_ASM_FLAGS_DEBUG:STRING=-g
17
+ CMAKE_ASM_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
18
+ CMAKE_ASM_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
19
+ CMAKE_ASM_FLAGS_RELEASE-ADVANCED:INTERNAL=1
20
+ CMAKE_ASM_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
21
+ CMAKE_ASM_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
22
+ CMAKE_ASM_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
23
+ CMAKE_BUILD_TYPE:STRING=Release
24
+ CMAKE_BUILD_WITH_INSTALL_RPATH:UNINITIALIZED=ON
25
+ CMAKE_CACHEFILE_DIR:INTERNAL=/src/build
26
+ CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
27
+ CMAKE_CACHE_MINOR_VERSION:INTERNAL=22
28
+ CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
29
+ CMAKE_COMMAND:INTERNAL=/usr/bin/cmake
30
+ CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack
31
+ CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest
32
+ CMAKE_CUDA_ARCHITECTURES:UNINITIALIZED=50-real;52-real;60-real;61-real;70-real;75-real;80-real;86-real;89-real;90-real;100-real;120-real
33
+ CMAKE_CUDA_COMPILER-ADVANCED:INTERNAL=1
34
+ CMAKE_CUDA_COMPILER:FILEPATH=/usr/local/cuda/bin/nvcc
35
+ CMAKE_CUDA_COMPILER_LAUNCHER:UNINITIALIZED=/recipe/nvcc_launcher.sh
36
+ CMAKE_CUDA_FLAGS-ADVANCED:INTERNAL=1
37
+ CMAKE_CUDA_FLAGS:STRING=
38
+ CMAKE_CUDA_FLAGS_DEBUG-ADVANCED:INTERNAL=1
39
+ CMAKE_CUDA_FLAGS_DEBUG:STRING=-g
40
+ CMAKE_CUDA_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
41
+ CMAKE_CUDA_FLAGS_MINSIZEREL:STRING=-O1 -DNDEBUG
42
+ CMAKE_CUDA_FLAGS_RELEASE-ADVANCED:INTERNAL=1
43
+ CMAKE_CUDA_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
44
+ CMAKE_CUDA_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
45
+ CMAKE_CUDA_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
46
+ CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1
47
+ CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++
48
+ CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1
49
+ CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-11
50
+ CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1
51
+ CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-11
52
+ CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1
53
+ CMAKE_CXX_FLAGS:STRING=
54
+ CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1
55
+ CMAKE_CXX_FLAGS_DEBUG:STRING=-g
56
+ CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
57
+ CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
58
+ CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1
59
+ CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
60
+ CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
61
+ CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
62
+ CMAKE_C_COMPILER-ADVANCED:INTERNAL=1
63
+ CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc
64
+ CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
65
+ CMAKE_C_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-11
66
+ CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
67
+ CMAKE_C_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-11
68
+ CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
69
+ CMAKE_C_FLAGS:STRING=
70
+ CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
71
+ CMAKE_C_FLAGS_DEBUG:STRING=-g
72
+ CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
73
+ CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
74
+ CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
75
+ CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
76
+ CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
77
+ CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
78
+ CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
79
+ CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
80
+ CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF
81
+ CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
82
+ CMAKE_EXE_LINKER_FLAGS:STRING=
83
+ CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
84
+ CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
85
+ CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
86
+ CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
87
+ CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
88
+ CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
89
+ CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
90
+ CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
91
+ CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1
92
+ CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=
93
+ CMAKE_EXTRA_GENERATOR:INTERNAL=
94
+ CMAKE_GENERATOR:INTERNAL=Ninja
95
+ CMAKE_GENERATOR_INSTANCE:INTERNAL=
96
+ CMAKE_GENERATOR_PLATFORM:INTERNAL=
97
+ CMAKE_GENERATOR_TOOLSET:INTERNAL=
98
+ CMAKE_HAVE_LIBC_PTHREAD:INTERNAL=1
99
+ CMAKE_HAVE_PTHREAD_H:INTERNAL=1
100
+ CMAKE_HOME_DIRECTORY:INTERNAL=/src
101
+ CMAKE_INSTALL_BINDIR-ADVANCED:INTERNAL=1
102
+ CMAKE_INSTALL_BINDIR:PATH=bin
103
+ CMAKE_INSTALL_DATADIR-ADVANCED:INTERNAL=1
104
+ CMAKE_INSTALL_DATADIR:PATH=
105
+ CMAKE_INSTALL_DATAROOTDIR-ADVANCED:INTERNAL=1
106
+ CMAKE_INSTALL_DATAROOTDIR:PATH=share
107
+ CMAKE_INSTALL_DOCDIR-ADVANCED:INTERNAL=1
108
+ CMAKE_INSTALL_DOCDIR:PATH=
109
+ CMAKE_INSTALL_INCLUDEDIR-ADVANCED:INTERNAL=1
110
+ CMAKE_INSTALL_INCLUDEDIR:PATH=include
111
+ CMAKE_INSTALL_INFODIR-ADVANCED:INTERNAL=1
112
+ CMAKE_INSTALL_INFODIR:PATH=
113
+ CMAKE_INSTALL_LIBDIR-ADVANCED:INTERNAL=1
114
+ CMAKE_INSTALL_LIBDIR:PATH=lib
115
+ CMAKE_INSTALL_LIBEXECDIR-ADVANCED:INTERNAL=1
116
+ CMAKE_INSTALL_LIBEXECDIR:PATH=libexec
117
+ CMAKE_INSTALL_LOCALEDIR-ADVANCED:INTERNAL=1
118
+ CMAKE_INSTALL_LOCALEDIR:PATH=
119
+ CMAKE_INSTALL_LOCALSTATEDIR-ADVANCED:INTERNAL=1
120
+ CMAKE_INSTALL_LOCALSTATEDIR:PATH=var
121
+ CMAKE_INSTALL_MANDIR-ADVANCED:INTERNAL=1
122
+ CMAKE_INSTALL_MANDIR:PATH=
123
+ CMAKE_INSTALL_OLDINCLUDEDIR-ADVANCED:INTERNAL=1
124
+ CMAKE_INSTALL_OLDINCLUDEDIR:PATH=/usr/include
125
+ CMAKE_INSTALL_PREFIX:PATH=/usr/local
126
+ CMAKE_INSTALL_RPATH:UNINITIALIZED=$ORIGIN
127
+ CMAKE_INSTALL_RUNSTATEDIR-ADVANCED:INTERNAL=1
128
+ CMAKE_INSTALL_RUNSTATEDIR:PATH=
129
+ CMAKE_INSTALL_SBINDIR-ADVANCED:INTERNAL=1
130
+ CMAKE_INSTALL_SBINDIR:PATH=sbin
131
+ CMAKE_INSTALL_SHAREDSTATEDIR-ADVANCED:INTERNAL=1
132
+ CMAKE_INSTALL_SHAREDSTATEDIR:PATH=com
133
+ CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1
134
+ CMAKE_INSTALL_SYSCONFDIR-ADVANCED:INTERNAL=1
135
+ CMAKE_INSTALL_SYSCONFDIR:PATH=etc
136
+ CMAKE_LINKER-ADVANCED:INTERNAL=1
137
+ CMAKE_LINKER:FILEPATH=/usr/bin/ld
138
+ CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1
139
+ CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/ninja
140
+ CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
141
+ CMAKE_MODULE_LINKER_FLAGS:STRING=
142
+ CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
143
+ CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
144
+ CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
145
+ CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
146
+ CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
147
+ CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
148
+ CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
149
+ CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
150
+ CMAKE_NM-ADVANCED:INTERNAL=1
151
+ CMAKE_NM:FILEPATH=/usr/bin/nm
152
+ CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=52
153
+ CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
154
+ CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy
155
+ CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
156
+ CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump
157
+ CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
158
+ CMAKE_PROJECT_DESCRIPTION:STATIC=
159
+ CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
160
+ CMAKE_PROJECT_NAME:STATIC=llama.cpp
161
+ CMAKE_RANLIB-ADVANCED:INTERNAL=1
162
+ CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib
163
+ CMAKE_READELF-ADVANCED:INTERNAL=1
164
+ CMAKE_READELF:FILEPATH=/usr/bin/readelf
165
+ CMAKE_ROOT:INTERNAL=/usr/share/cmake-3.22
166
+ CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
167
+ CMAKE_SHARED_LINKER_FLAGS:STRING=
168
+ CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
169
+ CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
170
+ CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
171
+ CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
172
+ CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
173
+ CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
174
+ CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
175
+ CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
176
+ CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
177
+ CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
178
+ CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
179
+ CMAKE_SKIP_RPATH:BOOL=NO
180
+ CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
181
+ CMAKE_STATIC_LINKER_FLAGS:STRING=
182
+ CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
183
+ CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
184
+ CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
185
+ CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
186
+ CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
187
+ CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
188
+ CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
189
+ CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
190
+ CMAKE_STRIP-ADVANCED:INTERNAL=1
191
+ CMAKE_STRIP:FILEPATH=/usr/bin/strip
192
+ CMAKE_UNAME:INTERNAL=/usr/bin/uname
193
+ CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
194
+ CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
195
+ CUDAToolkit_BIN_DIR:PATH=/usr/local/cuda/bin
196
+ CUDAToolkit_NVCC_EXECUTABLE-ADVANCED:INTERNAL=1
197
+ CUDAToolkit_NVCC_EXECUTABLE:FILEPATH=/usr/local/cuda/bin/nvcc
198
+ CUDAToolkit_rt_LIBRARY-ADVANCED:INTERNAL=1
199
+ CUDAToolkit_rt_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/librt.a
200
+ CUDA_CUDART-ADVANCED:INTERNAL=1
201
+ CUDA_CUDART:FILEPATH=/usr/local/cuda/lib64/libcudart.so
202
+ CUDA_OpenCL_LIBRARY-ADVANCED:INTERNAL=1
203
+ CUDA_OpenCL_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libOpenCL.so
204
+ CUDA_cublasLt_LIBRARY-ADVANCED:INTERNAL=1
205
+ CUDA_cublasLt_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libcublasLt.so
206
+ CUDA_cublasLt_static_LIBRARY-ADVANCED:INTERNAL=1
207
+ CUDA_cublasLt_static_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libcublasLt_static.a
208
+ CUDA_cublas_LIBRARY-ADVANCED:INTERNAL=1
209
+ CUDA_cublas_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libcublas.so
210
+ CUDA_cublas_static_LIBRARY-ADVANCED:INTERNAL=1
211
+ CUDA_cublas_static_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libcublas_static.a
212
+ CUDA_cuda_driver_LIBRARY-ADVANCED:INTERNAL=1
213
+ CUDA_cuda_driver_LIBRARY:FILEPATH=/usr/local/cuda/lib64/stubs/libcuda.so
214
+ CUDA_cudart_LIBRARY-ADVANCED:INTERNAL=1
215
+ CUDA_cudart_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libcudart.so
216
+ CUDA_cudart_static_LIBRARY-ADVANCED:INTERNAL=1
217
+ CUDA_cudart_static_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libcudart_static.a
218
+ CUDA_cufft_LIBRARY-ADVANCED:INTERNAL=1
219
+ CUDA_cufft_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libcufft.so
220
+ CUDA_cufft_static_LIBRARY-ADVANCED:INTERNAL=1
221
+ CUDA_cufft_static_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libcufft_static.a
222
+ CUDA_cufftw_LIBRARY-ADVANCED:INTERNAL=1
223
+ CUDA_cufftw_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libcufftw.so
224
+ CUDA_culibos_LIBRARY-ADVANCED:INTERNAL=1
225
+ CUDA_culibos_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libculibos.a
226
+ CUDA_cupti_LIBRARY-ADVANCED:INTERNAL=1
227
+ CUDA_cupti_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libcupti.so
228
+ CUDA_cupti_static_LIBRARY-ADVANCED:INTERNAL=1
229
+ CUDA_cupti_static_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libcupti_static.a
230
+ CUDA_curand_LIBRARY-ADVANCED:INTERNAL=1
231
+ CUDA_curand_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libcurand.so
232
+ CUDA_curand_static_LIBRARY-ADVANCED:INTERNAL=1
233
+ CUDA_curand_static_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libcurand_static.a
234
+ CUDA_cusolver_LIBRARY-ADVANCED:INTERNAL=1
235
+ CUDA_cusolver_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libcusolver.so
236
+ CUDA_cusolver_static_LIBRARY-ADVANCED:INTERNAL=1
237
+ CUDA_cusolver_static_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libcusolver_static.a
238
+ CUDA_cusparse_LIBRARY-ADVANCED:INTERNAL=1
239
+ CUDA_cusparse_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libcusparse.so
240
+ CUDA_cusparse_static_LIBRARY-ADVANCED:INTERNAL=1
241
+ CUDA_cusparse_static_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libcusparse_static.a
242
+ CUDA_nppc_LIBRARY-ADVANCED:INTERNAL=1
243
+ CUDA_nppc_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnppc.so
244
+ CUDA_nppc_static_LIBRARY-ADVANCED:INTERNAL=1
245
+ CUDA_nppc_static_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnppc_static.a
246
+ CUDA_nppial_LIBRARY-ADVANCED:INTERNAL=1
247
+ CUDA_nppial_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnppial.so
248
+ CUDA_nppial_static_LIBRARY-ADVANCED:INTERNAL=1
249
+ CUDA_nppial_static_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnppial_static.a
250
+ CUDA_nppicc_LIBRARY-ADVANCED:INTERNAL=1
251
+ CUDA_nppicc_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnppicc.so
252
+ CUDA_nppicc_static_LIBRARY-ADVANCED:INTERNAL=1
253
+ CUDA_nppicc_static_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnppicc_static.a
254
+ CUDA_nppicom_LIBRARY-ADVANCED:INTERNAL=1
255
+ CUDA_nppicom_LIBRARY:FILEPATH=CUDA_nppicom_LIBRARY-NOTFOUND
256
+ CUDA_nppicom_static_LIBRARY-ADVANCED:INTERNAL=1
257
+ CUDA_nppicom_static_LIBRARY:FILEPATH=CUDA_nppicom_static_LIBRARY-NOTFOUND
258
+ CUDA_nppidei_LIBRARY-ADVANCED:INTERNAL=1
259
+ CUDA_nppidei_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnppidei.so
260
+ CUDA_nppidei_static_LIBRARY-ADVANCED:INTERNAL=1
261
+ CUDA_nppidei_static_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnppidei_static.a
262
+ CUDA_nppif_LIBRARY-ADVANCED:INTERNAL=1
263
+ CUDA_nppif_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnppif.so
264
+ CUDA_nppif_static_LIBRARY-ADVANCED:INTERNAL=1
265
+ CUDA_nppif_static_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnppif_static.a
266
+ CUDA_nppig_LIBRARY-ADVANCED:INTERNAL=1
267
+ CUDA_nppig_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnppig.so
268
+ CUDA_nppig_static_LIBRARY-ADVANCED:INTERNAL=1
269
+ CUDA_nppig_static_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnppig_static.a
270
+ CUDA_nppim_LIBRARY-ADVANCED:INTERNAL=1
271
+ CUDA_nppim_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnppim.so
272
+ CUDA_nppim_static_LIBRARY-ADVANCED:INTERNAL=1
273
+ CUDA_nppim_static_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnppim_static.a
274
+ CUDA_nppist_LIBRARY-ADVANCED:INTERNAL=1
275
+ CUDA_nppist_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnppist.so
276
+ CUDA_nppist_static_LIBRARY-ADVANCED:INTERNAL=1
277
+ CUDA_nppist_static_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnppist_static.a
278
+ CUDA_nppisu_LIBRARY-ADVANCED:INTERNAL=1
279
+ CUDA_nppisu_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnppisu.so
280
+ CUDA_nppisu_static_LIBRARY-ADVANCED:INTERNAL=1
281
+ CUDA_nppisu_static_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnppisu_static.a
282
+ CUDA_nppitc_LIBRARY-ADVANCED:INTERNAL=1
283
+ CUDA_nppitc_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnppitc.so
284
+ CUDA_nppitc_static_LIBRARY-ADVANCED:INTERNAL=1
285
+ CUDA_nppitc_static_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnppitc_static.a
286
+ CUDA_npps_LIBRARY-ADVANCED:INTERNAL=1
287
+ CUDA_npps_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnpps.so
288
+ CUDA_npps_static_LIBRARY-ADVANCED:INTERNAL=1
289
+ CUDA_npps_static_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnpps_static.a
290
+ CUDA_nvToolsExt_LIBRARY-ADVANCED:INTERNAL=1
291
+ CUDA_nvToolsExt_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnvToolsExt.so
292
+ CUDA_nvgraph_LIBRARY-ADVANCED:INTERNAL=1
293
+ CUDA_nvgraph_LIBRARY:FILEPATH=CUDA_nvgraph_LIBRARY-NOTFOUND
294
+ CUDA_nvgraph_static_LIBRARY-ADVANCED:INTERNAL=1
295
+ CUDA_nvgraph_static_LIBRARY:FILEPATH=CUDA_nvgraph_static_LIBRARY-NOTFOUND
296
+ CUDA_nvjpeg_LIBRARY-ADVANCED:INTERNAL=1
297
+ CUDA_nvjpeg_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnvjpeg.so
298
+ CUDA_nvjpeg_static_LIBRARY-ADVANCED:INTERNAL=1
299
+ CUDA_nvjpeg_static_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnvjpeg_static.a
300
+ CUDA_nvml_LIBRARY-ADVANCED:INTERNAL=1
301
+ CUDA_nvml_LIBRARY:FILEPATH=/usr/local/cuda/lib64/stubs/libnvidia-ml.so
302
+ CUDA_nvrtc_LIBRARY-ADVANCED:INTERNAL=1
303
+ CUDA_nvrtc_LIBRARY:FILEPATH=/usr/local/cuda/lib64/libnvrtc.so
304
+ FIND_PACKAGE_MESSAGE_DETAILS_CUDAToolkit:INTERNAL=[/usr/local/cuda/include][/usr/local/cuda/lib64/libcudart.so][/usr/local/cuda/bin][v12.8.93()]
305
+ FIND_PACKAGE_MESSAGE_DETAILS_Git:INTERNAL=[/usr/bin/git][v2.34.1()]
306
+ FIND_PACKAGE_MESSAGE_DETAILS_OpenMP:INTERNAL=[TRUE][TRUE][c ][v4.5()]
307
+ FIND_PACKAGE_MESSAGE_DETAILS_OpenMP_C:INTERNAL=[-fopenmp][/usr/lib/gcc/x86_64-linux-gnu/11/libgomp.so][/usr/lib/x86_64-linux-gnu/libpthread.a][v4.5()]
308
+ FIND_PACKAGE_MESSAGE_DETAILS_OpenMP_CXX:INTERNAL=[-fopenmp][/usr/lib/gcc/x86_64-linux-gnu/11/libgomp.so][/usr/lib/x86_64-linux-gnu/libpthread.a][v4.5()]
309
+ FIND_PACKAGE_MESSAGE_DETAILS_Threads:INTERNAL=[TRUE][v()]
310
+ GGML_ACCELERATE:BOOL=ON
311
+ GGML_ALL_WARNINGS_3RD_PARTY:BOOL=OFF
312
+ GGML_AMX_BF16:BOOL=OFF
313
+ GGML_AMX_INT8:BOOL=OFF
314
+ GGML_AMX_TILE:BOOL=OFF
315
+ GGML_AVAILABLE_BACKENDS:INTERNAL=ggml-cpu-x64;ggml-cpu-sse42;ggml-cpu-sandybridge;ggml-cpu-ivybridge;ggml-cpu-piledriver;ggml-cpu-haswell;ggml-cpu-skylakex;ggml-cpu-cannonlake;ggml-cpu-cascadelake;ggml-cpu-icelake;ggml-cpu-cooperlake;ggml-cpu-zen4;ggml-cpu-alderlake;ggml-cpu-sapphirerapids;ggml-cuda
316
+ GGML_AVX2:BOOL=ON
317
+ GGML_AVX512:BOOL=OFF
318
+ GGML_AVX512_BF16:BOOL=OFF
319
+ GGML_AVX512_VBMI:BOOL=OFF
320
+ GGML_AVX512_VNNI:BOOL=OFF
321
+ GGML_AVX:BOOL=ON
322
+ GGML_AVX_VNNI:BOOL=OFF
323
+ GGML_BACKEND_DIR:PATH=
324
+ GGML_BACKEND_DL:BOOL=ON
325
+ GGML_BIN_INSTALL_DIR:PATH=bin
326
+ GGML_BLAS:BOOL=OFF
327
+ GGML_BLAS_VENDOR:STRING=Generic
328
+ GGML_BMI2:BOOL=ON
329
+ GGML_BUILD_EXAMPLES:BOOL=OFF
330
+ GGML_BUILD_TESTS:BOOL=OFF
331
+ GGML_CCACHE:BOOL=ON
332
+ GGML_CCACHE_FOUND:FILEPATH=GGML_CCACHE_FOUND-NOTFOUND
333
+ GGML_CPU:BOOL=ON
334
+ GGML_CPU_ALL_VARIANTS:BOOL=ON
335
+ GGML_CPU_ARM_ARCH:STRING=
336
+ GGML_CPU_HBM:BOOL=OFF
337
+ GGML_CPU_KLEIDIAI:BOOL=OFF
338
+ GGML_CPU_POWERPC_CPUTYPE:STRING=
339
+ GGML_CPU_REPACK:BOOL=ON
340
+ GGML_CUDA:BOOL=ON
341
+ GGML_CUDA_COMPRESSION_MODE-STRINGS:INTERNAL=none;speed;balance;size
342
+ GGML_CUDA_COMPRESSION_MODE:STRING=size
343
+ GGML_CUDA_FA:BOOL=ON
344
+ GGML_CUDA_FA_ALL_QUANTS:BOOL=OFF
345
+ GGML_CUDA_FORCE_CUBLAS:BOOL=OFF
346
+ GGML_CUDA_FORCE_MMQ:BOOL=OFF
347
+ GGML_CUDA_GRAPHS:BOOL=ON
348
+ GGML_CUDA_NCCL:BOOL=OFF
349
+ GGML_CUDA_NO_PEER_COPY:BOOL=OFF
350
+ GGML_CUDA_NO_VMM:BOOL=OFF
351
+ GGML_CUDA_PEER_MAX_BATCH_SIZE:STRING=128
352
+ GGML_ET:BOOL=OFF
353
+ GGML_ET_SYSEMU:BOOL=OFF
354
+ GGML_F16C:BOOL=ON
355
+ GGML_FMA:BOOL=ON
356
+ GGML_GPROF:BOOL=OFF
357
+ GGML_HEXAGON:BOOL=OFF
358
+ GGML_HIP:BOOL=OFF
359
+ GGML_HIP_EXPORT_METRICS:BOOL=OFF
360
+ GGML_HIP_GRAPHS:BOOL=ON
361
+ GGML_HIP_MMQ_MFMA:BOOL=ON
362
+ GGML_HIP_NO_VMM:BOOL=ON
363
+ GGML_HIP_RCCL:BOOL=OFF
364
+ GGML_INCLUDE_INSTALL_DIR:PATH=include
365
+ GGML_LASX:BOOL=ON
366
+ GGML_LIB_INSTALL_DIR:PATH=lib
367
+ GGML_LLAMAFILE:BOOL=ON
368
+ GGML_LSX:BOOL=ON
369
+ GGML_LTO:BOOL=OFF
370
+ GGML_METAL:BOOL=OFF
371
+ GGML_METAL_EMBED_LIBRARY:BOOL=OFF
372
+ GGML_METAL_MACOSX_VERSION_MIN:STRING=
373
+ GGML_METAL_NDEBUG:BOOL=OFF
374
+ GGML_METAL_SHADER_DEBUG:BOOL=OFF
375
+ GGML_METAL_STD:STRING=
376
+ GGML_MUSA:BOOL=OFF
377
+ GGML_MUSA_GRAPHS:BOOL=OFF
378
+ GGML_MUSA_MUDNN_COPY:BOOL=OFF
379
+ GGML_NATIVE:BOOL=OFF
380
+ GGML_OPENCL:BOOL=OFF
381
+ GGML_OPENCL_EMBED_KERNELS:BOOL=ON
382
+ GGML_OPENCL_PROFILING:BOOL=OFF
383
+ GGML_OPENCL_TARGET_VERSION:STRING=300
384
+ GGML_OPENCL_USE_ADRENO_KERNELS:BOOL=ON
385
+ GGML_OPENMP:BOOL=ON
386
+ GGML_OPENMP_ENABLED:INTERNAL=ON
387
+ GGML_OPENMP_FETCH:BOOL=OFF
388
+ GGML_OPENVINO:BOOL=OFF
389
+ GGML_RPC:BOOL=OFF
390
+ GGML_RVV:BOOL=ON
391
+ GGML_RV_ZFH:BOOL=ON
392
+ GGML_RV_ZICBOP:BOOL=ON
393
+ GGML_RV_ZIHINTPAUSE:BOOL=ON
394
+ GGML_RV_ZVFBFWMA:BOOL=OFF
395
+ GGML_RV_ZVFH:BOOL=ON
396
+ GGML_SANITIZE_ADDRESS:BOOL=OFF
397
+ GGML_SANITIZE_THREAD:BOOL=OFF
398
+ GGML_SANITIZE_UNDEFINED:BOOL=OFF
399
+ GGML_SCCACHE_FOUND:FILEPATH=GGML_SCCACHE_FOUND-NOTFOUND
400
+ GGML_SCHED_MAX_COPIES:STRING=4
401
+ GGML_SCHED_NO_REALLOC:BOOL=OFF
402
+ GGML_SSE42:BOOL=ON
403
+ GGML_STATIC:BOOL=OFF
404
+ GGML_SYCL:BOOL=OFF
405
+ GGML_SYCL_DEVICE_ARCH:STRING=
406
+ GGML_SYCL_DNN:BOOL=ON
407
+ GGML_SYCL_F16:BOOL=OFF
408
+ GGML_SYCL_GRAPH:BOOL=ON
409
+ GGML_SYCL_HOST_MEM_FALLBACK:BOOL=ON
410
+ GGML_SYCL_SUPPORT_LEVEL_ZERO_API:BOOL=ON
411
+ GGML_SYCL_TARGET:STRING=INTEL
412
+ GGML_VIRTGPU:BOOL=OFF
413
+ GGML_VIRTGPU_BACKEND:BOOL=OFF
414
+ GGML_VULKAN:BOOL=OFF
415
+ GGML_VULKAN_CHECK_RESULTS:BOOL=OFF
416
+ GGML_VULKAN_DEBUG:BOOL=OFF
417
+ GGML_VULKAN_MEMORY_DEBUG:BOOL=OFF
418
+ GGML_VULKAN_RUN_TESTS:BOOL=OFF
419
+ GGML_VULKAN_SHADERS_GEN_TOOLCHAIN:FILEPATH=
420
+ GGML_VULKAN_SHADER_DEBUG_INFO:BOOL=OFF
421
+ GGML_VULKAN_VALIDATE:BOOL=OFF
422
+ GGML_VXE:BOOL=OFF
423
+ GGML_WEBGPU:BOOL=OFF
424
+ GGML_WEBGPU_CPU_PROFILE:BOOL=OFF
425
+ GGML_WEBGPU_DEBUG:BOOL=OFF
426
+ GGML_WEBGPU_GPU_PROFILE:BOOL=OFF
427
+ GGML_WEBGPU_JSPI:BOOL=ON
428
+ GGML_XTHEADVECTOR:BOOL=OFF
429
+ GGML_ZDNN:BOOL=OFF
430
+ GGML_ZENDNN:BOOL=OFF
431
+ GIT_EXE:FILEPATH=/usr/bin/git
432
+ GIT_EXECUTABLE-ADVANCED:INTERNAL=1
433
+ GIT_EXECUTABLE:FILEPATH=/usr/bin/git
434
+ LLAMA_ALL_WARNINGS:BOOL=ON
435
+ LLAMA_ALL_WARNINGS_3RD_PARTY:BOOL=OFF
436
+ LLAMA_BIN_INSTALL_DIR:PATH=bin
437
+ LLAMA_BUILD_APP:BOOL=ON
438
+ LLAMA_BUILD_COMMON:BOOL=ON
439
+ LLAMA_BUILD_EXAMPLES:BOOL=ON
440
+ LLAMA_BUILD_IS_DEV:BOOL=ON
441
+ LLAMA_BUILD_MTMD:BOOL=OFF
442
+ LLAMA_BUILD_SERVER:BOOL=ON
443
+ LLAMA_BUILD_TESTS:BOOL=OFF
444
+ LLAMA_BUILD_TOOLS:BOOL=ON
445
+ LLAMA_BUILD_UI:BOOL=OFF
446
+ LLAMA_CURL:UNINITIALIZED=OFF
447
+ LLAMA_FATAL_WARNINGS:BOOL=OFF
448
+ LLAMA_INCLUDE_INSTALL_DIR:PATH=include
449
+ LLAMA_LIB_INSTALL_DIR:PATH=lib
450
+ LLAMA_LLGUIDANCE:BOOL=OFF
451
+ LLAMA_OPENSSL:BOOL=OFF
452
+ LLAMA_SANITIZE_ADDRESS:BOOL=OFF
453
+ LLAMA_SANITIZE_THREAD:BOOL=OFF
454
+ LLAMA_SANITIZE_UNDEFINED:BOOL=OFF
455
+ LLAMA_SUBPROCESS:BOOL=ON
456
+ LLAMA_TESTS_INSTALL:BOOL=ON
457
+ LLAMA_TOOLS_INSTALL:BOOL=ON
458
+ LLAMA_UI_GZIP:BOOL=ON
459
+ LLAMA_UI_HF_BUCKET:STRING=ggml-org/llama-ui
460
+ LLAMA_USE_PREBUILT_UI:BOOL=OFF
461
+ LLAMA_USE_SYSTEM_GGML:BOOL=OFF
462
+ LLAMA_WASM_MEM64:BOOL=ON
463
+ MTMD_VIDEO:BOOL=ON
464
+ OPENSSL_NO_ASM:BOOL=ON
465
+ OpenMP_COMPILE_RESULT_CXX_fopenmp:INTERNAL=TRUE
466
+ OpenMP_COMPILE_RESULT_C_fopenmp:INTERNAL=TRUE
467
+ OpenMP_CXX_FLAGS-ADVANCED:INTERNAL=1
468
+ OpenMP_CXX_FLAGS:STRING=-fopenmp
469
+ OpenMP_CXX_LIB_NAMES-ADVANCED:INTERNAL=1
470
+ OpenMP_CXX_LIB_NAMES:STRING=gomp;pthread
471
+ OpenMP_CXX_SPEC_DATE:INTERNAL=201511
472
+ OpenMP_C_FLAGS-ADVANCED:INTERNAL=1
473
+ OpenMP_C_FLAGS:STRING=-fopenmp
474
+ OpenMP_C_LIB_NAMES-ADVANCED:INTERNAL=1
475
+ OpenMP_C_LIB_NAMES:STRING=gomp;pthread
476
+ OpenMP_C_SPEC_DATE:INTERNAL=201511
477
+ OpenMP_SPECTEST_CXX_:INTERNAL=TRUE
478
+ OpenMP_SPECTEST_C_:INTERNAL=TRUE
479
+ OpenMP_gomp_LIBRARY-ADVANCED:INTERNAL=1
480
+ OpenMP_gomp_LIBRARY:FILEPATH=/usr/lib/gcc/x86_64-linux-gnu/11/libgomp.so
481
+ OpenMP_pthread_LIBRARY-ADVANCED:INTERNAL=1
482
+ OpenMP_pthread_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libpthread.a
483
+ ZENDNN_ROOT:BOOL=OFF
484
+ _GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX:INTERNAL=/usr/local
485
+ ggml_BINARY_DIR:STATIC=/src/build/ggml
486
+ ggml_IS_TOP_LEVEL:STATIC=OFF
487
+ ggml_SOURCE_DIR:STATIC=/src/ggml
488
+ llama.cpp_BINARY_DIR:STATIC=/src/build
489
+ llama.cpp_IS_TOP_LEVEL:STATIC=ON
490
+ llama.cpp_SOURCE_DIR:STATIC=/src
recipe/scripts/runtime_build/cmake_flags.txt ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ -DCMAKE_BUILD_TYPE=Release
2
+ -DGGML_CUDA=ON
3
+ -DCMAKE_CUDA_ARCHITECTURES=50-real;52-real;60-real;61-real;70-real;75-real;80-real;86-real;89-real;90-real;100-real;120-real
4
+ -DGGML_NATIVE=OFF
5
+ -DGGML_BACKEND_DL=ON
6
+ -DGGML_CPU_ALL_VARIANTS=ON
7
+ -DBUILD_SHARED_LIBS=ON
8
+ -DGGML_CUDA_NCCL=OFF
9
+ -DLLAMA_OPENSSL=OFF
10
+ -DLLAMA_CURL=OFF
11
+ -DLLAMA_BUILD_TESTS=OFF
12
+ -DLLAMA_BUILD_UI=OFF
13
+ -DLLAMA_USE_PREBUILT_UI=OFF
14
+ -DCMAKE_CUDA_COMPILER_LAUNCHER=/recipe/nvcc_launcher.sh
15
+ -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON
16
+ -DCMAKE_INSTALL_RPATH=$ORIGIN
recipe/scripts/runtime_build/docker-default-seccomp.json ADDED
@@ -0,0 +1,875 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "defaultAction": "SCMP_ACT_ERRNO",
3
+ "defaultErrnoRet": 1,
4
+ "archMap": [
5
+ {
6
+ "architecture": "SCMP_ARCH_X86_64",
7
+ "subArchitectures": [
8
+ "SCMP_ARCH_X86",
9
+ "SCMP_ARCH_X32"
10
+ ]
11
+ },
12
+ {
13
+ "architecture": "SCMP_ARCH_AARCH64",
14
+ "subArchitectures": [
15
+ "SCMP_ARCH_ARM"
16
+ ]
17
+ },
18
+ {
19
+ "architecture": "SCMP_ARCH_MIPS64",
20
+ "subArchitectures": [
21
+ "SCMP_ARCH_MIPS",
22
+ "SCMP_ARCH_MIPS64N32"
23
+ ]
24
+ },
25
+ {
26
+ "architecture": "SCMP_ARCH_MIPS64N32",
27
+ "subArchitectures": [
28
+ "SCMP_ARCH_MIPS",
29
+ "SCMP_ARCH_MIPS64"
30
+ ]
31
+ },
32
+ {
33
+ "architecture": "SCMP_ARCH_MIPSEL64",
34
+ "subArchitectures": [
35
+ "SCMP_ARCH_MIPSEL",
36
+ "SCMP_ARCH_MIPSEL64N32"
37
+ ]
38
+ },
39
+ {
40
+ "architecture": "SCMP_ARCH_MIPSEL64N32",
41
+ "subArchitectures": [
42
+ "SCMP_ARCH_MIPSEL",
43
+ "SCMP_ARCH_MIPSEL64"
44
+ ]
45
+ },
46
+ {
47
+ "architecture": "SCMP_ARCH_S390X",
48
+ "subArchitectures": [
49
+ "SCMP_ARCH_S390"
50
+ ]
51
+ },
52
+ {
53
+ "architecture": "SCMP_ARCH_RISCV64",
54
+ "subArchitectures": null
55
+ },
56
+ {
57
+ "architecture": "SCMP_ARCH_LOONGARCH64",
58
+ "subArchitectures": null
59
+ }
60
+ ],
61
+ "syscalls": [
62
+ {
63
+ "names": [
64
+ "accept",
65
+ "accept4",
66
+ "access",
67
+ "adjtimex",
68
+ "alarm",
69
+ "bind",
70
+ "brk",
71
+ "cachestat",
72
+ "capget",
73
+ "capset",
74
+ "chdir",
75
+ "chmod",
76
+ "chown",
77
+ "chown32",
78
+ "clock_adjtime",
79
+ "clock_adjtime64",
80
+ "clock_getres",
81
+ "clock_getres_time64",
82
+ "clock_gettime",
83
+ "clock_gettime64",
84
+ "clock_nanosleep",
85
+ "clock_nanosleep_time64",
86
+ "close",
87
+ "close_range",
88
+ "connect",
89
+ "copy_file_range",
90
+ "creat",
91
+ "dup",
92
+ "dup2",
93
+ "dup3",
94
+ "epoll_create",
95
+ "epoll_create1",
96
+ "epoll_ctl",
97
+ "epoll_ctl_old",
98
+ "epoll_pwait",
99
+ "epoll_pwait2",
100
+ "epoll_wait",
101
+ "epoll_wait_old",
102
+ "eventfd",
103
+ "eventfd2",
104
+ "execve",
105
+ "execveat",
106
+ "exit",
107
+ "exit_group",
108
+ "faccessat",
109
+ "faccessat2",
110
+ "fadvise64",
111
+ "fadvise64_64",
112
+ "fallocate",
113
+ "fanotify_mark",
114
+ "fchdir",
115
+ "fchmod",
116
+ "fchmodat",
117
+ "fchmodat2",
118
+ "fchown",
119
+ "fchown32",
120
+ "fchownat",
121
+ "fcntl",
122
+ "fcntl64",
123
+ "fdatasync",
124
+ "fgetxattr",
125
+ "flistxattr",
126
+ "flock",
127
+ "fork",
128
+ "fremovexattr",
129
+ "fsetxattr",
130
+ "fstat",
131
+ "fstat64",
132
+ "fstatat64",
133
+ "fstatfs",
134
+ "fstatfs64",
135
+ "fsync",
136
+ "ftruncate",
137
+ "ftruncate64",
138
+ "futex",
139
+ "futex_requeue",
140
+ "futex_time64",
141
+ "futex_wait",
142
+ "futex_waitv",
143
+ "futex_wake",
144
+ "futimesat",
145
+ "getcpu",
146
+ "getcwd",
147
+ "getdents",
148
+ "getdents64",
149
+ "getegid",
150
+ "getegid32",
151
+ "geteuid",
152
+ "geteuid32",
153
+ "getgid",
154
+ "getgid32",
155
+ "getgroups",
156
+ "getgroups32",
157
+ "getitimer",
158
+ "getpeername",
159
+ "getpgid",
160
+ "getpgrp",
161
+ "getpid",
162
+ "getppid",
163
+ "getpriority",
164
+ "getrandom",
165
+ "getresgid",
166
+ "getresgid32",
167
+ "getresuid",
168
+ "getresuid32",
169
+ "getrlimit",
170
+ "get_robust_list",
171
+ "getrusage",
172
+ "getsid",
173
+ "getsockname",
174
+ "getsockopt",
175
+ "get_thread_area",
176
+ "gettid",
177
+ "gettimeofday",
178
+ "getuid",
179
+ "getuid32",
180
+ "getxattr",
181
+ "getxattrat",
182
+ "inotify_add_watch",
183
+ "inotify_init",
184
+ "inotify_init1",
185
+ "inotify_rm_watch",
186
+ "io_cancel",
187
+ "ioctl",
188
+ "io_destroy",
189
+ "io_getevents",
190
+ "io_pgetevents",
191
+ "io_pgetevents_time64",
192
+ "ioprio_get",
193
+ "ioprio_set",
194
+ "io_setup",
195
+ "io_submit",
196
+ "ipc",
197
+ "kill",
198
+ "landlock_add_rule",
199
+ "landlock_create_ruleset",
200
+ "landlock_restrict_self",
201
+ "lchown",
202
+ "lchown32",
203
+ "lgetxattr",
204
+ "link",
205
+ "linkat",
206
+ "listen",
207
+ "listmount",
208
+ "listxattr",
209
+ "listxattrat",
210
+ "llistxattr",
211
+ "_llseek",
212
+ "lremovexattr",
213
+ "lseek",
214
+ "lsetxattr",
215
+ "lstat",
216
+ "lstat64",
217
+ "madvise",
218
+ "map_shadow_stack",
219
+ "membarrier",
220
+ "memfd_create",
221
+ "memfd_secret",
222
+ "mincore",
223
+ "mkdir",
224
+ "mkdirat",
225
+ "mknod",
226
+ "mknodat",
227
+ "mlock",
228
+ "mlock2",
229
+ "mlockall",
230
+ "mmap",
231
+ "mmap2",
232
+ "mprotect",
233
+ "mq_getsetattr",
234
+ "mq_notify",
235
+ "mq_open",
236
+ "mq_timedreceive",
237
+ "mq_timedreceive_time64",
238
+ "mq_timedsend",
239
+ "mq_timedsend_time64",
240
+ "mq_unlink",
241
+ "mremap",
242
+ "mseal",
243
+ "msgctl",
244
+ "msgget",
245
+ "msgrcv",
246
+ "msgsnd",
247
+ "msync",
248
+ "munlock",
249
+ "munlockall",
250
+ "munmap",
251
+ "name_to_handle_at",
252
+ "nanosleep",
253
+ "newfstatat",
254
+ "_newselect",
255
+ "open",
256
+ "openat",
257
+ "openat2",
258
+ "pause",
259
+ "pidfd_open",
260
+ "pidfd_send_signal",
261
+ "pipe",
262
+ "pipe2",
263
+ "pkey_alloc",
264
+ "pkey_free",
265
+ "pkey_mprotect",
266
+ "poll",
267
+ "ppoll",
268
+ "ppoll_time64",
269
+ "prctl",
270
+ "pread64",
271
+ "preadv",
272
+ "preadv2",
273
+ "prlimit64",
274
+ "process_mrelease",
275
+ "pselect6",
276
+ "pselect6_time64",
277
+ "pwrite64",
278
+ "pwritev",
279
+ "pwritev2",
280
+ "read",
281
+ "readahead",
282
+ "readlink",
283
+ "readlinkat",
284
+ "readv",
285
+ "recv",
286
+ "recvfrom",
287
+ "recvmmsg",
288
+ "recvmmsg_time64",
289
+ "recvmsg",
290
+ "remap_file_pages",
291
+ "removexattr",
292
+ "removexattrat",
293
+ "rename",
294
+ "renameat",
295
+ "renameat2",
296
+ "restart_syscall",
297
+ "riscv_hwprobe",
298
+ "rmdir",
299
+ "rseq",
300
+ "rt_sigaction",
301
+ "rt_sigpending",
302
+ "rt_sigprocmask",
303
+ "rt_sigqueueinfo",
304
+ "rt_sigreturn",
305
+ "rt_sigsuspend",
306
+ "rt_sigtimedwait",
307
+ "rt_sigtimedwait_time64",
308
+ "rt_tgsigqueueinfo",
309
+ "sched_getaffinity",
310
+ "sched_getattr",
311
+ "sched_getparam",
312
+ "sched_get_priority_max",
313
+ "sched_get_priority_min",
314
+ "sched_getscheduler",
315
+ "sched_rr_get_interval",
316
+ "sched_rr_get_interval_time64",
317
+ "sched_setaffinity",
318
+ "sched_setattr",
319
+ "sched_setparam",
320
+ "sched_setscheduler",
321
+ "sched_yield",
322
+ "seccomp",
323
+ "select",
324
+ "semctl",
325
+ "semget",
326
+ "semop",
327
+ "semtimedop",
328
+ "semtimedop_time64",
329
+ "send",
330
+ "sendfile",
331
+ "sendfile64",
332
+ "sendmmsg",
333
+ "sendmsg",
334
+ "sendto",
335
+ "setfsgid",
336
+ "setfsgid32",
337
+ "setfsuid",
338
+ "setfsuid32",
339
+ "setgid",
340
+ "setgid32",
341
+ "setgroups",
342
+ "setgroups32",
343
+ "setitimer",
344
+ "setpgid",
345
+ "setpriority",
346
+ "setregid",
347
+ "setregid32",
348
+ "setresgid",
349
+ "setresgid32",
350
+ "setresuid",
351
+ "setresuid32",
352
+ "setreuid",
353
+ "setreuid32",
354
+ "setrlimit",
355
+ "set_robust_list",
356
+ "setsid",
357
+ "setsockopt",
358
+ "set_thread_area",
359
+ "set_tid_address",
360
+ "setuid",
361
+ "setuid32",
362
+ "setxattr",
363
+ "setxattrat",
364
+ "shmat",
365
+ "shmctl",
366
+ "shmdt",
367
+ "shmget",
368
+ "shutdown",
369
+ "sigaltstack",
370
+ "signalfd",
371
+ "signalfd4",
372
+ "sigprocmask",
373
+ "sigreturn",
374
+ "socketcall",
375
+ "socketpair",
376
+ "splice",
377
+ "stat",
378
+ "stat64",
379
+ "statfs",
380
+ "statfs64",
381
+ "statmount",
382
+ "statx",
383
+ "symlink",
384
+ "symlinkat",
385
+ "sync",
386
+ "sync_file_range",
387
+ "syncfs",
388
+ "sysinfo",
389
+ "tee",
390
+ "tgkill",
391
+ "time",
392
+ "timer_create",
393
+ "timer_delete",
394
+ "timer_getoverrun",
395
+ "timer_gettime",
396
+ "timer_gettime64",
397
+ "timer_settime",
398
+ "timer_settime64",
399
+ "timerfd_create",
400
+ "timerfd_gettime",
401
+ "timerfd_gettime64",
402
+ "timerfd_settime",
403
+ "timerfd_settime64",
404
+ "times",
405
+ "tkill",
406
+ "truncate",
407
+ "truncate64",
408
+ "ugetrlimit",
409
+ "umask",
410
+ "uname",
411
+ "unlink",
412
+ "unlinkat",
413
+ "uretprobe",
414
+ "utime",
415
+ "utimensat",
416
+ "utimensat_time64",
417
+ "utimes",
418
+ "vfork",
419
+ "vmsplice",
420
+ "wait4",
421
+ "waitid",
422
+ "waitpid",
423
+ "write",
424
+ "writev"
425
+ ],
426
+ "action": "SCMP_ACT_ALLOW"
427
+ },
428
+ {
429
+ "names": [
430
+ "process_vm_readv",
431
+ "process_vm_writev",
432
+ "ptrace"
433
+ ],
434
+ "action": "SCMP_ACT_ALLOW",
435
+ "includes": {
436
+ "minKernel": "4.8"
437
+ }
438
+ },
439
+ {
440
+ "names": [
441
+ "socket"
442
+ ],
443
+ "action": "SCMP_ACT_ALLOW",
444
+ "args": [
445
+ {
446
+ "index": 0,
447
+ "value": 38,
448
+ "op": "SCMP_CMP_LT"
449
+ }
450
+ ]
451
+ },
452
+ {
453
+ "names": [
454
+ "socket"
455
+ ],
456
+ "action": "SCMP_ACT_ALLOW",
457
+ "args": [
458
+ {
459
+ "index": 0,
460
+ "value": 39,
461
+ "op": "SCMP_CMP_EQ"
462
+ }
463
+ ]
464
+ },
465
+ {
466
+ "names": [
467
+ "socket"
468
+ ],
469
+ "action": "SCMP_ACT_ALLOW",
470
+ "args": [
471
+ {
472
+ "index": 0,
473
+ "value": 40,
474
+ "op": "SCMP_CMP_GT"
475
+ }
476
+ ]
477
+ },
478
+ {
479
+ "names": [
480
+ "personality"
481
+ ],
482
+ "action": "SCMP_ACT_ALLOW",
483
+ "args": [
484
+ {
485
+ "index": 0,
486
+ "value": 0,
487
+ "op": "SCMP_CMP_EQ"
488
+ }
489
+ ]
490
+ },
491
+ {
492
+ "names": [
493
+ "personality"
494
+ ],
495
+ "action": "SCMP_ACT_ALLOW",
496
+ "args": [
497
+ {
498
+ "index": 0,
499
+ "value": 8,
500
+ "op": "SCMP_CMP_EQ"
501
+ }
502
+ ]
503
+ },
504
+ {
505
+ "names": [
506
+ "personality"
507
+ ],
508
+ "action": "SCMP_ACT_ALLOW",
509
+ "args": [
510
+ {
511
+ "index": 0,
512
+ "value": 131072,
513
+ "op": "SCMP_CMP_EQ"
514
+ }
515
+ ]
516
+ },
517
+ {
518
+ "names": [
519
+ "personality"
520
+ ],
521
+ "action": "SCMP_ACT_ALLOW",
522
+ "args": [
523
+ {
524
+ "index": 0,
525
+ "value": 131080,
526
+ "op": "SCMP_CMP_EQ"
527
+ }
528
+ ]
529
+ },
530
+ {
531
+ "names": [
532
+ "personality"
533
+ ],
534
+ "action": "SCMP_ACT_ALLOW",
535
+ "args": [
536
+ {
537
+ "index": 0,
538
+ "value": 4294967295,
539
+ "op": "SCMP_CMP_EQ"
540
+ }
541
+ ]
542
+ },
543
+ {
544
+ "names": [
545
+ "sync_file_range2",
546
+ "swapcontext"
547
+ ],
548
+ "action": "SCMP_ACT_ALLOW",
549
+ "includes": {
550
+ "arches": [
551
+ "ppc64le"
552
+ ]
553
+ }
554
+ },
555
+ {
556
+ "names": [
557
+ "arm_fadvise64_64",
558
+ "arm_sync_file_range",
559
+ "sync_file_range2",
560
+ "breakpoint",
561
+ "cacheflush",
562
+ "set_tls"
563
+ ],
564
+ "action": "SCMP_ACT_ALLOW",
565
+ "includes": {
566
+ "arches": [
567
+ "arm",
568
+ "arm64"
569
+ ]
570
+ }
571
+ },
572
+ {
573
+ "names": [
574
+ "arch_prctl"
575
+ ],
576
+ "action": "SCMP_ACT_ALLOW",
577
+ "includes": {
578
+ "arches": [
579
+ "amd64",
580
+ "x32"
581
+ ]
582
+ }
583
+ },
584
+ {
585
+ "names": [
586
+ "modify_ldt"
587
+ ],
588
+ "action": "SCMP_ACT_ALLOW",
589
+ "includes": {
590
+ "arches": [
591
+ "amd64",
592
+ "x32",
593
+ "x86"
594
+ ]
595
+ }
596
+ },
597
+ {
598
+ "names": [
599
+ "s390_pci_mmio_read",
600
+ "s390_pci_mmio_write",
601
+ "s390_runtime_instr"
602
+ ],
603
+ "action": "SCMP_ACT_ALLOW",
604
+ "includes": {
605
+ "arches": [
606
+ "s390",
607
+ "s390x"
608
+ ]
609
+ }
610
+ },
611
+ {
612
+ "names": [
613
+ "riscv_flush_icache"
614
+ ],
615
+ "action": "SCMP_ACT_ALLOW",
616
+ "includes": {
617
+ "arches": [
618
+ "riscv64"
619
+ ]
620
+ }
621
+ },
622
+ {
623
+ "names": [
624
+ "open_by_handle_at"
625
+ ],
626
+ "action": "SCMP_ACT_ALLOW",
627
+ "includes": {
628
+ "caps": [
629
+ "CAP_DAC_READ_SEARCH"
630
+ ]
631
+ }
632
+ },
633
+ {
634
+ "names": [
635
+ "bpf",
636
+ "clone",
637
+ "clone3",
638
+ "fanotify_init",
639
+ "fsconfig",
640
+ "fsmount",
641
+ "fsopen",
642
+ "fspick",
643
+ "lookup_dcookie",
644
+ "lsm_get_self_attr",
645
+ "lsm_list_modules",
646
+ "lsm_set_self_attr",
647
+ "mount",
648
+ "mount_setattr",
649
+ "move_mount",
650
+ "open_tree",
651
+ "perf_event_open",
652
+ "quotactl",
653
+ "quotactl_fd",
654
+ "setdomainname",
655
+ "sethostname",
656
+ "setns",
657
+ "syslog",
658
+ "umount",
659
+ "umount2",
660
+ "unshare"
661
+ ],
662
+ "action": "SCMP_ACT_ALLOW",
663
+ "includes": {
664
+ "caps": [
665
+ "CAP_SYS_ADMIN"
666
+ ]
667
+ }
668
+ },
669
+ {
670
+ "names": [
671
+ "clone"
672
+ ],
673
+ "action": "SCMP_ACT_ALLOW",
674
+ "args": [
675
+ {
676
+ "index": 0,
677
+ "value": 2114060288,
678
+ "op": "SCMP_CMP_MASKED_EQ"
679
+ }
680
+ ],
681
+ "excludes": {
682
+ "caps": [
683
+ "CAP_SYS_ADMIN"
684
+ ],
685
+ "arches": [
686
+ "s390",
687
+ "s390x"
688
+ ]
689
+ }
690
+ },
691
+ {
692
+ "names": [
693
+ "clone"
694
+ ],
695
+ "action": "SCMP_ACT_ALLOW",
696
+ "args": [
697
+ {
698
+ "index": 1,
699
+ "value": 2114060288,
700
+ "op": "SCMP_CMP_MASKED_EQ"
701
+ }
702
+ ],
703
+ "comment": "s390 parameter ordering for clone is different",
704
+ "includes": {
705
+ "arches": [
706
+ "s390",
707
+ "s390x"
708
+ ]
709
+ },
710
+ "excludes": {
711
+ "caps": [
712
+ "CAP_SYS_ADMIN"
713
+ ]
714
+ }
715
+ },
716
+ {
717
+ "names": [
718
+ "clone3"
719
+ ],
720
+ "action": "SCMP_ACT_ERRNO",
721
+ "errnoRet": 38,
722
+ "excludes": {
723
+ "caps": [
724
+ "CAP_SYS_ADMIN"
725
+ ]
726
+ }
727
+ },
728
+ {
729
+ "names": [
730
+ "reboot"
731
+ ],
732
+ "action": "SCMP_ACT_ALLOW",
733
+ "includes": {
734
+ "caps": [
735
+ "CAP_SYS_BOOT"
736
+ ]
737
+ }
738
+ },
739
+ {
740
+ "names": [
741
+ "chroot"
742
+ ],
743
+ "action": "SCMP_ACT_ALLOW",
744
+ "includes": {
745
+ "caps": [
746
+ "CAP_SYS_CHROOT"
747
+ ]
748
+ }
749
+ },
750
+ {
751
+ "names": [
752
+ "delete_module",
753
+ "init_module",
754
+ "finit_module"
755
+ ],
756
+ "action": "SCMP_ACT_ALLOW",
757
+ "includes": {
758
+ "caps": [
759
+ "CAP_SYS_MODULE"
760
+ ]
761
+ }
762
+ },
763
+ {
764
+ "names": [
765
+ "acct"
766
+ ],
767
+ "action": "SCMP_ACT_ALLOW",
768
+ "includes": {
769
+ "caps": [
770
+ "CAP_SYS_PACCT"
771
+ ]
772
+ }
773
+ },
774
+ {
775
+ "names": [
776
+ "kcmp",
777
+ "pidfd_getfd",
778
+ "process_madvise",
779
+ "process_vm_readv",
780
+ "process_vm_writev",
781
+ "ptrace"
782
+ ],
783
+ "action": "SCMP_ACT_ALLOW",
784
+ "includes": {
785
+ "caps": [
786
+ "CAP_SYS_PTRACE"
787
+ ]
788
+ }
789
+ },
790
+ {
791
+ "names": [
792
+ "iopl",
793
+ "ioperm"
794
+ ],
795
+ "action": "SCMP_ACT_ALLOW",
796
+ "includes": {
797
+ "caps": [
798
+ "CAP_SYS_RAWIO"
799
+ ]
800
+ }
801
+ },
802
+ {
803
+ "names": [
804
+ "settimeofday",
805
+ "stime",
806
+ "clock_settime",
807
+ "clock_settime64"
808
+ ],
809
+ "action": "SCMP_ACT_ALLOW",
810
+ "includes": {
811
+ "caps": [
812
+ "CAP_SYS_TIME"
813
+ ]
814
+ }
815
+ },
816
+ {
817
+ "names": [
818
+ "vhangup"
819
+ ],
820
+ "action": "SCMP_ACT_ALLOW",
821
+ "includes": {
822
+ "caps": [
823
+ "CAP_SYS_TTY_CONFIG"
824
+ ]
825
+ }
826
+ },
827
+ {
828
+ "names": [
829
+ "get_mempolicy",
830
+ "mbind",
831
+ "set_mempolicy",
832
+ "set_mempolicy_home_node"
833
+ ],
834
+ "action": "SCMP_ACT_ALLOW",
835
+ "includes": {
836
+ "caps": [
837
+ "CAP_SYS_NICE"
838
+ ]
839
+ }
840
+ },
841
+ {
842
+ "names": [
843
+ "syslog"
844
+ ],
845
+ "action": "SCMP_ACT_ALLOW",
846
+ "includes": {
847
+ "caps": [
848
+ "CAP_SYSLOG"
849
+ ]
850
+ }
851
+ },
852
+ {
853
+ "names": [
854
+ "bpf"
855
+ ],
856
+ "action": "SCMP_ACT_ALLOW",
857
+ "includes": {
858
+ "caps": [
859
+ "CAP_BPF"
860
+ ]
861
+ }
862
+ },
863
+ {
864
+ "names": [
865
+ "perf_event_open"
866
+ ],
867
+ "action": "SCMP_ACT_ALLOW",
868
+ "includes": {
869
+ "caps": [
870
+ "CAP_PERFMON"
871
+ ]
872
+ }
873
+ }
874
+ ]
875
+ }
recipe/scripts/runtime_build/fixed_pid.c ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* The gpu-cuda recipe's process-id shim (MODEL-SETUP MS-PIN-3, "The build is reproducible").
2
+ *
3
+ * cudafe++ writes its process id into the module id that names every internal-linkage entity
4
+ * of the device code, and nvcc names its temporary files after its process id. Both then
5
+ * change from one build to the next, and so does the generated code. For those two programs
6
+ * only, getpid() returns FIXED_PID; every other program sees its real process id. nvcc_launcher.sh
7
+ * gives each object its own temporary folder, so a fixed id cannot make two compiles collide.
8
+ *
9
+ * Built inside the build container and loaded with LD_PRELOAD by nvcc_launcher.sh. It is a tool
10
+ * of the build, never part of the artifact.
11
+ */
12
+ #define _GNU_SOURCE
13
+ #include <errno.h>
14
+ #include <string.h>
15
+ #include <sys/syscall.h>
16
+ #include <sys/types.h>
17
+ #include <unistd.h>
18
+
19
+ #define FIXED_PID 4242
20
+
21
+ pid_t getpid(void) {
22
+ if (strcmp(program_invocation_short_name, "nvcc") == 0 ||
23
+ strcmp(program_invocation_short_name, "cudafe++") == 0) {
24
+ return FIXED_PID;
25
+ }
26
+ return (pid_t)syscall(SYS_getpid);
27
+ }
recipe/scripts/runtime_build/nvcc_launcher.sh ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+ # The gpu-cuda recipe's CUDA compiler launcher (MODEL-SETUP MS-PIN-3, "The build is reproducible").
3
+ #
4
+ # CMake runs every nvcc compile as: nvcc_launcher.sh <nvcc command>. The launcher makes the
5
+ # device code depend on the input alone:
6
+ # - address-space randomization is off for the compiler (setarch -R), because NVVM's cicc
7
+ # generates different code for one input when its memory addresses move;
8
+ # - nvcc and cudafe++ see a fixed process id (the shim named by NVCC_PID_SHIM), because
9
+ # cudafe++ writes its process id into the module id and nvcc names its temporary files by it;
10
+ # - each object gets its own temporary folder, named after the object, so the fixed id cannot
11
+ # make two compiles collide;
12
+ # - cicc's allocator (jemalloc) never returns memory on a timer, because under load its
13
+ # addresses, and so cicc's code, would follow timing (MALLOC_CONF; any inherited value is
14
+ # replaced).
15
+ # Anything it cannot do is a refusal, never a compile that silently varies.
16
+ set -euo pipefail
17
+
18
+ shim="${NVCC_PID_SHIM:-}"
19
+ if [ -z "$shim" ] || [ ! -f "$shim" ]; then
20
+ echo "nvcc launcher: NVCC_PID_SHIM does not name the fixed process id shim" >&2
21
+ exit 2
22
+ fi
23
+ object=""
24
+ previous=""
25
+ for argument in "$@"; do
26
+ if [ "$previous" = "-o" ]; then
27
+ object="$argument"
28
+ fi
29
+ previous="$argument"
30
+ done
31
+ if [ -z "$object" ]; then
32
+ echo "nvcc launcher: the command names no -o object" >&2
33
+ exit 2
34
+ fi
35
+ folder="${TMPDIR:-/tmp}/nvcc/$(printf '%s' "$object" | sha256sum | cut -c1-16)"
36
+ rm -rf "$folder"
37
+ mkdir -p "$folder"
38
+ export TMPDIR="$folder"
39
+ export LD_PRELOAD="$shim"
40
+ export MALLOC_CONF="dirty_decay_ms:-1,muzzy_decay_ms:-1"
41
+ exec setarch x86_64 -R "$@"
recipe/scripts/runtime_build/pin_source_times.sh ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+ # Every file of the checked-out source gets the pinned commit's time (MODEL-SETUP MS-PIN-3,
3
+ # "The build is reproducible").
4
+ #
5
+ # cudafe++ mixes the source file's modification time into the module id that names the device
6
+ # code's internal entities, and a checkout stamps every file with the time it ran, so two builds
7
+ # on different days would differ. The commit's own timestamp is fixed by the commit. Links get
8
+ # the time themselves (touch -h). A file left with any other time is a refusal.
9
+ #
10
+ # usage: pin_source_times.sh <git work tree>
11
+ set -euo pipefail
12
+ shopt -s inherit_errexit
13
+
14
+ tree="${1:?usage: $0 <git work tree>}"
15
+ tree="$(cd "$tree" && pwd)"
16
+ epoch="$(git -C "$tree" log -1 --format=%ct)"
17
+ if ! [[ "$epoch" =~ ^[0-9]+$ ]]; then
18
+ echo "refusing: $tree has no commit time" >&2
19
+ exit 1
20
+ fi
21
+ find "$tree" -path "$tree/.git" -prune -o -exec touch -h -d "@$epoch" {} +
22
+ others="$(find "$tree" -path "$tree/.git" -prune -o -printf '%T@\t%p\n' \
23
+ | awk -F '\t' -v epoch="$epoch" 'n < 5 && $1 + 0 != epoch + 0 { print $2; n++ }')"
24
+ if [ -n "$others" ]; then
25
+ echo "refusing: files in $tree still have another time: $others" >&2
26
+ exit 1
27
+ fi
28
+ echo "source times: $epoch"
recipe/scripts/runtime_build/seccomp.py ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """The gpu-cuda recipe's build-container seccomp profile (MODEL-SETUP MS-PIN-3).
2
+
3
+ Docker's own default profile, pinned by hash, plus one rule. The added rule allows
4
+ personality(PER_LINUX | ADDR_NO_RANDOMIZE), which `setarch -R` needs to turn address
5
+ randomization off for the CUDA compiler. The default refuses that value; nothing else changes.
6
+
7
+ `docker-default-seccomp.json` is the profile Docker 29.8.1 builds in, unchanged: moby commit
8
+ 464cd50c3d9e92877d56940ea160de6fca7bea23, vendor/github.com/moby/profiles/seccomp/default.json.
9
+
10
+ usage: python3 seccomp.py <output file>
11
+ """
12
+
13
+ from __future__ import annotations
14
+
15
+ import hashlib
16
+ import json
17
+ import sys
18
+ from pathlib import Path
19
+
20
+ DEFAULT = Path(__file__).with_name("docker-default-seccomp.json")
21
+ DEFAULT_SHA256 = "536529b665dd0972c37bfb569f5d4ac8a53592e7b00752bc39ff063ca9864c74"
22
+ PER_LINUX = 0x0000000
23
+ ADDR_NO_RANDOMIZE = 0x0040000
24
+ RULE = {
25
+ "names": ["personality"],
26
+ "action": "SCMP_ACT_ALLOW",
27
+ "args": [{"index": 0, "value": PER_LINUX | ADDR_NO_RANDOMIZE, "op": "SCMP_CMP_EQ"}],
28
+ }
29
+
30
+
31
+ def build_profile(default: bytes) -> dict:
32
+ """The pinned default profile with RULE added. A default that is not the pinned one is
33
+ refused, so the build never runs under a profile nobody reviewed."""
34
+ digest = hashlib.sha256(default).hexdigest()
35
+ if digest != DEFAULT_SHA256:
36
+ raise ValueError(f"the vendored Docker profile is not the pinned one (SHA-256 {digest})")
37
+ profile = json.loads(default)
38
+ profile["syscalls"].append(RULE)
39
+ return profile
40
+
41
+
42
+ def main(argv: list[str]) -> int:
43
+ if len(argv) != 2:
44
+ print("usage: python3 seccomp.py <output file>", file=sys.stderr)
45
+ return 2
46
+ try:
47
+ profile = build_profile(DEFAULT.read_bytes())
48
+ except ValueError as error:
49
+ print(f"refusing: {error}", file=sys.stderr)
50
+ return 1
51
+ Path(argv[1]).write_text(json.dumps(profile, indent=1) + "\n", encoding="utf-8")
52
+ return 0
53
+
54
+
55
+ if __name__ == "__main__":
56
+ sys.exit(main(sys.argv))