vutronmusic

LOW
maintainer zxp19821005 1 votes scanned 2026-09-17 00:27:14.276658
View on AUR
Why flagged

The yarn install is part of building the project from its own source (git checkout), uses locked mirrors for reliability in China, and depends on system-wide electron; no untrusted external code is silently installed.

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 yarn install is part of building the project from its own source (git checkout), uses locked mirrors for reliability in China, and depends on system-wide electron; no untrusted external code is silently installed.

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:81 NODE_ENV=development yarn add -D node-addon-api

PKGBUILD

1 offending line(s) highlighted
1# Maintainer: zxp19821005 <zxp19821005 at 163 dot com>
2pkgname=vutronmusic
3_pkgname=VutronMusic
4pkgver=3.2.0
5_electronversion=37
6_nodeversion=22
7pkgrel=1
8pkgdesc="A high-quality third-party NetEase Cloud Music player that supports local music playback, offline playlists, and desktop lyrics.(Use system-wide electron)高颜值的第三方网易云播放器,支持本地音乐播放、离线歌单、桌面歌词、Touch Bar歌词、Mac状态栏歌词显示、Linux-gnome桌面状态栏歌词显示."
9arch=('any')
10url="https://github.com/stark81/VutronMusic"
11license=('MIT')
12depends=(
13 "electron${_electronversion}"
14 'libvips'
15)
16makedepends=(
17 'npm'
18 'nvm'
19 'curl'
20 'gendesk'
21 'yarn'
22 'git'
23 'jq'
24)
25source=(
26 "${pkgname}-${pkgver}::git+${url}#tag=v${pkgver}"
27 "${pkgname}.sh"
28)
29sha256sums=('835e861631249c07e2bd16dd8cfb0c0683cad47d7485317789d67e06db411d2c'
30 '31ad33b633744f5361abd964be306cea53ae1050e760c787115f7eca60045ae6')
31_ensure_local_nvm() {
32 local NVM_DIR="${srcdir}/.nvm"
33 source /usr/share/nvm/init-nvm.sh || [[ $? != 1 ]]
34 nvm install "${_nodeversion}"
35 nvm use "${_nodeversion}"
36}
37_get_electron_version() {
38 _elec_ver=$(jq -r '.devDependencies["electron"] // .dependencies["electron"]' "${srcdir}/${pkgname}-${pkgver}/package.json" | tr -d '^')
39 _main_ver=$(echo "${_elec_ver}" | cut -d. -f1)
40 echo -e "The electron version is: \033[1;31m${_main_ver}\033[0m"
41}
42prepare() {
43 cd "${srcdir}/${pkgname}-${pkgver}"
44 _get_electron_version
45 sed -i -e "
46 s/@electronversion@/${_electronversion}/g
47 s/@appname@/${pkgname}/g
48 s/@runname@/app.asar/g
49 s/@cfgdirname@/${_pkgname}/g
50 s/@options@/env ELECTRON_OZONE_PLATFORM_HINT=auto/g
51 " "${srcdir}/${pkgname}.sh"
52 gendesk -q -f -n \
53 --pkgname="${pkgname}" \
54 --pkgdesc="${pkgdesc}" \
55 --categories="AudioVideo" \
56 --name="${_pkgname}" \
57 --exec="${pkgname} %U"
58 export SYSTEM_ELECTRON_VERSION="$(electron${_electronversion} -v | sed 's/v//g')"
59 local HOME="${srcdir}/.electron-gyp"
60 mkdir -p "${srcdir}/.electron-gyp"
61 if [[ "$(curl -s ipinfo.io/country)" == *"CN"* ]]; then
62 {
63 export YARN_REGISTRY="https://registry.npmmirror.com"
64 export ELECTRON_MIRROR="https://registry.npmmirror.com/-/binary/electron/"
65 export ELECTRON_BUILDER_BINARIES_MIRROR="https://registry.npmmirror.com/-/binary/electron-builder-binaries/"
66 export YARN_CACHE_FOLDER="${srcdir}/.yarn/cache"
67 export YARN_PLUGINS_FOLDER="${srcdir}/.yarn/plugins"
68 export YARN_GLOBAL_FOLDER="${srcdir}/.yarn/global"
69 export YARN_USE_HARDLINKS=true
70 # export YARN_BUILD_FROM_SOURCE=true
71 export YARN_LINK_WORKSPACE_PACKAGES=true
72 export YARN_FETCH_RETRIES=3
73 export YARN_FETCH_RETRY_TIMEOUT=10000
74 export YARN_NETWORK_CONCURRENCY=32
75 }
76 find ./ -type f -name "yarn.lock" -exec sed -i "s/registry.yarnpkg.com/registry.npmmirror.com/g" {} +
77 fi
78 _ensure_local_nvm
79 sed -i "s/\/\${version}//g" buildAssets/builder/config.js
80 sed -i "s/\"electron\": \"[^\"]*\"/\"electron\": \"${SYSTEM_ELECTRON_VERSION}\"/g" package.json
81 NODE_ENV=development yarn add -D node-addon-api
82 NODE_ENV=development yarn install --cache-folder "${srcdir}/.yarn_cache"
83}
84build() {
85 cd "${srcdir}/${pkgname}-${pkgver}"
86 _ensure_local_nvm
87 export ELECTRON_SKIP_BINARY_DOWNLOAD=1
88 local electronDist="/usr/lib/electron${_electronversion}"
89 NODE_ENV=production yarn run build:pre
90 NODE_ENV=production yarn electron-builder --linux dir -c.electronDist="${electronDist}" --config=buildAssets/builder/config.js
91 rm -rf "${srcdir}/${pkgname}-${pkgver}/release/linux-"*/resources/app.asar.unpacked/node_modules/font-list/libs/{darwin,win32}
92}
93package() {
94 install -Dm755 "${srcdir}/${pkgname}.sh" "${pkgdir}/usr/bin/${pkgname}"
95 install -Dm755 -d "${pkgdir}/usr/lib/${pkgname}"
96 find "${srcdir}/${pkgname}-${pkgver}/release/linux-"*"/resources" -maxdepth 1 -type f -exec install -Dm644 -t "${pkgdir}/usr/lib/${pkgname}" {} +
97 if find "${srcdir}/${pkgname}-${pkgver}/release/linux-"*"/resources" -mindepth 1 -maxdepth 1 -type d | read; then
98 for _subdir in "${srcdir}/${pkgname}-${pkgver}/release/linux-"*"/resources/"*; do
99 if [ -d "${_subdir}" ]; then
100 cp -Pr --no-preserve=ownership "${_subdir}" "${pkgdir}/usr/lib/${pkgname}"
101 fi
102 done
103 fi
104 install -Dm644 "${srcdir}/${pkgname}-${pkgver}/buildAssets/icons/icon.png" "${pkgdir}/usr/share/pixmaps/${pkgname}.png"
105 install -Dm644 "${srcdir}/${pkgname}-${pkgver}/${pkgname}.desktop" -t "${pkgdir}/usr/share/applications"
106 install -Dm644 "${srcdir}/${pkgname}-${pkgver}/LICENSE" -t "${pkgdir}/usr/share/licenses/${pkgname}"
107}
108

Scan history

Scanned at (UTC)SeverityRules
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

Report a package

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

0 / 4000
Your suggestion