Developed by JohnDN90 (February 27, 2025)
This script modifies scikit-umfpack to be compatible with newer versions of SuiteSparse.
This should be considered a messy workaround for the issues discussed in issue #98 of scikit-umfpack/scikit-umfpack rather than an actual fix. It should hopefully at least give hints to the modifications that need to be made in scikit-umfpack itself for a permanent fix.
Configuration used in development and testing:
- OS: macOS 14.7.4
 - Architecture: AArch64
 - Compilers: Apple Clang 16.0.0
 - Shell: GNU bash 3.2.57(1)-release
 - Python: 3.12.9
 - pip: 24.3.1
 - Numpy: 2.2.3
 - SuiteSparse: 7.9.0
 - scikit-umfpack: 9ba622ac90350e621e84e78ed03a23d1d47807bd (November 8, 2024)
 
The modifications this script performs are summarized as follows:
- Separate SuiteSparse's umfpack.h into separate header files like in older versions (5.13.0)
- These new header files are stored in a temporary directory
 - The original umfpack.h file is unmodified
 - This is performed by the separate_umfpack.sh script
 
 - Modify pyproject.toml
- Add swig as a build dependency
 - Change 
numpy<2.0.0tonumpy - This is performed by the the patch file
 
 - Modify scikits/umfpack/umfpack.i
- Removed 
#if UMFPACK_MAIN_VERSION < 6statements so that newly separated headers (Step 1) are included - Updated types to account for removal of "SuiteSparse_Long" type in newer SuiteSparse
 - This is performed by the the patch file
 
 - Removed 
 - Modify scikits/umfpack/umfpack.py
- Fixed bug in UmfpackContext.lu function which caused 64-bit indices of matrix to be converted to 32-bit
 - This is performed by the the patch file
 
 
Running pytest --pyargs scikits.umfpack results in "21 passed, 9 skipped, 102 warnings"