From d7db0d187ccb4404fdf6f19fba15e0a39391640a Mon Sep 17 00:00:00 2001 From: Wojtek Kosior Date: Sat, 29 Oct 2022 13:54:06 +0200 Subject: initial commit --- Makefile | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 Makefile (limited to 'Makefile') diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..b7ca583 --- /dev/null +++ b/Makefile @@ -0,0 +1,97 @@ +# SPDX-License-Identifier: CC0-1.0 + +# Copyright (C) 2022 Wojtek Kosior +# +# Available under the terms of Creative Commons Zero v1.0 Universal. + +GUIX := guix + +# Almost all commands in this Makefilo are run through `guix time-machine` with +# Guix revision fixed to the one from the commit below. This ensures that the +# same working environment is always used. +GUIX_COMMIT := a86979b41a49a8fcdaa887970ba594dbba701226 + +GUIX_TM = $(GUIX) time-machine --commit=$(GUIX_COMMIT) -- + +GUIX_DEVSHELL = $(GUIX_TM) shell -Df guix.scm -- + +GET_VER = $$(grep '^Version:' src/hydrilla_website.egg-info/PKG-INFO | \ + cut -d' ' -f2) +RECORD_VER = VER="$(GET_VER)" + +DETERMINISTIC_TAR = $(GUIX_TM) shell tar -- tar \ + --mtime='1970-01-01 00:00Z' \ + --sort=name \ + --owner=0 --group=0 --numeric-owner \ + --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime + +DETERMINE_USER_SHELL_TO_USE = \ + case "$$SHELL" in \ + ?*) \ + SHELL_TO_USE="$$SHELL";; \ + *) \ + SHELL_TO_USE="/bin/sh";; \ + esac + +wheel: + $(GUIX_DEVSHELL) python3 -m build + +# Make a source tarball and repack in a deterministic way so that its +# reproducible. +dist src/hydrilla_website/_version.py: + $(GUIX_DEVSHELL) python3 -m build -s + $(RECORD_VER) && \ + RELNAME=hydrilla_website-"$$VER" && \ + DISTFILE=dist/"$$RELNAME".tar.gz && \ + $(MAKE) clean-source-tarball-repack && \ + mkdir source-tarball-repack/ && \ + tar -C source-tarball-repack/ -xf "$$DISTFILE" && \ + $(DETERMINISTIC_TAR) -C source-tarball-repack/ \ + -cf "$$DISTFILE" "$$RELNAME" + @printf "Generated source tarball in:\n" + @printf "./dist/hydrilla_website-$(GET_VER).tar.gz\n" + +# If using bash, modify the prompt to indicate the environment is active. +shell: + $(DETERMINE_USER_SHELL_TO_USE); \ + case "$$SHELL_TO_USE" in \ + *bash*) \ + HYDRILLA_SHELL_NAME=hydrilla-website-dev \ + $(GUIX_DEVSHELL) "$$SHELL_TO_USE" \ + --rcfile ./bashrc || true;; \ + *) \ + $(GUIX_DEVSHELL) "$$SHELL_TO_USE" || true;; \ + esac + +catalogs: + $(GUIX_DEVSHELL) python3 setup.py compile_catalog + +refresh-catalogs: + $(GUIX_DEVSHELL) sh -c \ + "python3 setup.py extract_messages && python3 setup.py update_catalog && python3 setup.py compile_catalog" + +run-website: src/hydrilla_website/_version.py catalogs + PYTHONPATH=./src $(GUIX_DEVSHELL) python3 -m hydrilla_website + +reuse-lint: + $(GUIX_DEVSHELL) reuse lint + +mypy-lint: src/hydrilla_website/_version.py + PYTHONPATH=./src/ $(GUIX_DEVSHELL) mypy -p hydrilla_website + +clean-source-tarball-repack: + rm -rf source-tarball-repack/ + +clean: clean-source-tarball-repack + rm -rf build/ dist/ src/hydrilla_website.egg-info/ \ + src/hydrilla_website/_version.py \ + src/hydrilla_website/locales/messages.pot \ + .mypy_cache/ + find src/hydrilla_website/locales/ -name "messages.mo" -delete + rm -rf $$(find -name "__pycache__") + +.PHONY: shell \ + wheel dist catalogs \ + run-website refresh-catalogs \ + reuse-lint mypy-lint \ + clean-source-tarball-repack clean -- cgit v1.2.3