tensorflow-computecpp
Triggered rules
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:18
"https://archive.org/download/archlinux_pkg_bazel/bazel-0.17.2-1-x86_64.pkg.tar.xz"
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 75%): The PKGBUILD downloads a prebuilt Bazel binary package (bazel-0.17.2-1-x86_64.pkg.tar.xz) from archive.org rather than from the official Arch Linux mirrors or the official Bazel release page. This binary is then extracted and placed on PATH (export PATH="${srcdir}/usr/bin:$PATH") and executed to build TensorFlow. archive.org is a content-addressable archive but it is not an official distribution channel for Arch Linux packages — the content at that URL could have been uploaded by anyone and could be replaced or tampered with. The sha256sum is provided (758e10...) which mitigates but does not eliminate the risk, since the hash itself was written by the maintainer and could have been set to match a malicious binary. This is a classic supply-chain concern: an executed binary from a non-official, non-vendor host. The pip install of a wheel built from that binary chain is also executed at package time. The 'broken' flag is not warranted as the PKGBUILD appears structurally functional. This is a genuine medium-severity supply-chain risk, consistent with the cheaper model's assessment.
-
PKGBUILD:131
pip install --ignore-installed --upgrade --root "$pkgdir" $WHEEL_PACKAGE --no-dependencies --no-warn-script-location
PKGBUILD
2 offending line(s) highlighted# Maintainer: enihcam <nanericwang at the google email domain which is .com>
pkgbase=tensorflow-computecpp
pkgname=(tensorflow-computecpp python-tensorflow-computecpp)
pkgver=1.9
pkgrel=8
pkgdesc="Library for computation using data flow graphs for scalable machine learning (backend with ComputeCpp)"
url="https://github.com/codeplaysoftware/tensorflow"
epoch=1
license=('APACHE')
arch=('x86_64')
depends=(opencl-icd-loader computecpp)
makedepends=(git opencl-icd-loader computecpp cmake opencl-headers
python-numpy python-pip python-wheel python-setuptools java-environment=8)
options=(!ccache)
source=("git+${url}"
#"https://github.com/bazelbuild/bazel/releases/download/0.17.2/bazel-0.17.2-dist.zip"
"https://archive.org/download/archlinux_pkg_bazel/bazel-0.17.2-1-x86_64.pkg.tar.xz"
python37.patch
py37.diff
gcc1.diff
gcc2.diff
gcc3.diff
python38.patch
gcc10.patch
numpy.diff
python310.diff
python310or.patch)
sha256sums=('SKIP'
'758e10caff4c1cb496d1cf49d6f4da2969b610b174276fb734b8502686d07ddd'
'ef54b3783a05b5604cd8f448136567686806ad3a5759978f48549256807a8394'
'b3997091bc7a32f9e8c062a88e9148273090ebf66aeebb5dc055baa41b7aae7e'
'7d9f32a46cac83ec1a7308ac380226cdf40f98830c869bcdf5feb7bf110abf9a'
'10de738141852cfebae9847b746ae9b58f3b3985561cccede929d8fbdba93551'
'742abe5d8bfd3f7ce33778a08cbb233337db56238d11ac2ad07171b0d6097bfb'
'b69895cfd098efacc95b1d1fffd471afa05c449f8d42964ee10b1a6fd9a75689'
'15c20b31394537051f8756707819e13f3c12da24d8aa63d3ba47e6fce4d19d95'
'fe4c34a66000ba3a24d7c35914dc22e95adb5efa60a58d1f0b3d3cad77fd722d'
'16bbc9d5cfd7e3888a7bda73ac4ebaab5c9c2588632eac342917f7cec745db9a'
'7fe63476cb7b2dfe359f8ae3d894869f2329c399c6611a52449cd5dcd6f67098')
prepare() {
# These environment variables influence the behavior of the configure call below.
export PYTHON_BIN_PATH=/usr/bin/python
export USE_DEFAULT_PYTHON_LIB_PATH=1
export TF_DOWNLOAD_CLANG=0
export TF_CUDA_CLANG=0
export TF_NEED_CUDA=0
export TF_NEED_JEMALLOC=0
export TF_NEED_GCP=0
export TF_NEED_HDFS=0
export TF_ENABLE_XLA=0
export TF_NEED_GDR=0
export TF_NEED_VERBS=0
export TF_NEED_MPI=0
export TF_NEED_S3=0
export TF_NEED_KAFKA=0
export TF_NEED_TENSORRT=0
export TF_SET_ANDROID_WORKSPACE=0
export TF_NEED_OPENCL=1
export TF_NEED_OPENCL_SYCL=1
export TF_NEED_COMPUTECPP=1
export COMPUTECPP_TOOLKIT_PATH=/opt/ComputeCpp-CE
export COMPUTE=:0
# Device-sensitive magic, these should work on as much hardware as possible
export TF_USE_HALF_SYCL=0
export TF_USE_DOUBLE_SYCL=0
export TF_SYCL_BITCODE_TARGET=spir64
export CC_OPT_FLAGS="-march=native -mfpmath=sse -O2 -pipe" # -sycl-compress-name for some amd cards
# make sure the proxy variables are in all caps, otherwise bazel ignores them
export HTTP_PROXY=`echo $http_proxy | sed -e 's/\/$//'`
export HTTPS_PROXY=`echo $https_proxy | sed -e 's/\/$//'`
cd "${srcdir}"/tensorflow
git apply --index ../python37.patch
git apply --index --whitespace=nowarn ../py37.diff
git apply --index --whitespace=nowarn ../gcc1.diff
git apply --index --whitespace=fix ../gcc2.diff
git apply --index --whitespace=nowarn ../gcc3.diff
git apply --index ../python38.patch
git apply --index ../gcc10.patch
git apply --index ../numpy.diff
git apply --index ../python310.diff
git apply --index ../python310or.patch
}
build() {
# Build bazel
echo "Please note: currently, bazel version <0.18 is required to build this package."
echo "Fixing that for you" # "Building it temporarily..."
echo "Make sure there are no spaces in PATH"
cd "$srcdir"
# ./compile.sh
export PATH="${srcdir}/usr/bin:$PATH"
cd "${srcdir}"/tensorflow
if [ ! -f .bazelrc ]; then # configure should be in prepare, but bazel has to be built first atm
./configure
fi
# Please take notice this requires at least 8GB of swap/disk space and 0.7+(3.2*threads)GB of RAM to build
bazel build -c opt --config=sycl //tensorflow:libtensorflow.so \
//tensorflow/tools/pip_package:build_pip_package # --jobs 1 --verbose_failures
bazel-bin/tensorflow/tools/pip_package/build_pip_package "${srcdir}"/tmp
}
package_tensorflow-computecpp() {
conflicts=(tensorflow)
provides=(tensorflow)
cd "${srcdir}"/tensorflow
tensorflow/c/generate-pc.sh --prefix=/usr --version=${pkgver}
install -Dm644 tensorflow.pc "${pkgdir}"/usr/lib/pkgconfig/tensorflow.pc
install -Dm755 bazel-bin/tensorflow/libtensorflow.so "${pkgdir}"/usr/lib/libtensorflow.so
install -Dm755 bazel-bin/tensorflow/libtensorflow_framework.so "${pkgdir}"/usr/lib/libtensorflow_framework.so
install -Dm644 tensorflow/c/c_api.h "${pkgdir}"/usr/include/tensorflow/c/c_api.h
install -Dm644 LICENSE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
}
package_python-tensorflow-computecpp() {
conflicts=(python-tensorflow)
provides=(python-tensorflow)
depends=(python-numpy python-protobuf absl-py)
optdepends=('python-werkzeug: for using tensorboard')
cd "${srcdir}"/tensorflow
WHEEL_PACKAGE=$(find "${srcdir}"/tmp -name "tensor*.whl")
pip install --ignore-installed --upgrade --root "$pkgdir" $WHEEL_PACKAGE --no-dependencies --no-warn-script-location
# tensorboard has been separated from upstream but they still install it with
# tensorflow. I don't know what kind of sense that makes but we have to clean
# it out from this pacakge.
rm -rf "${pkgdir}"/usr/bin/tensorboard
install -Dm644 LICENSE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | MEDIUM | 2 |
| 2026-08-02 00:16:08 | MEDIUM | 2 |
| 2026-08-01 00:11:18 | MEDIUM | 2 |
| 2026-07-31 00:14:10 | MEDIUM | 2 |
| 2026-07-30 00:17:23 | MEDIUM | 2 |
| 2026-07-29 00:25:53 | MEDIUM | 2 |
| 2026-07-28 00:07:28 | MEDIUM | 2 |
| 2026-07-27 00:24:32 | MEDIUM | 2 |
| 2026-07-26 00:07:32 | MEDIUM | 2 |
| 2026-07-25 00:13:44 | MEDIUM | 2 |
| 2026-07-24 00:02:28 | MEDIUM | 2 |
| 2026-07-23 00:14:47 | MEDIUM | 2 |
| 2026-07-22 00:29:32 | MEDIUM | 2 |
| 2026-07-21 00:24:15 | MEDIUM | 2 |
| 2026-07-20 00:19:49 | MEDIUM | 2 |
| 2026-07-19 00:17:08 | MEDIUM | 2 |
| 2026-07-18 00:14:48 | MEDIUM | 2 |
| 2026-07-17 00:06:16 | MEDIUM | 2 |
| 2026-07-16 00:05:41 | MEDIUM | 2 |
| 2026-07-15 00:09:25 | MEDIUM | 2 |