python-control / Slycot

Python wrapper for the Subroutine Library in Systems and Control Theory (SLICOT)
Other
130 stars 43 forks source link

Installing Slycot with pip on Windows (Microsoft C++ toolset Build Tools + Intel Fortran + oneMKL) failed build wheels #235

Open jaivgar opened 3 months ago

jaivgar commented 3 months ago

I tried to install Slycot on Windows 10, Python 3.12.0 and follow the instructions on the README. I managed to go some steps further than #191, with a configuration of the build environment using:

But I also encounter a roadblock, I think the origin is at the start of Post-processing slycot/src/_wrapper.pyf:_wrapper:unknown_interface:ab08nd analyzevars: could not parse dimension for variable 'max(n,m)+1' That I think leads to

 Generating possibly empty wrappers"
          Maybe empty "_wrapper-f2pywrappers.f"
              Constructing wrapper function "ab08nd"...
      getarrdims:warning: assumed shape array, using 0 instead of '*'
      getarrdims:warning: assumed shape array, using 0 instead of '*'
      getarrdims:warning: assumed shape array, using 0 instead of '*'
      getarrdims:warning: assumed shape array, using 0 instead of '*'

With the error

[1259/1260] Linking Fortran shared module slycot\_wrapper.cp312-win_amd64.pyd
      FAILED: slycot/_wrapper.cp312-win_amd64.pyd
      C:\WINDOWS\system32\cmd.exe /C "cd . && C:\Users\A1063610\AppData\Local\Temp\pip-build-env-kvwyujzv\overlay\Lib\site-packages\cmake\data\bin\cmake.exe -E vs_link_dll --intdir=slycot\CMakeFiles\_wrapper.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x86\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x86\mt.exe --manifests  -- C:\PROGRA~2\Intel\oneAPI\compiler\latest\bin\ifx.exe /nologo @CMakeFiles\_wrapper.rsp  -LD /machine:x64 /INCREMENTAL:NO /EXPORT:PyInit__wrapper -link /out:slycot\_wrapper.cp312-win_amd64.pyd /implib:slycot\_wrapper.lib /pdb:slycot\_wrapper.pdb /version:0.0 && cd ."
      LINK: command "C:\PROGRA~2\Intel\oneAPI\compiler\latest\bin\ifx.exe /nologo @CMakeFiles\_wrapper.rsp -LD /machine:x64 /INCREMENTAL:NO /EXPORT:PyInit__wrapper -link /out:slycot\_wrapper.cp312-win_amd64.pyd /implib:slycot\_wrapper.lib /pdb:slycot\_wrapper.pdb /version:0.0 /MANIFEST:EMBED,ID=2" failed (exit code 1120) with the following output:
      ifx: command line warning #10006: ignoring unknown option '/machine:x64'
      ifx: command line warning #10006: ignoring unknown option '/EXPORT:PyInit__wrapper'
         Creating library slycot\_wrapper.lib and object slycot\_wrapper.exp
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol ab01nd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol ab04md_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol ab05md_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol ab05nd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol ab07nd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol ab08nd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol ab08nz_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol ab09ad_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol ab09ax_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol ab09bd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol ab09md_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol ab09nd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol f2pywrapab13bd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol ab13dd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol ab13md_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol ab13ed_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol ab13fd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol ag08bd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol mc01td_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol mb02ed_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol mb03rd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol mb03vd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol mb03vy_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol mb03wd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol mb05md_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol mb05nd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol sb01bd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol sb02md_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol sb02od_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol sb02mt_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol sb03md_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol sb03od_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol sb04md_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol sb04qd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol sb10ad_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol sb10dd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol sb10fd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol sb10hd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol sb10jd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol sb10yd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol sg03ad_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol sg02ad_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol sg03bd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol tb01id_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol tb03ad_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol tb04ad_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol tb05ad_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol tc01od_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol tc04ad_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol td04ad_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol tf01md_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol tf01rd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol tb01pd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol tg01ad_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol tg01fd_
      _wrappermodule.c.obj : error LNK2001: unresolved external symbol ftruefalse_
      _wrappermodule.c.obj : error LNK2019: unresolved external symbol ab13bd_ referenced in function PyInit__wrapper

      slycot\_wrapper.cp312-win_amd64.pyd : fatal error LNK1120: 57 unresolved externals

      ninja: build stopped: subcommand failed.
      Traceback (most recent call last):
        File "C:\Users\A1063610\AppData\Local\Temp\pip-build-env-kvwyujzv\overlay\Lib\site-packages\skbuild\setuptools_wrap.py", line 674, in setup
          cmkr.make(make_args, install_target=cmake_install_target, env=env)
        File "C:\Users\A1063610\AppData\Local\Temp\pip-build-env-kvwyujzv\overlay\Lib\site-packages\skbuild\cmaker.py", line 697, in make
          self.make_impl(clargs=clargs, config=config, source_dir=source_dir, install_target=install_target, env=env)
        File "C:\Users\A1063610\AppData\Local\Temp\pip-build-env-kvwyujzv\overlay\Lib\site-packages\skbuild\cmaker.py", line 742, in make_impl
          raise SKBuildError(msg)

      An error occurred while building with CMake.
        Command:
          'C:\Users\A1063610\AppData\Local\Temp\pip-build-env-kvwyujzv\overlay\Lib\site-packages\cmake\data\bin/cmake.exe' --build . --target install --config Release --
        Install target:
          install
        Source directory:
          C:\Users\A1063610\AppData\Local\Temp\pip-install-rqqmzrzv\slycot_0e9c969270b347ee8377b15d2e5ae52c
        Working directory:
          C:\Users\A1063610\AppData\Local\Temp\pip-install-rqqmzrzv\slycot_0e9c969270b347ee8377b15d2e5ae52c\_skbuild\win-amd64-3.12\cmake-build
      Please check the install target is valid and see CMake's output for more information.

      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for slycot
Failed to build slycot
ERROR: Could not build wheels for slycot, which is required to install pyproject.toml-based projects

Could this be the issue of some of the tools/compilers/libs I used?

The full output is too long to add it, but if interested I could provide it.

dardeshna commented 1 month ago

I am also running into this same issue. Any ideas?