@@ -6,6 +6,9 @@ SHELL := bash
66#  Set the package's name and version for use throughout the Makefile.
77PACKAGE_NAME  := package
88PACKAGE_VERSION  := $(shell  python -c $$'try: import $(PACKAGE_NAME ) ; print($(PACKAGE_NAME ) .__version__) ;\nexcept: print("unknown");')
9+ ARCH  := $(uname -m )          #  E.g., arm64 or x86_64.
10+ OS := $(uname | tr '[:upper:]' '[:lower:]' )   #  E.g., linux or darwin.
11+ 
912
1013#  This variable contains the first goal that matches any of the listed goals
1114#  here, else it contains an empty string. The net effect is to filter out
@@ -107,7 +110,7 @@ upgrade-quiet:
107110#  Generate a Software Bill of Materials (SBOM).
108111.PHONY : sbom
109112sbom : requirements
110- 	cyclonedx-py requirements --output-format json --outfile dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -sbom.json
113+ 	cyclonedx-py requirements --output-format json --outfile dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -$( OS ) - $( ARCH ) - sbom.json
111114
112115#  Generate a requirements.txt file containing version and integrity hashes for all
113116#  packages currently installed in the virtual environment. There's no easy way to
@@ -129,14 +132,14 @@ requirements.txt: pyproject.toml
129132	  [[ $$ 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;  \ 
130133	done 
131134	echo  -e -n " $( PACKAGE_NAME) $( PACKAGE_VERSION) " >>  requirements.txt
132- 	if  [ -f  dist/$( PACKAGE_NAME) $( PACKAGE_VERSION) ;  then  \
133- 	  echo  -e -n "  \\\\ \n    $$ (python -m pip hash --algorithm sha256 dist/$( PACKAGE_NAME) $( PACKAGE_VERSION) " >>  requirements.txt;  \ 
135+ 	if  [ -f  dist/$( PACKAGE_NAME) $( PACKAGE_VERSION) - $( OS ) - $( ARCH ) ;  then  \
136+ 	  echo  -e -n "  \\\\ \n    $$ (python -m pip hash --algorithm sha256 dist/$( PACKAGE_NAME) $( PACKAGE_VERSION) - $( OS ) - $( ARCH ) " >>  requirements.txt;  \ 
134137	fi 
135- 	if  [ -f  dist/$( PACKAGE_NAME) $( PACKAGE_VERSION) none-any .whl ];  then  \
136- 	  echo  -e -n "  \\\\ \n    $$ (python -m pip hash --algorithm sha256 dist/$( PACKAGE_NAME) $( PACKAGE_VERSION) none-any .whl | grep '^\-\-hash')" >>  requirements.txt;  \ 
138+ 	if  [ -f  dist/$( PACKAGE_NAME) $( PACKAGE_VERSION) $( OS ) - $( ARCH ) ;  then  \
139+ 	  echo  -e -n "  \\\\ \n    $$ (python -m pip hash --algorithm sha256 dist/$( PACKAGE_NAME) $( PACKAGE_VERSION) $( OS ) - $( ARCH ) " >>  requirements.txt;  \ 
137140	fi 
138141	echo  " " >>  requirements.txt
139- 	cp requirements.txt dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -requirements.txt
142+ 	cp requirements.txt dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -$( OS ) - $( ARCH ) - requirements.txt
140143
141144#  Audit the currently installed packages. Skip packages that are installed in
142145#  editable mode (like the one in development here) because they may not have
@@ -175,17 +178,19 @@ test:
175178#  When building these artifacts, we need the environment variable SOURCE_DATE_EPOCH
176179#  set to the build date/epoch. For more details, see: https://flit.pypa.io/en/latest/reproducible.html
177180.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
181+ dist : dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -py3-$( OS ) - $( ARCH ) $(PACKAGE_NAME ) -$(PACKAGE_VERSION ) - $( OS ) - $( ARCH ) $(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -docs-html.zip dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -docs-md.zip dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION )  - $( OS ) - $( ARCH )
182+ dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -py3-$( OS ) - $( ARCH )  : check test
180183	SOURCE_DATE_EPOCH=$(SOURCE_DATE_EPOCH )  flit build --setup-py --format wheel
181- dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) .tar.gz : check test
184+ 	mv dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -py3-none-any.whl dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -py3-$(OS ) -$(ARCH ) .whl
185+ dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -$(OS ) -$(ARCH ) .tar.gz : check test
182186	SOURCE_DATE_EPOCH=$(SOURCE_DATE_EPOCH )  flit build --setup-py --format sdist
187+ 	mv dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) .tar.gz dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -$(OS ) -$(ARCH ) .tar.gz
183188dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -docs-html.zip : docs-html
184189	python -m zipfile -c dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -docs-html.zip docs/_build/html/
185190dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -docs-md.zip : docs-md
186191	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
192+ dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -$( OS ) - $( ARCH ) - build-epoch.txt :
193+ 	echo  $(SOURCE_DATE_EPOCH )  >  dist/$(PACKAGE_NAME ) -$(PACKAGE_VERSION ) -$( PACKAGE_VERSION ) - $( OS ) - $( ARCH ) - build-epoch.txt
189194
190195#  Build the HTML and Markdown documentation from the package's source.
191196DOCS_SOURCE  := $(shell  git ls-files docs/source) 
0 commit comments