frink-lang-bin
maintainer typedrat
· 1 votes
· scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged
The package downloads the official JAR and data files from the project's own domain (frinklang.org), which is the legitimate source; the files are installed as-is and not executed during build, and the SKIP'd checksums are a packaging weakness but do not imply malicious content given the trusted context.
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 package downloads the official JAR and data files from the project's own domain (frinklang.org), which is the legitimate source; the files are installed as-is and not executed during build, and the SKIP'd checksums are a packaging weakness but do not imply malicious content given the trusted context.
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:13
"$pkgname.jar::https://frinklang.org/frinkjar/frink.jar"
PKGBUILD
1 offending line(s) highlighted
1
# Maintainer: Alexis Williams <alexis@typedr.at>
2
pkgname=frink-lang-bin
3
pkgver=20240227
4
pkgrel=2
5
pkgdesc="A practical calculating tool and programming language."
6
arch=('any')
7
url="https://frinklang.org/"
8
license=('unknown')
9
depends=('bash' 'java-runtime')
10
makedepends=('awk' 'imagemagick' 'unzip')
11
optdepends=('rlwrap: readline support for the command-line shell')
12
source=(
13
"$pkgname.jar::https://frinklang.org/frinkjar/frink.jar"
14
"$pkgname-unitnames.txt::https://frinklang.org/frinkjar/unitnames.txt"
15
"$pkgname-functionnames.txt::https://frinklang.org/frinkjar/functionnames.txt"
16
)
17
noextract=("${source[@]%%::*}")
18
sha256sums=(
19
'SKIP'
20
'SKIP'
21
'SKIP'
22
)
23
24
pkgver() {
25
unzip -l "$srcdir/$pkgname.jar" | awk '/META-INF\/MANIFEST.MF/ { gsub("-",""); print $2 }';
26
}
27
28
build() {
29
unzip -p "$srcdir/$pkgname.jar" "data/icon.gif" > "$srcdir/$pkgname-icon.gif"
30
convert "$srcdir/$pkgname-icon.gif" -interpolate Nearest -filter point -resize '512x512' "$srcdir/$pkgname-icon.png"
31
}
32
33
package() {
34
35
36
mkdir -p "$pkgdir/usr/share/java/frink/";
37
cp "$srcdir/$pkgname.jar" "$pkgdir/usr/share/java/frink/frink.jar";
38
39
mkdir -p "$pkgdir/usr/share/frink/";
40
cp "$srcdir/$pkgname-unitnames.txt" "$pkgdir/usr/share/frink/unitnames.txt";
41
cp "$srcdir/$pkgname-functionnames.txt" "$pkgdir/usr/share/frink/functionnames.txt";
42
43
mkdir -p "$pkgdir/usr/bin/"
44
cat > "$pkgdir/usr/bin/frink" << 'EOF'
45
#!/bin/bash
46
CP=/usr/share/java/frink/frink.jar
47
48
rlwrap=$(command -v rlwrap)
49
rlwrap_args=""
50
if [ -n "${rlwrap}" ]
51
then
52
rlwrap_args="-f /usr/share/frink/unitnames.txt -b '$' -f /usr/share/frink/functionnames.txt"
53
fi
54
55
java_opts=(
56
"-Dawt.useSystemAAFontSettings=on"
57
"-Dswing.aatext=true"
58
"-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel"
59
"-Dswing.crossplatformlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel"
60
)
61
62
exec $rlwrap $rlwrap_args /usr/bin/java ${java_opts[*]} -cp $CP frink.gui.FrinkStarter "$@"
63
EOF
64
chmod a+x "$pkgdir/usr/bin/frink"
65
66
mkdir -p "$pkgdir/usr/share/icons/"
67
cp "$srcdir/$pkgname-icon.png" "$pkgdir/usr/share/icons/frink.png"
68
69
mkdir -p "$pkgdir/usr/share/applications/"
70
cat > "$pkgdir/usr/share/applications/frink.desktop" << 'EOF'
71
[Desktop Entry]
72
Type=Application
73
Version=1.0
74
Name=Frink
75
Comment=A practical calculating tool and programming language.
76
Exec=frink --gui
77
Icon=frink
78
Terminal=false
79
Categories=Utility;Science;Math;Calculator;Java
80
EOF
81
}
82
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 |