{% set name = "coin-or-osi" %}
{% set version = "0.108.7" %}

package:
  name: {{ name|lower }}
  version: {{ version }}

source:
  url: https://github.com/coin-or/Osi/archive/releases/{{ version }}.tar.gz
  sha256: f1bc53a498585f508d3f8d74792440a30a83c8bc934d0c8ecf8cd8bc0e486228

build:
  number: 0
  skip: true  # [blas_impl != "openblas"]
  run_exports:
    - {{ pin_subpackage(name, min_pin='x.x', max_pin='x.x') }}

requirements:
  build:
    - gnuconfig  # [unix]
    - {{ compiler('c') }}
    - {{ compiler('cxx') }}
    - pkg-config
    - make  # [unix]
  host:
    - coin-or-utils 2.11.6
    - zlib
    - bzip2
    - openblas {{ openblas }}         # [blas_impl == "openblas"]
  run:
    - libopenblas                     # [blas_impl == "openblas"]
  # To stop the compiler pulling in an openmp implementation itself
    - _openmp_mutex                   # [linux]
  run_constrained:
    - coincbc * *_metapackage

test:
  commands:
    - test -f $PREFIX/lib/libOsi${SHLIB_EXT}
    - test -f $PREFIX/include/coin/OsiConfig.h

about:
  home: https://github.com/coin-or/Osi
  dev_url: https://github.com/coin-or/Osi
  doc_url: https://coin-or.github.io/Osi/Doxygen/
  license: EPL-2.0
  license_family: OTHER
  license_file: LICENSE
  summary: Coin OR Open Solver Interface (OSI)
  description: |
    Osi (Open Solver Interface) provides an abstract base class to a generic
    linear programming (LP) solver, along with derived classes for specific
    solvers. Many applications may be able to use the Osi to insulate themselves
    from a specific LP solver. That is, programs written to the OSI standard may
    be linked to any solver with an OSI interface and should produce correct
    results. The OSI has been significantly extended compared to its first
    incarnation. Currently, the OSI supports linear programming solvers and has
    rudimentary support for integer programming. Among others the following
    operations are supported:

      - creating the LP formulation;
      - directly modifying the formulation by adding rows/columns;
      - modifying the formulation by adding cutting planes provided by CGL;
      - solving the formulation (and resolving after modifications);
      - extracting solution information;
      - invoking the underlying solver's branch-and-bound component.

extra:
  recipe-maintainers:
    - wolfv
    - tkralphs
    - jschueller
