gurobi: add v9.1.2 and extend python (#25064)

- add version 9.1.2
- set a license file
- set the license environment variable
- remove the download and license information out of the description so
  it does not show up in environment modules
- extend python and set python version constraints
- build gurobipy to be used in any compatible python, used for more
  extensive computations than the gurobi shell
- remove preexisting PYTHONPATH from gurobi.sh as the shell uses a
  built-in python, which will likely be different from "system" python
- add maintainer
This commit is contained in:
Glenn Johnson 2021-07-28 10:29:32 -05:00 committed by GitHub
parent be2e224e75
commit e29168ad02
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -11,33 +11,50 @@
class Gurobi(Package): class Gurobi(Package):
"""The Gurobi Optimizer was designed from the ground up to be the fastest, """The Gurobi Optimizer was designed from the ground up to be the fastest,
most powerful solver available for your LP, QP, QCP, and MIP (MILP, MIQP, most powerful solver available for your LP, QP, QCP, and MIP (MILP, MIQP,
and MIQCP) problems. and MIQCP) problems."""
Note: Gurobi is licensed software. You will need to create an account on # Note: Gurobi is licensed software. You will need to create an account on
the Gurobi homepage and download Gurobi Optimizer yourself. Spack will # the Gurobi homepage and download Gurobi Optimizer yourself. Spack will
search your current directory for the download file. Alternatively, add # search your current directory for the download file. Alternatively, add
this file to a mirror so that Spack can find it. For instructions on how to # this file to a mirror so that Spack can find it. For instructions on how
set up a mirror, see http://spack.readthedocs.io/en/latest/mirrors.html # to set up a mirror, see
# http://spack.readthedocs.io/en/latest/mirrors.html
Please set the path to licence file with the following command (for bash)
export GRB_LICENSE_FILE=/path/to/gurobi/license/. See section 4 in
$GUROBI_HOME/docs/quickstart_linux.pdf for more details."""
homepage = "http://www.gurobi.com/index" homepage = "http://www.gurobi.com/index"
manual_download = True manual_download = True
maintainers = ['glennpj']
version('9.1.2', sha256='7f60bd675f79476bb2b32cd632aa1d470f8246f2b033b7652d8de86f6e7e429b')
version('7.5.2', '01f6dbb8d165838cca1664a1a14e4a85') version('7.5.2', '01f6dbb8d165838cca1664a1a14e4a85')
# Licensing # Licensing
license_required = True license_required = True
license_files = ['gurobi.lic']
license_vars = ['GRB_LICENSE_FILE'] license_vars = ['GRB_LICENSE_FILE']
license_url = 'http://www.gurobi.com/downloads/download-center' license_url = 'http://www.gurobi.com/downloads/download-center'
extends('python')
depends_on('python@2.7,3.6:')
def url_for_version(self, version): def url_for_version(self, version):
return "file://{0}/gurobi{1}_linux64.tar.gz".format(os.getcwd(), version) return "file://{0}/gurobi{1}_linux64.tar.gz".format(os.getcwd(), version)
def patch(self):
# Strip out existing PYTHONPATH as the presence of that will generally
# break given that Spack has likely set that for a different Python.
gurobi_shell = join_path('linux64', 'bin', 'gurobi.sh')
filter_file(r':\$PYTHONPATH', '', gurobi_shell)
def setup_run_environment(self, env): def setup_run_environment(self, env):
env.set('GUROBI_HOME', self.prefix) env.set('GUROBI_HOME', self.prefix)
env.set('GRB_LICENSE_FILE', join_path(self.prefix, 'gurobi.lic'))
def install(self, spec, prefix): def install(self, spec, prefix):
install_tree('linux64', prefix) install_tree('linux64', prefix)
@run_after('install')
def gurobipy(self):
with working_dir('linux64'):
python = which('python')
python('setup.py', 'install', '--prefix={0}'.format(self.prefix))