blob: f98362e6f5239c0cee95b536b9cbe6be5401cd98 (
about) (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
# SPDX-License-Identifier: CC0-1.0
# Copyright (C) 2022 Wojtek Kosior <koszko@koszko.org>
#
# 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.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/_version.py:
$(GUIX_DEVSHELL) python3 -m build -s
$(RECORD_VER) && \
RELNAME=hydrilla-"$$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-$(GET_VER).tar.gz\n"
doc:
$(GUIX_DEVSHELL) python3 setup.py build_htmldoc
# Make a release tarball and repack its files as writeable - this will make it
# easier for non-technical users to remove the unpacked release once they no
# longer need it.
release: dist doc
$(GUIX_TM) pack -L ./hydrilla-guix -RR hydrilla \
-S /hydrilla=bin/hydrilla \
-S /hydrilla-builder=bin/hydrilla-builder \
-S /hydrilla-server=bin/hydrilla-server \
-S /haketilo=bin/haketilo | tee make-release.log
$(RECORD_VER) && \
RELNAME=haketilo-and-hydrilla-bin-"$$VER"-"$$(arch)" && \
PACKFILE="$$(tail -1 make-release.log)" && \
$(MAKE) clean-bin-tarball-repack && \
mkdir bin-tarball-repack/ && \
mkdir bin-tarball-repack/"$$RELNAME" && \
tar -C bin-tarball-repack/"$$RELNAME"/ -xf "$$PACKFILE" && \
chmod -R +w bin-tarball-repack/"$$RELNAME" && \
cp -R htmldoc/ bin-tarball-repack/"$$RELNAME" && \
$(DETERMINISTIC_TAR) -C bin-tarball-repack/ \
-cf "$$RELNAME".tar.gz "$$RELNAME"
@printf "Generated binary release tarball for $$(arch) in:\n"
@printf "./haketilo-and-hydrilla-bin-$(GET_VER)-$$(arch).tar.gz\n"
# If using bash, modify the prompt to indicate that the environment is active.
shell:
$(DETERMINE_USER_SHELL_TO_USE); \
case "$$SHELL_TO_USE" in \
*bash*) \
HYDRILLA_SHELL_NAME=hydrilla-dev \
$(GUIX_DEVSHELL) "$$SHELL_TO_USE" \
--rcfile ./bashrc || true;; \
*) \
$(GUIX_DEVSHELL) "$$SHELL_TO_USE" || true;; \
esac
# Modify prompt for bash, like above.
shell-with-haketilo: dist
$(DETERMINE_USER_SHELL_TO_USE); \
case "$$SHELL_TO_USE" in \
*bash*) \
HYDRILLA_SHELL_NAME=hydrilla \
$(GUIX_TM) shell \
--rebuild-cache -f guix.scm -- \
"$$SHELL_TO_USE" --rcfile ./bashrc || true;; \
*) \
$(GUIX_TM) shell --rebuild-cache -f guix.scm -- \
|| 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"
test: src/hydrilla/_version.py catalogs
$(GUIX_DEVSHELL) pytest
run-haketilo: src/hydrilla/_version.py catalogs
PYTHONPATH=./src $(GUIX_DEVSHELL) python3 -m hydrilla.mitmproxy_launcher
mypy-lint: src/hydrilla/_version.py
PYTHONPATH=./src/ $(GUIX_DEVSHELL) mypy -p hydrilla
mypy-lint-server: src/hydrilla/_version.py
$(GUIX_DEVSHELL) mypy src/hydrilla/server/__main__.py
mypy-lint-builder: src/hydrilla/_version.py
$(GUIX_DEVSHELL) mypy src/hydrilla/builder/__main__.py
mypy-lint-haketilo: src/hydrilla/_version.py
$(GUIX_DEVSHELL) mypy \
src/hydrilla/proxy/addon.py \
src/hydrilla/mitmproxy_launcher/__main__.py
clean-bin-tarball-repack:
test -d bin-tarball-repack/ && chmod -R +w bin-tarball-repack/ || true
rm -rf bin-tarball-repack/
clean-source-tarball-repack:
rm -rf source-tarball-repack/
clean-doc:
rm -rf htmldoc/
clean: clean-bin-tarball-repack clean-source-tarball-repack clean-doc
rm -rf build/ dist/ src/hydrilla.egg-info/ src/hydrilla/_version.py \
src/hydrilla/locales/messages.pot make-release.log \
haketilo-and-hydrilla-bin-*.tar.gz .mypy_cache/ .pytest_cache/
find src/hydrilla/locales/ -name "messages.mo" -delete
rm -rf $$(find -name "__pycache__")
.PHONY: shell shell-with-haketilo \
wheel dist doc release catalogs \
refresh-catalogs test run-haketilo \
mypy-lint mypy-lint-server mypy-lint-builder mypy-lint-haketilo \
clean-bin-tarball-repack clean-source-tarball-repack clean
|