From e0e48ae52c42fd64b59baf0f1e9ee9c378f69010 Mon Sep 17 00:00:00 2001
From: Tim Schoof <tim.schoof@desy.de>
Date: Wed, 7 Oct 2020 18:02:56 +0200
Subject: [PATCH] Use specific numpy version per python version

The numpy version is chosen based on the numpy version provided by
debian and centos for python < 3.7 and the version used by scipy wheels
for all other python version.

Additionally, the producer
and the consumer now have the same setup and install dependencies on
cython.
---
 consumer/api/python/dev-requirements.txt       |  2 --
 consumer/api/python/dev-requirements.txt.in    |  2 ++
 .../api/python/source_dist_linux/setup.py.in   |  4 ++--
 deploy/build_env/manylinux2010/build.sh        | 18 +++++++++++++++---
 producer/api/python/dev-requirements.txt       |  2 --
 producer/api/python/dev-requirements.txt.in    |  2 ++
 .../api/python/source_dist_linux/setup.py.in   |  4 ++--
 7 files changed, 23 insertions(+), 11 deletions(-)
 delete mode 100644 consumer/api/python/dev-requirements.txt
 create mode 100644 consumer/api/python/dev-requirements.txt.in
 delete mode 100644 producer/api/python/dev-requirements.txt
 create mode 100644 producer/api/python/dev-requirements.txt.in

diff --git a/consumer/api/python/dev-requirements.txt b/consumer/api/python/dev-requirements.txt
deleted file mode 100644
index 6e5e5e427..000000000
--- a/consumer/api/python/dev-requirements.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-cython
-numpy==1.14.6
\ No newline at end of file
diff --git a/consumer/api/python/dev-requirements.txt.in b/consumer/api/python/dev-requirements.txt.in
new file mode 100644
index 000000000..4e11c0346
--- /dev/null
+++ b/consumer/api/python/dev-requirements.txt.in
@@ -0,0 +1,2 @@
+cython
+numpy==@NUMPY_VERSION@
\ No newline at end of file
diff --git a/consumer/api/python/source_dist_linux/setup.py.in b/consumer/api/python/source_dist_linux/setup.py.in
index 5da1c0dfd..2fcefc2e0 100644
--- a/consumer/api/python/source_dist_linux/setup.py.in
+++ b/consumer/api/python/source_dist_linux/setup.py.in
@@ -16,6 +16,6 @@ setup(
       name ="asapo_consumer",
       ext_modules = ext_modules,
       version = "@PYTHON_ASAPO_VERSION@",
-      setup_requires=["numpy"],
-      install_requires=["numpy"]
+      setup_requires=["numpy>=@NUMPY_VERSION@", "cython>=0.28"],
+      install_requires=["numpy>=@NUMPY_VERSION@"]
       )
diff --git a/deploy/build_env/manylinux2010/build.sh b/deploy/build_env/manylinux2010/build.sh
index 4ac46715e..01d1684aa 100755
--- a/deploy/build_env/manylinux2010/build.sh
+++ b/deploy/build_env/manylinux2010/build.sh
@@ -1,18 +1,30 @@
 #!/usr/bin/env bash
 set -e
 
+declare -A numpy_versions
+numpy_versions[cp27mu]=1.12.1
+numpy_versions[cp27m]=1.12.1
+numpy_versions[cp35m]=1.12.1
+numpy_versions[cp36m]=1.12.1
+numpy_versions[cp37m]=1.14.5
+numpy_versions[cp38]=1.17.3
+
 for python_path in /opt/python/cp{27,35,36,37}*m; do
+    python_version=$(basename $python_path)
+    python_version=${python_version#*-}
     python=$python_path/bin/python
     pip=$python_path/bin/pip
+    numpy_version=${numpy_versions[$python_version]}
+    echo "building wheel for python_version=$python_version with numpy_version=$numpy_version"
 
     cd /asapo/build
-    cmake -DENABLE_LIBFABRIC=off -DCMAKE_BUILD_TYPE="Release" -DLIBCURL_DIR=/curl -DPython_EXECUTABLE=$python ..
+    cmake -DENABLE_LIBFABRIC=off -DCMAKE_BUILD_TYPE="Release" -DLIBCURL_DIR=/curl -DPython_EXECUTABLE=$python -DNUMPY_VERSION=$numpy_version ..
     cd consumer \
-        && $pip install -r /asapo/consumer/api/python/dev-requirements.txt \
+        && $pip install -r api/python/dev-requirements.txt\
         && make \
         && $pip wheel api/python/source_dist_linux/dist/*.tar.gz -w wheelhouse --no-deps
     cd ../producer \
-        && $pip install -r /asapo/producer/api/python/dev-requirements.txt \
+        && $pip install -r api/python/dev-requirements.txt \
         && make \
         && $pip wheel api/python/source_dist_linux/dist/*.tar.gz -w wheelhouse --no-deps
 done
diff --git a/producer/api/python/dev-requirements.txt b/producer/api/python/dev-requirements.txt
deleted file mode 100644
index 6e5e5e427..000000000
--- a/producer/api/python/dev-requirements.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-cython
-numpy==1.14.6
\ No newline at end of file
diff --git a/producer/api/python/dev-requirements.txt.in b/producer/api/python/dev-requirements.txt.in
new file mode 100644
index 000000000..4e11c0346
--- /dev/null
+++ b/producer/api/python/dev-requirements.txt.in
@@ -0,0 +1,2 @@
+cython
+numpy==@NUMPY_VERSION@
\ No newline at end of file
diff --git a/producer/api/python/source_dist_linux/setup.py.in b/producer/api/python/source_dist_linux/setup.py.in
index b7b2f6681..10cec57a0 100644
--- a/producer/api/python/source_dist_linux/setup.py.in
+++ b/producer/api/python/source_dist_linux/setup.py.in
@@ -15,6 +15,6 @@ setup(
       name ="asapo_producer",
       ext_modules = ext_modules,
       version = "@PYTHON_ASAPO_VERSION@",
-      setup_requires=["numpy","cython>=0.28"],
-      install_requires=["numpy","cython>=0.28"]
+      setup_requires=["numpy>=@NUMPY_VERSION@", "cython>=0.28"],
+      install_requires=["numpy>=@NUMPY_VERSION@"]
       )
-- 
GitLab