@@ -5,7 +5,18 @@ SHELL := bash
5
5
6
6
# Set the package's name and version for use throughout the Makefile.
7
7
PACKAGE_NAME := package
8
- PACKAGE_VERSION := $(shell python -c $$'try: import $(PACKAGE_NAME ) ; print($(PACKAGE_NAME ) .__version__) ;\nexcept: print("unknown");')
8
+ PACKAGE_VERSION := $(shell python -c $$'try: import $(PACKAGE_NAME ) ; print($(PACKAGE_NAME ) .__version__, end="") ;\nexcept: print("unknown");')
9
+
10
+ OS_NAME := "$(shell uname) "
11
+ ifeq ($(OS_NAME ) , "Darwin")
12
+ OS := darwin
13
+ else
14
+ ifeq ($(OS_NAME), "Linux")
15
+ OS := linux
16
+ endif
17
+ endif
18
+
19
+ ARCH := $(shell echo `uname -m` | xargs) # E.g., arm64 or x86_64.
9
20
10
21
# This variable contains the first goal that matches any of the listed goals
11
22
# here, else it contains an empty string. The net effect is to filter out
@@ -107,7 +118,7 @@ upgrade-quiet:
107
118
# Generate a Software Bill of Materials (SBOM).
108
119
.PHONY : sbom
109
120
sbom : requirements
110
- cyclonedx-py requirements --output-format json --outfile dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -sbom.json
121
+ cyclonedx-py requirements --output-format json --outfile dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -$( OS ) - $( ARCH ) - sbom.json
111
122
112
123
# Generate a requirements.txt file containing version and integrity hashes for all
113
124
# packages currently installed in the virtual environment. There's no easy way to
@@ -129,14 +140,14 @@ requirements.txt: pyproject.toml
129
140
[[ $$ pkg =~ (.* )== (.* ) ]] && curl -s https://pypi.org/pypi/$$ {BASH_REMATCH[1]}/$$ {BASH_REMATCH[2]}/json | python -c " import json, sys; print(''.join(f''' \\\\ \n --hash=sha256:{pkg['digests']['sha256']}''' for pkg in json.load(sys.stdin)['urls']));" >> requirements.txt; \
130
141
done
131
142
echo -e -n " $( PACKAGE_NAME) ==$( PACKAGE_VERSION) " >> requirements.txt
132
- if [ -f dist/$( PACKAGE_NAME) -$( PACKAGE_VERSION) .tar.gz ]; then \
133
- echo -e -n " \\\\ \n $$ (python -m pip hash --algorithm sha256 dist/$( PACKAGE_NAME) -$( PACKAGE_VERSION) .tar.gz | grep '^\-\-hash')" >> requirements.txt; \
143
+ if [ -f dist/$( PACKAGE_NAME) -$( PACKAGE_VERSION) - $( OS ) - $( ARCH ) .tar.gz ]; then \
144
+ echo -e -n " \\\\ \n $$ (python -m pip hash --algorithm sha256 dist/$( PACKAGE_NAME) -$( PACKAGE_VERSION) - $( OS ) - $( ARCH ) .tar.gz | grep '^\-\-hash')" >> requirements.txt; \
134
145
fi
135
- if [ -f dist/$( PACKAGE_NAME) -$( PACKAGE_VERSION) -py3-none-any .whl ]; then \
136
- echo -e -n " \\\\ \n $$ (python -m pip hash --algorithm sha256 dist/$( PACKAGE_NAME) -$( PACKAGE_VERSION) -py3-none-any .whl | grep '^\-\-hash')" >> requirements.txt; \
146
+ if [ -f dist/$( PACKAGE_NAME) -$( PACKAGE_VERSION) -py3-$( OS ) - $( ARCH ) .whl ]; then \
147
+ echo -e -n " \\\\ \n $$ (python -m pip hash --algorithm sha256 dist/$( PACKAGE_NAME) -$( PACKAGE_VERSION) -py3-$( OS ) - $( ARCH ) .whl | grep '^\-\-hash')" >> requirements.txt; \
137
148
fi
138
149
echo " " >> requirements.txt
139
- cp requirements.txt dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -requirements.txt
150
+ cp requirements.txt dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -$( OS ) - $( ARCH ) - requirements.txt
140
151
141
152
# Audit the currently installed packages. Skip packages that are installed in
142
153
# editable mode (like the one in development here) because they may not have
@@ -175,17 +186,19 @@ test:
175
186
# When building these artifacts, we need the environment variable SOURCE_DATE_EPOCH
176
187
# set to the build date/epoch. For more details, see: https://flit.pypa.io/en/latest/reproducible.html
177
188
.PHONY : dist
178
- dist : dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -py3-none-any.whl dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) .tar.gz dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -docs-html.zip dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -docs-md.zip dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -build-epoch.txt
179
- dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -py3-none-any.whl : check test
189
+ dist : dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -py3-none-any.whl dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) .tar.gz dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -docs-html.zip dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -docs-md.zip dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -$( OS ) - $( ARCH ) - build-epoch.txt
190
+ dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -py3-none-any.whl :
180
191
SOURCE_DATE_EPOCH=$(SOURCE_DATE_EPOCH ) flit build --setup-py --format wheel
181
- dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) .tar.gz : check test
192
+ mv dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -py3-none-any.whl dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -py3-$(OS ) -$(ARCH ) .whl
193
+ dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) .tar.gz :
182
194
SOURCE_DATE_EPOCH=$(SOURCE_DATE_EPOCH ) flit build --setup-py --format sdist
195
+ mv dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) .tar.gz dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -$(OS ) -$(ARCH ) .tar.gz
183
196
dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -docs-html.zip : docs-html
184
197
python -m zipfile -c dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -docs-html.zip docs/_build/html/
185
198
dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -docs-md.zip : docs-md
186
199
python -m zipfile -c dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -docs-md.zip docs/_build/markdown/
187
- dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -build-epoch.txt :
188
- echo $(SOURCE_DATE_EPOCH ) > dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -build-epoch.txt
200
+ dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -$( OS ) - $( ARCH ) - build-epoch.txt :
201
+ echo $(SOURCE_DATE_EPOCH ) > dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -$( OS ) - $( ARCH ) - build-epoch.txt
189
202
190
203
# Build the HTML and Markdown documentation from the package's source.
191
204
DOCS_SOURCE := $(shell git ls-files docs/source)
0 commit comments