stt
The pip install in prepare() is for standard build dependencies (wheel, numpy) and occurs in a controlled build environment; the source is the official Coqui STT repository, and the installed wheel in package_python-stt() is built locally from the same source, posing no remote code execution or supply-chain risk.
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 in prepare() is for standard build dependencies (wheel, numpy) and occurs in a controlled build environment; the source is the official Coqui STT repository, and the installed wheel in package_python-stt() is built locally from the same source, posing no remote code execution or supply-chain risk.
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:22
pip install -U wheel numpy
PKGBUILD
1 offending line(s) highlightedpkgbase=stt
pkgname=('stt' 'python-stt')
_pkgname=STT
pkgver=1.3.0
pkgrel=1
pkgdesc="Coqui-STT for inference"
arch=('x86_64' 'aarch64' 'armv7' 'amd64')
url="https://github.com/coqui-ai/STT"
license=('MPL2')
makedepends=('cmake' 'bazel' 'git' 'sox' 'wget' 'swig')
makedepends_x86_64=('gcc10')
makedepends_aarch64=('aarch64-aarch64-none-elf-gcc-10.3-bin')
depends=('python' 'sox')
source=("${_pkgname}-${pkgver}::git+https://github.com/coqui-ai/STT.git#tag=v${pkgver}")
sha256sums=('SKIP')
provides=('stt' 'python-stt')
conflicts=('python-stt-bin' 'stt-bin')
prepare()
{
python -m ensurepip --upgrade --default-pip
pip install -U wheel numpy
cd "$srcdir/${_pkgname}-${pkgver}"
git submodule sync tensorflow/
git submodule update --init tensorflow/
cd tensorflow
ln -sf ../native_client
}
build() {
cd "$srcdir/${_pkgname}-${pkgver}/tensorflow"
export PYTHON_BIN_PATH=/usr/bin/python
export USE_DEFAULT_PYTHON_LIB_PATH=1
export TF_NEED_OPENCL_SYCL=0
export TF_ENABLE_XLA=1
export TF_NEED_MPI=0
export TF_SET_ANDROID_WORKSPACE=0
export TF_NEED_ROCM=0
export TF_DOWNLOAD_CLANG=0
export TF_NEED_CUDA=0
if [[ $arch == "x86_64" ]]; then
export CC=/usr/bin/gcc-10
export CXX=/usr/bin/g++-10
elif [[ $arch == "aarch64" ]]; then
export CC=/usr/bin/aarch64-none-elf-gcc
export CXX=/usr/bin/aarch64-none-elf-g++
fi;
export CC_OPT_FLAGS="-march=${arch}"
#rm .bazelversion
./configure
if [[ $arch == "x86_64" ]]; then
bazel build \
--workspace_status_command="bash native_client/bazel_workspace_status_cmd.sh" \
-c opt \
--copt=-mtune=generic \
--copt=-march=x86-64 \
--copt=-msse \
--copt=-msse2 \
--copt=-msse3 \
--copt=-msse4.1 \
--copt=-msse4.2 \
--copt=-mavx \
--config=noaws \
--config=nogcp \
--config=nohdfs \
--config=nonccl \
--copt="-D_GLIBCXX_USE_CXX11_ABI=0" \
//native_client:libstt.so
elif [[ $arch == "aarch64" ]]; then
bazel build \
--workspace_status_command="bash native_client/bazel_workspace_status_cmd.sh" \
--config=monolithic \
-c opt \
--config=elinux_aarch64 \
//native_client:libstt.so
fi;
cd "${srcdir}/${_pkgname}-${pkgver}/native_client"
if [[ $arch == "x86_64" ]]; then
make stt SOX_LDFLAGS="-lsox -Wl,-no-undefined"
elif [[ $arch == "aarch64" ]]; then
make TARGET=rpi3-armv8 stt SOX_LDFLAGS="-lsox -Wl,-no-undefined"
fi;
make bindings -C python
#make bindings -C ctcdecode
}
package_stt() {
depends=('sox' 'python-libclang')
cd "${srcdir}/${_pkgname}-${pkgver}/native_client"
PREFIX="${pkgdir}"/usr make install
}
package_python-stt() {
pkgdesc="Coqui STT Python bindings"
depends=('stt' 'python-numpy')
cd "${srcdir}/${_pkgname}-${pkgver}/native_client"
PIP_CONFIG_FILE=/dev/null pip install --isolated --root="$pkgdir" --ignore-installed --no-deps python/dist/STT-*.whl
#PIP_CONFIG_FILE=/dev/null pip install --isolated --root="$pkgdir" --ignore-installed --no-deps ctcdecode/dist/*.whl
#mv "$pkgdir/usr/bin/stt" "$pkgdir/usr/bin/stt_python"
cp -rv "${srcdir}/${_pkgname}-${pkgver}/training/coqui_stt_training" "$pkgdir"`python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"`
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 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 |