@@ -5,7 +5,18 @@ SHELL := bash
55
66# Set the package's name and version for use throughout the Makefile.
77PACKAGE_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.
920
1021# This variable contains the first goal that matches any of the listed goals
1122# here, else it contains an empty string. The net effect is to filter out
@@ -107,7 +118,7 @@ upgrade-quiet:
107118# Generate a Software Bill of Materials (SBOM).
108119.PHONY : sbom
109120sbom : 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
111122
112123# Generate a requirements.txt file containing version and integrity hashes for all
113124# packages currently installed in the virtual environment. There's no easy way to
@@ -129,14 +140,14 @@ requirements.txt: pyproject.toml
129140 [[ $$ 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; \
130141 done
131142 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; \
134145 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; \
137148 fi
138149 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
140151
141152# Audit the currently installed packages. Skip packages that are installed in
142153# editable mode (like the one in development here) because they may not have
@@ -175,17 +186,19 @@ test:
175186# When building these artifacts, we need the environment variable SOURCE_DATE_EPOCH
176187# set to the build date/epoch. For more details, see: https://flit.pypa.io/en/latest/reproducible.html
177188.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 :
180191 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 :
182194 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
183196dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -docs-html.zip : docs-html
184197 python -m zipfile -c dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -docs-html.zip docs/_build/html/
185198dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -docs-md.zip : docs-md
186199 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
189202
190203# Build the HTML and Markdown documentation from the package's source.
191204DOCS_SOURCE := $(shell git ls-files docs/source)
0 commit comments