Skip to main content

texbld

Although we expect LaTeX compilation to be a declarative process (source to PDF), the compilations for large projects eventually require a large number of custom external programs and dependencies. For example, a compilation step might require running a script written in haskell, piping that output into pandoc, then putting everything into a LaTeX file for compilation with pdflatex. Good luck installing all of those programs (ESPECIALLY the pesky ghc dependencies) in a production system!

Furthermore, different LaTeX distributions will have ever so slightly different outputs (especially when working with biblatex), which is an issue for reproducibility.

The first take on these problems was mktex. Although it solves some dependency issues, it suffers from the various fragility and reproducibility issues that come with using pre-built docker images. Furthermore, because of its design, these images were forced to be monolithic, bloated, and ultimately inflexible. Each build should have exactly the dependencies that it requires and nothing more!

texbld aims to solve these problems by providing an environment where build images are fully reproducible and shareable. It uses docker for absolute system reproducibility and for usage across all platforms which it supports (MacOS, its native Linux, and Windows (untested)).

Image hashes are used to ensure that any docker image is completely immutable, preventing dependency modification issues.

Users can specify their build image in a simple TOML file (along with associated files) and upload them to github, from which it can be inherited and used by other people in their own projects.

Images can be inherited from packages in the local filesystem, GitHub, or Docker.

Installation

The project is live on pypi.

Various installation methods are described here.

NixOS

Check the nix expressions in the release branch and configure accordingly.

In order to build the master branch, run nix-build or nix build (to use flakes).

Setting Up This Project

NixOS

Running nix develop should set up everything. Note, however, that the resulting poetry virtual environment will be installed in ~/.cache/pypoetry/virtualenvs, so it's not completely nix-based.

Non-NixOS

This project uses poetry as its dependency manager. Simply run poetry install and poetry shell inside the project directory, and you should land in a virtual environment with all of your dependencies.

Testing

In order to run tests in the virtual environment, run pytest.

The Local Environment

The project configuration file should be in (project root)/texbld.toml, while local image configurations should be in $HOME/.config/texbld/packages.

Release files for texbld 0.4.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for texbld 0.4.1
File Size Uploaded
texbld-0.4.1.tar.gz 29.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for texbld 0.4.1
File Interpreter ABI Platform
texbld-0.4.1-py3-none-any.whl Python 3 none any Details

Total release size: 68.8 kB

Release files / texbld-0.4.1.tar.gz

Download URL texbld-0.4.1.tar.gz
Size 29.5 kB
Tags Source
SHA-256 checksum
How to use checksums
6be620bf4d59706cf020196aa84ebdf58751789778cbd204626b80f3fec72e92
BLAKE2b-256 checksum
How to use checksums
ad274bdfd951ede1ca316af99fc5f2f1847171a60e4b5d4141a8d94e2f01c201
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.13 CPython/3.10.5 Linux/5.18.13-200.fc36.x86_64

Release files / texbld-0.4.1-py3-none-any.whl

Download URL texbld-0.4.1-py3-none-any.whl
Size 39.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
722d7d9915ebc3e6f1a1649815e3c05ad82278df1f760cf02381803f65f4cde8
BLAKE2b-256 checksum
How to use checksums
b5ef485aeab90028b4d0b63b986bcb78ff78cd57afe8980748603c94a9c6565c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.13 CPython/3.10.5 Linux/5.18.13-200.fc36.x86_64

Release history Release notifications | RSS feed

This release

0.4.1 This release

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page