lostorm-git
The pip install is for build dependencies from a requirements.txt file in the project's own source repository, which is a normal part of building the software and not an external untrusted package.
Triggered rules
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 pip install is for build dependencies from a requirements.txt file in the project's own source repository, which is a normal part of building the software and not an external untrusted package.
1 higher static finding superseded - not the current verdict (shown for transparency)
pip_install_external
`pip install <package>` fetches an unpinned package from PyPI at build time, outside source=() and makepkg's checksums.
-
PKGBUILD:80
pip install --upgrade pip --quiet -
PKGBUILD:81
pip install -r "$srcdir/lostorm/requirements.txt" --quiet
PKGBUILD
2 offending line(s) highlighted# Maintainer: jesus <jesusaiyan@gmail.com>
pkgname=lostorm-git
pkgver=7.2.3
pkgrel=1
pkgdesc="Privacy-enhanced Firestorm Second Life viewer (hardware ID spoofing per account)"
arch=('x86_64')
url="https://git.allthefallen.moe/lostorm/lostorm"
license=('LGPL2.1')
provides=('lostorm')
conflicts=('lostorm')
depends=(
'libpulse'
'mesa'
'libxinerama'
'libxrandr'
'fontconfig'
'freetype2'
'openssl'
'dbus'
'gtk3'
'nss'
'at-spi2-atk'
'libxss'
'libxtst'
'libxkbcommon'
'alsa-lib'
)
makedepends=(
'git'
'cmake'
'gcc11'
'python-pip'
'python-virtualenv'
'base-devel'
'glu'
)
options=('!strip' '!buildflags')
# Primary source + mirrors (tried in order if primary fails)
_sources=(
"https://git.allthefallen.moe/lostorm/lostorm.git"
"https://codeberg.org/lostorm/lostorm.git"
"https://gitlab.com/lostorm/lostorm.git"
)
source=("fs-build-variables::git+https://github.com/FirestormViewer/fs-build-variables.git")
sha256sums=('SKIP')
_clone_lostorm() {
if [ -d "$srcdir/lostorm/.git" ]; then
echo "==> Updating existing lostorm clone..."
git -C "$srcdir/lostorm" pull --depth=1
return
fi
for _url in "${_sources[@]}"; do
echo "==> Cloning lostorm from $_url ..."
git clone --depth=1 "$_url" "$srcdir/lostorm" && return
rm -rf "$srcdir/lostorm"
done
echo "ERROR: All lostorm mirrors failed"
return 1
}
pkgver() {
_clone_lostorm >/dev/null 2>&1
local _ver
_ver=$(cat "$srcdir/lostorm/indra/newview/VIEWER_VERSION.txt" | tr -d '[:space:]')
local _rev
_rev=$(git -C "$srcdir/lostorm" rev-list --count HEAD)
local _hash
_hash=$(git -C "$srcdir/lostorm" rev-parse --short HEAD)
echo "${_ver}.r${_rev}.${_hash}"
}
prepare() {
_clone_lostorm
python -m venv "$srcdir/.venv"
# shellcheck disable=SC1091
source "$srcdir/.venv/bin/activate"
pip install --upgrade pip --quiet
pip install -r "$srcdir/lostorm/requirements.txt" --quiet
}
build() {
# shellcheck disable=SC1091
source "$srcdir/.venv/bin/activate"
export AUTOBUILD_VARIABLES_FILE="$srcdir/fs-build-variables/variables"
export CC=gcc-11
export CXX=g++-11
cd "$srcdir/lostorm"
autobuild configure -A 64 -c ReleaseFS_open -- -DLL_TESTS:BOOL=FALSE
autobuild build -A 64 -c ReleaseFS_open -- -DLL_TESTS:BOOL=FALSE --package
}
package() {
local _built="$srcdir/lostorm/build-linux-x86_64/newview/packaged"
install -d "$pkgdir/opt/lostorm"
cp -r "$_built"/. "$pkgdir/opt/lostorm/"
install -d "$pkgdir/usr/bin"
ln -s /opt/lostorm/firestorm "$pkgdir/usr/bin/lostorm"
install -d "$pkgdir/usr/share/applications"
cat > "$pkgdir/usr/share/applications/lostorm.desktop" << 'EOF'
[Desktop Entry]
Type=Application
Name=LOstorm
Exec=/opt/lostorm/firestorm
Comment=Privacy-enhanced Second Life viewer
Icon=/opt/lostorm/firestorm_icon.png
Categories=Network;
Terminal=false
EOF
chmod -R a-x,a+X "$pkgdir/opt/lostorm/"
chmod +x "$pkgdir/opt/lostorm/firestorm"
find "$pkgdir/opt/lostorm/" -name "*.so*" -exec chmod +x {} \;
find "$pkgdir/opt/lostorm/bin" -type f -exec chmod +x {} \; 2>/dev/null || true
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 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 |
| 2026-10-15 00:28:05 | Low | 2 |
| 2026-10-14 00:06:47 | Low | 2 |
| 2026-10-13 00:23:45 | Low | 2 |