floatlyrics
The non-standard host lindera.dev hosts dictionary data used to build the application, not executable code; the source is checksummed and used only for generating static data in the binary.
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-2507) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The non-standard host lindera.dev hosts dictionary data used to build the application, not executable code; the source is checksummed and used only for generating static data in the binary.
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:28
"mecab-ipadic-2.7.0-20250920.tar.gz::https://lindera.dev/mecab-ipadic-2.7.0-20250920.tar.gz"
PKGBUILD
1 offending line(s) highlighted# Maintainer: ChouChiu
# SPDX-FileCopyrightText: 2026 ChouChiu
# SPDX-License-Identifier: AGPL-3.0-only
pkgname=floatlyrics
pkgver=1.3.1
pkgrel=1
pkgdesc='Floating synchronized lyrics for MPRIS players on Linux Wayland'
arch=('x86_64')
url='https://github.com/ChouChiu/FloatLyrics'
license=('AGPL-3.0-only')
depends=(
'cairo'
'glib2'
'glibc'
'gtk4'
'gtk4-layer-shell'
'libgcc'
'pango'
'webkitgtk-6.0'
)
makedepends=('bun' 'cargo')
# The other sources are the dictionaries `lindera-ipadic` and `lindera-cc-cedict`
# build the readings they embed into the binary from; pinned copies keep the build
# from fetching them on its own.
source=(
"$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz"
"mecab-ipadic-2.7.0-20250920.tar.gz::https://lindera.dev/mecab-ipadic-2.7.0-20250920.tar.gz"
"CC-CEDICT-MeCab-0.1.0-20200409.tar.gz::https://lindera.dev/CC-CEDICT-MeCab-0.1.0-20200409.tar.gz"
)
# The source archive comes first, then the dictionaries in the order above;
# scripts/update-aur-checksum.sh replaces the first one on every release.
sha256sums=(
'd799892565b49dcb24edddf1950ede89296f8af81a5c5e685c5d03f473be3edb'
'a7ba9f645ffe7094e56ae1c4a81d100df8fbb1e28bbe1792622e9728e162db3d'
'ed3cf9e3ec8a80647f0ec783dc09dad43b8ccad2e994f5eab6ff13a41d0916c8'
)
# A lindera dictionary crate looks for its archive in
# "$LINDERA_BUILD_DICTIONARY_CACHE_DIR/<crate version>-fmt<dictionary format
# version>"; both numbers are pinned by Cargo.lock, and a mismatch falls back to
# the download the pinned copies are here to avoid.
dictionary_cache="$srcdir/lindera-cache"
dictionary_build="$dictionary_cache/6.0.0-fmt2"
export LINDERA_BUILD_DICTIONARY_CACHE_DIR="$dictionary_cache"
prepare() {
cd "FloatLyrics-$pkgver"
export RUSTUP_TOOLCHAIN=stable
cargo fetch --locked --target "$CARCH-unknown-linux-gnu"
install -Dm644 "$srcdir/mecab-ipadic-2.7.0-20250920.tar.gz" \
"$dictionary_build/mecab-ipadic-2.7.0-20250920.tar.gz"
install -Dm644 "$srcdir/CC-CEDICT-MeCab-0.1.0-20200409.tar.gz" \
"$dictionary_build/CC-CEDICT-MeCab-0.1.0-20200409.tar.gz"
}
build() {
cd "FloatLyrics-$pkgver"
export RUSTUP_TOOLCHAIN=stable
export LIBSQLITE3_SYS_USE_PKG_CONFIG=1
CFLAGS+=" -ffat-lto-objects"
export CFLAGS
CARGO_TARGET_DIR=target cargo build --frozen --release
}
check() {
cd "FloatLyrics-$pkgver"
export RUSTUP_TOOLCHAIN=stable
export LIBSQLITE3_SYS_USE_PKG_CONFIG=1
CFLAGS+=" -ffat-lto-objects"
export CFLAGS
CARGO_TARGET_DIR=target cargo test --frozen --all-targets --all-features
}
package() {
cd "FloatLyrics-$pkgver"
./packaging/install.sh "$pkgdir" target/release/floatlyrics
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-11-04 00:25:23 | Low | 2 |
| 2026-11-03 00:01:00 | Low | 2 |
| 2026-11-02 00:26:00 | Low | 2 |
| 2026-11-01 00:21:48 | Low | 2 |
| 2026-10-31 00:07:41 | Low | 2 |
| 2026-10-30 00:29:30 | Low | 2 |
| 2026-10-29 00:13:55 | Low | 2 |
| 2026-10-28 00:06:54 | Low | 2 |
| 2026-10-27 00:23:28 | Low | 2 |
| 2026-10-26 00:12:40 | Low | 2 |
| 2026-10-25 00:20:48 | Low | 2 |
| 2026-10-24 00:14:55 | Low | 2 |
| 2026-10-23 00:02:19 | Low | 2 |
| 2026-10-22 00:13:10 | Low | 2 |
| 2026-10-21 00:12:50 | Low | 2 |
| 2026-10-20 00:10:31 | Low | 2 |
| 2026-10-19 00:03:55 | Low | 2 |
| 2026-10-18 00:06:55 | Low | 2 |
| 2026-10-17 00:21:55 | Low | 2 |
| 2026-10-16 00:12:47 | Low | 2 |