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-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 |