psydac icon indicating copy to clipboard operation
psydac copied to clipboard

Remove dependency on IGAKIT library

Open yguclu opened this issue 6 years ago • 4 comments

Options:

  1. Re-implement basic CAD functionality in Psydac, independently from IGAKIT
  2. Include the whole IGAKIT library in a subdirectory of Psydac (check license)
  3. Mirror/fork IGAKIT project in Pyccel organization (ask author)

yguclu avatar Sep 26 '19 15:09 yguclu

Option (3) is viable as discussed with @dalcinl

yguclu avatar Oct 19 '23 16:10 yguclu

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.

dalcinl avatar Oct 19 '23 16:10 dalcinl

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.

kvrigor avatar Apr 11 '24 09:04 kvrigor

Alternatively,, igakit should be update to use meson, as done for example in clawpack/clawpack#232.

dalcinl avatar Apr 11 '24 09:04 dalcinl