Skip to main content

A dockerized build tool for paper compilation

Project description

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, Windows, and its native Linux).

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. Extensive Documentation will be released in the future.

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

Installation

The project is live on pypi. Run pip install texbld.

Setting Up This Project

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.

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

texbld-0.2.0.tar.gz (29.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

texbld-0.2.0-py3-none-any.whl (38.7 kB view details)

Uploaded Python 3

File details

Details for the file texbld-0.2.0.tar.gz.

File metadata

  • Download URL: texbld-0.2.0.tar.gz
  • Upload date:
  • Size: 29.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.9.12 Darwin/21.5.0

File hashes

Hashes for texbld-0.2.0.tar.gz
Algorithm Hash digest
SHA256 789e8736146a6be1c2414154db0d0aaa0ff4acc1efd4845d34798e9f6190b92e
MD5 f7be4105a3876a1a0de494f39ad547fd
BLAKE2b-256 a274038069cace4a473fc36dcb9f4c0ef20663fcb4f575c4aff2b68d6a5a66f8

See more details on using hashes here.

File details

Details for the file texbld-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: texbld-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 38.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.9.12 Darwin/21.5.0

File hashes

Hashes for texbld-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8c93b58bb9409efb67fe6363b16f11c7bdd2dd7e987b5f40cc2ec2128a7db211
MD5 3ae51a352b491d5f2407b9d8c26650db
BLAKE2b-256 63448cd12eeab6b5b73d4b38a6c023db98b8b9de93e73f9e7626fb39418be589

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page