Skip to content

Commit

Permalink
Merge pull request #18529 from PetrKralCZ/20230810132932_new_pr_PuLP270
Browse files Browse the repository at this point in the history
{math}[foss/2022b] PuLP v2.7.0, Cbc v2.10.5, Cgl v0.60.7
  • Loading branch information
boegel authored Aug 17, 2023
2 parents 06f2da5 + 41fa1a5 commit e80846b
Show file tree
Hide file tree
Showing 3 changed files with 149 additions and 0 deletions.
63 changes: 63 additions & 0 deletions easybuild/easyconfigs/c/Cbc/Cbc-2.10.5-foss-2022b.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
easyblock = "ConfigureMake"

name = 'Cbc'
version = '2.10.5'

homepage = "https://github.com/coin-or/Cbc"
description = """Cbc (Coin-or branch and cut) is an open-source mixed integer linear programming
solver written in C++. It can be used as a callable library or using a
stand-alone executable."""

toolchain = {'name': 'foss', 'version': '2022b'}
toolchainopts = {'pic': True, 'usempi': True}

source_urls = ['https://www.coin-or.org/download/source/%(name)s/']
sources = [SOURCE_TGZ]
checksums = ['da1a945648679b21ba56b454b81e939451dc7951d9beb3c3e14f18f64dde6972']

builddependencies = [
('Autotools', '20220317'),
('Doxygen', '1.9.5'),
('pkg-config', '0.29.2'),
]

dependencies = [
('METIS', '5.1.0'),
('MUMPS', '5.6.1', '-metis'),
('CoinUtils', '2.11.9'),
('Osi', '0.108.8'),
('Clp', '1.17.8'),
('Cgl', '0.60.7'),
('bzip2', '1.0.8'),
('zlib', '1.2.12'),
]

# Use BLAS/LAPACK from OpenBLAS
configopts = '--with-blas="$LIBBLAS" --with-lapack="$LIBLAPACK" '
# Use METIS AND MUMPS from EB
configopts += '--with-metis-lib="-lmetis" '
configopts += '--with-mumps-lib="-lcmumps -ldmumps -lsmumps -lzmumps -lmumps_common -lpord" '
# Disable GLPK, dependencies have to be built with it as well
configopts += '--without-glpk '
# Use CoinUtils from EB
configopts += '--with-coinutils-lib="-lCoinUtils" '
configopts += '--with-coinutils-datadir=$EBROOTCOINUTILS/share/coin/Data'
# Use Clp from EB
configopts += '--with-clp-lib="-lOsiClp -lClpSolver -lClp" '
configopts += '--with-clp-datadir=$EBROOTCLP/share/coin/Data '
# Use Osi from EB (also needs links to Clp due to OsiClpSolver)
configopts += '--with-osi-lib="-lOsiClp -lClpSolver -lClp -lOsi" '
configopts += '--with-osi-datadir=$EBROOTOSI/share/coin/Data '
# Use Cgl from EB
configopts += '--with-cgl-lib="-lCgl" '
configopts += '--with-cgl-datadir=$EBROOTCGL/share/coin/Data '

sanity_check_paths = {
'files': ['bin/cbc'] + ['lib/lib%s.%s' % (x, SHLIB_EXT) for x in ['Cbc', 'CbcSolver', 'OsiCbc']],
'dirs': ['include/coin', 'lib/pkgconfig', 'share/coin']
}

# other coin-or projects expect <header.hpp> instead of <coin/header.hpp>
modextrapaths = {'CPATH': 'include/coin'}

moduleclass = "math"
50 changes: 50 additions & 0 deletions easybuild/easyconfigs/c/Cgl/Cgl-0.60.7-foss-2022b.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
easyblock = "ConfigureMake"

name = 'Cgl'
version = '0.60.7'

homepage = "https://github.com/coin-or/Cgl"
description = """The COIN-OR Cut Generation Library (Cgl) is a collection of cut generators that
can be used with other COIN-OR packages that make use of cuts, such as, among
others, the linear solver Clp or the mixed integer linear programming solvers
Cbc or BCP. Cgl uses the abstract class OsiSolverInterface (see Osi) to use or
communicate with a solver. It does not directly call a solver."""

toolchain = {'name': 'foss', 'version': '2022b'}
toolchainopts = {'pic': True, 'usempi': True}

source_urls = ['https://github.com/coin-or/Cgl/archive/refs/tags/releases/']
sources = ['%(version)s.tar.gz']
checksums = ['93b30a80b5d2880c2e72d5877c64bdeaf4d7c1928b3194ea2f88b1aa4517fb1b']

builddependencies = [
('Autotools', '20220317'),
('Doxygen', '1.9.5'),
('pkg-config', '0.29.2'),
]

dependencies = [
('CoinUtils', '2.11.9'),
('Osi', '0.108.8'),
('Clp', '1.17.8'),
]

# Use CoinUtils from EB
configopts = '--with-coinutils-lib="-lCoinUtils" '
configopts += '--with-coinutils-datadir=$EBROOTCOINUTILS/share/coin/Data'
# Use Clp from EB
configopts += '--with-clp-lib="-lOsiClp -lClpSolver -lClp" '
configopts += '--with-clp-datadir=$EBROOTCLP/share/coin/Data '
# Use Osi from EB (also needs links to Clp due to OsiClpSolver)
configopts += '--with-osi-lib="-lOsiClp -lClpSolver -lClp -lOsi" '
configopts += '--with-osi-datadir=$EBROOTOSI/share/coin/Data '

sanity_check_paths = {
'files': ['lib/libCgl.%s' % SHLIB_EXT],
'dirs': ['include/coin', 'lib/pkgconfig', 'share/coin']
}

# other coin-or projects expect <header.hpp> instead of <coin/header.hpp>
modextrapaths = {'CPATH': 'include/coin'}

moduleclass = "math"
36 changes: 36 additions & 0 deletions easybuild/easyconfigs/p/PuLP/PuLP-2.7.0-foss-2022b.eb
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Contribution by
# DeepThought, Flinders University
# R.QIAO <[email protected]>
# Updated: Petr Král (INUITS)

easyblock = 'PythonPackage'

name = 'PuLP'
version = '2.7.0'

homepage = 'https://github.com/coin-or/pulp'
description = """
PuLP is an LP modeler written in Python. PuLP can generate MPS or LP files and
call GLPK, COIN-OR CLP/CBC, CPLEX, GUROBI, MOSEK, XPRESS, CHOCO, MIPCL, SCIP to
solve linear problems.
"""

toolchain = {'name': 'foss', 'version': '2022b'}

sources = [SOURCE_TAR_GZ]
checksums = ['e73ee6b32d639c9b8cf4b4aded334ba158be5f8313544e056f796ace0a10ae63']

dependencies = [
('Python', '3.10.8'),
('GLPK', '5.0'),
('Cbc', '2.10.5'),
# Gurobi requires a seperate license
# ('Gurobi', '9.5.0'),
]

download_dep_fail = True
use_pip = True

sanity_pip_check = True

moduleclass = 'tools'

0 comments on commit e80846b

Please sign in to comment.