]> granicus.if.org Git - graphviz/commitdiff
generate checksums for macOS and Windows packages during deployment
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Wed, 3 Mar 2021 02:12:23 +0000 (18:12 -0800)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Tue, 9 Mar 2021 15:43:33 +0000 (07:43 -0800)
This is in addition to the previously generated portable source checksum. For
now, it is assumed we don't need checksums for the fined grained Linux packages.
Closes #1955.

CHANGELOG.md
ci/deploy.py

index 36442c97aae845d57befc3798b00cac32c67d558..6585cf2a28166174d7d405db4d778f2beee81f9a 100644 (file)
@@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 - RxSpencer is no longer a dependency on Windows
 - gvmap.sh is compatible with POSIX shells in addition to ksh
 - sed is no longer a build dependency on Windows
+- SHA256 checksum generation? #1955
 
 ### Fixed
 - Fix gvpr -? to actually print usage and exit non-zero
index 6c23ce62eda36d311c2ee71a99f537e471c90f2c..16e2ec135465e36073995cd258af8bda19bdecfd 100644 (file)
@@ -83,6 +83,18 @@ def checksum(path: str) -> Generator[str, None, None]:
       f.write(f'{hashlib.sha256(data.read()).hexdigest()}  {path}\n')
   yield check
 
+def is_macos_artifact(path: str) -> bool:
+  '''
+  is this a deployment artifact for macOS?
+  '''
+  return re.search(r'\bDarwin\b', path) is not None
+
+def is_windows_artifact(path: str) -> bool:
+  '''
+  is this a deployment artifact for Windows?
+  '''
+  return re.search(r'\bWindows\b', path) is not None
+
 def main(args: List[str]) -> int:
 
   # setup logging to print to stderr
@@ -171,6 +183,12 @@ def main(args: List[str]) -> int:
 
       assets.append(upload(package_version, path, path[len('Packages/'):]))
 
+      # if this is a standalone Windows or macOS package, also provide
+      # checksum(s)
+      if is_macos_artifact(path) or is_windows_artifact(path):
+        for c in checksum(path):
+          assets.append(upload(package_version, c, c[len('Packages/'):]))
+
   # we only create Gitlab releases for stable version numbers
   if not options.force:
     if re.match(r'\d+\.\d+\.\d+$', options.version) is None: