DassHydro / smash

An open source, Python library interfacing the Fortran Spatially distributed Modelling and ASsimilation for Hydrology platform.
https://smash.recover.inrae.fr/
GNU General Public License v3.0
10 stars 5 forks source link

BUG: Max string length for a path is too short #186

Closed inoelloc closed 1 month ago

inoelloc commented 2 months ago

The maximum length for a path is currently set to 128. This value is too small and must be increased.

asjeb commented 1 month ago

[51/101] Compiling Fortran object smash/fcore/_libfcore.cpython-311-x8664-linux-gnu.so.p/meson-generated.._f90wrap_mwd_serr_sigma_parameters.f90.o FAILED: smash/fcore/_libfcore.cpython-311-x8664-linux-gnu.so.p/meson-generated.._f90wrap_mwd_serr_sigma_parameters.f90.o /home/aelbaz/anaconda3/envs/smash-dev/bin/x86_64-conda-linux-gnu-gfortran -Ismash/fcore/_libfcore.cpython-311-x86_64-linux-gnu.so.p -Ismash/fcore -I../smash/fcore -I/tmp/pip-build-env-e8a5j0a4/overlay/lib/python3.11/site-packages/numpy/core/include -I/tmp/pip-build-env-e8a5j0a4/overlay/lib/python3.11/site-packages/numpy/f2py/src -Ilib_fortranobject.a.p -I/home/aelbaz/anaconda3/envs/smash-dev/include/python3.11 -fvisibility=hidden -fdiagnostics-color=always -DNDEBUG -D_FILE_OFFSET_BITS=64 -Wall -Wextra -O3 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /home/aelbaz/anaconda3/envs/smash-dev/include -fPIC -fopenmp -O3 -march=native -cpp -Wno-argument-mismatch -Wno-conversion -Wno-maybe-uninitialized -Wno-unused-dummy-argument -Wno-unused-label -Wno-unused-variable -Wno-unused-parameter -Wno-tabs -Wno-compare-reals -Wno-character-truncation -Wno-surprising -Jsmash/fcore/_libfcore.cpython-311-x86_64-linux-gnu.so.p -o smash/fcore/_libfcore.cpython-311-x8664-linux-gnu.so.p/meson-generated.._f90wrap_mwd_serr_sigma_parameters.f90.o -c smash/fcore/f90wrap_mwd_serr_sigma_parameters.f90 smash/fcore/f90wrap_mwd_serr_sigma_parameters.f90:53:76:

     53 | subroutine f90wrap_mwd_serr_sigma_parameters__serr_sigma_parametersdt_initialise(this, setup, mesh)
        |                                                                            1
  Error: Name at (1) is too long

doesn t come from f90wrap version (test with 0.2.13) doesn t change something when you turn on the lchar of md_constant

inoelloc commented 1 month ago

[51/101] Compiling Fortran object smash/fcore/_libfcore.cpython-311-x8664-linux-gnu.so.p/meson-generated.._f90wrap_mwd_serr_sigma_parameters.f90.o FAILED: smash/fcore/_libfcore.cpython-311-x8664-linux-gnu.so.p/meson-generated.._f90wrap_mwd_serr_sigma_parameters.f90.o /home/aelbaz/anaconda3/envs/smash-dev/bin/x86_64-conda-linux-gnu-gfortran -Ismash/fcore/_libfcore.cpython-311-x86_64-linux-gnu.so.p -Ismash/fcore -I../smash/fcore -I/tmp/pip-build-env-e8a5j0a4/overlay/lib/python3.11/site-packages/numpy/core/include -I/tmp/pip-build-env-e8a5j0a4/overlay/lib/python3.11/site-packages/numpy/f2py/src -Ilib_fortranobject.a.p -I/home/aelbaz/anaconda3/envs/smash-dev/include/python3.11 -fvisibility=hidden -fdiagnostics-color=always -DNDEBUG -D_FILE_OFFSET_BITS=64 -Wall -Wextra -O3 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /home/aelbaz/anaconda3/envs/smash-dev/include -fPIC -fopenmp -O3 -march=native -cpp -Wno-argument-mismatch -Wno-conversion -Wno-maybe-uninitialized -Wno-unused-dummy-argument -Wno-unused-label -Wno-unused-variable -Wno-unused-parameter -Wno-tabs -Wno-compare-reals -Wno-character-truncation -Wno-surprising -Jsmash/fcore/_libfcore.cpython-311-x86_64-linux-gnu.so.p -o smash/fcore/_libfcore.cpython-311-x8664-linux-gnu.so.p/meson-generated.._f90wrap_mwd_serr_sigma_parameters.f90.o -c smash/fcore/f90wrap_mwd_serr_sigma_parameters.f90 smash/fcore/f90wrap_mwd_serr_sigma_parameters.f90:53:76:

     53 | subroutine f90wrap_mwd_serr_sigma_parameters__serr_sigma_parametersdt_initialise(this, setup, mesh)
        |                                                                            1
  Error: Name at (1) is too long

doesn t come from f90wrap version (test with 0.2.13) doesn t change something when you turn on the lchar of md_constant

This issue is not a compilation issue with f90wrap but rather a run time issue. I haven't provided an example but that's the problem:

import smash
setup, mesh = smash.factory.load_dataset("Cance")
model = smash.Model(setup, mesh)
path = "a/very/long/path/to/the/precipitation/directory/that/exceeds/the/max/length/of/128/characters/defined/in/fortran/and/will/be/truncated"
model.setup.prcp_directory = path
path
'a/very/long/path/to/the/precipitation/directory/that/exceeds/the/max/length/of/128/characters/defined/in/fortran/and/will/be/truncated'
model.setup.prcp_directory
'a/very/long/path/to/the/precipitation/directory/that/exceeds/the/max/length/of/128/characters/defined/in/fortran/and/will/be/tru'

We can set to 2 * lchar the max length for all kind of directories. 256 should be enough which is the Windows max path limit as well.