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
5pkgver=15.5.7
6_commit=0b804177fae2655884018187f226154c7566512b
7_chromiumver=94.0.4606.81
8_gcc_patchset=3
9# shellcheck disable=SC2034
10pkgrel=1
11
12_major_ver=${pkgver%%.*}
13if [[ ${_use_suffix} != 0 ]]; then
14 pkgname="electron${_major_ver}"
15else
16 pkgname=electron
17fi
18# shellcheck disable=SC2034
19pkgdesc='Build cross platform desktop apps with web technologies'
20# shellcheck disable=SC2034
21arch=('x86_64')
22# shellcheck disable=SC2034
23url='https://electronjs.org/'
24# shellcheck disable=SC2034
25license=('MIT' 'custom')
26# shellcheck disable=SC2034
27depends=('c-ares' 'ffmpeg' 'gtk3' 'libevent' 'libxslt' 'minizip' 'nss' 're2'
28 'snappy')
29# shellcheck disable=SC2034
30makedepends=('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
35optdepends=('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)")
40if [[ ${_use_suffix} == 0 ]]; then
41 # shellcheck disable=SC2034
42 conflicts=("electron${_major_ver}")
43 # shellcheck disable=SC2034
44 provides=("electron${_major_ver}")
45fi
46# shellcheck disable=SC2034
47options=('!lto') # Electron adds its own flags for ThinLTO
48# shellcheck disable=SC2034
49source=('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
70sha256sums=('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
111prepare() {
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
218build() {
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
263package() {
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)SeverityRules
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

Report a package

Reports go to the AURWatch maintainer (one person) and are read by hand. No login required.

0 / 4000
Your suggestion