context-lmtx-bin
The package downloads a source archive from a non-whitelisted but project-associated host (lmtx.pragma-ade.nl) used by the official ConTeXt project; the source is a build artifact but not an obfuscated or untrusted executable, and the build process uses standard project tooling to update and install components.
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 package downloads a source archive from a non-whitelisted but project-associated host (lmtx.pragma-ade.nl) used by the official ConTeXt project; the source is a build artifact but not an obfuscated or untrusted executable, and the build process uses standard project tooling to update and install components.
1 higher static finding superseded - not the current verdict (shown for transparency)
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:37
source=("https://${_lmtxserver}/install-lmtx/${_zipfile}")
PKGBUILD
1 offending line(s) highlighted# Maintainer: Aditya Mahajan <adityam at umich dot edu>
pkgname=context-lmtx-bin
pkgver=2025.08.17
pkgrel=1
pkgdesc="ConTeXt LuaMetaTeX distribution"
url="http://www.contextgarden.net"
license=('GPL')
arch=('i686' 'x86_64')
optdepends=('ghostscript: support for PS and EPS images'
'graphicsmagick: support for GIF and TIFF images'
'inkscape: support for SVG images'
'pstoedit: support for metapost outlines for fonts'
'zint: support for barcodes'
'curl: loading remote content')
makedepends=('rsync' 'curl')
conflicts=()
replaces=()
backup=()
install=context-lmtx-bin.install
options=(!strip)
# ConTeXt minimals uses a different naming convention for architectures
declare -A _platform_map
_platform_map['i686']='linux-32'
_platform_map['x86_64']='linux-64'
_platform=${_platform_map[$CARCH]}
_lmtxserver=lmtx.pragma-ade.nl
_lmtxserverlist=lmtx.contextgarden.net,lmtx.pragma-ade.com,lmtx.pragma-ade.nl
_zipfile=context-${_platform}.zip
source=("https://${_lmtxserver}/install-lmtx/${_zipfile}")
md5sums=('SKIP')
# List of _modules to be installed
# Can use '--all' to install all modules
_modules=('filter' 'visualcounter' 'vim' 'tikz' 'typescripts')
_dest=/opt/context-lmtx
# Font directories
_texlivefontdir="/usr/share/texmf-dist/fonts/"
_userfontdir="\$HOME/.fonts"
_osfontdir="/usr/share/fonts"
pkgver() {
cd $srcdir
grep -e '\\edef\\contextversion' tex/texmf-context/tex/context/base/mkxl/context.mkxl | sed -n 's/.*{\(.*\) .*}/\1/p'
}
prepare() {
echo "Starting download or update of ConTeXt distribution"
chmod +x $srcdir/bin/mtxrun
PATH=$srcdir/bin:$srcdir/tex/texmf-${_platform}/bin:$PATH \
$srcdir/bin/mtxrun --script $srcdir/bin/mtx-install.lua --update \
--server="${_lmtxserverlist}" \
--instance="install-lmtx" \
|| return 1
# Make sure the binaries are executable
chmod +x $srcdir/tex/texmf-${_platform}/bin/{context,luametatex,mtxrun}
# Copy mtxrun for next install
cp $srcdir/tex/texmf-${_platform}/bin/mtxrun $srcdir/bin
cp $srcdir/tex/texmf-context/scripts/context/lua/{mtxrun.lua,mtx-install.lua} $srcdir/bin
# Install modules
PATH=$srcdir/tex/texmf-${_platform}/bin:$PATH \
cd $srcdir/tex && texmf-${_platform}/bin/mtxrun --script texmf-context/scripts/context/lua/mtx-install-modules.lua --install ${_modules[@]}
# Erase cache, must be built by user:
PATH=$srcdir/tex/texmf-${_platform}/bin:$PATH \
$srcdir/tex/texmf-${_platform}/bin/mtxrun --script texmf-context/scripts/context/lua/mtx-cache --erase --all
# Generate a setuptex file
mkdir -p $srcdir/tex
cat <<- _EOF_ > $srcdir/tex/setuptex
_OLD_PATH=\$PATH
_OLD_CONTEXTDIST=$CONTEXTDIST
TEXMFOS=${_dest}/texmf-${_platform}
export TEXMFOS
TEXMFCACHE=\$HOME/.cache/context-lmtx
export TEXMFCACHE
# Set variable name to be used in terminal prompt
CONTEXTDIST="lmtx"
export CONTEXTDIST
PATH=\$TEXMFOS/bin:\$PATH
export PATH
OSFONTDIR="$_userfontdir;$_osfontdir;"
export OSFONTDIR
resettex () {
PATH=\$_OLD_PATH
export PATH
unset _OLD_PATH
CONTEXTDIST=\$_OLD_CONTEXTDIST
export CONTEXTDIST
unset _OLD_CONTEXTDIST
unset -f resettex
}
_EOF_
}
package()
{
install -d $pkgdir/$_dest || return 1
echo "Copying files"
# cp -r does not delete old files that are present in texmf-cache from
# previous installation
# cp -r --preserve=links $srcdir/tex $pkgdir/$_dest || return 1
rsync -az --links --delete --exclude='*.tma' --info=progress2 $srcdir/tex/ $pkgdir/$_dest || return 1
}
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 |