tradingview
The package downloads a Snap file from the official Snapcraft API and extracts it; this is a standard, verifiable source for official software, not a swappable host, and the binary content is from the project's own distribution, making the risk low despite the non-whitelisted domain.
Triggered rules
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 package downloads a Snap file from the official Snapcraft API and extracts it; this is a standard, verifiable source for official software, not a swappable host, and the binary content is from the project's own distribution, making the risk low despite the non-whitelisted domain.
1 higher static finding superseded - not the current verdict (shown for transparency)
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:31
"$_pkgsrc.snap"::"https://api.snapcraft.io/api/v1/snaps/download/${_snap_id}_${_snap_rev}.snap" -
PKGBUILD:32
"$_terms_of_use.html"::"https://www.tradingview.com/policies/"
PKGBUILD
2 offending line(s) highlighted# Maintainer:
# Contributor: Ivan Gabaldon <aur[at]inetol.net>
# Contributor: archlinuxbits <archlinuxbits at proton.me>
: ${_snap_id:=nJdITJ6ZJxdvfu8Ch7n5kH5P99ClzBYV}
: ${_snap_rev:=72}
_pkgname="tradingview"
pkgname="$_pkgname"
pkgver=3.3.0
pkgrel=1
pkgdesc='Charting platform for traders and investors'
arch=('x86_64')
url="https://www.tradingview.com/desktop/"
license=('LicenseRef-TradingView')
depends=(
'libsecret'
)
makedepends=(
'html-xml-utils'
'squashfs-tools'
'w3m'
)
options=('!debug' '!strip')
_terms_of_use="$_pkgname-$pkgver-$_snap_rev-eula"
_pkgsrc="$_pkgname-$pkgver-$_snap_rev"
source=(
"$_pkgsrc.snap"::"https://api.snapcraft.io/api/v1/snaps/download/${_snap_id}_${_snap_rev}.snap"
"$_terms_of_use.html"::"https://www.tradingview.com/policies/"
)
sha256sums=(
'e4343ff1a62a67a75f05720d4762392f44fa0c70ecf4858049366632043bf118'
'SKIP'
)
prepare() {
hxextract .tv-policies "$_terms_of_use.html" \
1> "$_terms_of_use-2.html" \
2> /dev/null
w3m -O UTF-8 -cols 80 -dump "$_terms_of_use-2.html" > "$_terms_of_use.txt"
# unpack
mkdir -p "$_pkgsrc"
unsquashfs -q -n -f -d "$_pkgsrc/" "$_pkgsrc.snap"
}
package() {
local _electron_version=$(strings "$_pkgsrc/tradingview" | grep -Pom1 'Electron/\K[0-9]+')
depends+=("electron${_electron_version}")
# asar
mkdir -pm755 "$pkgdir/usr/lib/$_pkgname"
cp -r "$_pkgsrc/resources/"* "$pkgdir/usr/lib/$_pkgname/"
# launcher
sed -E -e '/^Comment=/d' \
-e 's&^(Icon)=.*$&\1='"$_pkgname&" \
-e 's&^(Categories)=(Finance;)$&\1=Office;\2&' \
-i "$_pkgsrc/meta/gui/$_pkgname.desktop"
install -Dm644 "$_pkgsrc/meta/gui/$_pkgname.desktop" -t "$pkgdir/usr/share/applications/"
# icon
install -Dm644 "$_pkgsrc/meta/gui/icon.png" "$pkgdir/usr/share/icons/hicolor/512x512/apps/$_pkgname.png"
# license
install -Dm644 "$_terms_of_use.txt" -t "$pkgdir/usr/share/licenses/$pkgname/"
# script
install -Dm755 /dev/stdin "$pkgdir/usr/bin/$_pkgname" << END
#!/usr/bin/env bash
name=$_pkgname
flags_file="\${XDG_CONFIG_HOME:-\$HOME/.config}/\${name}-flags.conf"
lines=()
if [[ -f "\${flags_file}" ]]; then
mapfile -t lines < "\${flags_file}"
fi
flags=()
for line in "\${lines[@]}"; do
if [[ ! "\${line}" =~ ^[[:space:]]*#.* ]] && [[ -n "\${line}" ]]; then
flags+=("\${line}")
fi
done
: \${ELECTRON_IS_DEV:=0}
export ELECTRON_IS_DEV
: \${ELECTRON_FORCE_IS_PACKAGED:=true}
export ELECTRON_FORCE_IS_PACKAGED
exec electron${_electron_version} "\${flags[@]}" "/usr/lib/$_pkgname/app.asar" "\$@"
END
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-17 00:27:14 | Low | 2 |
| 2026-09-16 00:03:17 | Low | 2 |
| 2026-09-15 00:25:31 | Low | 2 |
| 2026-09-14 00:27:57 | Low | 2 |
| 2026-09-13 00:19:54 | Low | 2 |
| 2026-09-12 00:25:17 | Low | 2 |
| 2026-09-11 00:19:22 | Low | 2 |
| 2026-09-10 00:22:44 | Low | 2 |
| 2026-09-09 00:04:09 | Low | 2 |
| 2026-09-08 00:18:08 | Low | 2 |
| 2026-09-07 00:30:15 | Low | 2 |
| 2026-09-06 00:17:06 | Low | 2 |
| 2026-09-05 00:16:27 | Low | 2 |
| 2026-09-04 00:03:13 | Low | 2 |
| 2026-09-03 00:15:47 | Low | 2 |
| 2026-09-02 00:02:31 | Low | 2 |
| 2026-09-01 00:11:19 | Low | 2 |
| 2026-08-31 00:19:57 | Low | 2 |
| 2026-08-30 00:04:14 | Low | 2 |
| 2026-08-29 00:29:17 | Low | 2 |