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