From 741b022ed8e72458f1129c45e65bc934e443d151 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 1 Nov 2022 09:34:33 +0100 Subject: [PATCH 1/9] Fix Python version in basemap-for-windows build-geos job --- .github/workflows/basemap-for-windows.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/basemap-for-windows.yml b/.github/workflows/basemap-for-windows.yml index 3a86895a3..ff8550c5e 100644 --- a/.github/workflows/basemap-for-windows.yml +++ b/.github/workflows/basemap-for-windows.yml @@ -93,6 +93,11 @@ jobs: ["x64", "x86"] msvc-toolset: ["9.0", "14.0"] + include: + - msvc-toolset: "9.0" + python-version: "2.7" + - msvc-toolset: "14.0" + python-version: "3.5" max-parallel: 4 fail-fast: false needs: lint @@ -120,7 +125,7 @@ jobs: uses: actions/setup-python@v4 with: architecture: ${{ matrix.arch }} - python-version: "3.6" + python-version: ${{ matrix.python-version }} - name: Build GEOS from source run: | From e5241c43b5f983779e976b982092650f702f9bd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 1 Nov 2022 10:24:02 +0100 Subject: [PATCH 2/9] Allow GeosLibrary to parse MSVC toolset from version --- packages/basemap/utils/GeosLibrary.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/basemap/utils/GeosLibrary.py b/packages/basemap/utils/GeosLibrary.py index abbb839c7..610a61d0a 100644 --- a/packages/basemap/utils/GeosLibrary.py +++ b/packages/basemap/utils/GeosLibrary.py @@ -242,13 +242,17 @@ def build(self, installdir=None, toolset=None, njobs=1): # Define custom configure and build options. if os.name == "nt": + win64 = (8 * struct.calcsize("P") == 64) config_opts += ["-DCMAKE_CXX_FLAGS='/wd4251 /wd4458 /wd4530 /EHsc'"] if version >= (3, 6, 0) and sys.version_info[:2] >= (3, 3): if toolset is not None: - config_opts += ["-DCMAKE_GENERATOR_TOOLSET={0}".format(toolset)] + try: + msvc = "v{0:d}".format(int(float(toolset) * 10)) + except (TypeError, ValueError): + msvc = toolset + config_opts += ["-DCMAKE_GENERATOR_TOOLSET={0}".format(msvc)] build_opts = ["-j", "{0:d}".format(njobs)] + build_opts else: - win64 = (8 * struct.calcsize("P") == 64) config_opts = ["-G", "NMake Makefiles"] + config_opts build_opts.extend([ "--", From 472d3bccdb416cd60c45fb56a08c9839eac2297d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 1 Nov 2022 10:26:00 +0100 Subject: [PATCH 3/9] Set toolset explicitly for GEOS in basemap-for-windows --- .github/workflows/basemap-for-windows.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/basemap-for-windows.yml b/.github/workflows/basemap-for-windows.yml index ff8550c5e..54a196876 100644 --- a/.github/workflows/basemap-for-windows.yml +++ b/.github/workflows/basemap-for-windows.yml @@ -130,7 +130,7 @@ jobs: name: Build GEOS from source run: | cd ${{ env.PKGDIR }} - python -c "import utils; utils.GeosLibrary('3.6.5').build('extern', njobs=16)" + python -c "import utils; utils.GeosLibrary('3.6.5').build('extern', toolset='${{ matrix.msvc-toolset }}', njobs=16)" - name: Upload GEOS artifacts uses: actions/upload-artifact@v1 From fa3c52de3f68ab6dc4cac0a958994a2e6b73b855 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 1 Nov 2022 10:33:31 +0100 Subject: [PATCH 4/9] Improve Windows arch identification in GeosLibrary --- packages/basemap/utils/GeosLibrary.py | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/basemap/utils/GeosLibrary.py b/packages/basemap/utils/GeosLibrary.py index 610a61d0a..a9e3045fd 100644 --- a/packages/basemap/utils/GeosLibrary.py +++ b/packages/basemap/utils/GeosLibrary.py @@ -245,6 +245,7 @@ def build(self, installdir=None, toolset=None, njobs=1): win64 = (8 * struct.calcsize("P") == 64) config_opts += ["-DCMAKE_CXX_FLAGS='/wd4251 /wd4458 /wd4530 /EHsc'"] if version >= (3, 6, 0) and sys.version_info[:2] >= (3, 3): + config_opts = ["-A", "x64" if win64 else "Win32"] + config_opts if toolset is not None: try: msvc = "v{0:d}".format(int(float(toolset) * 10)) From 060d4d7f31353f9d054c1588c09da1c764f2d80a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 1 Nov 2022 14:52:51 +0100 Subject: [PATCH 5/9] Move MSVC setup in workflow after NumPy header build --- .github/workflows/basemap-for-windows.yml | 28 +++++++++++------------ 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/basemap-for-windows.yml b/.github/workflows/basemap-for-windows.yml index 54a196876..523b6441d 100644 --- a/.github/workflows/basemap-for-windows.yml +++ b/.github/workflows/basemap-for-windows.yml @@ -156,20 +156,6 @@ jobs: with: name: checkout path: . - - - name: Set MSVC toolset version - run: | - if ("${{ matrix.python-version }}" -eq "2.7") { - echo "msvc-toolset=9.0" >> $env:GITHUB_ENV - } else { - echo "msvc-toolset=14.0" >> $env:GITHUB_ENV - } - - - name: Set MSVC toolset - uses: pylegacy/actions/setup-msvc@v1 - with: - architecture: ${{ matrix.arch }} - version: ${{ env.msvc-toolset }} - name: Set Python uses: actions/setup-python@v4 @@ -191,6 +177,20 @@ jobs: } $env:SETUPTOOLS_USE_DISTUTILS = "stdlib" python -m pip install "numpy == ${pkgvers}" + - + name: Set MSVC toolset version + run: | + if ("${{ matrix.python-version }}" -eq "2.7") { + echo "msvc-toolset=9.0" >> $env:GITHUB_ENV + } else { + echo "msvc-toolset=14.0" >> $env:GITHUB_ENV + } + - + name: Set MSVC toolset + uses: pylegacy/actions/setup-msvc@v1 + with: + architecture: ${{ matrix.arch }} + version: ${{ env.msvc-toolset }} - name: Download GEOS artifacts uses: actions/download-artifact@v1 From 5d76930dba6a26f8cd5a78c4bba3d743a7dbd205 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 1 Nov 2022 17:28:17 +0100 Subject: [PATCH 6/9] Upgrade actions/setup-msvc to v2 in basemap-for-windows --- .github/workflows/basemap-for-windows.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/basemap-for-windows.yml b/.github/workflows/basemap-for-windows.yml index 523b6441d..f357cc2d9 100644 --- a/.github/workflows/basemap-for-windows.yml +++ b/.github/workflows/basemap-for-windows.yml @@ -111,10 +111,10 @@ jobs: path: . - name: Set MSVC toolset - uses: pylegacy/actions/setup-msvc@v1 + uses: pylegacy/actions/setup-msvc@v2 with: - architecture: ${{ matrix.arch }} - version: ${{ matrix.msvc-toolset }} + arch: ${{ matrix.arch }} + toolset: ${{ matrix.msvc-toolset }} - name: Set CMake uses: jwlawson/actions-setup-cmake@v1.13 @@ -187,10 +187,10 @@ jobs: } - name: Set MSVC toolset - uses: pylegacy/actions/setup-msvc@v1 + uses: pylegacy/actions/setup-msvc@v2 with: - architecture: ${{ matrix.arch }} - version: ${{ env.msvc-toolset }} + arch: ${{ matrix.arch }} + toolset: ${{ env.msvc-toolset }} - name: Download GEOS artifacts uses: actions/download-artifact@v1 From aa857c41c9e99b0cfaeb6617eca1e218e8ff88b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 1 Nov 2022 17:31:05 +0100 Subject: [PATCH 7/9] Update CMake version used to build GEOS for Windows --- .github/workflows/basemap-for-windows.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/basemap-for-windows.yml b/.github/workflows/basemap-for-windows.yml index f357cc2d9..f00b86c69 100644 --- a/.github/workflows/basemap-for-windows.yml +++ b/.github/workflows/basemap-for-windows.yml @@ -119,7 +119,7 @@ jobs: name: Set CMake uses: jwlawson/actions-setup-cmake@v1.13 with: - cmake-version: "3.14.7" + cmake-version: "3.24.2" - name: Set Python uses: actions/setup-python@v4 From d16921b9eb58e30bd9121508d4fa00ad5448ea06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 1 Nov 2022 17:54:29 +0100 Subject: [PATCH 8/9] Update config flags in GeosLibrary.build --- packages/basemap/utils/GeosLibrary.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/basemap/utils/GeosLibrary.py b/packages/basemap/utils/GeosLibrary.py index a9e3045fd..0aec77016 100644 --- a/packages/basemap/utils/GeosLibrary.py +++ b/packages/basemap/utils/GeosLibrary.py @@ -243,7 +243,7 @@ def build(self, installdir=None, toolset=None, njobs=1): # Define custom configure and build options. if os.name == "nt": win64 = (8 * struct.calcsize("P") == 64) - config_opts += ["-DCMAKE_CXX_FLAGS='/wd4251 /wd4458 /wd4530 /EHsc'"] + config_opts += ["-DCMAKE_CXX_FLAGS='/wd4251 /wd4355 /wd4458 /wd4530 /EHsc'"] if version >= (3, 6, 0) and sys.version_info[:2] >= (3, 3): config_opts = ["-A", "x64" if win64 else "Win32"] + config_opts if toolset is not None: From bdbc6c85fd51af0e1f93a317ca4af7e8e129583f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 1 Nov 2022 19:05:07 +0100 Subject: [PATCH 9/9] Update CHANGELOG --- CHANGELOG.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 45208d1e4..c1c493118 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,10 @@ https://semver.org/spec/v2.0.0.html ### Changed - Upgrade bundled GEOS library to 3.6.5. +### Fixed +- Set MSVC 14.0 (VS2015) to build the `_geoslib` module in the + precompiled Windows wheels (PR [#565]). + ## [1.3.6] - 2022-10-31 ### Added @@ -32,8 +36,8 @@ https://semver.org/spec/v2.0.0.html - Upgrade `pyproj` upper pin to 3.5. ### Fixed -- Set MSVC 14.0 (VS2015) to build the precompiled Windows wheels in - GitHub workflows (PR [#564]). +- Set MSVC 14.0 (VS2015) to build the GEOS library bundled in the + precompiled Windows wheels (PR [#564]). ## [1.3.5] - 2022-10-25 @@ -959,6 +963,8 @@ https://semver.org/spec/v2.0.0.html - Fix glitches in drawing of parallels and meridians. +[#565]: +https://github.com/matplotlib/basemap/pull/565 [#564]: https://github.com/matplotlib/basemap/pull/564 [#563]: