From 4c7eb07c33c8181a64201a16312a78c885630be2 Mon Sep 17 00:00:00 2001
From: Eleni Mathioulaki <emathioulaki@athenarc.gr>
Date: Sat, 30 Nov 2024 20:57:43 +0100
Subject: [PATCH] fix(py-spynnaker): fix URL generation

spack does not support ! when parsing version in URL
---
 packages/py-spalloc/package.py             | 4 ++++
 packages/py-spinnaker-pacman/package.py    | 5 +++++
 packages/py-spinnfrontendcommon/package.py | 5 +++++
 packages/py-spinnmachine/package.py        | 5 +++++
 packages/py-spinnman/package.py            | 5 +++++
 packages/py-spinnutilities/package.py      | 5 +++++
 packages/py-spynnaker/package.py           | 5 +++++
 7 files changed, 34 insertions(+)

diff --git a/packages/py-spalloc/package.py b/packages/py-spalloc/package.py
index e03a3937..69ee89a2 100644
--- a/packages/py-spalloc/package.py
+++ b/packages/py-spalloc/package.py
@@ -13,6 +13,10 @@ class PySpalloc(PythonPackage):
     homepage = "https://github.com/SpiNNakerManchester/spalloc"
     pypi = "spalloc/spalloc-1!7.0.0.tar.gz"
 
+    def url_for_version(self, version):
+        url = "https://pypi.org/packages/source/s/spalloc/spalloc-1!{}.tar.gz"
+        return url.format(version)
+
     version('7.3.0', sha256='5664546187a57c87743c8bf1db812a2ab1c14db15fb0f44ee64f5f72d1cdedac')
     version('7.0.0', sha256='e141a0e661efd6fd634f3793752d8d6deef56ee37a21fa8e3d7208f4edd86f51')
 
diff --git a/packages/py-spinnaker-pacman/package.py b/packages/py-spinnaker-pacman/package.py
index b1b2f27f..47ead355 100644
--- a/packages/py-spinnaker-pacman/package.py
+++ b/packages/py-spinnaker-pacman/package.py
@@ -13,6 +13,11 @@ class PySpinnakerPacman(PythonPackage):
     homepage = "https://github.com/SpiNNakerManchester/PACMAN"
     pypi = "SpiNNaker_PACMAN/SpiNNaker_PACMAN-1!7.0.0.tar.gz"
 
+    def url_for_version(self, version):
+        name = "spinnaker_pacman" if version >= Version("7.2.0") else "SpiNNaker_PACMAN"
+        url = "https://pypi.org/packages/source/s/SpiNNaker_PACMAN/{}-1!{}.tar.gz"
+        return url.format(name, version)
+
     version("7.3.0", sha256="ef597e14aac9877c676181082e11e77ea3d4b0dfb5977b0d3ce78020229fb055")
     version("7.0.0", sha256="d9e7e620d02fda88f57a8cf157cc9421b5606d453230847f3d35985eae4c074d")
 
diff --git a/packages/py-spinnfrontendcommon/package.py b/packages/py-spinnfrontendcommon/package.py
index 845ea008..dd9be1a3 100644
--- a/packages/py-spinnfrontendcommon/package.py
+++ b/packages/py-spinnfrontendcommon/package.py
@@ -19,6 +19,11 @@ class PySpinnfrontendcommon(PythonPackage):
     homepage = "https://github.com/SpiNNakerManchester/SpiNNFrontEndCommon"
     pypi = "SpiNNFrontEndCommon/SpiNNFrontEndCommon-1!7.0.0.tar.gz"
 
+    def url_for_version(self, version):
+        name = "spinnfrontendcommon" if version >= Version("7.2.0") else "SpiNNFrontEndCommon"
+        url = "https://pypi.org/packages/source/s/SpiNNFrontEndCommon/{}-1!{}.tar.gz"
+        return url.format(name, version)
+
     version("7.3.0", sha256="c3aea0160525c4f08bc74244f219a9664a06aa70876cfb68944c7d6378daf161")
     version("7.0.0", sha256="07539734ed0105472d06d655bbd92e149ef44c77c388fcca28857558faa6dd10")
 
