From: Guytri Kastane Date: Fri, 30 Aug 2024 14:55:59 +0000 (+0200) Subject: spns #41954: support Ubuntu 24.04 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=f9f3adcc5ab038efdb7039c0b6bbf9867f18fbdc;p=tools%2Fsat_salome.git spns #41954: support Ubuntu 24.04 --- diff --git a/applications/SALOME-9.13.0-native.pyconf b/applications/SALOME-9.13.0-native.pyconf index eb57ef8..4374f0e 100644 --- a/applications/SALOME-9.13.0-native.pyconf +++ b/applications/SALOME-9.13.0-native.pyconf @@ -11,7 +11,7 @@ APPLICATION : debug : 'no' base : 'no' python3 : 'yes' - platform : ["FD32", "FD34", "FD36", "FD37", "FD38", "CO8", "CO9", "DB10", "DB11", "DB12", "UB20.04", "UB22.04"] + platform : ["FD32", "FD34", "FD36", "FD37", "FD38", "CO8", "CO9", "DB10", "DB11", "DB12", "UB20.04", "UB22.04", "UB24.04"] environ : { build : @@ -36,6 +36,7 @@ APPLICATION : { # PREREQUISITES : alabaster : 'native' + assimulo : '3.5.2' Babel : 'native' boost : 'native' CAS : {tag : 'SALOME_9_13_V7_8_0', section: 'version_CR780_SALOME_PATCH', base: 'no'} @@ -91,6 +92,7 @@ APPLICATION : netCDF4: 'native' nlopt : 'native' nose: 'native' + nose_py3: '1.6.9' numpy : 'native' numpydoc : 'native' omniORB : '4.2.5' @@ -215,6 +217,7 @@ __overwrite__ : { # __condition__ : "VARS.dist in ['UB20.04']" + 'APPLICATION.rm_products' : ['nose_py3','assimulo'] # 'APPLICATION.products.opencv' : '3.2.0' 'APPLICATION.products.cminpack' : 'native' 'APPLICATION.products.netcdf' : '4.6.2' @@ -233,7 +236,7 @@ __overwrite__ : { # __condition__ : "VARS.dist in ['UB22.04']" - 'APPLICATION.rm_products' : ['TTK', 'markdown_it_py', 'mdurl'] # causes crashes + 'APPLICATION.rm_products' : ['TTK', 'markdown_it_py', 'mdurl','nose_py3','assimulo'] # TTK causes crashes 'APPLICATION.products.cmake' : 'native' # TTK requires cmake > 3.21 'APPLICATION.products.cftime' : 'native' 'APPLICATION.products.h5py' : 'native' @@ -249,11 +252,41 @@ __overwrite__ : 'APPLICATION.products.root' : {tag: '6.22.02', base: 'no', section: 'version_6_22_02_UB22_04' } 'APPLICATION.products.medfile' : {tag: '4.1.1', base: 'no', section: 'version_4_1_1_UB22_04' } } + { + # + __condition__ : "VARS.dist in ['UB24.04']" + 'APPLICATION.rm_products' : ['root','URANIE'] # + 'APPLICATION.products.assimulo' : '3.5.2' + 'APPLICATION.products.netcdf' : '4.6.2' + 'APPLICATION.products.opencv' : '3.2.0' + 'APPLICATION.products.PyFMI' : '2.13.1' + 'APPLICATION.products.petsc' : '3.20.5' + 'APPLICATION.products.swig' : '4.0.2' + 'APPLICATION.products.cmake' : 'native' + 'APPLICATION.products.cftime' : 'native' + 'APPLICATION.products.h5py' : 'native' + 'APPLICATION.products.markdown_it_py' : 'native' + 'APPLICATION.products.meshio' : {tag: '5.3.5' , base: 'no', section: 'version_5_3_5_no_pip' } + 'APPLICATION.products.netCDF4' : 'native' + 'APPLICATION.products.rich' : 'native' + 'APPLICATION.products.cminpack' : 'native' + 'APPLICATION.products.omniORBpy' : {tag: '4.2.5', base: 'no', section: 'version_4_2_5_UB24_04' } + 'APPLICATION.products.nose_py3' : {tag: '1.6.9', base: 'no', section: 'version_1_6_9_no_pip' } + 'APPLICATION.products.rkCommon' : {tag: '1.5.1', base: 'no', section: 'version_1_5_1_UB24_04' } + 'APPLICATION.products.catalyst' : {tag: '2.0', base: 'no', section: 'version_2_0_FD38' } + 'APPLICATION.products.medfile' : {tag: '4.1.1', base: 'no', section: 'version_4_1_1_UB22_04' } + 'APPLICATION.products.gmsh' : {tag: '4.10.3', base: 'no', section: 'version_4_10_3_with_CAS_7_8_UB24_04' } + 'APPLICATION.products.ParaView' : {tag: '5.11.0', base: 'no', section: 'version_5_11_0_MPI_UB24_04', hpc: 'yes' } + 'APPLICATION.products.KERNEL' : {tag: 'V9_13_0', base: 'no', section: 'version_V9_13_0_UB24_04' } + 'APPLICATION.products.FIELDS' : {tag: 'V9_13_0', base: 'no', section: 'version_V9_13_0_UB24_04' } + 'APPLICATION.products.PARAVIS' : {tag: 'V9_13_0', base: 'no', section: 'version_V9_13_0_UB24_04' } + } { # DB10: # - Qt minimal version 5.12 # - xmlpatterns executable __condition__ : "VARS.dist in ['DB10']" + 'APPLICATION.rm_products' : ['nose_py3','assimulo'] # 'APPLICATION.products.nlopt' : '2.4.2' 'APPLICATION.products.opencv' : '3.2.0' 'APPLICATION.products.cminpack' : 'native' @@ -275,6 +308,7 @@ __overwrite__ : } { __condition__ : "VARS.dist in ['DB11']" + 'APPLICATION.rm_products' : ['nose_py3','assimulo'] # 'APPLICATION.products.opencv' : '3.2.0' 'APPLICATION.products.hdf5' : 'native' 'APPLICATION.products.cminpack' : 'native' @@ -287,6 +321,7 @@ __overwrite__ : } { __condition__ : "VARS.dist in ['DB12']" + 'APPLICATION.rm_products' : ['nose_py3','assimulo'] # 'APPLICATION.products.cmake' : 'native' # TTK requires cmake > 3.21 'APPLICATION.products.cftime' : 'native' 'APPLICATION.products.h5py' : 'native' @@ -307,6 +342,7 @@ __overwrite__ : # CentOS 8 repositories don't include sphinxintl package which must be installed through pip. # To avoid its missing (system_info pyconf key doesn't handle this use case), we embed it. __condition__ : "VARS.dist in ['CO8']" + 'APPLICATION.rm_products' : ['nose_py3','assimulo'] # 'APPLICATION.products.sphinxintl' : {tag: '0.9.10', base: 'no', section: 'version_0_9_10_no_pip' } 'APPLICATION.products.cminpack' : '1.3.6' 'APPLICATION.products.nlopt' : '2.4.2' @@ -323,6 +359,7 @@ __overwrite__ : } { __condition__ : "VARS.dist in ['CO9']" + 'APPLICATION.rm_products' : ['nose_py3','assimulo'] # 'APPLICATION.products.nlopt' : '2.4.2' 'APPLICATION.products.cminpack' : '1.3.6' 'APPLICATION.products.qwt' : '6.1.6' @@ -349,6 +386,7 @@ __overwrite__ : } { __condition__ : "VARS.dist in ['FD32']" + 'APPLICATION.rm_products' : ['nose_py3','assimulo'] # 'APPLICATION.products.opencv' : '3.2.0' 'APPLICATION.products.qt' : '5.15.2' 'APPLICATION.products.qwt' : '6.1.6' @@ -367,6 +405,7 @@ __overwrite__ : } { __condition__ : "VARS.dist in ['FD34']" + 'APPLICATION.rm_products' : ['nose_py3','assimulo'] # 'APPLICATION.products.opencv' : '3.2.0' 'APPLICATION.products.qwt' : '6.1.6' 'APPLICATION.products.omniORB' : '4.2.5' @@ -382,6 +421,7 @@ __overwrite__ : } { __condition__ : "VARS.dist in ['FD36']" + 'APPLICATION.rm_products' : ['nose_py3','assimulo'] # 'APPLICATION.products.opencv' : {tag: '3.2.0', base: 'no', section: 'version_3_2_0_FD36' } 'APPLICATION.products.omniORB' : '4.2.5' 'APPLICATION.products.omniORBpy' : '4.2.5' @@ -400,7 +440,7 @@ __overwrite__ : { __condition__ : "VARS.dist in ['FD37']" - 'APPLICATION.rm_products' : ['root', 'URANIE'] + 'APPLICATION.rm_products' : ['root', 'URANIE','nose_py3','assimulo'] 'APPLICATION.products.cmake' : 'native' 'APPLICATION.products.opencv' : {tag: '3.2.0', base: 'no', section: 'version_3_2_0_FD37' } 'APPLICATION.products.omniORB' : '4.2.5' @@ -414,7 +454,7 @@ __overwrite__ : } { __condition__ : "VARS.dist in ['FD38']" - 'APPLICATION.rm_products' : ['root', 'URANIE', 'mesa'] + 'APPLICATION.rm_products' : ['root', 'URANIE', 'mesa','nose_py3','assimulo'] 'APPLICATION.products.markdown_it_py' : 'native' 'APPLICATION.products.rich' : 'native' 'APPLICATION.products.cmake' : 'native' diff --git a/products/FIELDS.pyconf b/products/FIELDS.pyconf index ba697a2..f6cd020 100755 --- a/products/FIELDS.pyconf +++ b/products/FIELDS.pyconf @@ -44,6 +44,11 @@ default_MPI : ] } +version_V9_13_0_UB24_04 : +{ + patches: ['FIELDS-UB24.04-V9_13_0-PyUnicode_AsWideCharString.patch'] +} + version_V9_10_0: { patches: [] diff --git a/products/FMILibrary.pyconf b/products/FMILibrary.pyconf index 6c35782..e0a3c64 100644 --- a/products/FMILibrary.pyconf +++ b/products/FMILibrary.pyconf @@ -33,6 +33,12 @@ default_win : opt_depend : [] } +version_2_4_1 : +{ + build_source : "script" + compil_script : 'FMILibrary-2.4.1.sh' +} + version_2_0_3 : { patches : ['FMILibrary-2.0.3-installdir.patch'] diff --git a/products/KERNEL.pyconf b/products/KERNEL.pyconf index 1ccfaab..ddd299e 100644 --- a/products/KERNEL.pyconf +++ b/products/KERNEL.pyconf @@ -108,6 +108,11 @@ default_32BIT_IDS : cmake_options : "-DSALOME_USE_LIBBATCH=ON -DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig -DSALOME_CMAKE_DEBUG=ON -DSALOME_USE_64BIT_IDS=OFF" } +version_V9_13_0_UB24_04 : +{ + patches: ['KERNEL-UB24.04-V9_13_0_configparser.patch'] +} + version_V9_10_0_MPI : { cmake_options : "-DSALOME_USE_MPI=ON -DSALOME_USE_LIBBATCH=ON -DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig -DSALOME_USE_64BIT_IDS=ON " diff --git a/products/PARAVIS.pyconf b/products/PARAVIS.pyconf index f4f9711..6f24a31 100644 --- a/products/PARAVIS.pyconf +++ b/products/PARAVIS.pyconf @@ -105,6 +105,33 @@ default_MPI : patches : [] } +version_V9_13_0_UB24_04 : +{ + cmake_options : "-DSALOME_PARAVIS_USE_GEOM_SOURCE=ON -DSALOME_PARAVIS_USE_SMESH_SOURCE=ON -DSALOME_USE_MPI=ON -DCMAKE_CXX_COMPILER:STRING=${MPI_CXX_COMPILER} -DCMAKE_C_COMPILER:STRING=${MPI_C_COMPILER} " + depend : [ + "KERNEL", + "GUI", + "MEDCOUPLING", + "FIELDS", + "GEOM", + "SMESH", + "Python", + "qt", + "boost", + "hdf5", + "medfile", + "ParaView", + "CAS", + "omniORB", + "docutils", + "libxml2", + "six", + "pytz", + "openmpi" + ] + patches: ['PARAVIS-UB24.04-V9_13_0-PyUnicode_AsWideCharString.patch'] +} + version_V9_11_0_MPI : { cmake_options : "-DSALOME_PARAVIS_USE_GEOM_SOURCE=ON -DSALOME_PARAVIS_USE_SMESH_SOURCE=ON -DSALOME_USE_MPI=ON -DCMAKE_CXX_COMPILER:STRING=${MPI_CXX_COMPILER} -DCMAKE_C_COMPILER:STRING=${MPI_C_COMPILER} " diff --git a/products/ParaView.pyconf b/products/ParaView.pyconf index 3ac69ab..45616e8 100755 --- a/products/ParaView.pyconf +++ b/products/ParaView.pyconf @@ -417,6 +417,35 @@ version_5_11_0_MPI_LATA_64BITS_IDS : opt_depend : ['openmpi', 'ospray','tbb', 'openturns', 'gdal', 'netcdf', 'catalyst'] } +version_5_11_0_MPI_UB24_04 : +{ + compil_script : 'ParaView-5.11.0.sh' + archive_info : {archive_name : "ParaView-5.11.0.tar.gz"} + patches : ['paraview-5.11.0.p001-FindCGNS.patch', + 'paraview-5.11.0.p002-FindMPI.patch', + 'paraview-5.11.0.p006-GIL.patch', + 'paraview-5.11.0.p007-mpi4py-UB24.patch', + 'paraview-5.11.0.p008-cstdint-FD38.patch', + 'paraview-5.11.0.p009-openturns-1.21.patch', + 'paraview-5.11.0.p010-python-3.11.patch', + 'paraview-5.11.0.p012-skip-FindTBB.patch' + ] + depend : [ + 'Python', + 'hdf5', + 'qt', + 'PyQt', + 'sip', + 'boost', + 'libxml2', + 'freetype', + 'matplotlib', + 'cgns', + 'Pygments' + ] + opt_depend : ['openmpi', 'ospray','tbb', 'openturns', 'gdal', 'netcdf', 'catalyst'] +} + version_5_11_0_MPI_DB12 : { compil_script : 'ParaView-5.11.0.sh' diff --git a/products/PyFMI.pyconf b/products/PyFMI.pyconf index e32fa4e..321e58d 100644 --- a/products/PyFMI.pyconf +++ b/products/PyFMI.pyconf @@ -27,6 +27,17 @@ default : patches: [] } +version_2_13_1 : +{ + compil_script : "PyFMI-2.13.1.sh" + depend : ["Python", "setuptools", "Cython", "FMILibrary", "matplotlib", "nose_py3", "assimulo"] + properties: + { + incremental : "yes" + pip : "no" + } +} + version_2_6_no_pip : { compil_script : "PyFMI-2.6.sh" diff --git a/products/assimulo.pyconf b/products/assimulo.pyconf new file mode 100644 index 0000000..40379cf --- /dev/null +++ b/products/assimulo.pyconf @@ -0,0 +1,21 @@ +default : +{ + name : "assimulo" + build_source : "script" + compil_script : 'assimulo' + $VARS.scriptExtension + get_source : "archive" + environ : + { + env_script : "assimulo.py" + } + depend : ['Python','lapack'] + opt_dep: ['sundials'] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + "assimulo" + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + "assimulo" + install_dir : 'base' + properties: + { + incremental : "yes" + pip : "no" + } +} diff --git a/products/compil_scripts/C3PO-v2.3.sh b/products/compil_scripts/C3PO-v2.3.sh index 32f6a27..6a244e9 100755 --- a/products/compil_scripts/C3PO-v2.3.sh +++ b/products/compil_scripts/C3PO-v2.3.sh @@ -30,6 +30,15 @@ if [ "${SAT_Python_IS_NATIVE}" != "1" ] || [ -z "${PYTEST}" ]; then export PATH="${PRODUCT_INSTALL}/bin":$PATH fi +if [ -d ${PRODUCT_INSTALL}/local ];then + mv ${PRODUCT_INSTALL}/local/* ${PRODUCT_INSTALL} + rm -rf ${PRODUCT_INSTALL}/local +fi + +if [ -d ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/dist-packages ]; then + mv ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/dist-packages ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages +fi + echo echo "*** running C3PO non-regression tests" export LD_LIBRARY_PATH="${MEDCOUPLING_ROOT_DIR}/lib:${LD_LIBRARY_PATH}" diff --git a/products/compil_scripts/FMILibrary-2.4.1.sh b/products/compil_scripts/FMILibrary-2.4.1.sh new file mode 100755 index 0000000..3dabac7 --- /dev/null +++ b/products/compil_scripts/FMILibrary-2.4.1.sh @@ -0,0 +1,34 @@ +#!/bin/bash + + +echo "##########################################################################" +echo FMILibrary $VERSION +echo "##########################################################################" + +CMAKE_OPTIONS= +CMAKE_OPTIONS+=" -DCMAKE_BUILD_TYPE=Release" +CMAKE_OPTIONS+=" -DFMILIB_GENERATE_DOXYGEN_DOC=OFF" +CMAKE_OPTIONS+=" -DFMILIB_INSTALL_PREFIX=${PRODUCT_INSTALL}" + +cd $BUILD_DIR + +echo +echo "*** cmake ${CMAKE_OPTIONS} ${SOURCE_DIR}" +if ! cmake ${CMAKE_OPTIONS} ${SOURCE_DIR}; then + echo "error on cmake" +fi + +echo +echo "*** make ${MAKE_OPTIONS}" +if ! make ${MAKE_OPTIONS}; then + echo "Error on make ${MAKE_OPTIONS}" +fi + +echo +echo "*** make install" +if ! make install; then + echo "error on make install" +fi + +echo +echo "############## END" diff --git a/products/compil_scripts/PyFMI-2.13.1.sh b/products/compil_scripts/PyFMI-2.13.1.sh new file mode 100755 index 0000000..289a6b8 --- /dev/null +++ b/products/compil_scripts/PyFMI-2.13.1.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +echo "##########################################################################" +echo "PyFMI " $VERSION +echo "##########################################################################" + +rm -rf $BUILD_DIR +mkdir -p $BUILD_DIR +cd $BUILD_DIR +cp -R $SOURCE_DIR/* . + +rm -f $BUILD_DIR/src/pyfmi/*.c +export PATH=$(pwd)/bin:$PATH +export PYTHONPATH=$(pwd):$PYTHONPATH + +echo +echo "*** ${PYTHONBIN} -m pip install . --prefix=${PRODUCT_INSTALL}" +if ! ${PYTHONBIN} -m pip install . --prefix=${PRODUCT_INSTALL} -vvv; then + echo "Error on pip install" +fi + +if [ -d ${PRODUCT_INSTALL}/local ];then + mv ${PRODUCT_INSTALL}/local/* ${PRODUCT_INSTALL} + rm -rf ${PRODUCT_INSTALL}/local +fi + +if [ -d ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/dist-packages ]; then + mv ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/dist-packages ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/YACSGEN.sh b/products/compil_scripts/YACSGEN.sh index 9f15eb7..fc077a3 100755 --- a/products/compil_scripts/YACSGEN.sh +++ b/products/compil_scripts/YACSGEN.sh @@ -4,23 +4,25 @@ echo "########################################################################## echo "YACSGEN" $VERSION echo "##########################################################################" - +LINUX_DISTRIBUTION="$DIST_NAME$DIST_VERSION" echo "*** build in SOURCE directory" cd $SOURCE_DIR -# we don't install in python directory -> modify environment as described in INSTALL file -mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION}/site-packages export PATH=$(pwd)/bin:$PATH export PYTHONPATH=$(pwd):$PYTHONPATH export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages:$PYTHONPATH echo echo "*** build and install with $PYTHONBIN" +echo "*** $LINUX_DISTRIBUTION *" case $LINUX_DISTRIBUTION in DB12) $PYTHONBIN setup.py install --install-lib=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages --install-scripts=${PRODUCT_INSTALL}/bin ;; + UB24*) + $PYTHONBIN -m pip install . --prefix=$PRODUCT_INSTALL + ;; *) $PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL ;; @@ -31,5 +33,14 @@ if [ $? -ne 0 ]; then exit 3 fi +if [ -d ${PRODUCT_INSTALL}/local ];then + mv ${PRODUCT_INSTALL}/local/* ${PRODUCT_INSTALL} + rm -rf ${PRODUCT_INSTALL}/local +fi + +if [ -d ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/dist-packages ]; then + mv ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/dist-packages ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages +fi + echo echo "########## END" diff --git a/products/compil_scripts/assimulo.sh b/products/compil_scripts/assimulo.sh new file mode 100755 index 0000000..86a3de1 --- /dev/null +++ b/products/compil_scripts/assimulo.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +echo "##########################################################################" +echo Assimulo $VERSION +echo "##########################################################################" + +cd $BUILD_DIR +cp -R $SOURCE_DIR/* . + +echo +echo "*** ${PYTHONBIN} -m pip install . --prefix=${PRODUCT_INSTALL}" +if ! ${PYTHONBIN} -m pip install . --prefix=${PRODUCT_INSTALL} -vvv; then + echo "Error on pip install" + exit 1 +fi + +if [ -d ${PRODUCT_INSTALL}/local ];then + mv ${PRODUCT_INSTALL}/local/* ${PRODUCT_INSTALL} + rm -rf ${PRODUCT_INSTALL}/local +fi + +if [ -d ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/dist-packages ]; then + mv ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/dist-packages ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/nose-py3-1.6.9.sh b/products/compil_scripts/nose-py3-1.6.9.sh new file mode 100755 index 0000000..c1dcd39 --- /dev/null +++ b/products/compil_scripts/nose-py3-1.6.9.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +echo "##########################################################################" +echo "nose-py3" $VERSION +echo "##########################################################################" + +LINUX_DISTRIBUTION="$DIST_NAME$DIST_VERSION" + +echo "*** check installation" +mkdir -p ${PRODUCT_INSTALL} +rm -rf $BUILD_DIR +mkdir -p $BUILD_DIR/cache/pip +cd $BUILD_DIR +cp -r $SOURCE_DIR/* . + +INSTALL_CMD="${PYTHONBIN} -m pip install --cache-dir=$BUILD_DIR/cache/pip . --prefix=$PRODUCT_INSTALL" + +echo "*** ${INSTALL_CMD}" +if ! ${INSTALL_CMD}; then + echo "ERROR: ${INSTALL_CMD} failed" + exit 1 +fi + +if [ -d ${PRODUCT_INSTALL}/local ];then + mv ${PRODUCT_INSTALL}/local/* ${PRODUCT_INSTALL} + rm -rf ${PRODUCT_INSTALL}/local +fi + +if [ -d ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/dist-packages ]; then + mv ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/dist-packages ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages +fi + +echo +echo "########## END" diff --git a/products/compil_scripts/omniORBpy.sh b/products/compil_scripts/omniORBpy.sh index 2b3c4c6..b8128f3 100755 --- a/products/compil_scripts/omniORBpy.sh +++ b/products/compil_scripts/omniORBpy.sh @@ -34,7 +34,16 @@ fi mkdir -p $PRODUCT_INSTALL echo "omniORBpy is installed into omni dir ${OMNIORB_ROOT_DIR}" > $PRODUCT_INSTALL/README -# fix +# fix +if [ -d $OMNIORB_ROOT_DIR/local ]; then + mv $OMNIORB_ROOT_DIR/local/lib/* $OMNIORB_ROOT_DIR/lib + rm -rf $OMNIORB_ROOT_DIR/local +fi + +if [ -d $OMNIORB_ROOT_DIR/lib/python${PYTHON_VERSION}/dist-packages ]; then + mv $OMNIORB_ROOT_DIR/lib/python${PYTHON_VERSION}/dist-packages $OMNIORB_ROOT_DIR/lib/python${PYTHON_VERSION}/site-packages +fi + cd $OMNIORB_ROOT_DIR/lib find . -name "*.so*" |xargs chmod u+rwx diff --git a/products/compil_scripts/opencv.sh b/products/compil_scripts/opencv.sh index 467f559..9ad8c67 100755 --- a/products/compil_scripts/opencv.sh +++ b/products/compil_scripts/opencv.sh @@ -35,7 +35,7 @@ if version_ge $VERSION "3."; then CMAKE_OPTIONS+=" -DCMAKE_C_FLAGS=-fPIC" LINUX_DISTRIBUTION="$DIST_NAME$DIST_VERSION" case $LINUX_DISTRIBUTION in - FD34|FD35|FD36|FD37|FD38|UB22*|CO9|DB12) + FD34|FD35|FD36|FD37|FD38|UB22*|UB24*|CO9|DB12) CMAKE_OPTIONS+=" -DCMAKE_CXX_FLAGS=\"-std=c++14\"" CMAKE_OPTIONS+=" -DCMAKE_CXX_STANDARD=14" ;; diff --git a/products/compil_scripts/openturns-1.22.sh b/products/compil_scripts/openturns-1.22.sh index e21d367..db040c4 100755 --- a/products/compil_scripts/openturns-1.22.sh +++ b/products/compil_scripts/openturns-1.22.sh @@ -373,13 +373,23 @@ if [[ -d "$SOURCE_DIR/otfftw-0.14" ]]; then echo "*** skipping: since system Cython too old" continue fi - echo "INFO: install scikit-learn-0.24.2" - # use --no-build-isolation and --no-use-pep517 flags - ${PYTHONBIN} -m pip install --cache-dir=$BUILD_DIR/cache/pip $SOURCE_DIR/scikit-learn-0.24.2/scikit-learn-0.24.2.tar.gz --no-deps --prefix=$PRODUCT_INSTALL --no-build-isolation --no-use-pep517 - if [ $? -ne 0 ] - then - echo "FATAL: could not install scikit-0.24.2" - exit 6 + if [ "${PYTHON_VERSION}" == "3.12" ]; then + echo "INFO: install scikit-learn-1.2.2" + ${PYTHONBIN} -m pip install --cache-dir=$BUILD_DIR/cache/pip $SOURCE_DIR/scikit-learn-1.2.2/scikit-learn-1.2.2.tar.gz --no-deps --prefix=$PRODUCT_INSTALL --no-build-isolation --no-use-pep517 + if [ $? -ne 0 ] + then + echo "FATAL: could not install scikit-1.2.2" + exit 6 + fi + else + echo "INFO: install scikit-learn-0.24.2" + # use --no-build-isolation and --no-use-pep517 flags + ${PYTHONBIN} -m pip install --cache-dir=$BUILD_DIR/cache/pip $SOURCE_DIR/scikit-learn-0.24.2/scikit-learn-0.24.2.tar.gz --no-deps --prefix=$PRODUCT_INSTALL --no-build-isolation --no-use-pep517 + if [ $? -ne 0 ] + then + echo "FATAL: could not install scikit-0.24.2" + exit 6 + fi fi echo "INFO: install threadpoolctl-3.0.0" ${PYTHONBIN} -m pip install --cache-dir=$BUILD_DIR/cache/pip $SOURCE_DIR/threadpoolctl-3.0.0/threadpoolctl-3.0.0-py3-none-any.whl --no-deps --prefix=$PRODUCT_INSTALL diff --git a/products/compil_scripts/petsc-3.20.5.sh b/products/compil_scripts/petsc-3.20.5.sh new file mode 100755 index 0000000..106bbab --- /dev/null +++ b/products/compil_scripts/petsc-3.20.5.sh @@ -0,0 +1,125 @@ +#!/bin/bash + +echo "##########################################################################" +echo "Petsc" $VERSION +echo "##########################################################################" + +NATIVE_PATH="/usr" +LINUX_DISTRIBUTION="$DIST_NAME$DIST_VERSION" +echo "WARNING: " +case $LINUX_DISTRIBUTION in + UB*|DB*) + NATIVE_PATH="/usr/lib/x86_64-linux-gnu" + ;; + *) + ;; +esac + +cp -r $SOURCE_DIR/* . + +CONFIGURE_FLAGS= + +CONFIGURE_FLAGS+="--download-slepc=ext/slepc-3.20.1.tar.gz" + +if [ -f "${NATIVE_PATH}/liblapack.a" ] && [ "${SAT_lapack_IS_NATIVE}" == "1" ]; then + CONFIGURE_FLAGS+=" --with-blaslapack=1" +elif [ -n "${LAPACK_ROOT_DIR}" ] && [ "${SAT_lapack_IS_NATIVE}" != "1" ]; then + CONFIGURE_FLAGS+=" --with-blaslapack-dir=${LAPACK_ROOT_DIR}" +else + CONFIGURE_FLAGS+=" --download-f2cblaslapack=ext/f2cblaslapack-3.8.0.q2.tar.gz" +fi + +CONFIGURE_FLAGS+=" --with-python-dir=${PYTHON_ROOT_DIR}" +CONFIGURE_FLAGS+=" --with-hdf5-dir=${HDF5_ROOT_DIR}" + +if [ -f "${NATIVE_PATH}/libfftw3.a" ] && [ "${SAT_fftw_IS_NATIVE}" == "1" ]; then + CONFIGURE_FLAGS+=" --with-fftw=1" +elif [ -n "${FFTW_ROOT_DIR}" ] && [ "${SAT_fftw_IS_NATIVE}" != "1" ]; then + CONFIGURE_FLAGS+=" --with-fftw-dir=${FFTW_ROOT_DIR}" +else + CONFIGURE_FLAGS+=" --download-fftw=ext/fftw-3.3.10.tar.gz" +fi + +CONFIGURE_FLAGS+=" --with-cuda=0" # +CONFIGURE_FLAGS+=" --with-debugging=0" # by default Petsc is build in debug mode +CONFIGURE_FLAGS+=" --with-petsc4py=yes" +CONFIGURE_FLAGS+=" --download-slepc-configure-arguments=--with-slepc4py=yes" + +if [ -f "${NATIVE_PATH}/libmetis.so" ] && [ "${SAT_metis_IS_NATIVE}" == "1" ]; then + CONFIGURE_FLAGS+=" --with-metis=1" +elif [ -n "${METIS_ROOT_DIR}" ] && [ "${SAT_metis_IS_NATIVE}" != "1" ]; then + CONFIGURE_FLAGS+=" --with-metis-dir=${METIS_ROOT_DIR}" +else + CONFIGURE_FLAGS+=" --download-metis=ext/metis-5.1.0-p11.tar.gz" +fi + +echo +if [ -n "${SAT_HPC}" ]; then + CONFIUGRE_FLAGS+=" --with-med-dir=${MEDFILE_ROOT_DIR}" + + if [ -f "${NATIVE_PATH}/libHYPRE_core.so" ]; then + CONFIGURE_FLAGS+=" --with-hypre=1" + else + CONFIGURE_FLAGS+=" --download-hypre=ext/hypre-2.29.0.tar.gz" + fi + + if [ -f "${NATIVE_PATH}/libptscotch.so" ] && [ "${SAT_ptscotch_IS_NATIVE}" == "1" ]; then + CONFIGURE_FLAGS+=" --with-ptscotch=1" + elif [ -n "${PTSCOTCH_ROOT_DIR}" ] && [ "${SAT_ptscotch_IS_NATIVE}" != "1" ]; then + CONFIGURE_FLAGS+=" --with-ptscoth=${PTSCOTCH_ROOT_DIR}" + else + CONFIGURE_FLAGS+=" --download-ptscotch=ext/scotch_7.0.3.tar.gz" + fi + + if [ -n "${MPI4PY_ROOT_DIR}" ]; then + CONFIGURE_FLAGS+=" --with-mpi4py-dir=${MPI4PY_ROOT_DIR}" + else + CONFIGURE_FLAGS+=" --download-mpi4py=ext/mpi4py-3.1.5.tar.gz" + fi + + CONFIGURE_FLAGS+=" --with-mpi-dir=${MPI_ROOT_DIR}" + +else + CONFIGURE_FLAGS+=" --with-mpi=0" +fi + +CONFIGURE_FLAGS+=" --PETSC_ARCH=installed-arch-linux2-c-opt" +CONFIGURE_FLAGS+=" --PETSC_DIR=${BUILD_DIR}" + +echo "*** configure --prefix=${PRODUCT_INSTALL} ${CONFIGURE_FLAGS}" +if ! ./configure --prefix=${PRODUCT_INSTALL} ${CONFIGURE_FLAGS} +then + echo "ERROR on configure" + exit 1 +fi + +echo +echo "*** make" $MAKE_OPTIONS +if ! make "$MAKE_OPTIONS" +then + echo "ERROR on make" + exit 2 +fi + +# CentOS 6 automatically set PETSC_ARCH to arch-linux2-c-debug : remove arch specification +# MAKE_OPTIONS=$MAKE_OPTIONS" PETSC_ARCH=arch-linux-c-debug" + +echo +echo "*** make install" +if ! make "$MAKE_OPTIONS" install +then + echo "ERROR on make install" + exit 3 +fi + +echo +echo "*** make check" +if ! make "$MAKE_OPTIONS" check +then + echo "ERROR on make check" + exit 4 +fi + +echo +echo "########## END" + diff --git a/products/env_scripts/assimulo.py b/products/env_scripts/assimulo.py new file mode 100644 index 0000000..0887324 --- /dev/null +++ b/products/env_scripts/assimulo.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os + +def set_env(env, prereq_dir, version): + pyver = 'python' + env.get('PYTHON_VERSION') + env.set("ASSIMULO_ROOT_DIR",prereq_dir) + env.prepend("PYTHONPATH",os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/env_scripts/nose_py3.py b/products/env_scripts/nose_py3.py new file mode 100644 index 0000000..8680ea3 --- /dev/null +++ b/products/env_scripts/nose_py3.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +#-*- coding:utf-8 -*- + +import os.path +import platform + +def set_env(env, prereq_dir, version): + env.set('NOSE_PY3_ROOT_DIR',prereq_dir) + if not platform.system() == "Windows" : + pyver = 'python' + env.get('PYTHON_VERSION') + env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages')) + +def set_nativ_env(env): + pass diff --git a/products/freetype.pyconf b/products/freetype.pyconf index 32109e4..5845a1b 100755 --- a/products/freetype.pyconf +++ b/products/freetype.pyconf @@ -4,13 +4,6 @@ default : build_source : "script" compil_script : $name + $VARS.scriptExtension get_source : "archive" - system_info : - { - rpm : ["freetype"] - rpm_dev : ["freetype-devel"] - apt : ["libfreetype6"] - apt_dev : ["libfreetype6-dev"] - } environ : { env_script : $name + ".py" diff --git a/products/gmsh.pyconf b/products/gmsh.pyconf index 7170f52..d296739 100644 --- a/products/gmsh.pyconf +++ b/products/gmsh.pyconf @@ -47,6 +47,14 @@ version_4_10_3_with_CAS_7_8_FD38: patches : ["gmsh-4.10.3-gc13-fc38.patch", "gmsh-4.10.3-occt780.patch"] } +version_4_10_3_with_CAS_7_8_UB24_04: +{ + archive_info : {archive_name : "gmsh-4.10.3.tar.gz"} + compil_script : "gmsh-4.10.3.sh" + depend : ["CAS","lapack","hdf5","medfile", "cgns"] + patches : ["gmsh-4.10.3-gc13-fc38.patch", "gmsh-4.10.3-occt780.patch"] +} + version_4_10_3_with_CAS_7_8_win: { archive_info : {archive_name : "gmsh-4.10.3.tar.gz"} diff --git a/products/nose_py3.pyconf b/products/nose_py3.pyconf new file mode 100644 index 0000000..93a58a5 --- /dev/null +++ b/products/nose_py3.pyconf @@ -0,0 +1,37 @@ +default : +{ + name : "nose-py3" + build_source : "script" + compil_script : 'pip_install' + $VARS.scriptExtension + archive_info : {archive_prefix : "nose_py3"} + get_source : "archive" + patches : [] + environ : + { + env_script : "nose_py3.py" + } + depend : ['Python', 'setuptools', 'numpy', 'scipy', 'six', 'Sphinx', 'Jinja2', + 'Pygments', 'docutils', 'snowballstemmer', 'Babel', 'alabaster', + 'imagesize', 'requests', 'packaging'] + opt_depend: [] + source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name + build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name + install_dir : 'base' + properties : + { + incremental : "yes" + pip : "yes" + } +} + +version_1_6_9_no_pip: +{ + compil_script: "nose-py3-1.6.9" + $VARS.scriptExtension + archive_info : {archive_name : "nose_py3-1.6.9.tar.gz"} + properties : + { + incremental : "yes" + pip : "no" + } +} + diff --git a/products/omniORBpy.pyconf b/products/omniORBpy.pyconf index 78d1a76..a455114 100644 --- a/products/omniORBpy.pyconf +++ b/products/omniORBpy.pyconf @@ -23,3 +23,8 @@ version_4_2_5: { patches: ['omniORBpy-4.2.5.p1.patch'] } + +version_4_2_5_UB24_04: +{ + patches: ['omniORBpy-4.2.5.p1.patch','omniORBpy-4.2.5.p2.patch'] +} diff --git a/products/patches/FIELDS-UB24.04-V9_13_0-PyUnicode_AsWideCharString.patch b/products/patches/FIELDS-UB24.04-V9_13_0-PyUnicode_AsWideCharString.patch new file mode 100644 index 0000000..997aab5 --- /dev/null +++ b/products/patches/FIELDS-UB24.04-V9_13_0-PyUnicode_AsWideCharString.patch @@ -0,0 +1,194 @@ +diff --git a/src/MEDCalc/cmp/MEDPresentation.cxx b/src/MEDCalc/cmp/MEDPresentation.cxx +index c11a292a7..a76d206d9 100644 +--- a/src/MEDCalc/cmp/MEDPresentation.cxx ++++ b/src/MEDCalc/cmp/MEDPresentation.cxx +@@ -37,7 +37,6 @@ Py_EncodeLocale(const wchar_t *text, size_t *error_pos) + return _Py_wchar2char(text, error_pos); + } + #endif +- + const std::string MEDPresentation::PROP_NAME = "name"; + const std::string MEDPresentation::PROP_NB_COMPONENTS = "nbComponents"; + const std::string MEDPresentation::PROP_SELECTED_COMPONENT = "selectedComponent"; +@@ -995,7 +994,11 @@ MEDPresentation::fillAvailableFieldComponents() + PyObject* p_obj = getPythonObjectFromMain("__compo"); + std::string compo; + if (p_obj && PyUnicode_Check(p_obj)) ++#if PY_VERSION_HEX < 0x030c0000 // See PEP-623 + compo = std::string(Py_EncodeLocale(PyUnicode_AS_UNICODE(p_obj), NULL)); // pointing to internal Python memory, so make a copy!! ++#else ++ compo = std::string(Py_EncodeLocale(PyUnicode_AsWideCharString(p_obj,NULL), NULL)); ++#endif + else + { + STDLOG("Unexpected Python error"); +diff --git a/src/MEDCalculator/Swig/MEDCalculatorTypemaps.i b/src/MEDCalculator/Swig/MEDCalculatorTypemaps.i +index 8e7f4c292..e8d2c3aa4 100644 +--- a/src/MEDCalculator/Swig/MEDCalculatorTypemaps.i ++++ b/src/MEDCalculator/Swig/MEDCalculatorTypemaps.i +@@ -48,7 +48,11 @@ void convertPyObjToRS(PyObject *o, MEDCoupling::MEDCalculatorDBRangeSelection& r + } + if(PyString_Check(o)) + { ++#if PY_VERSION_HEX < 0x030c0000 // See PEP-623 + char *s=Py_EncodeLocale(PyUnicode_AS_UNICODE(o), NULL); ++#else ++ char *s=Py_EncodeLocale(PyUnicode_AsWideCharString(o,NULL), NULL); ++#endif + rs=s; + return ; + } +diff --git a/src/MEDCalculator/Swig/SPythonParser.cxx b/src/MEDCalculator/Swig/SPythonParser.cxx +index 265f8093d..f76737e31 100644 +--- a/src/MEDCalculator/Swig/SPythonParser.cxx ++++ b/src/MEDCalculator/Swig/SPythonParser.cxx +@@ -459,7 +459,11 @@ TypeOfEntity SPythonPredParser::getTypeOfVar(const std::string& var, PyObject *g + oss << TMPVAR << "=type(" << var << ").__name__"; + PyRun_String(oss.str().c_str(),Py_single_input,glob,loc); + PyObject *p=PyDict_GetItemString(glob,TMPVAR); ++#if PY_VERSION_HEX < 0x030c0000 // See PEP-623 + const char *type=Py_EncodeLocale(PyUnicode_AS_UNICODE(p), NULL); ++#else ++ const char *type=Py_EncodeLocale(PyUnicode_AsWideCharString(p,NULL), NULL); ++#endif + std::string typecpp=std::string(type); + if(typecpp=="function") + return FUNC_TYPE; +diff --git a/src/MEDCouplingCorba_Swig/Client/MEDCouplingClient.i b/src/MEDCouplingCorba_Swig/Client/MEDCouplingClient.i +index 492fd186b..b91866ddc 100644 +--- a/src/MEDCouplingCorba_Swig/Client/MEDCouplingClient.i ++++ b/src/MEDCouplingCorba_Swig/Client/MEDCouplingClient.i +@@ -69,6 +69,7 @@ Py_EncodeLocale(const wchar_t *text, size_t *error_pos) + #endif + %} + ++ + namespace MEDCoupling + { + class MEDCouplingFieldDoubleClient +@@ -88,7 +89,7 @@ namespace MEDCoupling + PyObject *iorField=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",fieldPtr); + if(!iorField) + throw INTERP_KERNEL::Exception("Error : the input parameter of MEDCouplingFieldDoubleClient.New appears to differ from CORBA reference ! Expecting a FieldDouble CORBA reference !"); +- char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorField), NULL); ++ char *ior=Py_EncodeLocale(PyUnicode_AsWideCharString(iorField,NULL), NULL); + int argc=0; + CORBA::ORB_var orb=CORBA::ORB_init(argc,0); + CORBA::Object_var fieldPtrCpp=orb->string_to_object(ior); +@@ -120,7 +121,7 @@ namespace MEDCoupling + PyObject *iorField=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",fieldPtr); + if(!iorField) + throw INTERP_KERNEL::Exception("Error : the input parameter of MEDCouplingFieldTemplateClient.New appears to differ from CORBA reference ! Expecting a FieldTemplate CORBA reference !"); +- char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorField), NULL); ++ char *ior=Py_EncodeLocale(PyUnicode_AsWideCharString(iorField,NULL), NULL); + int argc=0; + CORBA::ORB_var orb=CORBA::ORB_init(argc,0); + CORBA::Object_var fieldPtrCpp=orb->string_to_object(ior); +@@ -152,7 +153,7 @@ namespace MEDCoupling + PyObject *iorField=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",fieldPtr); + if(!iorField) + throw INTERP_KERNEL::Exception("Error : the input parameter of MEDCouplingFieldTemplateClient.New appears to differ from CORBA reference ! Expecting a MultiFields CORBA reference !"); +- char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorField), NULL); ++ char *ior=Py_EncodeLocale(PyUnicode_AsWideCharString(iorField,NULL), NULL); + int argc=0; + CORBA::ORB_var orb=CORBA::ORB_init(argc,0); + CORBA::Object_var fieldPtrCpp=orb->string_to_object(ior); +@@ -185,7 +186,7 @@ namespace MEDCoupling + PyObject *iorField=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",fieldPtr); + if(!iorField) + throw INTERP_KERNEL::Exception("Error : the input parameter of MEDCouplingFieldOverTimeClient.New appears to differ from CORBA reference ! Expecting a FieldOverTime CORBA reference !"); +- char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorField), NULL); ++ char *ior=Py_EncodeLocale(PyUnicode_AsWideCharString(iorField,NULL), NULL); + int argc=0; + CORBA::ORB_var orb=CORBA::ORB_init(argc,0); + CORBA::Object_var fieldPtrCpp=orb->string_to_object(ior); +@@ -217,7 +218,7 @@ namespace MEDCoupling + PyObject *iorMesh=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",meshPtr); + if(!iorMesh) + throw INTERP_KERNEL::Exception("Error : the input parameter of MEDCouplingMeshClient.New appears to differ from CORBA reference ! Expecting a MeshCorbaInterface CORBA reference !"); +- char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorMesh), NULL); ++ char *ior=Py_EncodeLocale(PyUnicode_AsWideCharString(iorMesh,NULL), NULL); + int argc=0; + CORBA::ORB_var orb=CORBA::ORB_init(argc,0); + CORBA::Object_var meshPtrCpp=orb->string_to_object(ior); +@@ -292,7 +293,7 @@ namespace MEDCoupling + PyObject *iorMesh=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",meshPtr); + if(!iorMesh) + throw INTERP_KERNEL::Exception("Error : the input parameter of MEDCouplingUMeshClient.New appears to differ from CORBA reference ! Expecting a UMeshCorbaInterface CORBA reference !"); +- char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorMesh), NULL); ++ char *ior=Py_EncodeLocale(PyUnicode_AsWideCharString(iorMesh,NULL), NULL); + int argc=0; + CORBA::ORB_var orb=CORBA::ORB_init(argc,0); + CORBA::Object_var meshPtrCpp=orb->string_to_object(ior); +@@ -324,7 +325,7 @@ namespace MEDCoupling + PyObject *iorMesh=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",meshPtr); + if(!iorMesh) + throw INTERP_KERNEL::Exception("Error : the input parameter of MEDCoupling1SGTUMeshClient.New appears to differ from CORBA reference ! Expecting a 1SGTUMeshCorbaInterface CORBA reference !"); +- char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorMesh), NULL); ++ char *ior=Py_EncodeLocale(PyUnicode_AsWideCharString(iorMesh,NULL), NULL); + int argc=0; + CORBA::ORB_var orb=CORBA::ORB_init(argc,0); + CORBA::Object_var meshPtrCpp=orb->string_to_object(ior); +@@ -356,7 +357,7 @@ namespace MEDCoupling + PyObject *iorMesh=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",meshPtr); + if(!iorMesh) + throw INTERP_KERNEL::Exception("Error : the input parameter of MEDCoupling1DGTUMeshClient.New appears to differ from CORBA reference ! Expecting a 1DGTUMeshCorbaInterface CORBA reference !"); +- char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorMesh), NULL); ++ char *ior=Py_EncodeLocale(PyUnicode_AsWideCharString(iorMesh,NULL), NULL); + int argc=0; + CORBA::ORB_var orb=CORBA::ORB_init(argc,0); + CORBA::Object_var meshPtrCpp=orb->string_to_object(ior); +@@ -388,7 +389,7 @@ namespace MEDCoupling + PyObject *iorMesh=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",meshPtr); + if(!iorMesh) + throw INTERP_KERNEL::Exception("Error : the input parameter of MEDCouplingExtrudedMeshClient.New appears to differ from CORBA reference ! Expecting an ExtrudedMeshCorbaInterface CORBA reference !"); +- char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorMesh), NULL); ++ char *ior=Py_EncodeLocale(PyUnicode_AsWideCharString(iorMesh,NULL), NULL); + int argc=0; + CORBA::ORB_var orb=CORBA::ORB_init(argc,0); + CORBA::Object_var meshPtrCpp=orb->string_to_object(ior); +@@ -420,7 +421,7 @@ namespace MEDCoupling + PyObject *iorMesh=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",meshPtr); + if(!iorMesh) + throw INTERP_KERNEL::Exception("Error : the input parameter of MEDCouplingCMeshClient.New appears to differ from CORBA reference ! Expecting a CMeshCorbaInterface CORBA reference !"); +- char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorMesh), NULL); ++ char *ior=Py_EncodeLocale(PyUnicode_AsWideCharString(iorMesh,NULL), NULL); + int argc=0; + CORBA::ORB_var orb=CORBA::ORB_init(argc,0); + CORBA::Object_var meshPtrCpp=orb->string_to_object(ior); +@@ -452,7 +453,7 @@ namespace MEDCoupling + PyObject *iorMesh=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",meshPtr); + if(!iorMesh) + throw INTERP_KERNEL::Exception("Error : the input parameter of MEDCouplingIMeshClient.New appears to differ from CORBA reference ! Expecting a IMeshCorbaInterface CORBA reference !"); +- char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorMesh), NULL); ++ char *ior=Py_EncodeLocale(PyUnicode_AsWideCharString(iorMesh,NULL), NULL); + int argc=0; + CORBA::ORB_var orb=CORBA::ORB_init(argc,0); + CORBA::Object_var meshPtrCpp=orb->string_to_object(ior); +@@ -484,7 +485,7 @@ namespace MEDCoupling + PyObject *iorMesh=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",meshPtr); + if(!iorMesh) + throw INTERP_KERNEL::Exception("Error : the input parameter of MEDCouplingCurveLinearMeshClient.New appears to differ from CORBA reference ! Expecting a CurveLinearMeshCorbaInterface CORBA reference !"); +- char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorMesh), NULL); ++ char *ior=Py_EncodeLocale(PyUnicode_AsWideCharString(iorMesh,NULL), NULL); + int argc=0; + CORBA::ORB_var orb=CORBA::ORB_init(argc,0); + CORBA::Object_var meshPtrCpp=orb->string_to_object(ior); +@@ -516,7 +517,7 @@ namespace MEDCoupling + PyObject *iorMesh=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",meshPtr); + if(!iorMesh) + throw INTERP_KERNEL::Exception("Error : the input parameter of DataArrayDoubleClient.New appears to differ from CORBA reference ! Expecting a DataArrayDoubleCorbaInterface CORBA reference !"); +- char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorMesh), NULL); ++ char *ior=Py_EncodeLocale(PyUnicode_AsWideCharString(iorMesh,NULL), NULL); + int argc=0; + CORBA::ORB_var orb=CORBA::ORB_init(argc,0); + CORBA::Object_var meshPtrCpp=orb->string_to_object(ior); +@@ -548,7 +549,7 @@ namespace MEDCoupling + PyObject *iorMesh=PyObject_CallMethod(orbPython,(char*)"object_to_string",(char*)"O",meshPtr); + if(!iorMesh) + throw INTERP_KERNEL::Exception("Error : the input parameter of DataArrayIntClient.New appears to differ from CORBA reference ! Expecting a DataArrayIntCorbaInterface CORBA reference !"); +- char *ior=Py_EncodeLocale(PyUnicode_AS_UNICODE(iorMesh), NULL); ++ char *ior=Py_EncodeLocale(PyUnicode_AsWideCharString(iorMesh,NULL), NULL); + int argc=0; + CORBA::ORB_var orb=CORBA::ORB_init(argc,0); + CORBA::Object_var meshPtrCpp=orb->string_to_object(ior); diff --git a/products/patches/KERNEL-UB24.04-V9_13_0_configparser.patch b/products/patches/KERNEL-UB24.04-V9_13_0_configparser.patch new file mode 100644 index 0000000..550b08a --- /dev/null +++ b/products/patches/KERNEL-UB24.04-V9_13_0_configparser.patch @@ -0,0 +1,55 @@ +diff --git a/bin/parseConfigFile.py b/bin/parseConfigFile.py +index 20d782c8c..adf1809c8 100644 +--- a/bin/parseConfigFile.py ++++ b/bin/parseConfigFile.py +@@ -17,8 +17,13 @@ + # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com + # + +-import configparser + import os ++import sys ++import configparser ++if sys.sys.version_info[:2] >= (3,12): ++ import configparser.ConfigParser as SafeConfigParser ++else: ++ import configparser.SafeConfigParser + import logging + import re + from io import StringIO +@@ -46,9 +51,9 @@ def _expandSystemVariables(key, val): + # + + # :TRICKY: So ugly solution... +-class MultiOptSafeConfigParser(configparser.SafeConfigParser): ++class MultiOptSafeConfigParser(SafeConfigParser): + def __init__(self): +- configparser.SafeConfigParser.__init__(self) ++ SafeConfigParser.__init__(self) + + # copied from python 2.6.8 Lib.ConfigParser.py + # modified (see code comments) to handle duplicate keys +diff --git a/bin/salomeContext.py b/bin/salomeContext.py +index 04f960e31..fa95889c5 100755 +--- a/bin/salomeContext.py ++++ b/bin/salomeContext.py +@@ -22,6 +22,10 @@ import os + import sys + import logging + import configparser ++if sys.sys.version_info[:2] >= (3,12): ++ import configparser.ConfigParser as SafeConfigParser ++else: ++ import configparser.SafeConfigParser + + from parseConfigFile import parseConfigFile + +@@ -542,7 +546,7 @@ class SalomeContext: + # + + def _showSoftwareVersions(self, softwares=None): +- config = configparser.SafeConfigParser() ++ config = SafeConfigParser() + absoluteAppliPath = os.getenv('ABSOLUTE_APPLI_PATH') + filename = os.path.join(absoluteAppliPath, "sha1_collections.txt") + versions = {} diff --git a/products/patches/PARAVIS-UB24.04-V9_13_0-PyUnicode_AsWideCharString.patch b/products/patches/PARAVIS-UB24.04-V9_13_0-PyUnicode_AsWideCharString.patch new file mode 100644 index 0000000..0942831 --- /dev/null +++ b/products/patches/PARAVIS-UB24.04-V9_13_0-PyUnicode_AsWideCharString.patch @@ -0,0 +1,19 @@ +diff --git a/src/PVGUI/PVGUI_Module.cxx b/src/PVGUI/PVGUI_Module.cxx +index 79bfdccd..e739b812 100644 +--- a/src/PVGUI/PVGUI_Module.cxx ++++ b/src/PVGUI/PVGUI_Module.cxx +@@ -839,12 +839,12 @@ QString PVGUI_Module::getTraceString() + vtkSmartPyObject save_cam(PyObject_GetAttrString(trace_mod, const_cast("SaveCameras"))); + vtkSmartPyObject camera_trace(PyObject_CallMethod(save_cam, const_cast("get_trace"), NULL)); + // Convert to a single string +- vtkSmartPyObject ret(PyUnicode_FromUnicode(Py_DecodeLocale(end_line.toStdString().c_str(), NULL), end_line.size())); ++ vtkSmartPyObject ret(PyUnicode_FromWideChar(Py_DecodeLocale(end_line.toStdString().c_str(), NULL), end_line.size())); + vtkSmartPyObject final_string(PyObject_CallMethod(ret, const_cast("join"), + const_cast("O"), (PyObject*)camera_trace)); + if (PyUnicode_CheckExact(final_string)) + { +- QString camera_qs(Py_EncodeLocale(PyUnicode_AS_UNICODE(final_string.GetPointer()), NULL)); // deep copy ++ QString camera_qs(Py_EncodeLocale(PyUnicode_AsWideCharString(final_string.GetPointer(),NULL), NULL)); // deep copy + traceString = traceString + end_line + end_line + QString("#### saving camera placements for all active views") + + end_line + end_line + camera_qs + end_line; + } diff --git a/products/patches/omniORBpy-4.2.5.p2.patch b/products/patches/omniORBpy-4.2.5.p2.patch new file mode 100644 index 0000000..83aca8b --- /dev/null +++ b/products/patches/omniORBpy-4.2.5.p2.patch @@ -0,0 +1,23 @@ +diff -Naur omniORBpy/modules/pyMarshal.cc omniORBpy_dev/modules/pyMarshal.cc +--- omniORBpy/modules/pyMarshal.cc 2021-03-23 18:24:39.000000000 +0100 ++++ omniORBpy_dev/modules/pyMarshal.cc 2024-07-02 13:10:36.387696661 +0200 +@@ -2987,8 +2987,8 @@ + OMNIORB_CHECK_TCS_W_FOR_UNMARSHAL(stream.TCS_W(), stream); + + Py_UNICODE c = stream.TCS_W()->unmarshalWChar(stream); +- PyObject* r_o = PyUnicode_FromUnicode(0, 1); +- Py_UNICODE* str = PyUnicode_AS_UNICODE(r_o); ++ PyObject* r_o = PyUnicode_FromWideChar(0, 1); ++ Py_UNICODE* str = PyUnicode_AsWideCharString(r_o, NULL); + str[0] = c; + str[1] = 0; + return r_o; +@@ -4641,7 +4641,7 @@ + omniPy::formatString("Expecting unicode, got %r", + "O", a_o->ob_type)); + } +- if (PyUnicode_GET_SIZE(a_o) != 1) { ++ if (PyUnicode_GetLength(a_o) != 1) { + THROW_PY_BAD_PARAM(BAD_PARAM_WrongPythonType, compstatus, + omniPy::formatString("Expecting unicode of length 1, " + "got %r", diff --git a/products/patches/paraview-5.11.0.p007-mpi4py-UB24.patch b/products/patches/paraview-5.11.0.p007-mpi4py-UB24.patch new file mode 100644 index 0000000..1bc43bd --- /dev/null +++ b/products/patches/paraview-5.11.0.p007-mpi4py-UB24.patch @@ -0,0 +1,1940 @@ +--- ParaView/VTK/ThirdParty/mpi4py/vtkmpi4py/src/mpi4py.MPI.c 2022-11-18 15:26:55.000000000 +0100 ++++ ParaView_dev/VTK/ThirdParty/mpi4py/vtkmpi4py/src/mpi4py.MPI.c 2024-06-27 08:35:16.687060202 +0200 +@@ -1,14 +1,16 @@ +-/* Generated by Cython 0.29.21 */ ++/* Generated by Cython 0.29.32 */ + ++#ifndef PY_SSIZE_T_CLEAN + #define PY_SSIZE_T_CLEAN ++#endif /* PY_SSIZE_T_CLEAN */ + #include "Python.h" + #ifndef Py_PYTHON_H + #error Python headers needed to compile C extensions, please install development version of Python. + #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) + #error Cython requires Python 2.6+ or Python 3.3+. + #else +-#define CYTHON_ABI "0_29_21" +-#define CYTHON_HEX_VERSION 0x001D15F0 ++#define CYTHON_ABI "0_29_32" ++#define CYTHON_HEX_VERSION 0x001D20F0 + #define CYTHON_FUTURE_DIVISION 0 + #include + #ifndef offsetof +@@ -47,6 +49,7 @@ + #define CYTHON_COMPILING_IN_PYPY 1 + #define CYTHON_COMPILING_IN_PYSTON 0 + #define CYTHON_COMPILING_IN_CPYTHON 0 ++ #define CYTHON_COMPILING_IN_NOGIL 0 + #undef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 0 + #undef CYTHON_USE_PYTYPE_LOOKUP +@@ -83,10 +86,14 @@ + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 ++ #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC ++ #define CYTHON_UPDATE_DESCRIPTOR_DOC (PYPY_VERSION_HEX >= 0x07030900) ++ #endif + #elif defined(PYSTON_VERSION) + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_PYSTON 1 + #define CYTHON_COMPILING_IN_CPYTHON 0 ++ #define CYTHON_COMPILING_IN_NOGIL 0 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif +@@ -124,10 +131,59 @@ + #define CYTHON_USE_DICT_VERSIONS 0 + #undef CYTHON_USE_EXC_INFO_STACK + #define CYTHON_USE_EXC_INFO_STACK 0 ++ #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC ++ #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 ++ #endif ++#elif defined(PY_NOGIL) ++ #define CYTHON_COMPILING_IN_PYPY 0 ++ #define CYTHON_COMPILING_IN_PYSTON 0 ++ #define CYTHON_COMPILING_IN_CPYTHON 0 ++ #define CYTHON_COMPILING_IN_NOGIL 1 ++ #ifndef CYTHON_USE_TYPE_SLOTS ++ #define CYTHON_USE_TYPE_SLOTS 1 ++ #endif ++ #undef CYTHON_USE_PYTYPE_LOOKUP ++ #define CYTHON_USE_PYTYPE_LOOKUP 0 ++ #ifndef CYTHON_USE_ASYNC_SLOTS ++ #define CYTHON_USE_ASYNC_SLOTS 1 ++ #endif ++ #undef CYTHON_USE_PYLIST_INTERNALS ++ #define CYTHON_USE_PYLIST_INTERNALS 0 ++ #ifndef CYTHON_USE_UNICODE_INTERNALS ++ #define CYTHON_USE_UNICODE_INTERNALS 1 ++ #endif ++ #undef CYTHON_USE_UNICODE_WRITER ++ #define CYTHON_USE_UNICODE_WRITER 0 ++ #undef CYTHON_USE_PYLONG_INTERNALS ++ #define CYTHON_USE_PYLONG_INTERNALS 0 ++ #ifndef CYTHON_AVOID_BORROWED_REFS ++ #define CYTHON_AVOID_BORROWED_REFS 0 ++ #endif ++ #ifndef CYTHON_ASSUME_SAFE_MACROS ++ #define CYTHON_ASSUME_SAFE_MACROS 1 ++ #endif ++ #ifndef CYTHON_UNPACK_METHODS ++ #define CYTHON_UNPACK_METHODS 1 ++ #endif ++ #undef CYTHON_FAST_THREAD_STATE ++ #define CYTHON_FAST_THREAD_STATE 0 ++ #undef CYTHON_FAST_PYCALL ++ #define CYTHON_FAST_PYCALL 0 ++ #ifndef CYTHON_PEP489_MULTI_PHASE_INIT ++ #define CYTHON_PEP489_MULTI_PHASE_INIT 1 ++ #endif ++ #ifndef CYTHON_USE_TP_FINALIZE ++ #define CYTHON_USE_TP_FINALIZE 1 ++ #endif ++ #undef CYTHON_USE_DICT_VERSIONS ++ #define CYTHON_USE_DICT_VERSIONS 0 ++ #undef CYTHON_USE_EXC_INFO_STACK ++ #define CYTHON_USE_EXC_INFO_STACK 0 + #else + #define CYTHON_COMPILING_IN_PYPY 0 + #define CYTHON_COMPILING_IN_PYSTON 0 + #define CYTHON_COMPILING_IN_CPYTHON 1 ++ #define CYTHON_COMPILING_IN_NOGIL 0 + #ifndef CYTHON_USE_TYPE_SLOTS + #define CYTHON_USE_TYPE_SLOTS 1 + #endif +@@ -155,7 +211,7 @@ + #ifndef CYTHON_USE_UNICODE_INTERNALS + #define CYTHON_USE_UNICODE_INTERNALS 1 + #endif +- #if PY_VERSION_HEX < 0x030300F0 ++ #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 + #undef CYTHON_USE_UNICODE_WRITER + #define CYTHON_USE_UNICODE_WRITER 0 + #elif !defined(CYTHON_USE_UNICODE_WRITER) +@@ -170,11 +226,14 @@ + #ifndef CYTHON_UNPACK_METHODS + #define CYTHON_UNPACK_METHODS 1 + #endif +- #ifndef CYTHON_FAST_THREAD_STATE +- #define CYTHON_FAST_THREAD_STATE 1 ++ #if PY_VERSION_HEX >= 0x030B00A4 ++ #undef CYTHON_FAST_THREAD_STATE ++ #define CYTHON_FAST_THREAD_STATE 0 ++ #elif !defined(CYTHON_FAST_THREAD_STATE) ++ #define CYTHON_FAST_THREAD_STATE (PY_VERSION_HEX < 0x030C00A6) + #endif + #ifndef CYTHON_FAST_PYCALL +- #define CYTHON_FAST_PYCALL 1 ++ #define CYTHON_FAST_PYCALL (PY_VERSION_HEX < 0x030A0000) + #endif + #ifndef CYTHON_PEP489_MULTI_PHASE_INIT + #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000) +@@ -185,15 +244,23 @@ + #ifndef CYTHON_USE_DICT_VERSIONS + #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1) + #endif +- #ifndef CYTHON_USE_EXC_INFO_STACK ++ #if PY_VERSION_HEX >= 0x030B00A4 ++ #undef CYTHON_USE_EXC_INFO_STACK ++ #define CYTHON_USE_EXC_INFO_STACK 0 ++ #elif !defined(CYTHON_USE_EXC_INFO_STACK) + #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3) + #endif ++ #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC ++ #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 ++ #endif + #endif + #if !defined(CYTHON_FAST_PYCCALL) + #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) + #endif + #if CYTHON_USE_PYLONG_INTERNALS +- #include "longintrepr.h" ++ #if PY_MAJOR_VERSION < 3 ++ #include "longintrepr.h" ++ #endif + #undef SHIFT + #undef BASE + #undef MASK +@@ -310,9 +377,68 @@ + #define __Pyx_DefaultClassType PyClass_Type + #else + #define __Pyx_BUILTIN_MODULE_NAME "builtins" +-#if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2 +- #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ +- PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) ++ #define __Pyx_DefaultClassType PyType_Type ++#if PY_VERSION_HEX >= 0x030B00A1 ++ static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int k, int l, int s, int f, ++ PyObject *code, PyObject *c, PyObject* n, PyObject *v, ++ PyObject *fv, PyObject *cell, PyObject* fn, ++ PyObject *name, int fline, PyObject *lnos) { ++ PyObject *kwds=NULL, *argcount=NULL, *posonlyargcount=NULL, *kwonlyargcount=NULL; ++ PyObject *nlocals=NULL, *stacksize=NULL, *flags=NULL, *replace=NULL, *call_result=NULL, *empty=NULL; ++ const char *fn_cstr=NULL; ++ const char *name_cstr=NULL; ++ PyCodeObject* co=NULL; ++ PyObject *type, *value, *traceback; ++ PyErr_Fetch(&type, &value, &traceback); ++ if (!(kwds=PyDict_New())) goto end; ++ if (!(argcount=PyLong_FromLong(a))) goto end; ++ if (PyDict_SetItemString(kwds, "co_argcount", argcount) != 0) goto end; ++ if (!(posonlyargcount=PyLong_FromLong(0))) goto end; ++ if (PyDict_SetItemString(kwds, "co_posonlyargcount", posonlyargcount) != 0) goto end; ++ if (!(kwonlyargcount=PyLong_FromLong(k))) goto end; ++ if (PyDict_SetItemString(kwds, "co_kwonlyargcount", kwonlyargcount) != 0) goto end; ++ if (!(nlocals=PyLong_FromLong(l))) goto end; ++ if (PyDict_SetItemString(kwds, "co_nlocals", nlocals) != 0) goto end; ++ if (!(stacksize=PyLong_FromLong(s))) goto end; ++ if (PyDict_SetItemString(kwds, "co_stacksize", stacksize) != 0) goto end; ++ if (!(flags=PyLong_FromLong(f))) goto end; ++ if (PyDict_SetItemString(kwds, "co_flags", flags) != 0) goto end; ++ if (PyDict_SetItemString(kwds, "co_code", code) != 0) goto end; ++ if (PyDict_SetItemString(kwds, "co_consts", c) != 0) goto end; ++ if (PyDict_SetItemString(kwds, "co_names", n) != 0) goto end; ++ if (PyDict_SetItemString(kwds, "co_varnames", v) != 0) goto end; ++ if (PyDict_SetItemString(kwds, "co_freevars", fv) != 0) goto end; ++ if (PyDict_SetItemString(kwds, "co_cellvars", cell) != 0) goto end; ++ if (PyDict_SetItemString(kwds, "co_linetable", lnos) != 0) goto end; ++ if (!(fn_cstr=PyUnicode_AsUTF8AndSize(fn, NULL))) goto end; ++ if (!(name_cstr=PyUnicode_AsUTF8AndSize(name, NULL))) goto end; ++ if (!(co = PyCode_NewEmpty(fn_cstr, name_cstr, fline))) goto end; ++ if (!(replace = PyObject_GetAttrString((PyObject*)co, "replace"))) goto cleanup_code_too; ++ if (!(empty = PyTuple_New(0))) goto cleanup_code_too; // unfortunately __pyx_empty_tuple isn't available here ++ if (!(call_result = PyObject_Call(replace, empty, kwds))) goto cleanup_code_too; ++ Py_XDECREF((PyObject*)co); ++ co = (PyCodeObject*)call_result; ++ call_result = NULL; ++ if (0) { ++ cleanup_code_too: ++ Py_XDECREF((PyObject*)co); ++ co = NULL; ++ } ++ end: ++ Py_XDECREF(kwds); ++ Py_XDECREF(argcount); ++ Py_XDECREF(posonlyargcount); ++ Py_XDECREF(kwonlyargcount); ++ Py_XDECREF(nlocals); ++ Py_XDECREF(stacksize); ++ Py_XDECREF(replace); ++ Py_XDECREF(call_result); ++ Py_XDECREF(empty); ++ if (type) { ++ PyErr_Restore(type, value, traceback); ++ } ++ return co; ++ } + #else + #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +@@ -426,8 +552,12 @@ + #endif + #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) + #define CYTHON_PEP393_ENABLED 1 +- #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ ++ #if defined(_PyUnicode_Ready) ++ #define __Pyx_PyUnicode_READY(op) (likely(_PyUnicode_Ready(op)) ?\ + 0 : _PyUnicode_Ready((PyObject *)(op))) ++ #else ++ #define __Pyx_PyUnicode_READY(op) (0) ++ #endif + #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) + #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) + #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) +@@ -435,8 +565,12 @@ + #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) + #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) + #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) +- #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE) +- #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) ++ #if defined(_PyUnicode_Ready) && defined(PyUnicode_GET_SIZE) ++ #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 ++ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(_PyUnicode_Ready(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) ++ #else ++ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(_PyUnicode_Ready(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) ++ #endif + #else + #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) + #endif +@@ -542,10 +676,10 @@ + #if PY_VERSION_HEX < 0x030200A4 + typedef long Py_hash_t; + #define __Pyx_PyInt_FromHash_t PyInt_FromLong +- #define __Pyx_PyInt_AsHash_t PyInt_AsLong ++ #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t + #else + #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t +- #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t ++ #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t + #endif + #if PY_MAJOR_VERSION >= 3 + #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func)) +@@ -570,8 +704,10 @@ + } __Pyx_PyAsyncMethodsStruct; + #endif + +-#if defined(WIN32) || defined(MS_WINDOWS) +- #define _USE_MATH_DEFINES ++#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS) ++ #if !defined(_USE_MATH_DEFINES) ++ #define _USE_MATH_DEFINES ++ #endif + #endif + #include + #ifdef NAN +@@ -703,6 +839,7 @@ + (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) + static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); + static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); ++static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*); + #if CYTHON_ASSUME_SAFE_MACROS + #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) + #else +@@ -1747,13 +1884,21 @@ + #ifndef Py_MEMBER_SIZE + #define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) + #endif ++#if CYTHON_FAST_PYCALL + static size_t __pyx_pyframe_localsplus_offset = 0; + #include "frameobject.h" ++#if PY_VERSION_HEX >= 0x030b00a6 ++ #ifndef Py_BUILD_CORE ++ #define Py_BUILD_CORE 1 ++ #endif ++ #include "internal/pycore_frame.h" ++#endif + #define __Pxy_PyFrame_Initialize_Offsets()\ + ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ + (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) + #define __Pyx_PyFrame_GetLocalsplus(frame)\ + (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) ++#endif // CYTHON_FAST_PYCALL + #endif + + /* PyObjectCall.proto */ +@@ -2340,26 +2485,19 @@ + static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename); + +-/* CIntToPy.proto */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Aint(MPI_Aint value); +- +-/* CIntToPy.proto */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); +- +-/* CIntToPy.proto */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); ++/* GCCDiagnostics.proto */ ++#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) ++#define __Pyx_HAS_GCC_DIAGNOSTIC ++#endif + +-/* CIntToPy.proto */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Offset(MPI_Offset value); ++/* CIntFromPy.proto */ ++static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); + + /* CIntToPy.proto */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Fint(MPI_Fint value); ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Aint(MPI_Aint value); + + /* CIntToPy.proto */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Count(MPI_Count value); +- +-/* CIntFromPy.proto */ +-static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); + + /* CIntFromPy.proto */ + static CYTHON_INLINE MPI_Aint __Pyx_PyInt_As_MPI_Aint(PyObject *); +@@ -2370,12 +2508,24 @@ + /* CIntFromPy.proto */ + static CYTHON_INLINE MPI_Offset __Pyx_PyInt_As_MPI_Offset(PyObject *); + ++/* CIntToPy.proto */ ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); ++ + /* CIntFromPy.proto */ + static CYTHON_INLINE unsigned char __Pyx_PyInt_As_unsigned_char(PyObject *); + ++/* CIntToPy.proto */ ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Offset(MPI_Offset value); ++ ++/* CIntToPy.proto */ ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Fint(MPI_Fint value); ++ + /* CIntFromPy.proto */ + static CYTHON_INLINE MPI_Fint __Pyx_PyInt_As_MPI_Fint(PyObject *); + ++/* CIntToPy.proto */ ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Count(MPI_Count value); ++ + /* CIntFromPy.proto */ + static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); + +@@ -16973,7 +17123,8 @@ + PyObject *__pyx_t_2 = NULL; + int __pyx_t_3; + int __pyx_t_4; +- MPI_Status __pyx_t_5; ++ PyObject *__pyx_t_5 = NULL; ++ MPI_Status __pyx_t_6; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +@@ -17073,10 +17224,13 @@ + PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); + __PYX_ERR(13, 79, __pyx_L1_error) + } +- __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_self->query_fn, __pyx_t_1, __pyx_v_self->kargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 79, __pyx_L1_error) ++ __pyx_t_2 = PyDict_Copy(__pyx_v_self->kargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 79, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); ++ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_self->query_fn, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 79, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; ++ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "mpi4py/MPI/reqimpl.pxi":80 + * sts.ob_mpi = status[0] +@@ -17085,8 +17239,8 @@ + * if self.cancel_fn is None: + * MPI_Status_set_cancelled(status, 0) + */ +- __pyx_t_5 = __pyx_v_sts->ob_mpi; +- (__pyx_v_status[0]) = __pyx_t_5; ++ __pyx_t_6 = __pyx_v_sts->ob_mpi; ++ (__pyx_v_status[0]) = __pyx_t_6; + + /* "mpi4py/MPI/reqimpl.pxi":81 + * self.query_fn(sts, *self.args, **self.kargs) +@@ -17148,6 +17302,7 @@ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); ++ __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("mpi4py.MPI._p_greq.query", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; +@@ -17170,6 +17325,7 @@ + int __pyx_t_1; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; ++ PyObject *__pyx_t_4 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +@@ -17201,9 +17357,12 @@ + PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); + __PYX_ERR(13, 87, __pyx_L1_error) + } +- __pyx_t_3 = __Pyx_PyObject_Call(__pyx_v_self->free_fn, __pyx_v_self->args, __pyx_v_self->kargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 87, __pyx_L1_error) ++ __pyx_t_3 = PyDict_Copy(__pyx_v_self->kargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 87, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); ++ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_v_self->free_fn, __pyx_v_self->args, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 87, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; ++ __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + + /* "mpi4py/MPI/reqimpl.pxi":86 + * +@@ -17235,6 +17394,7 @@ + /* function exit code */ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); ++ __Pyx_XDECREF(__pyx_t_4); + __Pyx_AddTraceback("mpi4py.MPI._p_greq.free", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; +@@ -17257,6 +17417,7 @@ + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_4 = NULL; ++ PyObject *__pyx_t_5 = NULL; + int __pyx_lineno = 0; + const char *__pyx_filename = NULL; + int __pyx_clineno = 0; +@@ -17298,10 +17459,13 @@ + PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType"); + __PYX_ERR(13, 92, __pyx_L1_error) + } +- __pyx_t_4 = __Pyx_PyObject_Call(__pyx_v_self->cancel_fn, __pyx_t_3, __pyx_v_self->kargs); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 92, __pyx_L1_error) ++ __pyx_t_4 = PyDict_Copy(__pyx_v_self->kargs); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 92, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); ++ __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_self->cancel_fn, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(13, 92, __pyx_L1_error) ++ __Pyx_GOTREF(__pyx_t_5); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; ++ __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "mpi4py/MPI/reqimpl.pxi":91 + * +@@ -17334,6 +17498,7 @@ + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_3); + __Pyx_XDECREF(__pyx_t_4); ++ __Pyx_XDECREF(__pyx_t_5); + __Pyx_AddTraceback("mpi4py.MPI._p_greq.cancel", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = -1; + __pyx_L0:; +@@ -157790,12 +157955,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static PyObject *__pyx_tp_new_6mpi4py_3MPI_Datatype(PyTypeObject *t, PyObject *a, PyObject *k) { +@@ -158075,12 +158243,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static PyObject *__pyx_tp_new_6mpi4py_3MPI_Request(PyTypeObject *t, PyObject *a, PyObject *k) { +@@ -158285,12 +158456,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static PyObject *__pyx_tp_new_6mpi4py_3MPI_Prequest(PyTypeObject *t, PyObject *a, PyObject *k) { +@@ -158370,12 +158544,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static PyObject *__pyx_tp_new_6mpi4py_3MPI_Grequest(PyTypeObject *t, PyObject *a, PyObject *k) { +@@ -158455,12 +158632,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static PyObject *__pyx_tp_new_6mpi4py_3MPI_Message(PyTypeObject *t, PyObject *a, PyObject *k) { +@@ -158656,12 +158836,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static PyObject *__pyx_tp_new_6mpi4py_3MPI_Op(PyTypeObject *t, PyObject *a, PyObject *k) { +@@ -158843,12 +159026,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static PyObject *__pyx_tp_new_6mpi4py_3MPI_Group(PyTypeObject *t, PyObject *a, PyObject *k) { +@@ -159039,12 +159225,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static PyObject *__pyx_tp_new_6mpi4py_3MPI_Info(PyTypeObject *t, PyObject *a, PyObject *k) { +@@ -159258,12 +159447,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static PyObject *__pyx_tp_new_6mpi4py_3MPI_Errhandler(PyTypeObject *t, PyObject *a, PyObject *k) { +@@ -159428,12 +159620,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static PyObject *__pyx_tp_new_6mpi4py_3MPI_Comm(PyTypeObject *t, PyObject *a, PyObject *k) { +@@ -159770,12 +159965,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static PyObject *__pyx_tp_new_6mpi4py_3MPI_Intracomm(PyTypeObject *t, PyObject *a, PyObject *k) { +@@ -159870,12 +160068,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static PyObject *__pyx_tp_new_6mpi4py_3MPI_Topocomm(PyTypeObject *t, PyObject *a, PyObject *k) { +@@ -159999,12 +160200,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static PyObject *__pyx_tp_new_6mpi4py_3MPI_Cartcomm(PyTypeObject *t, PyObject *a, PyObject *k) { +@@ -160122,12 +160326,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static PyObject *__pyx_tp_new_6mpi4py_3MPI_Graphcomm(PyTypeObject *t, PyObject *a, PyObject *k) { +@@ -160253,12 +160460,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static PyObject *__pyx_tp_new_6mpi4py_3MPI_Distgraphcomm(PyTypeObject *t, PyObject *a, PyObject *k) { +@@ -160338,12 +160548,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static PyObject *__pyx_tp_new_6mpi4py_3MPI_Intercomm(PyTypeObject *t, PyObject *a, PyObject *k) { +@@ -160438,12 +160651,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static PyObject *__pyx_tp_new_6mpi4py_3MPI_Win(PyTypeObject *t, PyObject *a, PyObject *k) { +@@ -160749,12 +160965,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static PyObject *__pyx_tp_new_6mpi4py_3MPI_File(PyTypeObject *t, PyObject *a, PyObject *k) { +@@ -161025,12 +161244,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static PyObject *__pyx_tp_new_6mpi4py_3MPI_memory(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +@@ -161201,12 +161423,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_mem(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +@@ -161297,12 +161522,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + static struct __pyx_vtabstruct_6mpi4py_3MPI__p_greq __pyx_vtable_6mpi4py_3MPI__p_greq; + +@@ -161443,12 +161671,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + static struct __pyx_vtabstruct_6mpi4py_3MPI__p_datarep __pyx_vtable_6mpi4py_3MPI__p_datarep; + +@@ -161573,12 +161804,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_keyval(PyTypeObject *t, PyObject *a, PyObject *k) { +@@ -161740,12 +161974,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static PyObject *__pyx_tp_new_6mpi4py_3MPI__p_message(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { +@@ -161868,12 +162105,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_p2p __pyx_vtable_6mpi4py_3MPI__p_msg_p2p; + +@@ -161982,12 +162222,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_cco __pyx_vtable_6mpi4py_3MPI__p_msg_cco; + +@@ -162112,12 +162355,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_ccow __pyx_vtable_6mpi4py_3MPI__p_msg_ccow; + +@@ -162234,12 +162480,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_rma __pyx_vtable_6mpi4py_3MPI__p_msg_rma; + +@@ -162372,12 +162621,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + static struct __pyx_vtabstruct_6mpi4py_3MPI__p_msg_io __pyx_vtable_6mpi4py_3MPI__p_msg_io; + +@@ -162486,12 +162738,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + static struct __pyx_vtabstruct_6mpi4py_3MPI_Pickle __pyx_vtable_6mpi4py_3MPI_Pickle; + +@@ -162637,12 +162892,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, /*tp_finalize*/ + #endif +- #if PY_VERSION_HEX >= 0x030800b1 ++ #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, /*tp_vectorcall*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, /*tp_print*/ + #endif ++ #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, /*tp_pypy_flags*/ ++ #endif + }; + + static PyMethodDef __pyx_methods[] = { +@@ -165349,11 +165607,9 @@ + #endif + /*--- Library function declarations ---*/ + /*--- Threads initialization code ---*/ +- #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS +- #ifdef WITH_THREAD /* Python build with threading support? */ ++ #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS + PyEval_InitThreads(); + #endif +- #endif + /*--- Module creation code ---*/ + #if CYTHON_PEP489_MULTI_PHASE_INIT + __pyx_m = __pyx_pyinit_module; +@@ -177405,7 +177661,7 @@ + #if CYTHON_COMPILING_IN_CPYTHON + static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; +- ternaryfunc call = func->ob_type->tp_call; ++ ternaryfunc call = Py_TYPE(func)->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) +@@ -177492,7 +177748,7 @@ + if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { + return __Pyx_PyObject_CallMethO(func, arg); + #if CYTHON_FAST_PYCCALL +- } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { ++ } else if (__Pyx_PyFastCFunction_Check(func)) { + return __Pyx_PyCFunction_FastCall(func, &arg, 1); + #endif + } +@@ -177684,7 +177940,7 @@ + return (equals == Py_EQ); + } else { + int result; +-#if CYTHON_USE_UNICODE_INTERNALS ++#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000) + Py_hash_t hash1, hash2; + hash1 = ((PyBytesObject*)s1)->ob_shash; + hash2 = ((PyBytesObject*)s2)->ob_shash; +@@ -177958,12 +178214,12 @@ + Py_XDECREF(tmp_tb); + #else + PyThreadState *tstate = __Pyx_PyThreadState_Current; +- PyObject* tmp_tb = tstate->curexc_traceback; +- if (tb != tmp_tb) { +- Py_INCREF(tb); +- tstate->curexc_traceback = tb; +- Py_XDECREF(tmp_tb); +- } ++ /*PyObject* tmp_tb = tstate->curexc_traceback;*/ ++ /*if (tb != tmp_tb) {*/ ++ /*Py_INCREF(tb);*/ ++ /*tstate->curexc_traceback = tb;*/ ++ /*Py_XDECREF(tmp_tb);*/ ++ /*}*/ + #endif + } + bad: +@@ -179668,7 +179924,8 @@ + __Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args) + { + #if PY_MAJOR_VERSION >= 3 +- return PyUnicode_FromString(m->func.m_ml->ml_name); ++ Py_INCREF(m->func_qualname); ++ return m->func_qualname; + #else + return PyString_FromString(m->func.m_ml->ml_name); + #endif +@@ -179871,6 +180128,9 @@ + self = PyTuple_GetItem(args, 0); + if (unlikely(!self)) { + Py_DECREF(new_args); ++ PyErr_Format(PyExc_TypeError, ++ "unbound method %.200S() needs an argument", ++ cyfunc->func_qualname); + return NULL; + } + result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); +@@ -179939,12 +180199,15 @@ + #if PY_VERSION_HEX >= 0x030400a1 + 0, + #endif +-#if PY_VERSION_HEX >= 0x030800b1 ++#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + 0, + #endif + #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 + 0, + #endif ++#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 ++ 0, ++#endif + }; + static int __pyx_CyFunction_init(void) { + __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type); +@@ -180194,7 +180457,7 @@ + } + if (!use_cline) { + c_line = 0; +- PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); ++ (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); + } + else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { + c_line = 0; +@@ -180288,33 +180551,40 @@ + #include "compile.h" + #include "frameobject.h" + #include "traceback.h" ++#if PY_VERSION_HEX >= 0x030b00a6 ++ #ifndef Py_BUILD_CORE ++ #define Py_BUILD_CORE 1 ++ #endif ++ #include "internal/pycore_frame.h" ++#endif + static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { +- PyCodeObject *py_code = 0; +- PyObject *py_srcfile = 0; +- PyObject *py_funcname = 0; ++ PyCodeObject *py_code = NULL; ++ PyObject *py_funcname = NULL; + #if PY_MAJOR_VERSION < 3 ++ PyObject *py_srcfile = NULL; + py_srcfile = PyString_FromString(filename); +- #else +- py_srcfile = PyUnicode_FromString(filename); +- #endif + if (!py_srcfile) goto bad; ++ #endif + if (c_line) { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); ++ if (!py_funcname) goto bad; + #else + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); ++ if (!py_funcname) goto bad; ++ funcname = PyUnicode_AsUTF8(py_funcname); ++ if (!funcname) goto bad; + #endif + } + else { + #if PY_MAJOR_VERSION < 3 + py_funcname = PyString_FromString(funcname); +- #else +- py_funcname = PyUnicode_FromString(funcname); ++ if (!py_funcname) goto bad; + #endif + } +- if (!py_funcname) goto bad; ++ #if PY_MAJOR_VERSION < 3 + py_code = __Pyx_PyCode_New( + 0, + 0, +@@ -180333,11 +180603,16 @@ + __pyx_empty_bytes /*PyObject *lnotab*/ + ); + Py_DECREF(py_srcfile); +- Py_DECREF(py_funcname); ++ #else ++ py_code = PyCode_NewEmpty(filename, funcname, py_line); ++ #endif ++ Py_XDECREF(py_funcname); // XDECREF since it's only set on Py3 if cline + return py_code; + bad: +- Py_XDECREF(py_srcfile); + Py_XDECREF(py_funcname); ++ #if PY_MAJOR_VERSION < 3 ++ Py_XDECREF(py_srcfile); ++ #endif + return NULL; + } + static void __Pyx_AddTraceback(const char *funcname, int c_line, +@@ -180345,14 +180620,24 @@ + PyCodeObject *py_code = 0; + PyFrameObject *py_frame = 0; + PyThreadState *tstate = __Pyx_PyThreadState_Current; ++ PyObject *ptype, *pvalue, *ptraceback; + if (c_line) { + c_line = __Pyx_CLineForTraceback(tstate, c_line); + } + py_code = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!py_code) { ++ __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); + py_code = __Pyx_CreateCodeObjectForTraceback( + funcname, c_line, py_line, filename); +- if (!py_code) goto bad; ++ if (!py_code) { ++ /* If the code object creation fails, then we should clear the ++ fetched exception references and propagate the new exception */ ++ Py_XDECREF(ptype); ++ Py_XDECREF(pvalue); ++ Py_XDECREF(ptraceback); ++ goto bad; ++ } ++ __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); + } + py_frame = PyFrame_New( +@@ -180391,195 +180676,16 @@ + return (target_type) value;\ + } + +-/* CIntToPy */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Aint(MPI_Aint value) { +- const MPI_Aint neg_one = (MPI_Aint) ((MPI_Aint) 0 - (MPI_Aint) 1), const_zero = (MPI_Aint) 0; +- const int is_unsigned = neg_one > const_zero; +- if (is_unsigned) { +- if (sizeof(MPI_Aint) < sizeof(long)) { +- return PyInt_FromLong((long) value); +- } else if (sizeof(MPI_Aint) <= sizeof(unsigned long)) { +- return PyLong_FromUnsignedLong((unsigned long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(MPI_Aint) <= sizeof(unsigned PY_LONG_LONG)) { +- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +-#endif +- } +- } else { +- if (sizeof(MPI_Aint) <= sizeof(long)) { +- return PyInt_FromLong((long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(MPI_Aint) <= sizeof(PY_LONG_LONG)) { +- return PyLong_FromLongLong((PY_LONG_LONG) value); +-#endif +- } +- } +- { +- int one = 1; int little = (int)*(unsigned char *)&one; +- unsigned char *bytes = (unsigned char *)&value; +- return _PyLong_FromByteArray(bytes, sizeof(MPI_Aint), +- little, !is_unsigned); +- } +-} +- +-/* CIntToPy */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { +- const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0; +- const int is_unsigned = neg_one > const_zero; +- if (is_unsigned) { +- if (sizeof(int) < sizeof(long)) { +- return PyInt_FromLong((long) value); +- } else if (sizeof(int) <= sizeof(unsigned long)) { +- return PyLong_FromUnsignedLong((unsigned long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { +- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +-#endif +- } +- } else { +- if (sizeof(int) <= sizeof(long)) { +- return PyInt_FromLong((long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { +- return PyLong_FromLongLong((PY_LONG_LONG) value); +-#endif +- } +- } +- { +- int one = 1; int little = (int)*(unsigned char *)&one; +- unsigned char *bytes = (unsigned char *)&value; +- return _PyLong_FromByteArray(bytes, sizeof(int), +- little, !is_unsigned); +- } +-} +- +-/* CIntToPy */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { +- const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0; +- const int is_unsigned = neg_one > const_zero; +- if (is_unsigned) { +- if (sizeof(long) < sizeof(long)) { +- return PyInt_FromLong((long) value); +- } else if (sizeof(long) <= sizeof(unsigned long)) { +- return PyLong_FromUnsignedLong((unsigned long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { +- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +-#endif +- } +- } else { +- if (sizeof(long) <= sizeof(long)) { +- return PyInt_FromLong((long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { +- return PyLong_FromLongLong((PY_LONG_LONG) value); +-#endif +- } +- } +- { +- int one = 1; int little = (int)*(unsigned char *)&one; +- unsigned char *bytes = (unsigned char *)&value; +- return _PyLong_FromByteArray(bytes, sizeof(long), +- little, !is_unsigned); +- } +-} +- +-/* CIntToPy */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Offset(MPI_Offset value) { +- const MPI_Offset neg_one = (MPI_Offset) ((MPI_Offset) 0 - (MPI_Offset) 1), const_zero = (MPI_Offset) 0; +- const int is_unsigned = neg_one > const_zero; +- if (is_unsigned) { +- if (sizeof(MPI_Offset) < sizeof(long)) { +- return PyInt_FromLong((long) value); +- } else if (sizeof(MPI_Offset) <= sizeof(unsigned long)) { +- return PyLong_FromUnsignedLong((unsigned long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(MPI_Offset) <= sizeof(unsigned PY_LONG_LONG)) { +- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +-#endif +- } +- } else { +- if (sizeof(MPI_Offset) <= sizeof(long)) { +- return PyInt_FromLong((long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(MPI_Offset) <= sizeof(PY_LONG_LONG)) { +- return PyLong_FromLongLong((PY_LONG_LONG) value); +-#endif +- } +- } +- { +- int one = 1; int little = (int)*(unsigned char *)&one; +- unsigned char *bytes = (unsigned char *)&value; +- return _PyLong_FromByteArray(bytes, sizeof(MPI_Offset), +- little, !is_unsigned); +- } +-} +- +-/* CIntToPy */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Fint(MPI_Fint value) { +- const MPI_Fint neg_one = (MPI_Fint) ((MPI_Fint) 0 - (MPI_Fint) 1), const_zero = (MPI_Fint) 0; +- const int is_unsigned = neg_one > const_zero; +- if (is_unsigned) { +- if (sizeof(MPI_Fint) < sizeof(long)) { +- return PyInt_FromLong((long) value); +- } else if (sizeof(MPI_Fint) <= sizeof(unsigned long)) { +- return PyLong_FromUnsignedLong((unsigned long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(MPI_Fint) <= sizeof(unsigned PY_LONG_LONG)) { +- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +-#endif +- } +- } else { +- if (sizeof(MPI_Fint) <= sizeof(long)) { +- return PyInt_FromLong((long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(MPI_Fint) <= sizeof(PY_LONG_LONG)) { +- return PyLong_FromLongLong((PY_LONG_LONG) value); +-#endif +- } +- } +- { +- int one = 1; int little = (int)*(unsigned char *)&one; +- unsigned char *bytes = (unsigned char *)&value; +- return _PyLong_FromByteArray(bytes, sizeof(MPI_Fint), +- little, !is_unsigned); +- } +-} +- +-/* CIntToPy */ +-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Count(MPI_Count value) { +- const MPI_Count neg_one = (MPI_Count) ((MPI_Count) 0 - (MPI_Count) 1), const_zero = (MPI_Count) 0; +- const int is_unsigned = neg_one > const_zero; +- if (is_unsigned) { +- if (sizeof(MPI_Count) < sizeof(long)) { +- return PyInt_FromLong((long) value); +- } else if (sizeof(MPI_Count) <= sizeof(unsigned long)) { +- return PyLong_FromUnsignedLong((unsigned long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(MPI_Count) <= sizeof(unsigned PY_LONG_LONG)) { +- return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +-#endif +- } +- } else { +- if (sizeof(MPI_Count) <= sizeof(long)) { +- return PyInt_FromLong((long) value); +-#ifdef HAVE_LONG_LONG +- } else if (sizeof(MPI_Count) <= sizeof(PY_LONG_LONG)) { +- return PyLong_FromLongLong((PY_LONG_LONG) value); +-#endif +- } +- } +- { +- int one = 1; int little = (int)*(unsigned char *)&one; +- unsigned char *bytes = (unsigned char *)&value; +- return _PyLong_FromByteArray(bytes, sizeof(MPI_Count), +- little, !is_unsigned); +- } +-} +- + /* CIntFromPy */ + static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { +- const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const int neg_one = (int) -1, const_zero = (int) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif + const int is_unsigned = neg_one > const_zero; + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { +@@ -180597,7 +180703,7 @@ + if (likely(PyLong_Check(x))) { + if (is_unsigned) { + #if CYTHON_USE_PYLONG_INTERNALS +- const digit* digits = ((PyLongObject*)x)->ob_digit; ++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit; + switch (Py_SIZE(x)) { + case 0: return (int) 0; + case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) +@@ -180652,7 +180758,7 @@ + } + } else { + #if CYTHON_USE_PYLONG_INTERNALS +- const digit* digits = ((PyLongObject*)x)->ob_digit; ++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit; + switch (Py_SIZE(x)) { + case 0: return (int) 0; + case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) +@@ -180766,9 +180872,92 @@ + return (int) -1; + } + ++/* CIntToPy */ ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Aint(MPI_Aint value) { ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const MPI_Aint neg_one = (MPI_Aint) -1, const_zero = (MPI_Aint) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif ++ const int is_unsigned = neg_one > const_zero; ++ if (is_unsigned) { ++ if (sizeof(MPI_Aint) < sizeof(long)) { ++ return PyInt_FromLong((long) value); ++ } else if (sizeof(MPI_Aint) <= sizeof(unsigned long)) { ++ return PyLong_FromUnsignedLong((unsigned long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(MPI_Aint) <= sizeof(unsigned PY_LONG_LONG)) { ++ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); ++#endif ++ } ++ } else { ++ if (sizeof(MPI_Aint) <= sizeof(long)) { ++ return PyInt_FromLong((long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(MPI_Aint) <= sizeof(PY_LONG_LONG)) { ++ return PyLong_FromLongLong((PY_LONG_LONG) value); ++#endif ++ } ++ } ++ { ++ int one = 1; int little = (int)*(unsigned char *)&one; ++ unsigned char *bytes = (unsigned char *)&value; ++ return _PyLong_FromByteArray(bytes, sizeof(MPI_Aint), ++ little, !is_unsigned); ++ } ++} ++ ++/* CIntToPy */ ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const int neg_one = (int) -1, const_zero = (int) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif ++ const int is_unsigned = neg_one > const_zero; ++ if (is_unsigned) { ++ if (sizeof(int) < sizeof(long)) { ++ return PyInt_FromLong((long) value); ++ } else if (sizeof(int) <= sizeof(unsigned long)) { ++ return PyLong_FromUnsignedLong((unsigned long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { ++ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); ++#endif ++ } ++ } else { ++ if (sizeof(int) <= sizeof(long)) { ++ return PyInt_FromLong((long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { ++ return PyLong_FromLongLong((PY_LONG_LONG) value); ++#endif ++ } ++ } ++ { ++ int one = 1; int little = (int)*(unsigned char *)&one; ++ unsigned char *bytes = (unsigned char *)&value; ++ return _PyLong_FromByteArray(bytes, sizeof(int), ++ little, !is_unsigned); ++ } ++} ++ + /* CIntFromPy */ + static CYTHON_INLINE MPI_Aint __Pyx_PyInt_As_MPI_Aint(PyObject *x) { +- const MPI_Aint neg_one = (MPI_Aint) ((MPI_Aint) 0 - (MPI_Aint) 1), const_zero = (MPI_Aint) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const MPI_Aint neg_one = (MPI_Aint) -1, const_zero = (MPI_Aint) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif + const int is_unsigned = neg_one > const_zero; + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { +@@ -180786,7 +180975,7 @@ + if (likely(PyLong_Check(x))) { + if (is_unsigned) { + #if CYTHON_USE_PYLONG_INTERNALS +- const digit* digits = ((PyLongObject*)x)->ob_digit; ++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit; + switch (Py_SIZE(x)) { + case 0: return (MPI_Aint) 0; + case 1: __PYX_VERIFY_RETURN_INT(MPI_Aint, digit, digits[0]) +@@ -180841,7 +181030,7 @@ + } + } else { + #if CYTHON_USE_PYLONG_INTERNALS +- const digit* digits = ((PyLongObject*)x)->ob_digit; ++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit; + switch (Py_SIZE(x)) { + case 0: return (MPI_Aint) 0; + case -1: __PYX_VERIFY_RETURN_INT(MPI_Aint, sdigit, (sdigit) (-(sdigit)digits[0])) +@@ -180957,7 +181146,14 @@ + + /* CIntFromPy */ + static CYTHON_INLINE MPI_Count __Pyx_PyInt_As_MPI_Count(PyObject *x) { +- const MPI_Count neg_one = (MPI_Count) ((MPI_Count) 0 - (MPI_Count) 1), const_zero = (MPI_Count) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const MPI_Count neg_one = (MPI_Count) -1, const_zero = (MPI_Count) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif + const int is_unsigned = neg_one > const_zero; + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { +@@ -180975,7 +181171,7 @@ + if (likely(PyLong_Check(x))) { + if (is_unsigned) { + #if CYTHON_USE_PYLONG_INTERNALS +- const digit* digits = ((PyLongObject*)x)->ob_digit; ++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit; + switch (Py_SIZE(x)) { + case 0: return (MPI_Count) 0; + case 1: __PYX_VERIFY_RETURN_INT(MPI_Count, digit, digits[0]) +@@ -181030,7 +181226,7 @@ + } + } else { + #if CYTHON_USE_PYLONG_INTERNALS +- const digit* digits = ((PyLongObject*)x)->ob_digit; ++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit; + switch (Py_SIZE(x)) { + case 0: return (MPI_Count) 0; + case -1: __PYX_VERIFY_RETURN_INT(MPI_Count, sdigit, (sdigit) (-(sdigit)digits[0])) +@@ -181146,7 +181342,14 @@ + + /* CIntFromPy */ + static CYTHON_INLINE MPI_Offset __Pyx_PyInt_As_MPI_Offset(PyObject *x) { +- const MPI_Offset neg_one = (MPI_Offset) ((MPI_Offset) 0 - (MPI_Offset) 1), const_zero = (MPI_Offset) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const MPI_Offset neg_one = (MPI_Offset) -1, const_zero = (MPI_Offset) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif + const int is_unsigned = neg_one > const_zero; + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { +@@ -181164,7 +181367,7 @@ + if (likely(PyLong_Check(x))) { + if (is_unsigned) { + #if CYTHON_USE_PYLONG_INTERNALS +- const digit* digits = ((PyLongObject*)x)->ob_digit; ++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit; + switch (Py_SIZE(x)) { + case 0: return (MPI_Offset) 0; + case 1: __PYX_VERIFY_RETURN_INT(MPI_Offset, digit, digits[0]) +@@ -181219,7 +181422,7 @@ + } + } else { + #if CYTHON_USE_PYLONG_INTERNALS +- const digit* digits = ((PyLongObject*)x)->ob_digit; ++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit; + switch (Py_SIZE(x)) { + case 0: return (MPI_Offset) 0; + case -1: __PYX_VERIFY_RETURN_INT(MPI_Offset, sdigit, (sdigit) (-(sdigit)digits[0])) +@@ -181333,9 +181536,54 @@ + return (MPI_Offset) -1; + } + ++/* CIntToPy */ ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const long neg_one = (long) -1, const_zero = (long) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif ++ const int is_unsigned = neg_one > const_zero; ++ if (is_unsigned) { ++ if (sizeof(long) < sizeof(long)) { ++ return PyInt_FromLong((long) value); ++ } else if (sizeof(long) <= sizeof(unsigned long)) { ++ return PyLong_FromUnsignedLong((unsigned long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { ++ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); ++#endif ++ } ++ } else { ++ if (sizeof(long) <= sizeof(long)) { ++ return PyInt_FromLong((long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { ++ return PyLong_FromLongLong((PY_LONG_LONG) value); ++#endif ++ } ++ } ++ { ++ int one = 1; int little = (int)*(unsigned char *)&one; ++ unsigned char *bytes = (unsigned char *)&value; ++ return _PyLong_FromByteArray(bytes, sizeof(long), ++ little, !is_unsigned); ++ } ++} ++ + /* CIntFromPy */ + static CYTHON_INLINE unsigned char __Pyx_PyInt_As_unsigned_char(PyObject *x) { +- const unsigned char neg_one = (unsigned char) ((unsigned char) 0 - (unsigned char) 1), const_zero = (unsigned char) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const unsigned char neg_one = (unsigned char) -1, const_zero = (unsigned char) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif + const int is_unsigned = neg_one > const_zero; + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { +@@ -181353,7 +181601,7 @@ + if (likely(PyLong_Check(x))) { + if (is_unsigned) { + #if CYTHON_USE_PYLONG_INTERNALS +- const digit* digits = ((PyLongObject*)x)->ob_digit; ++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit; + switch (Py_SIZE(x)) { + case 0: return (unsigned char) 0; + case 1: __PYX_VERIFY_RETURN_INT(unsigned char, digit, digits[0]) +@@ -181408,7 +181656,7 @@ + } + } else { + #if CYTHON_USE_PYLONG_INTERNALS +- const digit* digits = ((PyLongObject*)x)->ob_digit; ++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit; + switch (Py_SIZE(x)) { + case 0: return (unsigned char) 0; + case -1: __PYX_VERIFY_RETURN_INT(unsigned char, sdigit, (sdigit) (-(sdigit)digits[0])) +@@ -181522,9 +181770,92 @@ + return (unsigned char) -1; + } + ++/* CIntToPy */ ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Offset(MPI_Offset value) { ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const MPI_Offset neg_one = (MPI_Offset) -1, const_zero = (MPI_Offset) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif ++ const int is_unsigned = neg_one > const_zero; ++ if (is_unsigned) { ++ if (sizeof(MPI_Offset) < sizeof(long)) { ++ return PyInt_FromLong((long) value); ++ } else if (sizeof(MPI_Offset) <= sizeof(unsigned long)) { ++ return PyLong_FromUnsignedLong((unsigned long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(MPI_Offset) <= sizeof(unsigned PY_LONG_LONG)) { ++ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); ++#endif ++ } ++ } else { ++ if (sizeof(MPI_Offset) <= sizeof(long)) { ++ return PyInt_FromLong((long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(MPI_Offset) <= sizeof(PY_LONG_LONG)) { ++ return PyLong_FromLongLong((PY_LONG_LONG) value); ++#endif ++ } ++ } ++ { ++ int one = 1; int little = (int)*(unsigned char *)&one; ++ unsigned char *bytes = (unsigned char *)&value; ++ return _PyLong_FromByteArray(bytes, sizeof(MPI_Offset), ++ little, !is_unsigned); ++ } ++} ++ ++/* CIntToPy */ ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Fint(MPI_Fint value) { ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const MPI_Fint neg_one = (MPI_Fint) -1, const_zero = (MPI_Fint) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif ++ const int is_unsigned = neg_one > const_zero; ++ if (is_unsigned) { ++ if (sizeof(MPI_Fint) < sizeof(long)) { ++ return PyInt_FromLong((long) value); ++ } else if (sizeof(MPI_Fint) <= sizeof(unsigned long)) { ++ return PyLong_FromUnsignedLong((unsigned long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(MPI_Fint) <= sizeof(unsigned PY_LONG_LONG)) { ++ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); ++#endif ++ } ++ } else { ++ if (sizeof(MPI_Fint) <= sizeof(long)) { ++ return PyInt_FromLong((long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(MPI_Fint) <= sizeof(PY_LONG_LONG)) { ++ return PyLong_FromLongLong((PY_LONG_LONG) value); ++#endif ++ } ++ } ++ { ++ int one = 1; int little = (int)*(unsigned char *)&one; ++ unsigned char *bytes = (unsigned char *)&value; ++ return _PyLong_FromByteArray(bytes, sizeof(MPI_Fint), ++ little, !is_unsigned); ++ } ++} ++ + /* CIntFromPy */ + static CYTHON_INLINE MPI_Fint __Pyx_PyInt_As_MPI_Fint(PyObject *x) { +- const MPI_Fint neg_one = (MPI_Fint) ((MPI_Fint) 0 - (MPI_Fint) 1), const_zero = (MPI_Fint) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const MPI_Fint neg_one = (MPI_Fint) -1, const_zero = (MPI_Fint) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif + const int is_unsigned = neg_one > const_zero; + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { +@@ -181542,7 +181873,7 @@ + if (likely(PyLong_Check(x))) { + if (is_unsigned) { + #if CYTHON_USE_PYLONG_INTERNALS +- const digit* digits = ((PyLongObject*)x)->ob_digit; ++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit; + switch (Py_SIZE(x)) { + case 0: return (MPI_Fint) 0; + case 1: __PYX_VERIFY_RETURN_INT(MPI_Fint, digit, digits[0]) +@@ -181597,7 +181928,7 @@ + } + } else { + #if CYTHON_USE_PYLONG_INTERNALS +- const digit* digits = ((PyLongObject*)x)->ob_digit; ++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit; + switch (Py_SIZE(x)) { + case 0: return (MPI_Fint) 0; + case -1: __PYX_VERIFY_RETURN_INT(MPI_Fint, sdigit, (sdigit) (-(sdigit)digits[0])) +@@ -181711,9 +182042,54 @@ + return (MPI_Fint) -1; + } + ++/* CIntToPy */ ++static CYTHON_INLINE PyObject* __Pyx_PyInt_From_MPI_Count(MPI_Count value) { ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const MPI_Count neg_one = (MPI_Count) -1, const_zero = (MPI_Count) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif ++ const int is_unsigned = neg_one > const_zero; ++ if (is_unsigned) { ++ if (sizeof(MPI_Count) < sizeof(long)) { ++ return PyInt_FromLong((long) value); ++ } else if (sizeof(MPI_Count) <= sizeof(unsigned long)) { ++ return PyLong_FromUnsignedLong((unsigned long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(MPI_Count) <= sizeof(unsigned PY_LONG_LONG)) { ++ return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); ++#endif ++ } ++ } else { ++ if (sizeof(MPI_Count) <= sizeof(long)) { ++ return PyInt_FromLong((long) value); ++#ifdef HAVE_LONG_LONG ++ } else if (sizeof(MPI_Count) <= sizeof(PY_LONG_LONG)) { ++ return PyLong_FromLongLong((PY_LONG_LONG) value); ++#endif ++ } ++ } ++ { ++ int one = 1; int little = (int)*(unsigned char *)&one; ++ unsigned char *bytes = (unsigned char *)&value; ++ return _PyLong_FromByteArray(bytes, sizeof(MPI_Count), ++ little, !is_unsigned); ++ } ++} ++ + /* CIntFromPy */ + static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { +- const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wconversion" ++#endif ++ const long neg_one = (long) -1, const_zero = (long) 0; ++#ifdef __Pyx_HAS_GCC_DIAGNOSTIC ++#pragma GCC diagnostic pop ++#endif + const int is_unsigned = neg_one > const_zero; + #if PY_MAJOR_VERSION < 3 + if (likely(PyInt_Check(x))) { +@@ -181731,7 +182107,7 @@ + if (likely(PyLong_Check(x))) { + if (is_unsigned) { + #if CYTHON_USE_PYLONG_INTERNALS +- const digit* digits = ((PyLongObject*)x)->ob_digit; ++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit; + switch (Py_SIZE(x)) { + case 0: return (long) 0; + case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) +@@ -181786,7 +182162,7 @@ + } + } else { + #if CYTHON_USE_PYLONG_INTERNALS +- const digit* digits = ((PyLongObject*)x)->ob_digit; ++ const digit* digits = ((PyLongObject*)x)->long_value.ob_digit; + switch (Py_SIZE(x)) { + case 0: return (long) 0; + case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) +@@ -182002,11 +182378,33 @@ + + /* CheckBinaryVersion */ + static int __Pyx_check_binary_version(void) { +- char ctversion[4], rtversion[4]; +- PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); +- PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); +- if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { ++ char ctversion[5]; ++ int same=1, i, found_dot; ++ const char* rt_from_call = Py_GetVersion(); ++ PyOS_snprintf(ctversion, 5, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); ++ found_dot = 0; ++ for (i = 0; i < 4; i++) { ++ if (!ctversion[i]) { ++ same = (rt_from_call[i] < '0' || rt_from_call[i] > '9'); ++ break; ++ } ++ if (rt_from_call[i] != ctversion[i]) { ++ same = 0; ++ break; ++ } ++ } ++ if (!same) { ++ char rtversion[5] = {'\0'}; + char message[200]; ++ for (i=0; i<4; ++i) { ++ if (rt_from_call[i] == '.') { ++ if (found_dot) break; ++ found_dot = 1; ++ } else if (rt_from_call[i] < '0' || rt_from_call[i] > '9') { ++ break; ++ } ++ rtversion[i] = rt_from_call[i]; ++ } + PyOS_snprintf(message, sizeof(message), + "compiletime version %s of module '%.100s' " + "does not match runtime version %s", +@@ -182252,7 +182650,7 @@ + #endif + if (likely(PyLong_CheckExact(b))) { + #if CYTHON_USE_PYLONG_INTERNALS +- const digit* digits = ((PyLongObject*)b)->ob_digit; ++ const digit* digits = ((PyLongObject*)b)->long_value.ob_digit; + const Py_ssize_t size = Py_SIZE(b); + if (likely(__Pyx_sst_abs(size) <= 1)) { + ival = likely(size) ? digits[0] : 0; +@@ -182301,6 +182699,23 @@ + Py_DECREF(x); + return ival; + } ++static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) { ++ if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) { ++ return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o); ++#if PY_MAJOR_VERSION < 3 ++ } else if (likely(PyInt_CheckExact(o))) { ++ return PyInt_AS_LONG(o); ++#endif ++ } else { ++ Py_ssize_t ival; ++ PyObject *x; ++ x = PyNumber_Index(o); ++ if (!x) return -1; ++ ival = PyInt_AsLong(x); ++ Py_DECREF(x); ++ return ival; ++ } ++} + static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { + return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); + } diff --git a/products/patches/paraview-5.11.0.p012-skip-FindTBB.patch b/products/patches/paraview-5.11.0.p012-skip-FindTBB.patch new file mode 100644 index 0000000..dd933d3 --- /dev/null +++ b/products/patches/paraview-5.11.0.p012-skip-FindTBB.patch @@ -0,0 +1,72 @@ +--- ParaView/VTK/CMake/vtkModule.cmake 2022-11-18 15:26:52.000000000 +0100 ++++ ParaView/VTK/CMake/vtkModule.cmake 2024-07-03 09:08:03.853091754 +0200 +@@ -4900,26 +4900,49 @@ + if (_vtk_export_exact) + set(_vtk_export_exact_arg EXACT) + endif () +- +- set(_vtk_export_module_content +-" find_package(${_vtk_export_package} +- ${_vtk_export_version} +- ${_vtk_export_exact_arg} +- ${_vtk_export_config_arg} +- \${_vtk_module_find_package_quiet} +- \${_vtk_module_find_package_required} +- COMPONENTS ${_vtk_export_components} +- OPTIONAL_COMPONENTS ${_vtk_export_optional_components}) +- if (NOT ${_vtk_export_package}_FOUND AND _vtk_module_find_package_fail_if_not_found) +- if (NOT \${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY) +- message(STATUS +- \"Could not find the \${CMAKE_FIND_PACKAGE_NAME} package due to a \" +- \"missing dependency: ${_vtk_export_package}\") +- endif () +- set(\"\${CMAKE_FIND_PACKAGE_NAME}_${_vtk_export_target_name}_FOUND\" 0) +- list(APPEND \"\${CMAKE_FIND_PACKAGE_NAME}_${_vtk_export_target_name}_NOT_FOUND_MESSAGE\" +- \"Failed to find the ${_vtk_export_package} package.\") +- endif ()\n") ++ if ("TBB" STREQUAL ${_vtk_export_package}) ++ set(_vtk_export_module_content ++ " if (NOT TARGET TBB::tbb) ++ find_package(${_vtk_export_package} ++ ${_vtk_export_version} ++ ${_vtk_export_exact_arg} ++ ${_vtk_export_config_arg} ++ \${_vtk_module_find_package_quiet} ++ \${_vtk_module_find_package_required} ++ COMPONENTS ${_vtk_export_components} ++ OPTIONAL_COMPONENTS ${_vtk_export_optional_components}) ++ endif() ++ if (NOT ${_vtk_export_package}_FOUND AND _vtk_module_find_package_fail_if_not_found) ++ if (NOT \${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY) ++ message(STATUS ++ \"Could not find the \${CMAKE_FIND_PACKAGE_NAME} package due to a \" ++ \"missing dependency: ${_vtk_export_package}\") ++ endif () ++ set(\"\${CMAKE_FIND_PACKAGE_NAME}_${_vtk_export_target_name}_FOUND\" 0) ++ list(APPEND \"\${CMAKE_FIND_PACKAGE_NAME}_${_vtk_export_target_name}_NOT_FOUND_MESSAGE\" ++ \"Failed to find the ${_vtk_export_package} package.\") ++ endif ()\n") ++ else() ++ set(_vtk_export_module_content ++ " find_package(${_vtk_export_package} ++ ${_vtk_export_version} ++ ${_vtk_export_exact_arg} ++ ${_vtk_export_config_arg} ++ \${_vtk_module_find_package_quiet} ++ \${_vtk_module_find_package_required} ++ COMPONENTS ${_vtk_export_components} ++ OPTIONAL_COMPONENTS ${_vtk_export_optional_components}) ++ if (NOT ${_vtk_export_package}_FOUND AND _vtk_module_find_package_fail_if_not_found) ++ if (NOT \${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY) ++ message(STATUS ++ \"Could not find the \${CMAKE_FIND_PACKAGE_NAME} package due to a \" ++ \"missing dependency: ${_vtk_export_package}\") ++ endif () ++ set(\"\${CMAKE_FIND_PACKAGE_NAME}_${_vtk_export_target_name}_FOUND\" 0) ++ list(APPEND \"\${CMAKE_FIND_PACKAGE_NAME}_${_vtk_export_target_name}_NOT_FOUND_MESSAGE\" ++ \"Failed to find the ${_vtk_export_package} package.\") ++ endif ()\n") ++ endif() + + string(APPEND _vtk_export_module_build_content "${_vtk_export_module_content}") + # Private usages should be guarded by `$` and can be diff --git a/products/patches/rkCommon-1.5.1-skip-FindTBB.patch b/products/patches/rkCommon-1.5.1-skip-FindTBB.patch new file mode 100644 index 0000000..611189b --- /dev/null +++ b/products/patches/rkCommon-1.5.1-skip-FindTBB.patch @@ -0,0 +1,13 @@ +--- rkCommon/cmake/rkcommon_macros.cmake 2021-02-09 12:57:36.000000000 +0100 ++++ rkCommon/cmake/rkcommon_macros.cmake 2024-07-03 11:13:34.044426549 +0200 +@@ -177,7 +177,9 @@ + endif() + + # Try getting TBB via config first +- find_package(TBB 2021.1 QUIET COMPONENTS tbb tbbmalloc CONFIG) ++ if (NOT TARGET TBB::tbb) ++ find_package(TBB 2021.1 QUIET COMPONENTS tbb tbbmalloc CONFIG) ++ endif() + if (TBB_FOUND) + list(APPEND RKCOMMON_TASKING_LIBS TBB::tbb TBB::tbbmalloc) + set(RKCOMMON_TASKING_DEFINITIONS RKCOMMON_TASKING_TBB) diff --git a/products/petsc.pyconf b/products/petsc.pyconf index 3bad8c3..3eefc52 100644 --- a/products/petsc.pyconf +++ b/products/petsc.pyconf @@ -21,6 +21,19 @@ default : post_script: "fix_permissions.sh" } +version_3_20_5 : +{ + compil_script : "petsc-3.20.5.sh" + depend : ["hdf5", "Python", "lapack","fftw", "llvm", "metis", "medfile", "mpi4py", "scotch" ] +} + +version_3_19_4 : +{ + compil_script : "petsc-3.19.4.sh" + depend : ["hdf5", "Python", "lapack","fftw", "llvm", "metis", "medfile" ] + patches: ['petsc-3.19.4-mpi4py.patch','petsc-3.19.4-libpath.patch'] +} + version_3_17_0 : { compil_script : "petsc-3.17.0.sh" diff --git a/products/rkCommon.pyconf b/products/rkCommon.pyconf index 2cb8ab0..b934b84 100644 --- a/products/rkCommon.pyconf +++ b/products/rkCommon.pyconf @@ -27,3 +27,8 @@ default_win : single_install_dir : "yes" } } + +version_1_5_1_UB24_04 : +{ + patches: ['rkCommon-1.5.1-skip-FindTBB.patch'] +} diff --git a/products/salome_system.pyconf b/products/salome_system.pyconf index 6fa9b8c..d5e5477 100644 --- a/products/salome_system.pyconf +++ b/products/salome_system.pyconf @@ -22,7 +22,7 @@ default : "libXpm-devel", "libXft-devel", "sqlite-devel", "libcurl-devel", "libXt-devel", "libXcursor-devel", "tbb-devel"] apt : ["libbsd0", "libbz2-1.0", "libc6", "libdrm2", "libegl1", "libexif12", "libexpat1", "libfftw3-double3", "libfontconfig1", "libgl1", "libglu1-mesa", "libgomp1", "libgphoto2-6", "libice6", - "libjbig0", "libltdl7", "liblzma5", "libncurses5", "libnuma1", "libpcre3", "libquadmath0", + "libjbig0", "libltdl7", "liblzma5", "libnuma1", "libpcre3", "libquadmath0", "libraw1394-11", "libsm6", "libstdc++6", "libtiff5", "libudev1", "libusb-1.0-0", "libuuid1", "libx11-6", "libx11-xcb1", "libxau6", "libxcb1", "libxcb-glx0", "libxcb-xfixes0", "libxcb-xkb1", "libxdmcp6", "libxext6", "libxft2", "libxi6", "libxkbcommon0", "libxkbcommon-x11-0", "libxmu6", "libxpm4", "libxrender1", @@ -36,15 +36,15 @@ default : # specific to some platform(s) "CO7" : { - rpm : ["lz4", "gsl", "libgeotiff", "giflib", "geos", "fftw", "postgresql-libs", "pcllib", "libxml++"] - rpm_dev : ["perl", "gsl-devel", "libpng-devel", "libtiff-devel", "libgeotiff-devel", "giflib-devel", "geos-devel", "fftw-devel", "devtoolset-8-gcc", "texlive-dvipng", "libxml++-devel"] + rpm : ["lz4", "gsl", "libgeotiff", "giflib", "geos", "fftw", "postgresql-libs", "pcllib", "libxml++", "freetype"] + rpm_dev : ["perl", "gsl-devel", "libpng-devel", "libtiff-devel", "libgeotiff-devel", "giflib-devel", "geos-devel", "fftw-devel", "devtoolset-8-gcc", "texlive-dvipng", "libxml++-devel", "freetype-devel"] } "CO8" : { - rpm : ["lz4", "openmpi", "gsl", "libgeotiff", "giflib", "geos", "sqlite", "netcdf", "libxml++"] + rpm : ["lz4", "openmpi", "gsl", "libgeotiff", "giflib", "geos", "sqlite", "netcdf", "libxml++", "freetype"] rpm_dev : ["perl-interpreter", "qt5-devel", "openmpi-devel", "gsl-devel", "libpng-devel", "libtiff-devel", "libgeotiff-devel", "giflib-devel", "geos-devel", "netcdf-devel", "texlive-dvipng", "libxml++-devel", "xcb-util-cursor-devel", "xcb-util-image-devel", "xcb-util-keysyms-devel", "xcb-util-renderutil-devel", "xcb-util-wm-devel", - "libXrender-devel", "libxkbcommon-devel", "libxkbcommon-x11-devel", "libXi-devel", "libXcursor-devel", "libXcomposite-devel"] # libdrm-devel xcb-util-xrm-devel + "libXrender-devel", "libxkbcommon-devel", "libxkbcommon-x11-devel", "libXi-devel", "libXcursor-devel", "libXcomposite-devel", "freetype-devel"] # libdrm-devel xcb-util-xrm-devel } "CO9" : { @@ -61,23 +61,23 @@ default : } "FD32" : { - rpm : ["lz4", "gsl", "openmpi", "netcdf", "python3-netcdf4", "gdal", "libxml++"] - rpm_dev : ["perl-interpreter", "qt5-devel", "gsl-devel", "openmpi-devel", "netcdf-devel", "protobuf-devel", "python3-protobuf", "texlive-dvipng", "libxml++-devel"] + rpm : ["lz4", "gsl", "openmpi", "netcdf", "python3-netcdf4", "gdal", "libxml++", "freetype"] + rpm_dev : ["perl-interpreter", "qt5-devel", "gsl-devel", "openmpi-devel", "netcdf-devel", "protobuf-devel", "python3-protobuf", "texlive-dvipng", "libxml++-devel", "freetype-devel"] } "FD34" : { - rpm : ["lz4-libs", "gsl", "openmpi", "netcdf", "gdal", "libxml++"] - rpm_dev : ["lz4-devel", "qt5-qtbase-devel", "gsl-devel", "openmpi-devel", "netcdf-devel", "gdal-devel", "texlive-dvipng", "libxml++-devel"] + rpm : ["lz4-libs", "gsl", "openmpi", "netcdf", "gdal", "libxml++", "freetype"] + rpm_dev : ["lz4-devel", "qt5-qtbase-devel", "gsl-devel", "openmpi-devel", "netcdf-devel", "gdal-devel", "texlive-dvipng", "libxml++-devel", "freetype-devel"] } "FD36" : { - rpm : ["lz4-libs", "gsl", "openmpi", "netcdf", "gdal", "libxml++"] - rpm_dev : ["lz4-devel", "qt5-qtbase-devel", "gsl-devel", "openmpi-devel", "netcdf-devel", "gdal-devel", "libxml++-devel"] + rpm : ["lz4-libs", "gsl", "openmpi", "netcdf", "gdal", "libxml++", "freetype"] + rpm_dev : ["lz4-devel", "qt5-qtbase-devel", "gsl-devel", "openmpi-devel", "netcdf-devel", "gdal-devel", "libxml++-devel", "freetype-devel"] } "FD38" : { - rpm : ["lz4-libs", "gsl", "openmpi", "netcdf", "gdal", "libxml++"] - rpm_dev : ["lz4-devel", "qt5-qtbase-devel", "gsl-devel", "openmpi-devel", "netcdf-devel", "gdal-devel", "libxml++-devel"] + rpm : ["lz4-libs", "gsl", "openmpi", "netcdf", "gdal", "libxml++", "freetype"] + rpm_dev : ["lz4-devel", "qt5-qtbase-devel", "gsl-devel", "openmpi-devel", "netcdf-devel", "gdal-devel", "libxml++-devel", "freetype-devel"] } "DB08" : { @@ -87,19 +87,19 @@ default : "DB09" : { apt : ["libdc1394-22", "libopenexr22", "libwebp6", "libgfortran3", "libilmbase12", "libevent-2.0-5", "libpng16-16", "libgcc-6-dev", - "libffi6", "libtinfo5", "libgphoto2-port12", "libglx0", "libopengl0", "libjsoncpp1", "libtbb2"] + "libffi6", "libtinfo5", "libgphoto2-port12", "libglx0", "libopengl0", "libjsoncpp1", "libtbb2", "libfreetype6", "libncurses5"] apt_dev : ["libtbb-dev", "libpng-dev", "libtiff5-dev", "libgeotiff-dev", "libjpeg-dev", "libgif-dev", "libgeos-dev", "libsqlite3-dev", "texlive-latex-base", "texlive-latex-extra", "dvipng", "libxcb1-dev", "libxcb-composite0-dev", "libxcb-cursor-dev", "libxcb-damage0-dev", "libxcb-dpms0-dev", "libxcb-dri2-0-dev", "libxcb-dri3-dev", "libxcb-glx0-dev", "libxcb-screensaver0-dev", "libxcb-util0-dev", "libxcb-present-dev", "libxcb-randr0-dev", "libxcb-record0-dev", "libxcb-render0-dev", "libxcb-res0-dev", "libxcb-shape0-dev", "libxcb-shm0-dev", "libxcb-sync-dev", "libxcb-xf86dri0-dev", "libxcb-xfixes0-dev", "libxcb-xinerama0-dev", "libxcb-xkb-dev", "libxcb-xtest0-dev", "libxcb-xv0-dev", "libxcb-xvmc0-dev", "libxcb-image0-dev", "libxcb-keysyms1-dev", "libxcb-render-util0-dev", - "libxcb-ewmh-dev", "libxcb-icccm4-dev", "libxcb-xrm-dev"] + "libxcb-ewmh-dev", "libxcb-icccm4-dev", "libxcb-xrm-dev", "libfreetype6-dev"] } "DB10" : { apt : ["libdc1394-22", "libopenexr23", "libwebp6", "libgfortran5", "libilmbase23", "libevent-2.1-6", "libpng16-16", "libgcc-8-dev", "libffi6", "libtinfo6", "libgphoto2-port12", "libglx0", "libopengl0", "libzstd1", "libglvnd0", "libjsoncpp1", "libopenblas-base", "libscotch-6.0", "openmpi-bin", - "libnetcdf13", "libgdal20", "libtbb2", "libxml++2.6-2v5"] + "libnetcdf13", "libgdal20", "libtbb2", "libxml++2.6-2v5", "libfreetype6", "libncurses5"] apt_dev : ["libtbb-dev", "cython3", "libfftw3-dev", "libopenblas-dev", "qttools5-dev", "libqt5svg5-dev", "libqt5x11extras5-dev", "qtxmlpatterns5-dev-tools", "libopenmpi-dev", "libpng-dev", "libtiff5-dev", "libgeotiff-dev", "libjpeg-dev", "libgif-dev", "libgeos-dev", "libsqlite3-dev", "libnetcdf-dev", "libgdal-dev", @@ -110,27 +110,27 @@ default : "libxcb-shape0-dev", "libxcb-shm0-dev", "libxcb-sync-dev", "libxcb-xf86dri0-dev", "libxcb-xfixes0-dev", "libxcb-xinerama0-dev", "libxcb-xinput-dev", "libxcb-xkb-dev", "libxcb-xtest0-dev", "libxcb-xv0-dev", "libxcb-xvmc0-dev", "libxcb-imdkit-dev", "libxcb-image0-dev", "libxcb-keysyms1-dev", "libxcb-render-util0-dev", "libxcb-ewmh-dev", - "libxcb-icccm4-dev", "libxcb-xrm-dev"] + "libxcb-icccm4-dev", "libxcb-xrm-dev", "libfreetype6-dev"] } "DB11" : { apt : ["libdc1394-25", "libopenexr25", "libwebp6", "libgfortran5", "libilmbase25", "libevent-2.1-7", "libpng16-16", "libgcc-10-dev", "libffi7", "libtinfo6", "libgphoto2-port12", "libglx0", "libopengl0", "libzstd1", "libglvnd0", "libjsoncpp24", - "openmpi-bin", "libnetcdf18", "libgdal28", "libtbb2", "pypy-setuptools", "libxml++2.6-2v5"] + "openmpi-bin", "libnetcdf18", "libgdal28", "libtbb2", "pypy-setuptools", "libxml++2.6-2v5", "libfreetype6", "libncurses5"] apt_dev : ["libtbb-dev", "cython3", "libfftw3-dev", "libopenblas-dev", "qttools5-dev", "libqt5svg5-dev", "libqt5x11extras5-dev", "qtxmlpatterns5-dev-tools", "libopenmpi-dev", "libpng-dev", "libtiff5-dev", "libgeotiff-dev", "libjpeg-dev", "libgif-dev", "libgeos-dev", "libsqlite3-dev", "libnetcdf-dev", "libgdal-dev", - "texlive-latex-base", "texlive-latex-extra", "dvipng", "libxml++2.6-dev"] + "texlive-latex-base", "texlive-latex-extra", "dvipng", "libxml++2.6-dev", "libfreetype6-dev"] } "DB12" : { apt : ["libdc1394-25", "libopenexr-3-1-30", "libwebp7", "libgfortran5", "libevent-2.1-7", "libpng16-16", "libgcc", "libffi8", "libtinfo6", "libgphoto2-port12", "libglx0", "libopengl0", "libzstd1", "libglvnd0", "libjsoncpp25", - "openmpi-bin", "libnetcdf19", "libgdal32", "libtbb12", "python3-setuptools", "libxml++2.6-2v5", "liblzf1"] + "openmpi-bin", "libnetcdf19", "libgdal32", "libtbb12", "python3-setuptools", "libxml++2.6-2v5", "liblzf1", "libfreetype6", "libncurses5"] apt_dev : ["libtbb-dev", "cython3", "libfftw3-dev", "libopenblas-dev", "qttools5-dev", "libqt5svg5-dev", "libqt5x11extras5-dev", "qtxmlpatterns5-dev-tools", "libopenmpi-dev", "libpng-dev", "libtiff5-dev", "libgeotiff-dev", "libjpeg-dev", "libgif-dev", "libgeos-dev", "libsqlite3-dev", "libnetcdf-dev", "libgdal-dev", - "texlive-latex-base", "texlive-latex-extra", "dvipng", "libxml++2.6-dev"] + "texlive-latex-base", "texlive-latex-extra", "dvipng", "libxml++2.6-dev", "libfreetype6-dev"] } "UB16.04" : { @@ -141,15 +141,15 @@ default : "UB18.04" : { apt : ["libdc1394-22", "libopenexr22", "libwebp6", "libgfortran4", "libilmbase12", "libevent-2.1-6", "libpng16-16", "libgcc-7-dev", - "libffi6", "libtinfo5", "libgphoto2-port12", "libglx0", "libopengl0", "libzstd1", "libglvnd0", "libopenblas-base", "libgeos-c1v5", "libtbb2", "libxml++2.6"] + "libffi6", "libtinfo5", "libgphoto2-port12", "libglx0", "libopengl0", "libzstd1", "libglvnd0", "libopenblas-base", "libgeos-c1v5", "libtbb2", "libxml++2.6", "libfreetype6"] apt_dev : ["libtbb-dev", "cython3", "libfftw3-dev", "libopenblas-dev", - "libpng-dev", "libtiff5-dev", "libgeotiff-dev", "libjpeg-dev", "libgif-dev", "libgeos-dev", "libsqlite3-dev", "dvipng", "libxml++2.6-dev"] + "libpng-dev", "libtiff5-dev", "libgeotiff-dev", "libjpeg-dev", "libgif-dev", "libgeos-dev", "libsqlite3-dev", "dvipng", "libxml++2.6-dev", "libfreetype6-dev"] } "UB20.04" : { apt : ["libdc1394-22", "libopenexr24", "libwebp6", "libgfortran5", "libilmbase24", "libevent-2.1-7", "libpng16-16", "libgcc-9-dev", "libffi7", "libtinfo6", "libgphoto2-port12", "libglx0", "libopengl0", "libzstd1", "libglvnd0", "openmpi-bin", "libgdal26", "libopenblas0-serial", "libtbb2", - "libxml++2.6-2v5", "python3-netcdf4"] + "libxml++2.6-2v5", "python3-netcdf4", "libfreetype6", "libncurses5"] apt_dev : ["libtbb-dev", "cython3", "libfftw3-dev", "libopenblas-dev", "qttools5-dev", "libqt5svg5-dev", "libqt5x11extras5-dev", "qtxmlpatterns5-dev-tools", "libopenmpi-dev", "libpng-dev", "libtiff5-dev", "libgeotiff-dev", "libjpeg-dev", "libgif-dev", "libgeos-dev", "libsqlite3-dev", "libgdal-dev", "dvipng", "libxml++2.6-dev", @@ -159,18 +159,26 @@ default : "libxcb-shape0-dev", "libxcb-shm0-dev", "libxcb-sync-dev", "libxcb-xf86dri0-dev", "libxcb-xfixes0-dev", "libxcb-xinerama0-dev", "libxcb-xinput-dev", "libxcb-xkb-dev", "libxcb-xtest0-dev", "libxcb-xv0-dev", "libxcb-xvmc0-dev", "libxcb-imdkit-dev", "libxcb-image0-dev", "libxcb-keysyms1-dev", "libxcb-render-util0-dev", "libxcb-ewmh-dev", - "libxcb-icccm4-dev", "libxcb-xrm-dev"] + "libxcb-icccm4-dev", "libxcb-xrm-dev", "libfreetype6-dev"] } "UB22.04" : { apt : ["libdc1394-25", "libopenexr25", "libwebp7", "gfortran-11", "libilmbase25", "libevent-2.1-7", "libpng16-16", "libgcc-11-dev", "libffi7", "libtinfo6", "libgphoto2-port12", "libglx0", "libopengl0", "libzstd1", "libglvnd0", "openmpi-bin", "libgdal30", "libopenblas0-serial", "libtbb12", - "libxml++2.6-2v5"] + "libxml++2.6-2v5", "libfreetype6", "libncurses5"] apt_dev : ["libtbb-dev", "cython3", "libfftw3-dev", "libopenblas-dev", "qttools5-dev", "libqt5svg5-dev", "libqt5x11extras5-dev", "qtxmlpatterns5-dev-tools", "libopenmpi-dev", - "libpng-dev", "libtiff5-dev", "libgeotiff-dev", "libjpeg-dev", "libgif-dev", "libgeos-dev", "libsqlite3-dev", "libgdal-dev", "dvipng", "libxml++2.6-dev"] + "libpng-dev", "libtiff5-dev", "libgeotiff-dev", "libjpeg-dev", "libgif-dev", "libgeos-dev", "libsqlite3-dev", "libgdal-dev", "dvipng", "libxml++2.6-dev", "libfreetype6-dev"] + } + "UB24.04" : + { + apt : ["libdc1394-25", "libopenexr-3-1-30", "libwebp7", "gfortran-13", "libevent-2.1-7", "libpng16-16", "libgcc-13-dev", libncurses6, + "libffi8", "libtinfo6", "libgphoto2-port12", "libglx0", "libopengl0", "libzstd1", "libglvnd0", "openmpi-bin", "libgdal34t64", "libopenblas0-serial", "libtbb12", + "libxml++2.6-2v5", "libfreetype6", "libncurses6"] + apt_dev : ["libtbb-dev", "cython3", "libfftw3-dev", "libopenblas-dev", + "qttools5-dev", "libqt5svg5-dev", "libqt5x11extras5-dev", "qtxmlpatterns5-dev-tools", "libopenmpi-dev", + "libpng-dev", "libtiff5-dev", "libgeotiff-dev", "libjpeg-dev", "libgif-dev", "libgeos-dev", "libsqlite3-dev", "libgdal-dev", "dvipng", "libxml++2.6-dev", "libfreetype-dev"] } - } depend : [] properties :