gpt4all-chat
maintainer ZhangHua
· 7 votes
· scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged
The flagged URL from gpt4all.io is for a model file (nomic-embed-text-v1.5.f16.gguf), which is non-executable data used by the application; hosting on a non-whitelisted domain is common for project-specific assets and does not constitute a supply-chain risk for code execution.
Triggered rules
LOW
AI review downgraded a static finding
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-07-25) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The flagged URL from gpt4all.io is for a model file (nomic-embed-text-v1.5.f16.gguf), which is non-executable data used by the application; hosting on a non-whitelisted domain is common for project-specific assets and does not constitute a supply-chain risk for code execution.
1 higher static finding superseded - not the current verdict (shown for transparency)
MEDIUM
source=() URL on a non-standard host
source_untrusted_domain
One or more source=() URLs point to a host outside the trusted allowlist (github.com, gitlab.com, codeberg.org, pypi.org, …).
-
PKGBUILD:16
"https://gpt4all.io/models/gguf/nomic-embed-text-v1.5.f16.gguf"
PKGBUILD
1 offending line(s) highlighted
1
pkgname=gpt4all-chat
2
pkgver=3.10.0
3
pkgrel=4
4
pkgdesc="run open-source LLMs anywhere"
5
arch=("x86_64")
6
url="https://gpt4all.io"
7
license=("MIT")
8
depends=(
9
"gcc-libs" "glibc" "qt6-base" "qt6-httpserver" "qt6-5compat" "qt6-declarative"
10
"qt6-webengine")
11
makedepends=(
12
"cmake" "shaderc" "vulkan-tools" "vulkan-headers" "qt6-shadertools" "qt6-svg"
13
"qt6-tools" "qt6-wayland" "fmt" "ninja")
14
source=(
15
"$pkgname-$pkgver.tar.gz::https://github.com/nomic-ai/gpt4all/archive/refs/tags/v$pkgver.tar.gz"
16
"https://gpt4all.io/models/gguf/nomic-embed-text-v1.5.f16.gguf"
17
"001-change-binary-name.diff"
18
"002-install-and-load-localdocs-model-more-standardly.diff"
19
)
20
declare -rAg _modules_name_map=(
21
[gpt4all-backend/deps/llama.cpp-mainline]=https://github.com/nomic-ai/llama.cpp/archive/11f734c3b0334dbae4823b4a7467764e447fc6d6.tar.gz
22
[gpt4all-backend/deps/llama.cpp-mainline/ggml/src/kompute]=https://github.com/nomic-ai/kompute/archive/7c20efa30bb53d08bf04f84e510275766ebe9923.tar.gz
23
[gpt4all-chat/deps/usearch]=https://github.com/nomic-ai/usearch/archive/9e59f1036657303b29eaf709945f339e403e5f2f.tar.gz
24
[gpt4all-chat/deps/usearch/fp16]=https://github.com/Maratyszcza/FP16/archive/0a92994d729ff76a58f692d3028ca1b64b145d91.tar.gz
25
[gpt4all-chat/deps/usearch/simsimd]=https://github.com/ashvardanian/NumKong/archive/18d17686124ddebd9fe55eee56b2e0273a613d4b.tar.gz
26
[gpt4all-chat/deps/usearch/stringzilla]=https://github.com/ashvardanian/StringZilla/archive/91d0a1a02faae90a41c60a30855d5935eb3eaef1.tar.gz
27
[gpt4all-chat/deps/SingleApplication]=https://github.com/nomic-ai/SingleApplication/archive/21bdef01eddcbd78044eea1d50b9dee08d218ff2.tar.gz
28
[gpt4all-chat/deps/fmt]=https://github.com/fmtlib/fmt/archive/0c9fce2ffefecfdce794e1859584e25877b7b592.tar.gz
29
[gpt4all-chat/deps/DuckX]=https://github.com/nomic-ai/DuckX/archive/6e31dfb280e2107fbf4f6a15098c38b014f1bbcc.tar.gz
30
[gpt4all-chat/deps/QXlsx]=https://github.com/nomic-ai/QXlsx/archive/29e81b369128525749dcb6516195b6b062eda955.tar.gz
31
[gpt4all-chat/deps/minja]=https://github.com/nomic-ai/minja/archive/e97bb2442cd6ab3d5bb5f5a3e8a1f7d6081d613b.tar.gz
32
[gpt4all-chat/deps/json]=https://github.com/nlohmann/json/archive/606b6347edf0758c531abb6c36743e09a4c48a84.tar.gz
33
)
34
_get_source_name_string() {
35
local host filename name commit
36
host=$(echo "$1" | cut -d / -f 3)
37
name=$(echo "$1" | cut -d / -f 5)
38
filename=${1##*/}
39
commit=${filename%%.*}
40
case "$host" in
41
gitlab.com)
42
# It contains $name in $commit
43
echo "$commit"
44
;;
45
*)
46
echo "$name-$commit"
47
;;
48
esac
49
}
50
51
_fill_gitmodules_recursively() {
52
local gitmodule
53
find "${1:-.}" -type f -name .gitmodules | while read -r gitmodule
54
do
55
local prefix
56
prefix=$(dirname "$gitmodule")"/"
57
if [[ "$gitmodule" =~ ^\.\/ ]]
58
then
59
gitmodule=${gitmodule#*\.\/}
60
prefix=${prefix#*\.\/}
61
fi
62
echo "Parsing $gitmodule to fill submodules..."
63
local p
64
grep path "$gitmodule" | awk '{print $3}' | while read -r p
65
do
66
p=${p%$'\r'} # Remove control characters
67
if [[ -n "$p" ]]
68
then
69
local target url name commit fname
70
target="$prefix$p"
71
url="${_modules_name_map[$target]}"
72
fname=$(_get_source_name_string "$url")
73
echo "Filling $target with $srcdir/$fname..."
74
cp -r "$srcdir/$fname/." "$target"
75
_fill_gitmodules_recursively "$target"
76
fi
77
done
78
done
79
}
80
declare _source_str _uri
81
for _uri in "${_modules_name_map[@]}"
82
do
83
_source_str="$(_get_source_name_string "$_uri").tar.gz::$_uri"
84
if [[ "${source[*]/$_source_str/}" == "${source[*]}" ]]
85
then
86
source+=("$_source_str")
87
fi
88
done
89
unset _source_str _uri
90
sha256sums=('14cfcf13de40e1bfb4df1096aac9d410bfa29d7b0c30a297bb2b3474a554f44e'
91
'f7af6f66802f4df86eda10fe9bbcfc75c39562bed48ef6ace719a251cf1c2fdb'
92
'828e04b4938eb192f20f87f94415252863b702bee1d9ab5f0a539a15de095350'
93
'b348d6b9228316e4611186df0558f032a25ffa20334e68a91a09e07ce84db77a'
94
'a91f4770ff9c39f4d72e339c379f566b3bbb359fa66122d85fc0bae3dde7abc7'
95
'5f151fe3d71bb7b719eb50ed4bdedfde9c92d9d21c7eea172eec177b9875eff5'
96
'fe9eca41677db9ec416fdae2fe7ba0bac82cecc692e6d9670e8e35baa461b528'
97
'cf51f45eaabd9b1fccc2c871ccdd7be81730bb0172538c9375c1e33bf5ac131c'
98
'78869fa23cec5faf7a6b157fbc6309202ad9c6b1f7c1392d3dc4894ffe93eb95'
99
'51c6e723437ddf1ba9b4bf9951ca93e975e21b7513e268ee6e7dfc40d4aee691'
100
'f94052c10b611fd374194ca6e0dc4d159459c0b370abfe9002c13058863b7039'
101
'95c080489c3170b7d7c76956fe4f224a2ef721907d7b62b508e3b72a7513afd1'
102
'eb366efe210279c4a34041834e2a8177e7f54a6dd3b0f258f558028325a252c4'
103
'49a6d9e340474152d68478a46051b39facc5060965edc95a4b08002cfbd5eedc'
104
'f5b0160e6d13a1d80f2024685e53ee6975d601f5367763a9ee1f8d45920d7816'
105
'3ab929011431db5d61d3153290135dd299244f407d767ba6b2c3a275213c20c8')
106
107
prepare() {
108
cd "$srcdir/gpt4all-$pkgver"
109
_fill_gitmodules_recursively
110
patch -Np1 -i ../001-change-binary-name.diff
111
patch -Np1 -i ../002-install-and-load-localdocs-model-more-standardly.diff
112
sed -i "s|https://gpt4all.io/models/gguf|file://$srcdir|" gpt4all-chat/CMakeLists.txt
113
sed -i "s/vk::DynamicLoader/vk::detail::DynamicLoader/g" \
114
gpt4all-backend/deps/llama.cpp-mainline/ggml/src/kompute/src/include/kompute/Manager.hpp \
115
gpt4all-backend/deps/llama.cpp-mainline/ggml/src/kompute/src/Manager.cpp
116
sed -i "s/vk::DispatchLoaderDynamic/vk::detail::DispatchLoaderDynamic/" \
117
gpt4all-backend/deps/llama.cpp-mainline/ggml/src/kompute/src/include/kompute/Manager.hpp
118
# https://github.com/KomputeProject/kompute/issues/410
119
sed -i "/strtol()/ d;/ftell()/ d" \
120
gpt4all-backend/deps/llama.cpp-mainline/ggml/src/kompute/external/bin/xxd.c
121
# Qt 6.10 requires finding Qt::GuiPrivate explicitly
122
# https://doc-snapshots.qt.io/qt6-6.10/qtguiprivate-module.html#details
123
sed -i "s/Gui REQUIRED/Gui GuiPrivate REQUIRED/g" \
124
gpt4all-chat/deps/QXlsx/QXlsx/CMakeLists.txt
125
}
126
build() {
127
CFLAGS+=" -DNDEBUG"
128
CXXFLAGS+=" -DNDEBUG"
129
cmake -B build-chat -S "$srcdir/gpt4all-$pkgver/gpt4all-chat" -G Ninja -Wno-dev \
130
-DCMAKE_BUILD_TYPE=None \
131
-DCMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT=OFF \
132
-DCMAKE_INSTALL_PREFIX=/usr \
133
-DCMAKE_SKIP_INSTALL_RPATH=ON \
134
-DKOMPUTE_OPT_BUILD_SHADERS=ON \
135
-DKOMPUTE_OPT_DISABLE_VULKAN_VERSION_CHECK=ON \
136
-DKOMPUTE_OPT_USE_BUILT_IN_FMT=OFF \
137
-DKOMPUTE_OPT_USE_BUILT_IN_VULKAN_HEADER=OFF \
138
-DKOMPUTE_OPT_USE_BUILT_IN_SPDLOG=OFF \
139
-DLLMODEL_KOMPUTE=ON \
140
-DLLMODEL_VULKAN=OFF \
141
-DLLMODEL_CUDA=OFF \
142
-DLLMODEL_ROCM=OFF
143
cmake --build build-chat
144
}
145
package_gpt4all-chat() {
146
depends+=("hicolor-icon-theme")
147
148
DESTDIR="$pkgdir" cmake --install build-chat
149
install -Dm644 "$srcdir/gpt4all-$pkgver/gpt4all-chat/flatpak-manifest/io.gpt4all.gpt4all.desktop" \
150
"$pkgdir/usr/share/applications/io.gpt4all.gpt4all.desktop"
151
sed -i 's/Exec=chat/Exec=gpt4all-chat/' "$pkgdir/usr/share/applications/io.gpt4all.gpt4all.desktop"
152
install -Dm644 "$srcdir/gpt4all-$pkgver/gpt4all-chat/flatpak-manifest/io.gpt4all.gpt4all.appdata.xml" \
153
"$pkgdir/usr/share/metainfo/io.gpt4all.gpt4all.metainfo.xml"
154
for size in 32 48
155
do
156
install -Dm644 "$srcdir/gpt4all-$pkgver/gpt4all-chat/icons/gpt4all-$size.png" \
157
"$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/io.gpt4all.gpt4all.png"
158
done
159
install -Dm644 "$srcdir/gpt4all-$pkgver/gpt4all-chat/icons/gpt4all.svg" \
160
"$pkgdir/usr/share/icons/hicolor/scalable/apps/io.gpt4all.gpt4all.svg"
161
install -Dm644 "$srcdir/gpt4all-$pkgver/LICENSE.txt" \
162
"$pkgdir/usr/share/licenses/gpt4all-chat/LICENSE.txt"
163
install -Dm644 "$srcdir/gpt4all-$pkgver/gpt4all-chat/LICENSE" \
164
"$pkgdir/usr/share/licenses/gpt4all-chat/LICENSE_chat.txt"
165
# Remove useless static linked libraries headers/archives
166
rm -rf "$pkgdir/usr/include" "$pkgdir/usr/lib/cmake" "$pkgdir/usr/lib/pkgconfig" "$pkgdir/usr/lib/"*.a \
167
"$pkgdir/usr/share/doc"
168
}
169
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | LOW | 2 |
| 2026-08-02 00:16:08 | LOW | 2 |
| 2026-08-01 00:11:18 | LOW | 2 |
| 2026-07-31 00:14:10 | LOW | 2 |
| 2026-07-30 00:17:23 | LOW | 2 |
| 2026-07-29 00:25:53 | LOW | 2 |
| 2026-07-28 00:07:28 | LOW | 2 |
| 2026-07-27 00:24:32 | LOW | 2 |
| 2026-07-26 00:07:32 | LOW | 2 |
| 2026-07-25 00:13:44 | LOW | 2 |
| 2026-07-24 00:02:28 | LOW | 2 |
| 2026-07-23 00:14:47 | LOW | 2 |
| 2026-07-22 00:29:32 | LOW | 2 |
| 2026-07-21 00:24:15 | LOW | 2 |
| 2026-07-20 00:19:49 | LOW | 2 |
| 2026-07-19 00:17:08 | LOW | 2 |
| 2026-07-18 00:14:48 | LOW | 2 |
| 2026-07-17 00:06:16 | LOW | 2 |
| 2026-07-16 00:05:41 | LOW | 2 |
| 2026-07-15 00:09:25 | LOW | 2 |