mirror of
https://github.com/cs341-illinois/coursebook.git
synced 2026-10-02 08:04:38 +08:00
8bf29081d34fc9c948d85599e323492b67fc740c
The PDF job takes ~9 minutes and is the whole workflow's wall clock,
because install.sh pulls texlive-full: 455 packages and 4.0 GB of every
language pack, ConTeXt and Metapost. The book needs 68 packages,
768 MB.
Measured by building the book both ways in ubuntu:24.04 and comparing:
packages download apt install make pdf
texlive-full 455 3995 MB 270s 188s
reduced set 68 768 MB 92s 141s
Output is equivalent, not merely similar: all 19 PDFs (main plus 18
chapters) have identical page counts (main.pdf is 390 pages either
way), identical page sizes, and byte-identical pdftotext output, with
no unresolved references in either.
Also:
- fail-fast: false, so a WIKI failure 90 seconds in stops cancelling
the 9 minute PDF job. That happened repeatedly while fixing CI: the
run then says nothing about whether the PDF is healthy.
- concurrency groups, asymmetric on purpose. PR builds have no side
effects so a superseded run is cancelled. Deploy is NOT cancelled
mid-run: it pushes the wiki, force-pushes epub_deploy and pdf_deploy
and nudges the website, and interrupting that can leave the three
targets on different commits.
- timeout-minutes: 30, so a hung link check cannot burn six hours.
- pip cache. Marginal - five small pure-python wheels - but free.
Note make -j4 was tried and rejected: it cuts the build to 80s but
produces a wrong book, numbering the appendix 13 instead of 17 and
degrading a cross-reference to ??.
Coursebook
Welcome to the systems programming coursebook! This repository houses a high-quality, open-source introductory systems programming textbook used by the CS 341: System Programming course at the University of Illinois Urbana-Champaign The book assumes that you have taken a programming language course and are familiar with assembly instructions. All of the code and instruction will be in C, as it is the de-facto language of the Linux Kernel.
The Coursebook is an aim to standardize and build upon Angrave's original wikibook experiment.
The most recent version of the coursebook as a single pdf is here: main.pdf.
Overview
Goals
- Improve the quality and rigour of the original wikibook while maintaining openness.
- Improve the factualness by including citations, footnotes, extended reading, and a glossary.
- Have exports in the form of pdf, markdown, and html.
- Automagically build so writers can focus on writing.
Contributing, Building, and Structure
Read CONTRIBUTING.md
Credit Where Credit is Due
- Title Page Idea Inspiration - https://tex.stackexchange.com/questions/85904/showcase-of-beautiful-title-page-done-in-tex
- Duck Image Inspiration - https://pixabay.com/photos/toy-bath-rubber-duck-studio-1474138/
- Chapter Style Inspiration - https://texblog.org/2012/07/03/fancy-latex-chapter-styles/
- PDF Image Inspiration - https://pixabay.com/illustrations/pdf-miniature-file-icon-2127829/
Languages
TeX
96.3%
Python
2.4%
Shell
1%
Makefile
0.3%
