Initial commit: Klammertext source distribution
Curated source subset assembled by klammertext-dev's doc/make_dist.sh: the Klammermachine (mac), the Standard Klammer Set (sks), the commands (com), editor plugins and install guides (doc), a test subset (tst), and lib/bin placeholders. Builds with 'make -C com'. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
72
mac/env/runtime.env
vendored
Normal file
72
mac/env/runtime.env
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
# mac/env/runtime.env — single self-configuring runtime environment for Klammertext.
|
||||
#
|
||||
# Source this from your shell profile (~/.bashrc etc.):
|
||||
# source /path/to/klammertext/K/mac/env/runtime.env
|
||||
#
|
||||
# This is the runtime counterpart of the shared mac/env/makefile.env: one file
|
||||
# for every machine, with all machine-specific values AUTO-DETECTED. There is no
|
||||
# per-host runtime.env.<host> file and no HOST/OS/SITE selector.
|
||||
# - KLAMMERTEXT_HOME : derived from this file's own location (self-locating)
|
||||
# - KLAMMERTEXT_TEXLIVE_BIN : newest ~/external/texlive/<year>/bin/<arch>
|
||||
# Machine-unique, non-committable additions (extra library paths such as NVIDIA
|
||||
# iray, local tools, etc.) go in an optional, gitignored mac/env/runtime.env.local
|
||||
# sourced at the end -- NOT in this shared file, so one machine's bundled
|
||||
# libraries can't shadow another's system libraries.
|
||||
|
||||
# --- KLAMMERTEXT_HOME: self-locate (bash sets BASH_SOURCE; zsh sets $0) --------
|
||||
# This file lives at $KLAMMERTEXT_HOME/mac/env/runtime.env, so go up two levels.
|
||||
_kt_self="${BASH_SOURCE[0]:-$0}"
|
||||
export KLAMMERTEXT_HOME="$(cd "$(dirname "$_kt_self")/../.." && pwd)"
|
||||
unset _kt_self
|
||||
|
||||
_kt_uname="$(uname -s)"
|
||||
|
||||
# --- KLAMMERTEXT_TEXLIVE_BIN: newest installed TeX Live under ~/external -------
|
||||
# Klammertext's TeX Live installs are named by 4-digit year (2024, 2025, 2026).
|
||||
# Match only those so unrelated dirs (e.g. a "texlive-2022-min" system install)
|
||||
# are never selected; sort -V then picks the newest year.
|
||||
if [ "$_kt_uname" = "Darwin" ]; then
|
||||
_kt_arch="universal-darwin"
|
||||
else
|
||||
_kt_arch="$(uname -m)-linux" # e.g. x86_64-linux
|
||||
fi
|
||||
# Use `find` with a -path pattern, NOT a shell glob: on macOS/zsh an unmatched
|
||||
# glob (no texlive installed) is a hard "no matches found" error, whereas find
|
||||
# just returns nothing. The -path pattern keeps the 4-digit-year restriction.
|
||||
_kt_tl="$(find "$HOME/external/texlive" -maxdepth 3 -type d \
|
||||
-path "*/[0-9][0-9][0-9][0-9]/bin/$_kt_arch" 2>/dev/null \
|
||||
| sort -V | tail -1)"
|
||||
[ -n "$_kt_tl" ] && export KLAMMERTEXT_TEXLIVE_BIN="$_kt_tl"
|
||||
unset _kt_tl _kt_arch
|
||||
|
||||
# --- PATH (TeX Live appended only if one was found) ---------------------------
|
||||
export PATH="$KLAMMERTEXT_HOME/bin:$KLAMMERTEXT_HOME/tst${KLAMMERTEXT_TEXLIVE_BIN:+:$KLAMMERTEXT_TEXLIVE_BIN}:$PATH"
|
||||
|
||||
# --- Per-platform: LSan suppressions + shared library search path -------------
|
||||
# The shared library path deliberately includes ONLY Klammertext's own .so dirs,
|
||||
# NOT third-party bundled-library dirs. In particular NVIDIA iray's platforms/
|
||||
# ships its own libfreetype.so and Qt6; if added here they shadow the system
|
||||
# libraries, and iray's freetype drags in unversioned libharfbuzz.so/libbz2.so
|
||||
# (absent without -dev packages), which breaks `import OpenImageIO` (SKS @image).
|
||||
# Machine-specific library paths (iray included) go in runtime.env.local.
|
||||
if [ "$_kt_uname" = "Darwin" ]; then
|
||||
# macOS: no LD/DYLD_LIBRARY_PATH needed — libklammertext.so is found via the
|
||||
# binaries' @loader_path rpath and document.so is dlopen'd by absolute path.
|
||||
# LeakSanitizer is unsupported on macOS, so LSAN_OPTIONS does not apply.
|
||||
:
|
||||
else
|
||||
# LSan suppressions for unactionable libpython/OpenImageIO leaks (see
|
||||
# lsan.supp). Real leaks in Klammertext code are still reported; no effect
|
||||
# in performance builds (OPTIMIZE=1, which disables ASan).
|
||||
export LSAN_OPTIONS="suppressions=$KLAMMERTEXT_HOME/mac/env/lsan.supp:print_suppressions=0"
|
||||
export LD_LIBRARY_PATH="$KLAMMERTEXT_HOME/mac:$KLAMMERTEXT_HOME/sks/kutil:$KLAMMERTEXT_HOME/sks/document:$KLAMMERTEXT_HOME/doc/handbook${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
|
||||
fi
|
||||
unset _kt_uname
|
||||
|
||||
# --- Optional per-machine escape hatch (gitignored, absent by default) ---------
|
||||
# Use an if-block (not `[ -f ] && .`) so that when the local file is absent this
|
||||
# file's final exit status is 0 -- otherwise `source runtime.env` returns
|
||||
# non-zero, breaking `source runtime.env && ...` and `set -e` callers.
|
||||
if [ -f "$KLAMMERTEXT_HOME/mac/env/runtime.env.local" ]; then
|
||||
. "$KLAMMERTEXT_HOME/mac/env/runtime.env.local"
|
||||
fi
|
||||
Reference in New Issue
Block a user