electron15
maintainer orphaned
· 1 votes
· scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged
The non-standard host is used to download a patchset tarball for Chromium, which is checksum-verified and part of a transparent build process; the source is not executed directly and the package builds from auditable upstream sources.
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 non-standard host is used to download a patchset tarball for Chromium, which is checksum-verified and part of a transparent build process; the source is not executed directly and the package builds from auditable upstream sources.
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:50
'git+https://chromium.googlesource.com/chromium/tools/depot_tools.git#branch=main'
PKGBUILD
1 offending line(s) highlighted
1
# Maintainer: Luke Arms <luke@arms.to>
2
# Contributor: Nicola Squartini <tensor5@gmail.com>
3
4
_use_suffix=1
5
pkgver=15.5.7
6
_commit=0b804177fae2655884018187f226154c7566512b
7
_chromiumver=94.0.4606.81
8
_gcc_patchset=3
9
# shellcheck disable=SC2034
10
pkgrel=1
11
12
_major_ver=${pkgver%%.*}
13
if [[ ${_use_suffix} != 0 ]]; then
14
pkgname="electron${_major_ver}"
15
else
16
pkgname=electron
17
fi
18
# shellcheck disable=SC2034
19
pkgdesc='Build cross platform desktop apps with web technologies'
20
# shellcheck disable=SC2034
21
arch=('x86_64')
22
# shellcheck disable=SC2034
23
url='https://electronjs.org/'
24
# shellcheck disable=SC2034
25
license=('MIT' 'custom')
26
# shellcheck disable=SC2034
27
depends=('c-ares' 'ffmpeg' 'gtk3' 'libevent' 'libxslt' 'minizip' 'nss' 're2'
28
'snappy')
29
# shellcheck disable=SC2034
30
makedepends=('clang' 'git' 'gn' 'gperf' 'harfbuzz-icu' 'http-parser'
31
'java-runtime-headless' 'jsoncpp' 'libnotify' 'lld' 'llvm' 'ninja'
32
'npm' 'pciutils' 'pipewire' 'python' 'python-httplib2'
33
'python-pyparsing' 'python-six' 'wget' 'yarn')
34
# shellcheck disable=SC2034
35
optdepends=('kde-cli-tools: file deletion support (kioclient5)'
36
'libappindicator-gtk3: StatusNotifierItem support'
37
'pipewire: WebRTC desktop sharing under Wayland'
38
'trash-cli: file deletion support (trash-put)'
39
"xdg-utils: open URLs with desktop's default (xdg-email, xdg-open)")
40
if [[ ${_use_suffix} == 0 ]]; then
41
# shellcheck disable=SC2034
42
conflicts=("electron${_major_ver}")
43
# shellcheck disable=SC2034
44
provides=("electron${_major_ver}")
45
fi
46
# shellcheck disable=SC2034
47
options=('!lto') # Electron adds its own flags for ThinLTO
48
# shellcheck disable=SC2034
49
source=('git+https://github.com/electron/electron.git'
50
'git+https://chromium.googlesource.com/chromium/tools/depot_tools.git#branch=main'
51
"https://github.com/stha09/chromium-patches/releases/download/chromium-${_chromiumver%%.*}-patchset-${_gcc_patchset}/chromium-${_chromiumver%%.*}-patchset-${_gcc_patchset}.tar.xz"
52
"electron-launcher.sh"
53
"electron.desktop"
54
'default_app-icon.patch'
55
'jinja-python-3.10.patch'
56
'use-system-libraries-in-node.patch'
57
'replace-blacklist-with-ignorelist.patch'
58
'sql-make-VirtualCursor-standard-layout-type.patch'
59
'unbundle-fix-visibility-of-build-config-freetype.patch'
60
'gn-visibility-gmock.patch'
61
'gn-visibility-mojo.patch'
62
'gn-visibility-webrtc.patch'
63
'add-a-TODO-about-a-missing-pnacl-flag.patch'
64
'unexpire-accelerated-video-decode-flag.patch'
65
'use-ffile-compilation-dir.patch'
66
'sandbox-build-if-glibc-2.34-dynamic-stack-size-is-en.patch'
67
'breakpad-fix-for-non-constant-SIGSTKSZ.patch'
68
)
69
# shellcheck disable=SC2034
70
sha256sums=('SKIP'
71
'SKIP'
72
'22692bddaf2761c6ddf9ff0bc4722972bca4d4c5b2fd3e5dbdac7eb60d914320'
73
'3953f532a3ea5fce19ee33600c6ead89dcd066df6a01d3c3ab4c24f96e46fca2'
74
'4484200d90b76830b69eea3a471c103999a3ce86bb2c29e6c14c945bf4102bae'
75
'75bac9c4ad32ff9329399b8587f9772e208c009fd822cdfce61b2bd1ee9ac828'
76
'09de0ebb4002be7fb4ede63d3977e4f1235637750169c9e71bfdbd75bf750f7a'
77
'7cb11fb44aaf4d15f36caca3c0d1b082a723c30d43cd44db147248db5683a2a9'
78
'd3344ba39b8c6ed202334ba7f441c70d81ddf8cdb15af1aa8c16e9a3a75fbb35'
79
'dd317f85e5abfdcfc89c6f23f4c8edbcdebdd5e083dcec770e5da49ee647d150'
80
'd0b17162211dd49e3a58c16d1697e7d8c322dcfd3b7890f0c2f920b711f52293'
81
'b9934e01d8f39beafc8b63784fb86e6befe25ca83e9c43224c8374e5a025d8ef'
82
'cca2d224cf2e9d7cfb4f5729ca76b5b8a7100b1ca39892b41fb296adaced1bf7'
83
'574785a21168c3e9b7aa82630713ceb6ced12f699133db66b10fc84b7bb2c631'
84
'd53da216538f2e741a6e048ed103964a91a98e9a3c10c27fdfa34d4692fdc455'
85
'2a97b26c3d6821b15ef4ef1369905c6fa3e9c8da4877eb9af4361452a425290b'
86
'921010cd8fab5f30be76c68b68c9b39fac9e21f4c4133bb709879592bbdf606e'
87
'f910be9370c880de6e1d61cc30383c069e421d7acf406166e4fbfad324fc7d61'
88
'b4d28867c1fabde6c50a2cfa3f784730446c4d86e5191e0f0000fbf7b0f91ecf')
89
90
_system_libs=('ffmpeg'
91
'flac'
92
'fontconfig'
93
'freetype'
94
'harfbuzz-ng'
95
'icu'
96
'libdrm'
97
'libevent'
98
'libjpeg'
99
'libpng'
100
# 'libvpx'
101
'libwebp'
102
'libxml'
103
'libxslt'
104
# 'openh264'
105
'opus'
106
're2'
107
'snappy'
108
'zlib'
109
)
110
111
prepare() {
112
sed -i "s|@ELECTRON@|${pkgname}|" electron-launcher.sh
113
sed -i "s|@ELECTRON@|${pkgname}|" electron.desktop
114
if [[ ${_use_suffix} != 0 ]]; then
115
sed -i "s|@ELECTRON_NAME@|Electron ${_major_ver}|" electron.desktop
116
else
117
sed -i "s|@ELECTRON_NAME@|Electron|" electron.desktop
118
fi
119
120
export PATH="${PATH}:${srcdir:?}/depot_tools"
121
122
echo "Fetching chromium..."
123
git clone --branch=${_chromiumver} --depth=1 \
124
https://chromium.googlesource.com/chromium/src.git
125
126
echo "solutions = [
127
{
128
\"name\": \"src/electron\",
129
\"url\": \"file://${srcdir}/electron@${_commit}\",
130
\"deps_file\": \"DEPS\",
131
\"managed\": False,
132
\"custom_deps\": {
133
\"src\": None,
134
},
135
\"custom_vars\": {},
136
},
137
]" > .gclient
138
139
python "${srcdir}/depot_tools/gclient.py" sync \
140
--with_branch_heads \
141
--with_tags \
142
--nohooks
143
144
echo "Running hooks..."
145
# python "${srcdir}/depot_tools/gclient.py" runhooks
146
src/build/landmines.py
147
src/build/util/lastchange.py -o src/build/util/LASTCHANGE
148
src/build/util/lastchange.py -m GPU_LISTS_VERSION \
149
--revision-id-only --header src/gpu/config/gpu_lists_version.h
150
src/build/util/lastchange.py -m SKIA_COMMIT_HASH \
151
-s src/third_party/skia --header src/skia/ext/skia_commit_hash.h
152
# Create sysmlink to system clang-format
153
ln -s /usr/bin/clang-format src/buildtools/linux64
154
# Create sysmlink to system Node.js
155
mkdir -p src/third_party/node/linux/node-linux-x64/bin
156
ln -sf /usr/bin/node src/third_party/node/linux/node-linux-x64/bin
157
src/third_party/depot_tools/download_from_google_storage.py \
158
--no_resume --extract --no_auth --bucket chromium-nodejs \
159
-s src/third_party/node/node_modules.tar.gz.sha1
160
vpython src/tools/download_optimization_profile.py \
161
--newest_state=src/chrome/android/profiles/newest.txt \
162
--local_state=src/chrome/android/profiles/local.txt \
163
--output_name=src/chrome/android/profiles/afdo.prof \
164
--gs_url_base=chromeos-prebuilt/afdo-job/llvm
165
#vpython src/tools/update_pgo_profiles.py \
166
# --target=linux \
167
# update \
168
# --gs-url-base=chromium-optimization-profiles/pgo_profiles
169
src/electron/script/apply_all_patches.py \
170
src/electron/patches/config.json
171
cd src/electron || exit
172
yarn install --frozen-lockfile
173
cd ..
174
175
echo "Applying local patches..."
176
# Fixes for building with libstdc++ instead of libc++
177
patch -Np1 -i ../patches/chromium-90-ruy-include.patch
178
patch -Np1 -i ../patches/chromium-94-CustomSpaces-include.patch
179
180
patch -Np1 -i ../unbundle-fix-visibility-of-build-config-freetype.patch
181
patch -Np1 -i ../gn-visibility-gmock.patch
182
patch -Np1 -i ../gn-visibility-mojo.patch
183
patch -Np1 -i ../gn-visibility-webrtc.patch
184
patch -Rp1 -i ../add-a-TODO-about-a-missing-pnacl-flag.patch
185
patch -d third_party/jinja2 -Np1 -i ../../../jinja-python-3.10.patch
186
patch -Rp1 -i ../replace-blacklist-with-ignorelist.patch
187
patch -Np1 -i ../sql-make-VirtualCursor-standard-layout-type.patch
188
patch -Np0 -i ../unexpire-accelerated-video-decode-flag.patch
189
patch -Rp1 -i ../use-ffile-compilation-dir.patch
190
patch -d third_party/electron_node/tools/inspector_protocol/jinja2 \
191
-Np1 -i ../../../../../../jinja-python-3.10.patch
192
patch -Np1 -i ../use-system-libraries-in-node.patch
193
patch -Np1 -i ../default_app-icon.patch # Icon from .desktop file
194
195
patch -Np1 -i ../sandbox-build-if-glibc-2.34-dynamic-stack-size-is-en.patch
196
patch -Np1 -d third_party/breakpad/breakpad <../breakpad-fix-for-non-constant-SIGSTKSZ.patch
197
198
echo "Patching Chromium for using system libraries..."
199
sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' \
200
tools/generate_shim_headers/generate_shim_headers.py
201
for lib in $(printf "%s\n" "${_system_libs[@]}" | sed 's/^libjpeg$/&_turbo/'); do
202
third_party_dir="third_party/${lib}"
203
if [ ! -d "${third_party_dir}" ]; then
204
third_party_dir="base/${third_party_dir}"
205
fi
206
find "${third_party_dir}" -type f \
207
\! -path "${third_party_dir}/chromium/*" \
208
\! -path "${third_party_dir}/google/*" \
209
\! -path 'third_party/harfbuzz-ng/utils/hb_scoped.h' \
210
\! -regex '.*\.\(gn\|gni\|isolate\)' \
211
-delete
212
done
213
build/linux/unbundle/replace_gn_files.py \
214
--system-libraries \
215
"${_system_libs[@]}"
216
}
217
218
build() {
219
export CC=clang
220
export CXX=clang++
221
export AR=ar
222
export NM=nm
223
224
CFLAGS="${CFLAGS/-fexceptions/}"
225
CXXFLAGS="${CXXFLAGS/-fexceptions/}"
226
227
# This appears to cause random segfaults when combined with ThinLTO
228
# https://bugs.archlinux.org/task/73518
229
CFLAGS=${CFLAGS/-fstack-clash-protection}
230
CXXFLAGS=${CXXFLAGS/-fstack-clash-protection}
231
232
# Do not warn about unknown warning options
233
CFLAGS+=' -Wno-unknown-warning-option'
234
CXXFLAGS+=' -Wno-unknown-warning-option'
235
236
cd src || exit
237
export CHROMIUM_BUILDTOOLS_PATH="${PWD}/buildtools"
238
GN_EXTRA_ARGS='
239
blink_symbol_level = 0
240
chrome_pgo_phase = 0
241
clang_use_chrome_plugins = false
242
custom_toolchain = "//build/toolchain/linux/unbundle:default"
243
host_toolchain = "//build/toolchain/linux/unbundle:default"
244
icu_use_data_file = false
245
is_component_ffmpeg = false
246
link_pulseaudio = true
247
rtc_use_pipewire = true
248
treat_warnings_as_errors = false
249
use_custom_libcxx = false
250
use_gnome_keyring = false
251
use_sysroot = false
252
'
253
gn gen out/Release \
254
--args="import(\"//electron/build/args/release.gn\") ${GN_EXTRA_ARGS}"
255
ninja -C out/Release electron
256
# Strip before zip to avoid
257
# zipfile.LargeZipFile: Filesize would require ZIP64 extensions
258
strip -s out/Release/electron
259
ninja -C out/Release electron_dist_zip
260
# ninja -C out/Release third_party/electron_node:headers
261
}
262
263
package() {
264
install -dm755 "${pkgdir:?}/usr/lib/${pkgname}"
265
bsdtar -xf src/out/Release/dist.zip -C "${pkgdir}/usr/lib/${pkgname}"
266
267
chmod u+s "${pkgdir}/usr/lib/${pkgname}/chrome-sandbox"
268
269
install -dm755 "${pkgdir}/usr/share/licenses/${pkgname}"
270
for l in "${pkgdir}/usr/lib/${pkgname}"/{LICENSE,LICENSES.chromium.html}; do
271
ln -s \
272
"$(realpath --relative-to="${pkgdir}/usr/share/licenses/${pkgname}" "${l}")" \
273
"${pkgdir}/usr/share/licenses/${pkgname}"
274
done
275
276
install -Dm755 "${srcdir}/electron-launcher.sh" \
277
"${pkgdir}/usr/bin/${pkgname}"
278
if [[ "${_use_suffix}" == 0 ]]; then
279
ln "${pkgdir}/usr/bin/${pkgname}" \
280
"${pkgdir}/usr/bin/${pkgname}${_major_ver}"
281
fi
282
283
# Install .desktop and icon file (see default_app-icon.patch)
284
install -Dm644 electron.desktop \
285
"${pkgdir}/usr/share/applications/${pkgname}.desktop"
286
install -Dm644 src/electron/default_app/icon.png \
287
"${pkgdir}/usr/share/pixmaps/${pkgname}.png" # hicolor has no 1024x1024
288
}
289
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 |