psydac
psydac copied to clipboard
Remove dependency on IGAKIT library
Options:
- Re-implement basic CAD functionality in Psydac, independently from IGAKIT
- Include the whole IGAKIT library in a subdirectory of Psydac (check license)
- Mirror/fork IGAKIT project in Pyccel organization (ask author)
Option (3) is viable as discussed with @dalcinl
Option 2 is also fine. The license is BSD-2-Clause. Or a combination of 2 and 3. That is, you can fork it, and add it to Psydacin a subdir as a git submodule. If submodules are too cumbersome for you to deal with, then perhaps using git subtree would be a better approach.
If we plan to support python3.12 in the future, the deprecation of distutils would break the capability of igakit to build Fortran files:
$ git clone -b fix-distutils-py3.12 https://github.com/pyccel/igakit.git
$ cd igakit
$ python3.12 -m pip install .
Processing /home/user/igakit
Installing build dependencies ... done
Getting requirements to build wheel ... done
Installing backend dependencies ... done
Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: numpy in /home/user/psydac-python3.12-env/lib/python3.12/site-packages (from igakit==0.1) (1.26.4)
Building wheels for collected packages: igakit
Building wheel for igakit (pyproject.toml) ... error
error: subprocess-exited-with-error
× Building wheel for igakit (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [15 lines of output]
running bdist_wheel
running build
running build_py
copying igakit/__init__.py -> build/lib.linux-x86_64-cpython-312/igakit
copying igakit/nurbs.py -> build/lib.linux-x86_64-cpython-312/igakit
copying igakit/plot_myv.py -> build/lib.linux-x86_64-cpython-312/igakit
copying igakit/io.py -> build/lib.linux-x86_64-cpython-312/igakit
copying igakit/transform.py -> build/lib.linux-x86_64-cpython-312/igakit
copying igakit/plot_nul.py -> build/lib.linux-x86_64-cpython-312/igakit
copying igakit/cad.py -> build/lib.linux-x86_64-cpython-312/igakit
copying igakit/plot.py -> build/lib.linux-x86_64-cpython-312/igakit
copying igakit/plot_mpl.py -> build/lib.linux-x86_64-cpython-312/igakit
running build_ext
building 'igakit.igalib' extension
error: unknown file type '.f90' (from 'igakit/igalib.f90')
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for igakit
Failed to build igakit
The proposed replacement setuptools doesn't yet cover building Fortran sources, although there is a plan to support it. Thus, Option (1) may become necesssary until setuptools could replicate the Fortran build feature of numpy.distutils.
Alternatively,, igakit should be update to use meson, as done for example in clawpack/clawpack#232.