diff options
author | W. Kosior <koszko@koszko.org> | 2025-09-19 12:47:44 +0200 |
---|---|---|
committer | W. Kosior <koszko@koszko.org> | 2025-09-19 13:09:45 +0200 |
commit | 7000b1f2bb2fca5b7707c9b1a9f58f43100212d3 (patch) | |
tree | cc5531b93b8e76c39e3c58d52574f68e86c3f05e /Makefile | |
download | AGH-msc-thesis-magister.tar.gz AGH-msc-thesis-magister.zip |
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 168 |
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 |