jbrowse-desktop-git

maintainer balwierz · 0 votes · scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged Package builds from the official GMOD/jbrowse-components GitHub repo using pnpm with a frozen lockfile; the flagged 'undeclared external package' is just pnpm installing the project's own monorepo dependencies scoped to the desktop subgraph, not an unrelated third-party package. The SKIP checksum is expected for a git source. No obfuscation, no exfiltration, no untrusted binary downloads.

Triggered rules

LOW AI review downgraded a static finding llm_review

The static rules flagged this MEDIUM, but an AI model (anthropic/claude-4.6-sonnet-20260217) reviewed the full PKGBUILD and judged it LOW (confidence 75%): Package builds from the official GMOD/jbrowse-components GitHub repo using pnpm with a frozen lockfile; the flagged 'undeclared external package' is just pnpm installing the project's own monorepo dependencies scoped to the desktop subgraph, not an unrelated third-party package. The SKIP checksum is expected for a git source. No obfuscation, no exfiltration, no untrusted binary downloads.

1 higher static finding superseded - not the current verdict (shown for transparency)
MEDIUM npm/yarn/pnpm install of an undeclared external package npm_install_external

Runs `npm/yarn/pnpm install <package>` for a package not in source=(), pulling unpinned, unreviewed code at build time. Severity downgraded: the package declares/looks like a Node.js consumer, where build-time installs are expected.

  • PKGBUILD:42 pnpm install --frozen-lockfile --filter "@jbrowse/desktop..."

PKGBUILD

1 offending line(s) highlighted
1# Maintainer: Piotr Balwierz <nikt@tuta.com>
2pkgname=jbrowse-desktop-git
3_appname=jbrowse-desktop
4pkgver=4.3.0.r11311.g76002d07d6
5pkgrel=1
6pkgdesc="JBrowse 2 — pluggable open-source genome browser (desktop Electron app, git version)"
7arch=('any')
8url="https://jbrowse.org/jb2/"
9license=('Apache-2.0')
10# Runtime: system Electron (upstream targets electron ^42). Renderer + main are
11# bundled at build time (esbuild main with external:electron, webpack renderer),
12# so no node_modules are needed at runtime.
13depends=('electron42' 'hicolor-icon-theme')
14makedepends=('git' 'pnpm' 'nodejs')
15provides=('jbrowse-desktop')
16conflicts=('jbrowse-desktop')
17options=('!strip' '!debug')
18source=("$_appname::git+https://github.com/GMOD/jbrowse-components.git")
19sha256sums=('SKIP')
20
21pkgver() {
22 cd "$srcdir/$_appname"
23 local _v
24 _v=$(node -p "require('./products/jbrowse-desktop/package.json').version")
25 printf "%s.r%s.g%s" "$_v" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
26}
27
28build() {
29 cd "$srcdir/$_appname"
30 # Keep npm/pnpm caches inside srcdir; skip the unused bundled Electron binary
31 # (we run on system electron42) and give Node headroom for the webpack build.
32 export ELECTRON_SKIP_BINARY_DOWNLOAD=1
33 # e2e-only tooling pulled in as devDeps; their browser/binary downloads are
34 # not needed to build and can fail on flaky networks.
35 export PUPPETEER_SKIP_DOWNLOAD=1
36 export npm_config_cache="$srcdir/.npm-cache"
37 export NODE_OPTIONS="--max-old-space-size=8192"
38
39 # Scope install to the desktop subgraph only — the default whole-monorepo
40 # install builds website/jbrowse-img deps (sharp/libvips, node-canvas) that
41 # have no prebuilt binaries for the host Node and fail to compile.
42 pnpm install --frozen-lockfile --filter "@jbrowse/desktop..."
43 cd products/jbrowse-desktop
44 pnpm build
45}
46
47package() {
48 cd "$srcdir/$_appname/products/jbrowse-desktop"
49
50 # The app's *internal* version must be valid semver (electron-updater parses
51 # app.getVersion() and throws otherwise) — use upstream's, not the Arch pkgver.
52 local _ver
53 _ver=$(node -p "require('./package.json').version")
54
55 # App payload: the built renderer + bundled electron main.
56 # The packaged main loads the renderer from `app.getAppPath()/index.html`
57 # (= the dir holding package.json), so flatten build/'s contents into the app
58 # root — index.html, static/ and electron.js all sit next to package.json.
59 install -dm755 "$pkgdir/usr/lib/$_appname"
60 cp -r build/. "$pkgdir/usr/lib/$_appname/"
61
62 # Minimal runtime package.json so `electron <dir>` finds the entry point
63 cat > "$pkgdir/usr/lib/$_appname/package.json" <<EOF
64{
65 "name": "jbrowse-desktop",
66 "productName": "JBrowse 2",
67 "version": "$_ver",
68 "type": "module",
69 "main": "electron.js"
70}
71EOF
72
73 # Launcher using the system Electron 42 runtime
74 install -dm755 "$pkgdir/usr/bin"
75 cat > "$pkgdir/usr/bin/$_appname" <<EOF
76#!/bin/sh
77exec electron42 /usr/lib/$_appname --ozone-platform-hint=auto "\$@"
78EOF
79 chmod 755 "$pkgdir/usr/bin/$_appname"
80
81 # Icon (size-agnostic location so it is always found) + hicolor
82 install -Dm644 assets/icon.png "$pkgdir/usr/share/pixmaps/$_appname.png"
83 install -Dm644 assets/icon.png "$pkgdir/usr/share/icons/hicolor/512x512/apps/$_appname.png"
84
85 # Desktop entry
86 install -dm755 "$pkgdir/usr/share/applications"
87 cat > "$pkgdir/usr/share/applications/$_appname.desktop" <<EOF
88[Desktop Entry]
89Type=Application
90Name=JBrowse 2
91GenericName=Genome Browser
92Comment=A pluggable open-source genome browser
93Exec=$_appname %U
94Icon=$_appname
95Terminal=false
96Categories=Science;Biology;Education;
97StartupWMClass=JBrowse 2
98EOF
99
100 install -Dm644 "$srcdir/$_appname/LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
101}
102

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