Changes between Initial Version and Version 3 of Ticket #28175


Ignore:
Timestamp:
11/27/19 02:19:56 (2 years ago)
Author:
mkoeppe
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #28175

    • Property Milestone changed from sage-wishlist to sage-9.0
    • Property Summary changed from Move sage optimization backends to a separate package to Move sage optimization backends to separate Cython packages to remove OptionalExtension problems
  • Ticket #28175 – Description

    initial v3  
    1 `sage.numerical.backends` depends on very little from Sage and should become a separate Cython package. This would make it easier to reconfigure it when new solvers are installed and eliminate some optional extensions from sagelib.
     1`sage.numerical.backends` depends on very little from Sage and should become a separate Cython package. This would make it easier to reconfigure it when new solvers are installed and eliminate some optional extensions from sagelib, which would simplify packaging binary distributions.
     2
     3From `src/module_list.py`:
     4{{{
     5    OptionalExtension("sage.numerical.backends.gurobi_backend",
     6              ["sage/numerical/backends/gurobi_backend.pyx"],
     7              libraries = ["gurobi"],
     8              condition = os.path.isfile(SAGE_INC + "/gurobi_c.h") and
     9                  os.path.isfile(SAGE_LOCAL + "/lib/libgurobi.so")),
     10
     11    OptionalExtension("sage.numerical.backends.cplex_backend",
     12              ["sage/numerical/backends/cplex_backend.pyx"],
     13              libraries = ["cplex"],
     14              condition = os.path.isfile(SAGE_INC + "/cplex.h") and
     15                  os.path.isfile(SAGE_LOCAL + "/lib/libcplex.a")),
     16
     17    OptionalExtension("sage.numerical.backends.coin_backend",
     18              ["sage/numerical/backends/coin_backend.pyx"],
     19              language = 'c++',
     20              libraries = ["Cbc", "CbcSolver", "Cgl", "Clp", "CoinUtils",
     21                           "OsiCbc", "OsiClp", "Osi"] + lapack_libs,
     22              library_dirs = lapack_library_dirs,
     23              include_dirs = lapack_include_dirs,
     24              package = 'cbc'),
     25}}}
     26
    227
    328Details:
    429 - `get_solver` uses base_ring
    530 - GLPKBackend depends on `sage.libs.glpk`, which should also become a separate Cython package (see https://en.wikibooks.org/wiki/GLPK/Python for a list of other glpk bindings)
     31 - For Gurobi and CPLEX, we could alternatively get rid of these Cython modules entirely by making use of their standard Python API instead.
    632
    7  
    833
     34
     35