diff --git a/build-telemac.bat b/build-telemac.bat index 87dc929d36f8cecc3c0e2949202137c443168b7e..d28f60b2b7fbd2cf80e6b8d11f623f76d42d49d5 100644 --- a/build-telemac.bat +++ b/build-telemac.bat @@ -12,21 +12,22 @@ set metis=metis-5.1.0 set msmpi=msmpi-10.1.3 set openblas=openblas-0.3.25 set scalapack=scalapack-2.1.0 -set mumps=mumps-5.2.1 +set mumps_version=5.6.2 +set mumps=mumps-%mumps_version% set aed2=libaed2-1.2.0 set gotm=gotm-2019-06-14-opentelemac -set python_version=3.11.8 -set python_launcher_version=3.11.8 +set python_version=3.11.9 +set python_launcher_version=3.11.9 set python=python-%python_version% set python_requirements=python_requirements.txt set pip_version=24.0 set setuptools_version=65.5.0 -set geo_wheels_version=v2024.1.1 -set gdal=GDAL-3.8.2-cp311-cp311-win_amd64.whl -set fiona=fiona-1.9.5-cp311-cp311-win_amd64.whl -set rasterio=rasterio-1.3.9-cp311-cp311-win_amd64.whl -set shapely=shapely-2.0.2-cp311-cp311-win_amd64.whl +set geo_wheels_version=v2024.9.22 +set gdal=GDAL-3.9.2-cp311-cp311-win_amd64.whl +set fiona=fiona-1.10.1-cp311-cp311-win_amd64.whl +set rasterio=1.3.11-cp311-cp311-win_amd64.whl +set shapely=shapely-2.0.6-cp311-cp311-win_amd64.whl rem ************************************************************************ rem Parse input arguments to determine where and how TELEMAC should be built @@ -106,6 +107,13 @@ rem ********************************************************************* set python_requirements=python_requirements.txt if /i %arg_v% == v8p4 ( set version=v8p4 + set branch=%version% + + set openblas=openblas-0.3.25 + set scalapack=scalapack-2.1.0 + set mumps_version=5.2.1 + set mumps=mumps-%mumps_version% + set python_version=3.10.11 set python=python-3.10.11 set python_requirements=python_requirements_v8p4.txt @@ -119,14 +127,48 @@ if /i %arg_v% == v8p4 ( ) if /i %arg_v% == v8p5 ( set version=v8p5 + set branch=%version% + + set openblas=openblas-0.3.25 + set scalapack=scalapack-2.1.0 + set mumps_version=5.2.1 + set mumps=mumps-%mumps_version% + + set python_version=3.11.9 + set python_launcher_version=3.11.9 set python_requirements=python_requirements_v8p5.txt + set pip_version=24.0 + set setuptools_version=65.5.0 set geo_wheels_version=v2023.11.3 set gdal=GDAL-3.7.3-cp311-cp311-win_amd64.whl set fiona=fiona-1.9.5-cp311-cp311-win_amd64.whl set rasterio=rasterio-1.3.9-cp311-cp311-win_amd64.whl set shapely=shapely-2.0.2-cp311-cp311-win_amd64.whl ) -if /i %arg_v% == main set version=main +if /i %arg_v% == 9.0 ( + set version=9.0 + set branch=v%version% + + set openblas=openblas-0.3.28 + set scalapack=scalapack-2.2.1 + set mumps_version=5.6.2 + set mumps=mumps-%mumps_version% + + set python_version=3.11.9 + set python_launcher_version=3.11.9 + set python_requirements=python_requirements_9.0.txt + set pip_version=24.0 + set setuptools_version=65.5.0 + set geo_wheels_version=v2024.9.22 + set gdal=GDAL-3.9.2-cp311-cp311-win_amd64.whl + set fiona=fiona-1.10.1-cp311-cp311-win_amd64.whl + set rasterio=rasterio-1.3.11-cp311-cp311-win_amd64.whl + set shapely=shapely-2.0.6-cp311-cp311-win_amd64.whl +) +if /i %arg_v% == main ( + set version=main + set branch=main +) if not defined version ( echo Unsupported TELEMAC version: %arg_v% exit /b 0 @@ -163,7 +205,7 @@ if exist %install_path% ( ) if /i "%clone%" equ "y" ( rd /s/q %install_path% 2>nul - git clone -b %version% https://gitlab.pam-retd.fr/otm/telemac-mascaret.git %install_path% || exit /b 0 + git clone -b %branch% https://gitlab.pam-retd.fr/otm/telemac-mascaret.git %install_path% || exit /b 0 ) rem ********************** @@ -257,7 +299,7 @@ rem MED rem *** :build_med call :download %med% "https://gitlab.pam-retd.fr/otm/telemac-mascaret/-/package_files/443/download" || exit /b 1 -set cmake_config_options=-DHDF5_ROOT_DIR:PATH=%external_path%/%hdf5% -DMEDFILE_BUILD_TESTS:BOOL=OFF -DMEDFILE_INSTALL_DOC:BOOL=OFF +set cmake_config_options=-DHDF5_ROOT_DIR:PATH=%external_path%/%hdf5% -DMEDFILE_BUILD_TESTS:BOOL=OFF -DMEDFILE_INSTALL_DOC:BOOL=OFF -DCMAKE_C_FLAGS="-Wno-error=implicit-function-declaration" if %compiler% == intel ( rem MED libraries cannot be built as shared libraries with Visual Studio generator as they rem miss the proper __declspec(dllexport) declarations on each class and function @@ -330,7 +372,7 @@ rem ********* call :download %scalapack% "https://github.com/Reference-ScaLAPACK/scalapack/archive/refs/tags/v2.1.0.zip" || exit /b 1 rem We need to use a foward slash for lapack and blas libraries paths since CMake CheckFortranFunctionExists is bugged when using a backward slash set ext_path=%external_path:\=/% -set cmake_config_options=-DMPI_BASE_DIR:PATH=%ext_path%/%msmpi% -DLAPACK_LIBRARIES:STRING=%ext_path%/%openblas%/lib/libopenblas.a -DBLAS_LIBRARIES:STRING=%ext_path%/%openblas%/lib/libopenblas.a -DBUILD_TESTING:BOOL=OFF +set cmake_config_options=-DMPI_BASE_DIR:PATH=%ext_path%/%msmpi% -DLAPACK_LIBRARIES:STRING=%ext_path%/%openblas%/lib/libopenblas.a -DBLAS_LIBRARIES:STRING=%ext_path%/%openblas%/lib/libopenblas.a -DBUILD_TESTING:BOOL=OFF -DCMAKE_C_FLAGS="-Wno-error=implicit-function-declaration -Wno-implicit-int" call :cmake_build %scalapack% || exit /b 1 exit /b 0 @@ -338,8 +380,8 @@ rem ***** rem MUMPS rem ***** :build_mumps -call :download %mumps% "https://github.com/scivision/mumps/archive/refs/tags/v5.6.1.2.tar.gz" || exit /b 1 -set cmake_config_options=-DMUMPS_UPSTREAM_VERSION=5.2.1 -DBLAS_LIBRARY=%external_path%\%openblas%\lib\libopenblas.a -DLAPACK_LIBRARY=%external_path%\%openblas%\lib\libopenblas.a -DSCALAPACK_ROOT:PATH=%external_path%\%scalapack% +call :download %mumps% "https://github.com/scivision/mumps/archive/refs/tags/v5.7.3.1.tar.gz" || exit /b 1 +set cmake_config_options=-DMUMPS_UPSTREAM_VERSION=%mumps_version% -DBLAS_LIBRARY=%external_path%\%openblas%\lib\libopenblas.a -DLAPACK_LIBRARY=%external_path%\%openblas%\lib\libopenblas.a -DSCALAPACK_ROOT:PATH=%external_path%\%scalapack% if %compiler% == mingw ( set cmake_config_options=%cmake_config_options% -DMPI_ROOT:PATH=%external_path%\%msmpi% ) else ( @@ -469,7 +511,7 @@ curl -OL https://github.com/cgohlke/geospatial-wheels/releases/download/%geo_whe curl -OL https://github.com/cgohlke/geospatial-wheels/releases/download/%geo_wheels_version%/%shapely% || goto install_python_packages_error popd pushd %~dp0 -pip install -r %python_requirements% || goto install_python_packages_error +pip install -r %python_requirements% --no-warn-script-location || goto install_python_packages_error rem Starting with Python 3.8, mpi4py requires MPI DLLs to be present in the module directory: copy them there xcopy /y %external_path%\%msmpi%\bin\msmpi*.dll %external_path%\%python%\Lib\site-packages\mpi4py\ >nul diff --git a/patches/scalapack-2.2.1.patch b/patches/scalapack-2.2.1.patch new file mode 100644 index 0000000000000000000000000000000000000000..28f31457c0cc5bef6ea7d736a672aede99803510 --- /dev/null +++ b/patches/scalapack-2.2.1.patch @@ -0,0 +1,117 @@ +diff -ur scalapack-2.1.0/CMAKE/FortranMangling.cmake scalapack-2.1.0-patched/CMAKE/FortranMangling.cmake +--- scalapack-2.1.0/CMAKE/FortranMangling.cmake 2019-11-26 21:37:04.000000000 +0100 ++++ scalapack-2.1.0-patched/CMAKE/FortranMangling.cmake 2022-01-12 22:36:58.821733800 +0100 +@@ -13,12 +13,18 @@ + FUNCTION(COMPILE RESULT) + MESSAGE(STATUS "=========") + MESSAGE(STATUS "Compiling and Building BLACS INSTALL Testing to set correct variables") +- ++ ++ if(CMAKE_BUILD_TYPE) ++ SET(BUILD_TYPE -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}) ++ endif() ++ + # Configure: + EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} +- "-DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER}" +- "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}" "${PROJECT_SOURCE_DIR}//BLACS/INSTALL" +- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/BLACS/INSTALL/ ++ "-DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER}" ++ "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}" "${PROJECT_SOURCE_DIR}/BLACS/INSTALL" ++ -G ${CMAKE_GENERATOR} ${BUILD_TYPE} ++ -DCMAKE_Fortran_COMPILER_FORCED=TRUE -DCMAKE_C_COMPILER_FORCED=TRUE ++ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/BLACS/INSTALL/ + RESULT_VARIABLE RESVAR OUTPUT_VARIABLE LOG1_OUT ERROR_VARIABLE LOG1_ERR + ) + if(RESVAR EQUAL 0) +diff -ur scalapack-2.1.0/CMakeLists.txt scalapack-2.1.0-patched/CMakeLists.txt +--- scalapack-2.1.0/CMakeLists.txt 2019-11-26 21:37:04.000000000 +0100 ++++ scalapack-2.1.0-patched/CMakeLists.txt 2022-01-12 22:33:46.607205500 +0100 +@@ -157,18 +157,18 @@ + message(STATUS "--> LAPACK and BLAS were not found. Reference LAPACK and BLAS will be downloaded and installed") + include(ExternalProject) + ExternalProject_Add( +- lapack +- URL http://www.netlib.org/lapack/lapack.tgz +- CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${SCALAPACK_BINARY_DIR} ++ lapack ++ URL http://www.netlib.org/lapack/lapack.tgz ++ CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${SCALAPACK_BINARY_DIR} + PREFIX ${SCALAPACK_BINARY_DIR}/dependencies + ) +- if (UNIX) ++ if (UNIX OR MINGW) + SET(LAPACK_LIBRARIES ${SCALAPACK_BINARY_DIR}/lib/liblapack.a CACHE STRING "LAPACK library" FORCE) + SET(BLAS_LIBRARIES ${SCALAPACK_BINARY_DIR}/lib/libblas.a CACHE STRING "BLAS library" FORCE) +- else (UNIX) # On Windows ++ else () # MSVC + SET(LAPACK_LIBRARIES ${SCALAPACK_BINARY_DIR}/lib/liblapack.lib CACHE STRING "LAPACK library" FORCE) + SET(BLAS_LIBRARIES ${SCALAPACK_BINARY_DIR}/lib/libblas.lib CACHE STRING "BLAS library" FORCE) +- endif (UNIX) ++ endif () + ENDIF() + ENDIF() + +@@ -230,11 +230,11 @@ + append_subdir_files(src "SRC") + append_subdir_files(src-C "SRC") + +-if (UNIX) ++if (UNIX OR MINGW) + add_library(scalapack ${blacs} ${tools} ${tools-C} ${extra_lapack} ${pblas} ${pblas-F} ${ptzblas} ${ptools} ${pbblas} ${redist} ${src} ${src-C}) +- target_link_libraries( scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) ++ target_link_libraries(scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) + scalapack_install_library(scalapack) +-else (UNIX) # Need to separate Fortran and C Code ++else () # Need to separate Fortran and C Code + OPTION(BUILD_SHARED_LIBS "Build shared libraries" ON ) + add_library(scalapack ${blacs} ${tools-C} ${pblas} ${ptools} ${redist} ${src-C}) + target_link_libraries( scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) +@@ -242,7 +242,7 @@ + target_link_libraries( scalapack-F ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) + scalapack_install_library(scalapack) + scalapack_install_library(scalapack-F) +-endif (UNIX) ++endif () + add_subdirectory(TESTING) + + # -------------------------------------------------- +diff -ur scalapack-2.1.0/scalapack_build.cmake scalapack-2.1.0-patched/scalapack_build.cmake +--- scalapack-2.1.0/scalapack_build.cmake 2019-11-26 21:37:04.000000000 +0100 ++++ scalapack-2.1.0-patched/scalapack_build.cmake 2022-01-12 22:31:42.310881200 +0100 +@@ -2,7 +2,7 @@ + ################################################################### + # The values in this section must always be provided + ################################################################### +-if(UNIX) ++if(UNIX OR MINGW) + if(NOT compiler) + set(compiler gcc) + endif(NOT compiler) +@@ -12,7 +12,7 @@ + if(NOT full_compiler) + set(full_compiler g++) + endif(NOT full_compiler) +-endif(UNIX) ++endif() + + if(EXISTS "/proc/cpuinfo") + set(parallel 1) +@@ -24,7 +24,7 @@ + endforeach(line) + endif() + +-if(WIN32) ++if(MSVC) + set(VSLOCATIONS + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\6.0\\Setup;VsCommonDir]/MSDev98/Bin" + "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\7.0\\Setup\\VS;EnvironmentDirectory]" +@@ -57,7 +57,7 @@ + set(CTEST_CMAKE_GENERATOR "${GENERATOR}") + message("${CTEST_CMAKE_GENERATOR} - found") + set(compiler cl) +-endif(WIN32) ++endif() + + find_program(HOSTNAME NAMES hostname) + find_program(UNAME NAMES uname) diff --git a/python_requirements.txt b/python_requirements.txt index 4e620b2916527615827460b0a7dc7c0dcbabb46c..c95534f1ff6a08cab4b0ad17ec19b1ae059a8667 100644 --- a/python_requirements.txt +++ b/python_requirements.txt @@ -1,4 +1,4 @@ -numpy==1.26 +numpy==1.26.4 scipy matplotlib mpi4py @@ -13,9 +13,9 @@ seaborn # GDAL, Fiona and Rasterio Python packages cannot be installed using PyPI on Windows # Also, the version of Shapely that comes through pip is unstable # Instead, we need to use unofficial wheels from Christoph Gohlke’s website -.\wheels\GDAL-3.8.2-cp311-cp311-win_amd64.whl -.\wheels\fiona-1.9.5-cp311-cp311-win_amd64.whl -.\wheels\rasterio-1.3.9-cp311-cp311-win_amd64.whl -.\wheels\shapely-2.0.2-cp311-cp311-win_amd64.whl +.\wheels\GDAL-3.9.2-cp311-cp311-win_amd64.whl +.\wheels\fiona-1.10.1-cp311-cp311-win_amd64.whl +.\wheels\rasterio-1.3.11-cp311-cp311-win_amd64.whl +.\wheels\shapely-2.0.6-cp311-cp311-win_amd64.whl geopandas pyqt5 \ No newline at end of file diff --git a/python_requirements_9.0.txt b/python_requirements_9.0.txt new file mode 100644 index 0000000000000000000000000000000000000000..2bb21b70e4c439a63b1b880d4dd6d629ddc378c5 --- /dev/null +++ b/python_requirements_9.0.txt @@ -0,0 +1,132 @@ +affine==2.4.0 +anyio==4.6.2.post1 +argon2-cffi==23.1.0 +argon2-cffi-bindings==21.2.0 +arrow==1.3.0 +asttokens==3.0.0 +async-lru==2.0.4 +attrs==24.2.0 +babel==2.16.0 +beautifulsoup4==4.12.3 +bleach==6.2.0 +certifi==2024.8.30 +cffi==1.17.1 +chardet==5.2.0 +charset-normalizer==3.4.0 +click==8.1.7 +click-plugins==1.1.1 +cligj==0.7.2 +colorama==0.4.6 +comm==0.2.2 +contourpy==1.3.1 +cycler==0.12.1 +debugpy==1.8.9 +decorator==5.1.1 +defusedxml==0.7.1 +doxypypy==0.8.8.7 +et_xmlfile==2.0.0 +executing==2.1.0 +fastjsonschema==2.21.1 +.\wheels\fiona-1.10.1-cp311-cp311-win_amd64.whl +fonttools==4.55.0 +fqdn==1.5.1 +.\wheels\GDAL-3.9.2-cp311-cp311-win_amd64.whl +geopandas==1.0.1 +h11==0.14.0 +httpcore==1.0.7 +httpx==0.28.0 +idna==3.10 +ipykernel==6.29.5 +ipython==8.30.0 +ipywidgets==8.1.5 +isoduration==20.11.0 +jedi==0.19.2 +Jinja2==3.1.4 +json5==0.10.0 +jsonpointer==3.0.0 +jsonschema==4.23.0 +jsonschema-specifications==2024.10.1 +jupyter==1.1.1 +jupyter-console==6.6.3 +jupyter-events==0.10.0 +jupyter-lsp==2.2.5 +jupyter_client==8.6.3 +jupyter_core==5.7.2 +jupyter_server==2.14.2 +jupyter_server_terminals==0.5.3 +jupyterlab==4.2.6 +jupyterlab_pygments==0.3.0 +jupyterlab_server==2.27.3 +jupyterlab_widgets==3.0.13 +kiwisolver==1.4.7 +lxml==5.3.0 +MarkupSafe==3.0.2 +matplotlib==3.9.3 +matplotlib-inline==0.1.7 +meson==1.6.0 +mistune==3.0.2 +mpi4py==4.0.1 +nbclient==0.10.1 +nbconvert==7.16.4 +nbformat==5.10.4 +nest-asyncio==1.6.0 +notebook==7.2.2 +notebook_shim==0.2.4 +numpy==1.26.4 +openpyxl==3.1.5 +overrides==7.7.0 +OWSLib==0.32.0 +packaging==24.2 +pandas==2.2.3 +pandocfilters==1.5.1 +parso==0.8.4 +pillow==11.0.0 +platformdirs==4.3.6 +prometheus_client==0.21.0 +prompt_toolkit==3.0.48 +psutil==6.1.0 +pure_eval==0.2.3 +pycparser==2.22 +Pygments==2.18.0 +pyogrio==0.10.0 +pyparsing==3.2.0 +pyproj==3.7.0 +PyQt5==5.15.11 +PyQt5-Qt5==5.15.2 +PyQt5_sip==12.15.0 +python-dateutil==2.9.0.post0 +python-json-logger==2.0.7 +pytz==2024.2 +pywin32==308 +pywinpty==2.0.14 +PyYAML==6.0.2 +pyzmq==26.2.0 +.\wheels\rasterio-1.3.11-cp311-cp311-win_amd64.whl +referencing==0.35.1 +requests==2.32.3 +rfc3339-validator==0.1.4 +rfc3986-validator==0.1.1 +rpds-py==0.21.0 +Rtree==1.3.0 +scipy==1.14.1 +seaborn==0.13.2 +Send2Trash==1.8.3 +.\wheels\shapely-2.0.6-cp311-cp311-win_amd64.whl +six==1.16.0 +sniffio==1.3.1 +snuggs==1.4.7 +soupsieve==2.6 +stack-data==0.6.3 +terminado==0.18.1 +tinycss2==1.4.0 +tornado==6.4.2 +traitlets==5.14.3 +types-python-dateutil==2.9.0.20241003 +tzdata==2024.2 +uri-template==1.3.0 +urllib3==2.2.3 +wcwidth==0.2.13 +webcolors==24.11.1 +webencodings==0.5.1 +websocket-client==1.8.0 +widgetsnbextension==4.0.13