ruffle-selfhosted-nightly
ruffle-nightly
scanned 2026-09-17 00:27:14.276658
The flagged 'external install' is a development tool (wasm-bindgen-cli) installed via cargo during prepare(), which is a standard and safe practice when building Rust projects from source; the source is the official GitHub repository, and no untrusted remote code is executed.
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 flagged 'external install' is a development tool (wasm-bindgen-cli) installed via cargo during prepare(), which is a standard and safe practice when building Rust projects from source; the source is the official GitHub repository, and no untrusted remote code is executed.
1 higher static finding superseded - not the current verdict (shown for transparency)
alt_pkg_manager_install
A non-pip/npm package manager (pipx, uv, poetry, cargo install, go install, gem, conda…) fetches and builds an external package at build time, outside source=() and makepkg's checksums.
-
PKGBUILD:42
cargo install wasm-bindgen-cli --version "$require_wasm_bindgen_version"
PKGBUILD
1 offending line(s) highlighted_system_wasm_bindgen=false
_version=0.7.0
_channel=nightly
_date=2026-09-16
pkgbase=ruffle-nightly
pkgname=(ruffle-nightly
ruffle-demo-nightly
ruffle-selfhosted-nightly
firefox-extension-ruffle-nightly
chromium-extension-ruffle-nightly)
pkgver="$_version+$_channel+${_date//-}"
pkgrel=1
arch=("x86_64")
pkgdesc="A Flash Player emulator written in Rust. (Nightly version)"
url="https://ruffle.rs/"
license=("MIT OR Apache-2.0")
makedepends=("cargo" "cmake" "java-environment" "npm" "nodejs-lts-jod"
"binaryen" "gtk3" "alsa-lib" "libxcb" "systemd-libs"
"clang" "jq" "git" "openssl" "rust-wasm" "rust-src")
if "$_system_wasm_bindgen"
then
makedepends+=("wasm-bindgen")
else
makedepends+=("yq")
fi
source=("git+https://github.com/ruffle-rs/ruffle.git#tag=$_channel-$_date"
"chromium-extension-ruffle.key")
source=("git+https://github.com/ruffle-rs/ruffle.git#tag=$_channel-$_date")
sha256sums=('098f8801c73d0e7952626465a28dd7be26944f8696ccec6e0ed8ab6bb015c951')
options=("!lto")
_FIREFOX_EXTENSION_ID="ruffle@ruffle.rs"
prepare() {
cd "$srcdir/ruffle"
export RUSTUP_TOOLCHAIN=stable
if ! "$_system_wasm_bindgen"
then
local require_wasm_bindgen_version
require_wasm_bindgen_version="$(tomlq -r '.package[] | select(.name == "wasm-bindgen") | .version' Cargo.lock)"
cargo install wasm-bindgen-cli --version "$require_wasm_bindgen_version"
fi
cargo fetch --locked --target host-tuple
cargo fetch --locked --target wasm32-unknown-unknown
cd web
npm ci
# TODO version_name=$version_number when not nightly
jq --null-input \
--arg version_channel "$_channel" \
--arg version_number "$_version" \
--arg version_name "$_channel $_date" \
--arg build_date "$(date --utc --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%Y-%m-%d)" \
--arg build_id "$pkgrel" \
--arg commitHash "$(git rev-parse HEAD)" \
--arg firefox_extension_id "$_FIREFOX_EXTENSION_ID" \
'$ARGS.named' > version_seal.json
echo "Generated version_seal.json:"
cat version_seal.json
}
build() {
cd "$srcdir/ruffle"
if ! "$_system_wasm_bindgen"
then
export PATH="$PATH:$HOME/.cargo/bin"
fi
export RUSTUP_TOOLCHAIN=stable
export CARGO_TARGET_DIR=target
# libtracy_client-sys seems missing some symbols, skip enabling all features.
# jpegxr is not compatible to rust 1.94.0
cargo build --frozen --release \
--package=ruffle_desktop \
--package=ruffle_scanner \
--package=exporter
# Script will read binary at hardcoded path
# See web/packages/core/tools/build_wasm.ts for more info.
unset CARGO_TARGET_DIR
# Flags does not supported by WASM target:
# C/CXX: -mtune -march -fcf-protection
# RUST: -Ctarget-cpu
CFLAGS="$(echo "$CFLAGS" | sed -E 's/-m(tune|arch)=[0-9a-zA-Z-]+//g;s/-fcf-protection//g')"
CXXFLAGS="$(echo "$CXXFLAGS" | sed -E 's/-m(tune|arch)=[0-9a-zA-Z-]+//g;s/-fcf-protection//g')"
RUSTFLAGS="$(echo "$RUSTFLAGS" | sed -E 's/\s*-C\s*target-cpu=[0-9a-zA-Z]+//')"
cd web
npm run build:repro
}
check() {
cd "$srcdir/ruffle"
export RUSTUP_TOOLCHAIN=stable
cargo test --frozen \
--package=ruffle_desktop \
--package=ruffle_scanner \
--package=exporter
cd web
npm run test
}
package_ruffle-nightly() {
depends=("hicolor-icon-theme" "alsa-lib" "systemd-libs" "gcc-libs" "glibc")
pkgdesc+=" (Desktop app and utils)"
provides=("ruffle")
conflicts=("ruffle")
cd "$srcdir/ruffle"
local f
find target/release -maxdepth 1 -executable -type f | while read -r f
do
local target
target="$(basename "$f")"
target=${target/_/-}
if ! [[ "$target" =~ ^ruffle- ]]
then
target="ruffle-$target"
fi
if [[ "$target" == "ruffle-desktop" ]]
then
target="ruffle"
fi
echo "Installing $f to $target..."
install -Dm755 "$f" "$pkgdir/usr/bin/$target"
done
install -Dm644 desktop/packages/linux/rs.ruffle.Ruffle.desktop \
"$pkgdir/usr/share/applications/rs.ruffle.Ruffle.desktop"
install -Dm644 desktop/packages/linux/rs.ruffle.Ruffle.metainfo.xml \
"$pkgdir/usr/share/metainfo/rs.ruffle.Ruffle.metainfo.xml"
install -Dm644 desktop/packages/linux/rs.ruffle.Ruffle.svg \
"$pkgdir/usr/share/icons/hicolor/scalable/apps/rs.ruffle.Ruffle.svg"
install -Dm644 LICENSE.md \
"$pkgdir/usr/share/licenses/$pkgname/LICENSE.md"
install -Dm644 README.md \
"$pkgdir/usr/share/doc/ruffle/README.md"
}
package_ruffle-demo-nightly() {
pkgdesc+=" (Demo web app)"
arch=("any")
provides=("ruffle-demo")
conflicts=("ruffle-demo")
cd "$srcdir/ruffle"
mkdir -p "$pkgdir/usr/share/webapps"
cp -a --no-preserve=ownership \
web/packages/demo/dist \
"$pkgdir/usr/share/webapps/ruffle"
install -Dm644 web/packages/demo/LICENSE_APACHE \
"$pkgdir/usr/share/licenses/$pkgname/LICENSE_APACHE"
install -Dm644 web/packages/demo/LICENSE_MIT \
"$pkgdir/usr/share/licenses/$pkgname/LICENSE_MIT"
install -Dm644 web/packages/demo/README.md \
"$pkgdir/usr/share/doc/ruffle/demo/README.md"
}
package_ruffle-selfhosted-nightly() {
pkgdesc+=" (JavaScript module)"
arch=("any")
provides=("ruffle-selfhosted")
conflicts=("ruffle-selfhosted")
cd "$srcdir/ruffle"
mkdir -p \
"$pkgdir/usr/lib/node_modules" \
"$pkgdir/usr/share/licenses/$pkgname"
cp -a --no-preserve=ownership \
web/packages/selfhosted/dist \
"$pkgdir/usr/lib/node_modules/ruffle"
ln -srfv \
"$pkgdir/usr/lib/node_modules/ruffle/LICENSE_APACHE" \
"$pkgdir/usr/share/licenses/$pkgname/LICENSE_APACHE"
ln -srfv \
"$pkgdir/usr/lib/node_modules/ruffle/LICENSE_MIT" \
"$pkgdir/usr/share/licenses/$pkgname/LICENSE_MIT"
install -Dm644 web/packages/selfhosted/README.md \
"$pkgdir/usr/share/doc/ruffle/selfhosted/README.md"
}
package_firefox-extension-ruffle-nightly() {
optdepends=("firefox: Load extension in browser.")
pkgdesc+=" (Unsigned Firefox extension)"
arch=("any")
provides=("firefox-extension-ruffle")
conflicts=("firefox-extension-ruffle")
cd "$srcdir/ruffle"
install -Dm644 web/packages/extension/dist/firefox_unsigned.xpi \
"$pkgdir/usr/lib/firefox/browser/extensions/$_FIREFOX_EXTENSION_ID.xpi"
install -Dm644 web/packages/extension/LICENSE_APACHE \
"$pkgdir/usr/share/licenses/$pkgname/LICENSE_APACHE"
install -Dm644 web/packages/extension/LICENSE_MIT \
"$pkgdir/usr/share/licenses/$pkgname/LICENSE_MIT"
}
package_chromium-extension-ruffle-nightly() {
optdepends=("chromium: Load extension in browser.")
pkgdesc+=" (Chromium extension)"
arch=("any")
provides=("chromium-extension-ruffle")
conflicts=("chromium-extension-ruffle")
cd "$srcdir/ruffle"
local extension_id=donbcfbmhbcapadipfkeojnmajbakjdc # https://chromewebstore.google.com/detail/ruffle-flash-emulator/donbcfbmhbcapadipfkeojnmajbakjdc
echo "Installing chromium extension $extension_id..."
jq --null-input --raw-output \
--arg external_update_url https://clients2.google.com/service/update2/crx \
'$ARGS.named' | \
install -Dm644 "/dev/stdin" \
"$pkgdir/usr/share/chromium/extensions/$extension_id.json"
install -Dm644 web/packages/extension/LICENSE_APACHE \
"$pkgdir/usr/share/licenses/$pkgname/LICENSE_APACHE"
install -Dm644 web/packages/extension/LICENSE_MIT \
"$pkgdir/usr/share/licenses/$pkgname/LICENSE_MIT"
}
Changes since previous scan
--- PKGBUILD @ 2026-09-16 00:03+++ PKGBUILD @ 2026-09-17 00:27@@ -1,7 +1,7 @@ _system_wasm_bindgen=false _version=0.7.0 _channel=nightly-_date=2026-09-15+_date=2026-09-16 pkgbase=ruffle-nightly pkgname=(ruffle-nightly@@ -27,7 +27,7 @@ source=("git+https://github.com/ruffle-rs/ruffle.git#tag=$_channel-$_date" "chromium-extension-ruffle.key") source=("git+https://github.com/ruffle-rs/ruffle.git#tag=$_channel-$_date")-sha256sums=('db22a3f48d23d7456042dd7ba688626e1ceb0469179624164ee91708d332ce21')+sha256sums=('098f8801c73d0e7952626465a28dd7be26944f8696ccec6e0ed8ab6bb015c951') options=("!lto") _FIREFOX_EXTENSION_ID="ruffle@ruffle.rs"Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-17 00:27:14 | Low | 2 |
| 2026-09-16 07:21:35 | Medium | 1 |
| 2026-09-16 00:03:17 | Low | 2 |
| 2026-09-15 07:19:15 | Medium | 1 |
| 2026-09-15 00:25:31 | Low | 2 |
| 2026-09-14 07:16:35 | Medium | 1 |
| 2026-09-14 00:27:57 | Low | 2 |
| 2026-09-13 00:19:54 | Low | 2 |
| 2026-09-12 07:11:01 | Medium | 1 |
| 2026-09-12 00:25:17 | Low | 2 |
| 2026-09-11 07:22:16 | Medium | 1 |
| 2026-09-11 00:19:22 | Low | 2 |
| 2026-09-10 07:20:26 | Medium | 1 |
| 2026-09-10 00:22:44 | Low | 2 |
| 2026-09-09 07:19:13 | Medium | 1 |
| 2026-09-09 00:04:09 | Low | 2 |
| 2026-09-08 07:16:32 | Medium | 1 |
| 2026-09-08 00:18:08 | Low | 2 |
| 2026-09-07 03:13:17 | Medium | 1 |
| 2026-09-07 00:30:15 | Low | 2 |