-
-
Notifications
You must be signed in to change notification settings - Fork 425
Description
Details for the issue
What did you do?
Working on Fedora 42, with the system coin-or-HiGHS package installed, on an architecture other than x86_64, that is, on aarch64, ppc64le, or s390x:
$ python3 --version
Python 3.13.3
$ git clone https://github.com/coin-or/pulp.git
$ cd pulp
$ python3 -m venv _e
$ . _e/bin/activate
(_e) $ pip install -e .
(_e) $ pulptest
Available solvers: ['PULP_CBC_CMD', 'HiGHS_CMD']
Unavailable solvers: {'SASCAS', 'HiGHS', 'COINMP_DLL', 'XPRESS_PY', 'COPT', 'GUROBI', 'CPLEX_CMD', 'GLPK_CMD', 'SAS94', 'SCIP_CMD', 'COIN_CMD', 'CPLEX_PY', 'COPT_DLL', 'MIPCL_CMD', 'CyLP', 'GUROBI_CMD', 'CHOCO_CMD', 'FSCIP_CMD', 'MOSEK', 'PYGLPK', 'SCIP_PY', 'COPT_CMD', 'XPRESS'}
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss....................................................E..Running HiGHS 1.10.0 (git hash: fd8665394): Copyright (c) 2025 HiGHS under MIT licence terms
Set option solution_file to "/tmp/135cf7dd025d4490ad6c007282988311-pulp.sol"
Set option log_file to "/tmp/135cf7dd025d4490ad6c007282988311-pulp.HiGHS_log"
Set option write_solution_to_file to true
LP 135cf7dd025d4490ad6c007282988311-pulp has 4 rows; 4 cols; 7 nonzeros
Coefficient ranges:
Matrix [1e+00, 1e+00]
Cost [1e+00, 9e+00]
Bound [1e+00, 4e+00]
RHS [5e+00, 1e+01]
Presolving model
1 rows, 2 cols, 2 nonzeros 0s
0 rows, 0 cols, 0 nonzeros 0s
Presolve : Reductions: rows 0(-4); columns 0(-4); elements 0(-7) - Reduced to empty
Solving the original LP from the solution after postsolve
Model name : 135cf7dd025d4490ad6c007282988311-pulp
Model status : Optimal
Objective value : 5.4000000000e+01
Relative P-D gap : 0.0000000000e+00
HiGHS run time : 0.04
Writing the solution to /tmp/135cf7dd025d4490ad6c007282988311-pulp.sol
..............E......ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss......................................................F..Welcome to the CBC MILP Solver
Version: 2.10.10
Build Date: Sep 26 2023
command line - /builddir/pulp/pulp/apis/../solverdir/cbc/linux/arm64/cbc /tmp/36c68f001c7b4a0b8f86047275906e38-pulp.mps -timeMode elapsed -branch -printingOptions all -solution /tmp/36c68f001c7b4a0b8f86047275906e38-pulp.sol (default strategy 1)
At line 2 NAME MODEL
At line 3 ROWS
At line 9 COLUMNS
At line 20 RHS
At line 25 BOUNDS
At line 29 ENDATA
Problem MODEL has 4 rows, 4 columns and 7 elements
Coin0008I MODEL read with 0 errors
Option for timeMode changed from cpu to elapsed
Presolve 1 (-3) rows, 2 (-2) columns and 2 (-5) elements
0 Obj 51.9 Primal inf 2.099999 (1)
1 Obj 54
Optimal - objective value 54
After Postsolve, objective 54, infeasibilities - dual 0 (0), primal 0 (0)
Optimal objective 54 - 1 iterations time 0.032, Presolve 0.01
Option for printingOptions changed from normal to all
Total time (CPU seconds): 0.05 (Wallclock seconds): 0.05
.......................ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss..ssss
======================================================================
ERROR: test_measuring_solving_time (pulp.tests.test_pulp.HiGHS_CMDTest.test_measuring_solving_time)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/builddir/pulp/pulp/tests/test_pulp.py", line 70, in skip_wrapper
return test_item(test_obj, *args, **kwargs)
File "/builddir/pulp/pulp/tests/test_pulp.py", line 1311, in test_measuring_solving_time
status = prob.solve(self.solver)
File "/builddir/pulp/pulp/pulp.py", line 2007, in solve
status = solver.actualSolve(self, **kwargs)
File "/builddir/pulp/pulp/apis/highs_api.py", line 180, in actualSolve
model_line = [line for line in lines if "Status" in line][0]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
IndexError: list index out of range
======================================================================
ERROR: test_time_limit_no_solution (pulp.tests.test_pulp.HiGHS_CMDTest.test_time_limit_no_solution)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/builddir/pulp/pulp/tests/test_pulp.py", line 70, in skip_wrapper
return test_item(test_obj, *args, **kwargs)
File "/builddir/pulp/pulp/tests/test_pulp.py", line 1340, in test_time_limit_no_solution
status = prob.solve(self.solver)
File "/builddir/pulp/pulp/pulp.py", line 2007, in solve
status = solver.actualSolve(self, **kwargs)
File "/builddir/pulp/pulp/apis/highs_api.py", line 180, in actualSolve
model_line = [line for line in lines if "Status" in line][0]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^
IndexError: list index out of range
======================================================================
FAIL: test_measuring_solving_time (pulp.tests.test_pulp.PULP_CBC_CMDTest.test_measuring_solving_time)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/builddir/pulp/pulp/tests/test_pulp.py", line 70, in skip_wrapper
return test_item(test_obj, *args, **kwargs)
File "/builddir/pulp/pulp/tests/test_pulp.py", line 1326, in test_measuring_solving_time
self.assertEqual(status, const.LpStatusOptimal)
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: -1 != 1
----------------------------------------------------------------------
Ran 1760 tests in 699.311s
FAILED (failures=1, errors=2, skipped=1602)
Traceback (most recent call last):
File "/builddir/pulp/_e/bin/pulptest", line 8, in <module>
sys.exit(pulpTestAll())
~~~~~~~~~~~^^
File "/builddir/pulp/pulp/tests/run_tests.py", line 17, in pulpTestAll
raise pulp.PulpError("Tests Failed")
pulp.constants.PulpError: Tests Failed
What did you expect to see?
Available solvers: ['PULP_CBC_CMD', 'HiGHS_CMD']
Unavailable solvers: {'GUROBI', 'CPLEX_PY', 'PYGLPK', 'CPLEX_CMD', 'GLPK_CMD', 'COPT', 'COIN_CMD', 'SASCAS', 'CyLP', 'SCIP_CMD', 'GUROBI_CMD', 'XPRESS', 'COPT_DLL', 'XPRESS_PY', 'COPT_CMD', 'COINMP_DLL', 'SAS94', 'MIPCL_CMD', 'CHOCO_CMD', 'SCIP_PY', 'HiGHS', 'MOSEK', 'FSCIP_CMD'}
.Essssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss........................................................Running HiGHS 1.10.0 (git hash: fd8665394): Copyright (c) 2025 HiGHS under MIT licence terms
Set option solution_file to "/tmp/84a5c23ae7554e0a96a7a35fa6d66e80-pulp.sol"
Set option log_file to "/tmp/84a5c23ae7554e0a96a7a35fa6d66e80-pulp.HiGHS_log"
Set option write_solution_to_file to true
LP 84a5c23ae7554e0a96a7a35fa6d66e80-pulp has 4 rows; 4 cols; 7 nonzeros
Coefficient ranges:
Matrix [1e+00, 1e+00]
Cost [1e+00, 9e+00]
Bound [1e+00, 4e+00]
RHS [5e+00, 1e+01]
Presolving model
1 rows, 2 cols, 2 nonzeros 0s
0 rows, 0 cols, 0 nonzeros 0s
Presolve : Reductions: rows 0(-4); columns 0(-4); elements 0(-7) - Reduced to empty
Solving the original LP from the solution after postsolve
Model name : 84a5c23ae7554e0a96a7a35fa6d66e80-pulp
Model status : Optimal
Objective value : 5.4000000000e+01
Relative P-D gap : 0.0000000000e+00
HiGHS run time : 0.00
Writing the solution to /tmp/84a5c23ae7554e0a96a7a35fa6d66e80-pulp.sol
......................ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss..........................................................Welcome to the CBC MILP Solver
Version: 2.10.3
Build Date: Dec 15 2019
command line - /home/ben/src/forks/pulp/pulp/apis/../solverdir/cbc/linux/i64/cbc /tmp/44adcf4109db4722940a29945144e619-pulp.mps -timeMode elapsed -branch -printingOptions all -solution /tmp/44adcf4109db4722940a29945144e619-pulp.sol (default strategy 1)
At line 2 NAME MODEL
At line 3 ROWS
At line 9 COLUMNS
At line 20 RHS
At line 25 BOUNDS
At line 29 ENDATA
Problem MODEL has 4 rows, 4 columns and 7 elements
Coin0008I MODEL read with 0 errors
Option for timeMode changed from cpu to elapsed
Presolve 1 (-3) rows, 2 (-2) columns and 2 (-5) elements
0 Obj 51.9 Primal inf 2.099999 (1)
1 Obj 54
Optimal - objective value 54
After Postsolve, objective 54, infeasibilities - dual 0 (0), primal 0 (0)
Optimal objective 54 - 1 iterations time 0.002, Presolve 0.00
Option for printingOptions changed from normal to all
Total time (CPU seconds): 0.00 (Wallclock seconds): 0.00
........................ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss..ssss
======================================================================
ERROR: test_examples (pulp.tests.test_examples.Examples_DocsTests.test_examples)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/ben/src/forks/pulp/pulp/tests/test_examples.py", line 22, in test_examples
importlib.import_module(_f_name)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/usr/lib64/python3.13/importlib/__init__.py", line 88, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
File "<frozen importlib._bootstrap>", line 1310, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
File "<frozen importlib._bootstrap>", line 1324, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'examples'
----------------------------------------------------------------------
Ran 1812 tests in 39.503s
FAILED (errors=1, skipped=1648)
Traceback (most recent call last):
File "/home/ben/src/forks/pulp/_e/bin/pulptest", line 8, in <module>
sys.exit(pulpTestAll())
~~~~~~~~~~~^^
File "/home/ben/src/forks/pulp/pulp/tests/run_tests.py", line 17, in pulpTestAll
raise pulp.PulpError("Tests Failed")
pulp.constants.PulpError: Tests Failed
I haven’t investigated the test_examples failure; it doesn’t appear relevant to this issue.
The test failure I’m really trying to report here is test_time_limit_no_solution; it’s the only one that is failing in python-pulp package in Fedora package builds.
What did you see instead?
Useful extra information
The info below often helps, please fill it out if you're able to. :)
What operating system are you using?
- Windows: ( version: ___ )
- Linux: ( distro: Fedora 42, any architecture but
x86_64) - Mac OS: ( version: ___ )
- Other: ___
I'm using python version:
- 3.7
- 3.8
- 3.9
- 3.10
- 3.11
- Other: 3.13
I installed PuLP via:
- pypi (python -m pip install pulp)
- github (python -m pip install -U git+https://github.com/coin-or/pulp)
- Other: ___ (conda?)
I am a co-maintainer of the python-pulp package in Fedora; I observed this while testing an upgrade of this package from PuLP 2.x to 3.x, then reproduced it in a virtualenv to make a more useful upstream bug report.
I’m happy to try any experiments, on real or emulated hardware, that might help illuminate the issue.
I demonstrated this using a mock chroot, emulating aarch64 on an x86_64 workstation via qemu-user-static. Booting an aarch64 virtual machine with qemu-system-aarch64 and something like virt-manager would work too, and of course the easiest thing is if real physical aarch64 hardware is available. I also saw this on ppc64le and s390x, but not on x86_64.
Did you also
- Tried out the latest github version: https://github.com/coin-or/pulp
- Searched for an existing similar issue: https://github.com/coin-or/pulp/issues?utf8=%E2%9C%93&q=is%3Aissue%20