diff --git a/packages/py-spinnmachine/package.py b/packages/py-spinnmachine/package.py
index 64f151ba..5fcd3b90 100644
--- a/packages/py-spinnmachine/package.py
+++ b/packages/py-spinnmachine/package.py
@@ -13,6 +13,11 @@ class PySpinnmachine(PythonPackage):
     homepage = "https://github.com/SpiNNakerManchester/SpiNNMachine"
     pypi = "SpiNNMachine/SpiNNMachine-1!7.0.0.tar.gz"
 
+    def url_for_version(self, version):
+        name = "spinnmachine" if version >= Version("7.2.0") else "SpiNNMachine"
+        url = "https://pypi.org/packages/source/s/SpiNNMachine/{}-1!{}.tar.gz"
+        return url.format(name, version)
+
     version("7.3.0", sha256="7c23def7deac54d56e23f4679c2317ddd053e6f6632c81ddf497fe021f37960c")
     version("7.0.0", sha256="5da374fd9208287799fbc324136fe5954dd1b370792ea81ea10d4537643272ad")
 
diff --git a/packages/py-spinnman/package.py b/packages/py-spinnman/package.py
index 0458d2b6..f89d9ad7 100644
--- a/packages/py-spinnman/package.py
+++ b/packages/py-spinnman/package.py
@@ -13,6 +13,11 @@ class PySpinnman(PythonPackage):
     homepage = "https://github.com/SpiNNakerManchester/SpiNNMan"
     pypi = "SpiNNMan/SpiNNMan-1!7.0.0.tar.gz"
 
+    def url_for_version(self, version):
+        name = "spinnman" if version >= Version("7.2.0") else "SpiNNMan"
+        url = "https://pypi.org/packages/source/s/SpiNNMan/{}-1!{}.tar.gz"
+        return url.format(name, version)
+
     version("7.3.0", sha256="8b4924ee31cae35845164da8d2da69391d306246772c706fdcd935e4ce8535db")
     version("7.0.0", sha256="61bc8934e4ad6798b48c02ff6c8a3ef5c8e080a5ee2f4b88fc9cd587ed1b1ae6")
 
diff --git a/packages/py-spinnutilities/package.py b/packages/py-spinnutilities/package.py
index 19e3fe2c..ede3fe0d 100644
--- a/packages/py-spinnutilities/package.py
+++ b/packages/py-spinnutilities/package.py
@@ -14,6 +14,11 @@ class PySpinnutilities(PythonPackage):
     homepage = "https://github.com/SpiNNakerManchester/SpiNNUtils"
     pypi = "SpiNNUtilities/SpiNNUtilities-1!7.0.0.tar.gz"
 
+    def url_for_version(self, version):
+        name = "spinnutilities" if version >= Version("7.2.0") else "SpiNNUtilities"
+        url = "https://pypi.org/packages/source/s/SpiNNUtilities/{}-1!{}.tar.gz"
+        return url.format(name, version)
+
     version("7.3.0", sha256="5343004fd2aeec0124267e91c2649356b20bf8f2a5d33c9d7cd5ea6cce7dd86b")
     version("7.0.0", sha256="662855395ec367008735047a66a7ca75d1e5070e309ca3aa6ba3a843fb722841")
 
diff --git a/packages/py-spynnaker/package.py b/packages/py-spynnaker/package.py
index 126adc85..0e200cb3 100644
--- a/packages/py-spynnaker/package.py
+++ b/packages/py-spynnaker/package.py
@@ -15,6 +15,11 @@ class PySpynnaker(PythonPackage):
 
     maintainers = ["rowley"]
 
+    def url_for_version(self, version):
+        name = "spynnaker" if version >= Version("7.2.0") else "sPyNNaker"
+        url = "https://pypi.org/packages/source/s/sPyNNaker/{}-1!{}.tar.gz"
+        return url.format(name, version)
+
     version("7.3.0", sha256="f052a50b8a31b526f0249b7aa1f7fe77c2f34fc35838600bef17c43e9d3bf9a9")
     version("7.0.0", sha256="caeaa624e3fdbca3b938c9be7ea4c78a51a037e659389fb01952822f069664db")
 
-- 
GitLab