pandoc-static-git
The flagged 'external install' via cabal is part of building the project from source using its official build system; this is normal for Haskell packages and not a supply-chain risk.
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 90%): The flagged 'external install' via cabal is part of building the project from source using its official build system; this is normal for Haskell packages and not a supply-chain risk.
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:68
cabal install pandoc-cli --install-method=copy --installdir "$pkgdir/usr/bin"
PKGBUILD
1 offending line(s) highlighted# Maintainer: Gesh <gesh@gesh.uni.cx>
# based on pandoc-sile-git, by
# Contributor: Caleb Maclennan <caleb@alerque.com>
# Contributor: Felix Yan <felixonmars@archlinux.org>
# Contributor: Arch Haskell Team <arch-haskell@haskell.org>
shopt -s extglob
pkgname=pandoc-static-git
_pkgname_old=(pandoc-cli pandoc)
pkgver=3.10.2.r14.g0ce83fb13
pkgrel=1
pkgdesc='Conversion between markup formats (static build, dynamic Lua support)'
arch=('i686' 'x86_64')
url='https://pandoc.org'
license=('GPL-2.0-or-later')
provides=("${_pkgname_old[@]/%/=${pkgver%%*([a-z]).r*}}")
conflicts=("${_pkgname_old[@]}")
depends=('gmp' 'zlib')
makedepends=('git' 'cabal-install' 'ghc' 'curl')
optdepends=('texlive-core: for pdf output')
_url=https://github.com/jgm/pandoc
source=("$pkgname::git+$_url.git")
sha256sums=('SKIP')
pkgver() {
cd "$pkgname"
git describe --tags --long --match 'pandoc-cli-*' \
| sed 's/^pandoc-cli-//;s/^v//' \
| awk -F- \
'BEGIN { OFS="" }
{
revcount=$(NF-1)
sha=$NF
NF=(NF-2)
printf "%s.r%s.%s\n", $0, revcount, sha
}'
}
prepare() {
cd "$pkgname"
rts=$(date +%s --date="$(curl -I http://hackage.haskell.org/01-index.tar |
awk -F': ' '$1 == "Last-modified" { print $2 }')")
lts=$(TZ=UTC date +@%s --date='today 00:00')
ts=$(printf '%s\n' "$rts" "$lts" | sort -n | head -n1)
cabal update hackage.haskell.org,$ts
cabal configure --prefix=/usr --docdir=/usr/share/doc/"$pkgname" \
--enable-tests --flag embed_data_files
cabal build --only-dependencies
}
build() {
cd "$pkgname"
cabal build --offline
cabal run -v0 pandoc-cli -- --bash-completion > pandoc.bash
}
check() {
cd "$pkgname"
cabal test
}
package() {
cd "$pkgname"
mkdir -p "$pkgdir/usr/bin"
cabal install pandoc-cli --install-method=copy --installdir "$pkgdir/usr/bin"
env -C "$pkgdir/usr/bin" ln -s pandoc pandoc-lua
env -C "$pkgdir/usr/bin" ln -s pandoc pandoc-server
install -Dm644 COPYRIGHT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
install -Dm644 pandoc-cli/man/pandoc*.1 -t "$pkgdir"/usr/share/man/man1/
_install_completion_script bash bash-completion/completions/pandoc
_install_completion_script zsh zsh/site-functions/_pandoc
_install_completion_script fish fish/vendor_completions.d/pandoc.fish
}
_install_completion_script() {
install -Dm644 \
<("$pkgdir/usr/bin/pandoc" --completion=$1) \
"$pkgdir/usr/share/$2"
}
# vim:set ts=2 sw=2 et
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 |