coin-or / pulp

A python Linear Programming API
http://coin-or.github.io/pulp/
Other
2.06k stars 383 forks source link

Installs cbc binaries for many different systems, instead of using the correct cbc binary provided by the coin-or-cbc dependency #740

Open yurivict opened 6 months ago

yurivict commented 6 months ago

Details for the issue

What did you do?

Ran tests.

What did you expect to see?

Success.

What did you see instead?

Many failures, see the log.

Useful extra information

The project installs architecture-specific binaries, like:

%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/32/__init__.py
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/32/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/32/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/32/cbc
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/32/coin-license.txt
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/64/__init__.py
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/64/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/64/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/64/cbc
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/64/coin-license.txt
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/arm64/__init__.py
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/arm64/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/arm64/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/arm64/cbc
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/arm64/coin-license.txt
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/osx/64/__init__.py
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/osx/64/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/osx/64/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/osx/64/cbc
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/osx/64/coin-license.txt
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/win/32/__init__.py
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/win/32/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/win/32/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/win/32/cbc.exe
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/win/32/coin-license.txt
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/win/64/__init__.py
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/win/64/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.opt-1.pyc
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/win/64/__pycache__/__init__%%PYTHON_EXT_SUFFIX%%.pyc
%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/win/64/cbc.exe

This is instead of using the cbc executable provided by the coin-or-cbc-2.10.11 dependency. It is wrong to install all binaries on all systems. Why does it run the linux executable pulp/solverdir/cbc/linux/64/cbc on FreeBSD? Shouldn't it do this at least based on the system name?

What operating system are you using?

I'm using python version:

I installed PuLP via:

pchtsp commented 6 months ago

well, PULP_CBC_CMD calls the "embedded" binary, while the COIN_CMD API calls whatever installed binary you have in your PATH. In your case, I imagine the tests that fail are the ones relating to PULP_CBC_CMD. But the other ones should work. Can you confirm this?

If the pulp/solverdir/cbc/linux/64/cbc binary is not compatible with your system then yes, we should check the OS better. Feel free to file a Pull Request to fix this. I suspect the change is around here https://github.com/coin-or/pulp/blob/cfb8a0f637965aeb4ae9d3a21dd9b386140e94e4/pulp/apis/core.py#L152

El mié, 13 mar 2024 a las 7:56, @. @.>) escribió:

Details for the issue What did you do?

Ran tests. What did you expect to see?

Success. What did you see instead?

Many failures, see the log https://freebsd.org/~yuri/PuLP-2.8.0-tests.log. Useful extra information

The project installs architecture-specific binaries, like:

%%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/32/init.py %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/32/pycache/init%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/32/pycache/init%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/32/cbc %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/32/coin-license.txt %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/64/init.py %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/64/pycache/init%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/64/pycache/init%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/64/cbc %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/64/coin-license.txt %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/arm64/init.py %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/arm64/pycache/init%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/arm64/pycache/init%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/arm64/cbc %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/linux/arm64/coin-license.txt %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/osx/64/init.py %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/osx/64/pycache/init%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/osx/64/pycache/init%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/osx/64/cbc %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/osx/64/coin-license.txt %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/win/32/init.py %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/win/32/pycache/init%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/win/32/pycache/init%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/win/32/cbc.exe %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/win/32/coin-license.txt %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/win/64/init.py %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/win/64/pycache/init%%PYTHON_EXT_SUFFIX%%.opt-1.pyc %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/win/64/pycache/init%%PYTHON_EXT_SUFFIX%%.pyc %%PYTHON_SITELIBDIR%%/pulp/solverdir/cbc/win/64/cbc.exe

This is instead of using the cbc executable provided by the coin-or-cbc-2.10.11 dependency. It is wrong to install all binaries on all systems. Why does it run the linux executable pulp/solverdir/cbc/linux/64/cbc on FreeBSD? Shouldn't it do this at least based on the system name? What operating system are you using?

  • Windows: ( version: ___ )
  • Linux: ( distro: ___ )
  • Mac OS: ( version: ___ )
  • FreeBSD 14.0

I'm using python version:

  • 3.9
  • 3.8
  • 3.9
  • 3.10
  • 3.11
  • Other: ___

I installed PuLP via:

— Reply to this email directly, view it on GitHub https://github.com/coin-or/pulp/issues/740, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABJUZ4Z3M7OLQJNMHABQQXDYX72CRAVCNFSM6AAAAABETSEPSCVHI2DSMVQWIX3LMV43ASLTON2WKOZSGE4DGMRVGQZTKOI . You are receiving this because you are subscribed to this thread.Message ID: @.***>

yurivict commented 6 months ago

I am just a port/package maintainer, and I don't have resources for PRs, unfortunately.

yurivict commented 6 months ago

This would require a deep re-work. The PULP package should depend on relevant external binary dependencies, and shouldn't install other OS executables. The current structure of installed files appears to be wrong.