aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorW. Kosior <koszko@koszko.org>2025-09-19 12:47:44 +0200
committerW. Kosior <koszko@koszko.org>2025-09-19 13:09:45 +0200
commit7000b1f2bb2fca5b7707c9b1a9f58f43100212d3 (patch)
treecc5531b93b8e76c39e3c58d52574f68e86c3f05e /Makefile
downloadAGH-msc-thesis-magister.tar.gz
AGH-msc-thesis-magister.zip
Initial commit.HEADmagister
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile168
1 files changed, 168 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..b0e04f9
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,168 @@
+## SPDX-License-Identifier: CC0-1.0
+##
+## Copyright (C) 2025 Woj. Kosior <koszko@koszko.org>
+
+AWK = awk
+GNUPLOT = gnuplot
+LATEXMK = latexmk
+SED = sed
+
+DOC_RASTERS = \
+ bookworm-stats-pkg-state.png \
+ guix-pkg-repro-stats.png
+
+PRESENTATION_PLOTS = \
+ dependee_counts.svg \
+ status-counts.svg \
+ tree-size-stats-no-bc.svg
+
+PRESENTATION_GRAPHICS = \
+ $(PRESENTATION_PLOTS) \
+ Logo-WIET-2021.png \
+ agh_idub_pl_cmyk.pdf \
+ build-process-overview.svg \
+ boxes.svg \
+ Guix_logo.svg \
+ Debian-OpenLogo.svg \
+ Archlinux-logo-standard-version.svg \
+ NixOS_logo.svg \
+ Npm-logo.svg \
+ PyPI_logo.svg \
+ Rust_programming_language_black_logo.svg \
+ Apache_Maven_logo.svg \
+ composer-seeklogo.svg \
+ ecosystems-state.svg \
+ construction-crane.svg
+
+DIAGRAMS = \
+ build-process-overview.svg \
+ rebuilds-no-contamination-diagram.svg \
+ rebuilds-contamination-diagram.svg \
+ rebuilds-contamination-1party.svg \
+ rebuilds-inconclusive-diagram.svg
+
+PLOTS = \
+ common_2019_2025_percent.svg \
+ common_nondev_dev_percent.svg \
+ dev_dependee_counts.svg \
+ tree-size-stats.svg \
+ unflattened-multiver-counts.svg \
+ unflattened-multiver-counts-no-bc.svg \
+ $(PRESENTATION_PLOTS)
+
+INCLUDES = \
+ definitions-computed-from-results.tex
+
+PRESENTATION_OUTPUTS = \
+ presentation-handouts.pdf \
+ presentation-onlynotes.pdf \
+ presentation-onlyslides.pdf \
+ presentation-pympress.pdf \
+ presentation-slidesandnotes.pdf
+
+OUTPUTS = \
+ $(PRESENTATION_OUTPUTS) \
+ doc.pdf
+
+all: $(OUTPUTS)
+.POHONY: all
+
+agh_idub_pl_cmyk.pdf: agh_idub_pl_cmyk.pdf.nonpdf
+ rm -f $@
+ ln -s $< $@
+
+.SUFFIXES: .pdf .tex .svg .gnuplot
+
+common_nondev_dev_percent.svg: common_nondev_dev_percent.txt
+common_2019_2025_percent.svg: common_2019_2025_percent.txt
+dependee_counts.svg: dependencies.csv dependencies_2019.csv
+dev_dependee_counts.svg: dependencies.csv devDependencies.csv
+
+status-counts.svg: status-counts.csv
+tree-size-stats.svg: tree-size-stats.csv tree-sizes.csv
+tree-size-stats-no-bc.svg: tree-size-stats-no-bc.csv tree-sizes.csv \
+ tree-size-stats.gnuplot
+unflattened-multiver-counts.svg: unflattened-multiver-counts.csv
+unflattened-multiver-counts-no-bc.svg: unflattened-multiver-counts-no-bc.csv \
+ unflattened-multiver-counts.gnuplot
+
+.gnuplot.svg:
+ $(GNUPLOT) $<
+
+definitions-computed-from-results.tex: compute-definitions-from-results.sh \
+ experiment-results.csv status-counts.csv \
+ tree-size-stats-no-bc.csv helper.sh
+ $(SHELL) $^ > $@
+tree-size-stats.csv: compute-tree-size-stats.sh experiment-results.csv helper.sh
+ $(SHELL) $^ > $@
+tree-size-stats-no-bc.csv: compute-tree-size-stats-no-bc.sh \
+ experiment-results.csv compute-tree-size-stats.sh helper.sh
+ $(SHELL) $^ > $@
+tree-sizes.csv: compute-tree-sizes.sh experiment-results.csv helper.sh
+ $(SHELL) $^ > $@
+
+status-counts.csv: compute-status-counts.awk experiment-results.csv
+ $(AWK) -f $^ > $@ | sort --numeric-sort > $@
+
+unflattened-multiver-counts.csv: compute-unflattened-multiver-counts.sh \
+ tree-sizes.csv helper.sh
+ $(SHELL) $^ > $@ | sort --numeric-sort > $@
+unflattened-multiver-counts-no-bc.csv: \
+ compute-unflattened-multiver-counts-no-bc.sh tree-sizes.csv \
+ compute-unflattened-multiver-counts.sh helper.sh
+ $(SHELL) $^ > $@ | sort --numeric-sort > $@
+
+LISTING_INPUTS = \
+ debian-control-excerpt.txt \
+ debian-shc.patch \
+ debian-rules-excerpt.txt \
+ haskell-sth-buildinfo-excerpts.txt \
+ guix-python-axolotl-package.scm \
+ occurances-of-tslib.txt \
+ guix-package-update-commits.txt \
+ cpu-info.txt \
+ npm-uninstall.txt \
+ npm-ci.txt \
+ npm-run-build.txt \
+ npm-pack.txt \
+ ssh-clone-fail.txt \
+ eresolve-error.txt \
+ newer-typescript-changes.diffoscope \
+ warning-module-as-external.txt \
+ removed-typescript-changes.diffoscope
+
+doc.pdf: doc.tex doc.bib $(DOC_RASTERS) $(DIAGRAMS) $(PLOTS) $(LISTING_INPUTS) \
+ $(INCLUDES) copyright.txt
+ rm -rf $@ # Latexmk sees it as up-to-date despite, e.g., updated plots.
+ $(LATEXMK) -bibtex -pdf -lualatex -latexoption=-shell-escape $<
+ exiftool -@ copyright.txt $@
+
+debian-rules-excerpt.txt: binutils-debian-rules
+ $(AWK) '\
+ BEGIN {ldots = "(*\\itshape\\color{TEXTGRAY}{[...]}*)"} \
+ /^stamps\/build[.]%:/{in_fragment = 1; print ldots; print ""} \
+ {if (in_fragment) print} \
+ /; do \\/{if (in_fragment) {print ldots; exit(0)}}' \
+ $^ | $(SED) 's/\t/ /g' > $@
+
+$(PRESENTATION_OUTPUTS): presentation.tex $(PRESENTATION_GRAPHICS)
+ rm -rf $@ # Latexmk sees it as up-to-date despite, e.g., updated plots.
+ DEST=$@; \
+ $(LATEXMK) -pdf \
+ -jobname="$$(printf %s "$$DEST" | $(SED) 's/[.]pdf$$//')" \
+ -latexoption=-shell-escape \
+ -use-make \
+ $<
+
+TO_DELETE = \
+ $(PLOTS) \
+ definitions-computed-from-results.tex \
+ tree-size-stats.csv tree-sizes.csv status-counts.csv \
+ tree-size-stats.svg \
+ debian-rules-excerpt.txt \
+ svg-inkscape
+
+clean:
+ rm -rf $(TO_DELETE)
+ $(LATEXMK) -C
+.PHONY: clean