Here's an update of lpsolve from 5.5.2.0 to 5.5.2.5 for a few bug fixes. That piece was already okayed by edd@ (MAINTAINER).
Then I found a recipe to convert lpsolve from python2 to python3 which I've also included in an updated diff below. The recipe comes from here: https://stackoverflow.com/questions/48765299/ A conversion of lpsolve to python3 is required in order to update numpy. I was able to do a quick sanity check with: $ python3 Python 3.8.6 (default, Oct 3 2020, 23:25:34) [Clang 10.0.1 ] on openbsd6 Type "help", "copyright", "credits" or "license" for more information. >>> from lpsolve55 import * >>> lpsolve() lpsolve Python Interface version 5.5.0.10 using lpsolve version 5.5.2.5 Usage: ret = lpsolve('functionname', arg1, arg2, ...) >>> feedback? ok? Index: Makefile.inc =================================================================== RCS file: /cvs/ports/math/lpsolve/Makefile.inc,v retrieving revision 1.3 diff -u -p -u -r1.3 Makefile.inc --- Makefile.inc 13 Jul 2019 10:59:27 -0000 1.3 +++ Makefile.inc 11 Oct 2020 19:02:43 -0000 @@ -1,7 +1,7 @@ # $OpenBSD: Makefile.inc,v 1.3 2019/07/13 10:59:27 sthen Exp $ V_MAJOR ?= 5.5 -V ?= ${V_MAJOR}.2.0 +V ?= ${V_MAJOR}.2.5 CATEGORIES ?= math devel HOMEPAGE ?= http://lpsolve.sourceforge.net Index: core/Makefile =================================================================== RCS file: /cvs/ports/math/lpsolve/core/Makefile,v retrieving revision 1.6 diff -u -p -u -r1.6 Makefile --- core/Makefile 16 Mar 2015 18:07:50 -0000 1.6 +++ core/Makefile 11 Oct 2020 19:02:43 -0000 @@ -4,7 +4,7 @@ COMMENT = mixed integer linear programm DISTNAME = lp_solve_${V}_source PKGNAME = lpsolve-${V} -REVISION = 1 + WRKDIST = ${WRKDIR}/lp_solve_${V_MAJOR} SHARED_LIBS = lpsolve55 0.0 # unversioned upstream @@ -12,7 +12,7 @@ SHARED_LIBS = lpsolve55 0.0 # unversion WANTLIB += c m # Docs are distributed separately -DOCDISTFILE = lp_solve_5.5.2.0_doc${EXTRACT_SUFX} +DOCDISTFILE = lp_solve_5.5.2.5_doc${EXTRACT_SUFX} DISTFILES = ${DISTNAME}${EXTRACT_SUFX} \ ${DOCDISTFILE} EXTRACT_ONLY = ${DISTNAME}${EXTRACT_SUFX} Index: core/distinfo =================================================================== RCS file: /cvs/ports/math/lpsolve/core/distinfo,v retrieving revision 1.2 diff -u -p -u -r1.2 distinfo --- core/distinfo 18 Jan 2015 03:14:27 -0000 1.2 +++ core/distinfo 11 Oct 2020 19:02:43 -0000 @@ -1,4 +1,4 @@ -SHA256 (lp_solve_5.5.2.0_doc.tar.gz) = 4NSCSoLNHzsNhrGu1dozXv5kn5l4sGXN9tynYfXmEeE= -SHA256 (lp_solve_5.5.2.0_source.tar.gz) = WCejCxQxBSg/OYoJQZ6mCHGaLXaZ7OoWWmbVIYA7zJw= -SIZE (lp_solve_5.5.2.0_doc.tar.gz) = 1447267 -SIZE (lp_solve_5.5.2.0_source.tar.gz) = 799623 +SHA256 (lp_solve_5.5.2.5_doc.tar.gz) = TGCFpwg8ygTBiHahyIOK4kJ7lwgCGf/+3eHDqWvBNWE= +SHA256 (lp_solve_5.5.2.5_source.tar.gz) = IBp8YrizNgyITuKnPtdmflcW/B6Al1UFOzmML1sM8oo= +SIZE (lp_solve_5.5.2.5_doc.tar.gz) = 1448749 +SIZE (lp_solve_5.5.2.5_source.tar.gz) = 812947 Index: core/pkg/PLIST =================================================================== RCS file: /cvs/ports/math/lpsolve/core/pkg/PLIST,v retrieving revision 1.2 diff -u -p -u -r1.2 PLIST --- core/pkg/PLIST 16 Mar 2015 18:07:50 -0000 1.2 +++ core/pkg/PLIST 11 Oct 2020 19:02:43 -0000 @@ -31,7 +31,7 @@ include/lpsolve/lpkit.h include/lpsolve/lpsolve.h include/lpsolve/ufortify.h include/lpsolve/yacc_read.h -lib/liblpsolve55.a +@static-lib lib/liblpsolve55.a @lib lib/liblpsolve55.so.${LIBlpsolve55_VERSION} share/doc/lpsolve/ share/doc/lpsolve/.DS_Store @@ -101,7 +101,6 @@ share/doc/lpsolve/O-Matrix.htm share/doc/lpsolve/O-Matrix1.jpg share/doc/lpsolve/O-Matrix2.jpg share/doc/lpsolve/O-Matrix3.jpg -share/doc/lpsolve/Octave.htm share/doc/lpsolve/Octave1.jpg share/doc/lpsolve/Octave2.jpg share/doc/lpsolve/Octave3.jpg @@ -183,6 +182,7 @@ share/doc/lpsolve/get_Ncolumns.htm share/doc/lpsolve/get_Norig_columns.htm share/doc/lpsolve/get_Norig_rows.htm share/doc/lpsolve/get_Nrows.htm +share/doc/lpsolve/get_accuracy.htm share/doc/lpsolve/get_anti_degen.htm share/doc/lpsolve/get_basis.htm share/doc/lpsolve/get_basiscrash.htm @@ -191,6 +191,7 @@ share/doc/lpsolve/get_bb_floorfirst.htm share/doc/lpsolve/get_bb_rule.htm share/doc/lpsolve/get_bounds_tighter.htm share/doc/lpsolve/get_break_at_value.htm +share/doc/lpsolve/get_break_numeric_accuracy.htm share/doc/lpsolve/get_col_name.htm share/doc/lpsolve/get_column.htm share/doc/lpsolve/get_constr_type.htm @@ -290,6 +291,7 @@ share/doc/lpsolve/lp_solve_5.5.0.15.chw share/doc/lpsolve/lp_solve_version.htm share/doc/lpsolve/make_lp.htm share/doc/lpsolve/mps-format.htm +share/doc/lpsolve/octave.htm share/doc/lpsolve/open.gif share/doc/lpsolve/print_constraints.htm share/doc/lpsolve/print_debugdump.htm @@ -334,6 +336,7 @@ share/doc/lpsolve/set_bounds.htm share/doc/lpsolve/set_bounds_tighter.htm share/doc/lpsolve/set_break_at_first.htm share/doc/lpsolve/set_break_at_value.htm +share/doc/lpsolve/set_break_numeric_accuracy.htm share/doc/lpsolve/set_col_name.htm share/doc/lpsolve/set_column.htm share/doc/lpsolve/set_constr_type.htm Index: python/Makefile =================================================================== RCS file: /cvs/ports/math/lpsolve/python/Makefile,v retrieving revision 1.5 diff -u -p -u -r1.5 Makefile --- python/Makefile 21 Apr 2015 18:24:22 -0000 1.5 +++ python/Makefile 11 Oct 2020 19:02:43 -0000 @@ -3,14 +3,15 @@ COMMENT = Python bindings for lpsolve DISTNAME = lp_solve_${V}_Python_source # interface version differs from pkg version -MODPY_EGG_VERSION = 5.5.0.9 +MODPY_EGG_VERSION = 5.5.0.10 PKGNAME = py-lpsolve-${V} -REVISION = 1 LIB_DEPENDS += math/lpsolve/core BUILD_DEPENDS += math/py-numpy RUN_DEPENDS += math/py-numpy MODULES = lang/python + +MODPY_VERSION = ${MODPY_DEFAULT_VERSION_3} WRKDIST = ${WRKDIR}/lp_solve_${V_MAJOR}/extra/Python Index: python/distinfo =================================================================== RCS file: /cvs/ports/math/lpsolve/python/distinfo,v retrieving revision 1.2 diff -u -p -u -r1.2 distinfo --- python/distinfo 18 Jan 2015 03:14:27 -0000 1.2 +++ python/distinfo 11 Oct 2020 19:02:43 -0000 @@ -1,2 +1,2 @@ -SHA256 (lp_solve_5.5.2.0_Python_source.tar.gz) = eWg7wmLp2lsvpzOLoZCpzRBVm58tvLjzvwfiqBCDrFE= -SIZE (lp_solve_5.5.2.0_Python_source.tar.gz) = 58017 +SHA256 (lp_solve_5.5.2.5_Python_source.tar.gz) = zrELGL0WmvqqxfiAcvQGzXU5+wfN9d5bg/WZ+UFZUTs= +SIZE (lp_solve_5.5.2.5_Python_source.tar.gz) = 60321 Index: python/patches/patch-pythonmod_c =================================================================== RCS file: python/patches/patch-pythonmod_c diff -N python/patches/patch-pythonmod_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ python/patches/patch-pythonmod_c 11 Oct 2020 19:02:43 -0000 @@ -0,0 +1,366 @@ +$OpenBSD$ + +Convert lpsolve from python2 to python3. Recipe from: +https://stackoverflow.com/questions/48765299/ + +Roughly: +- PyString_ changes to either PyUnicode_ or PyBytes_ +- PyInt_ changes to PyLong_ +- The init module function changed. + +Index: pythonmod.c +--- pythonmod.c.orig ++++ pythonmod.c +@@ -33,6 +33,7 @@ extern PyObject *lpsolve(LprecObject *self, PyObject * + + /* This information is shown in Python via the command help(lpsolve) */ + ++static char lpsolve_name[] = "lpsolve"; + static char lpsolve_doc[] = + "lpsolve('functionname', arg1, arg2, ...) -> execute lpsolve functionname with args"; + +@@ -41,16 +42,22 @@ static PyMethodDef lpsolve_methods[] = { + {NULL, NULL} /* sentinel */ + }; + ++static PyModuleDef lpsolve_module = { ++ .m_base = PyModuleDef_HEAD_INIT, ++ .m_name = lpsolve_name, ++ .m_doc = lpsolve_doc, ++ .m_methods = lpsolve_methods ++}; + + /* Initialization function for the module (*must* be called initxx) */ + +-DL_EXPORT(void) +- initlpsolve55(void) ++PyMODINIT_FUNC ++ PyInit_lpsolve55(void) + { + PyObject *m, *d; + + /* Create the module and add the functions */ +- m = Py_InitModule("lpsolve55", lpsolve_methods); ++ m = PyModule_Create(&lpsolve_module); + #if defined NUMPY + + #if 0 +@@ -82,135 +89,137 @@ DL_EXPORT(void) + Lprec_ErrorObject = Py_BuildValue("s", "lpsolve.error"); + #endif + PyDict_SetItemString(d, "error", Lprec_ErrorObject); +- PyDict_SetItemString(d, "LE", PyInt_FromLong(LE)); +- PyDict_SetItemString(d, "EQ", PyInt_FromLong(EQ)); +- PyDict_SetItemString(d, "GE", PyInt_FromLong(GE)); +- PyDict_SetItemString(d, "FR", PyInt_FromLong(FR)); +- PyDict_SetItemString(d, "SCALE_NONE", PyInt_FromLong(SCALE_NONE)); +- PyDict_SetItemString(d, "SCALE_EXTREME", PyInt_FromLong(SCALE_EXTREME)); +- PyDict_SetItemString(d, "SCALE_RANGE", PyInt_FromLong(SCALE_RANGE)); +- PyDict_SetItemString(d, "SCALE_MEAN", PyInt_FromLong(SCALE_MEAN)); +- PyDict_SetItemString(d, "SCALE_GEOMETRIC", PyInt_FromLong(SCALE_GEOMETRIC)); +- PyDict_SetItemString(d, "SCALE_CURTISREID", PyInt_FromLong(SCALE_CURTISREID)); +- PyDict_SetItemString(d, "SCALE_QUADRATIC", PyInt_FromLong(SCALE_QUADRATIC)); +- PyDict_SetItemString(d, "SCALE_LOGARITHMIC", PyInt_FromLong(SCALE_LOGARITHMIC)); +- PyDict_SetItemString(d, "SCALE_USERWEIGHT", PyInt_FromLong(SCALE_USERWEIGHT)); +- PyDict_SetItemString(d, "SCALE_POWER2", PyInt_FromLong(SCALE_POWER2)); +- PyDict_SetItemString(d, "SCALE_EQUILIBRATE", PyInt_FromLong(SCALE_EQUILIBRATE)); +- PyDict_SetItemString(d, "SCALE_INTEGERS", PyInt_FromLong(SCALE_INTEGERS)); +- PyDict_SetItemString(d, "SCALE_DYNUPDATE", PyInt_FromLong(SCALE_DYNUPDATE)); +- PyDict_SetItemString(d, "SCALE_ROWSONLY", PyInt_FromLong(SCALE_ROWSONLY)); +- PyDict_SetItemString(d, "SCALE_COLSONLY", PyInt_FromLong(SCALE_COLSONLY)); +- PyDict_SetItemString(d, "IMPROVE_NONE", PyInt_FromLong(IMPROVE_NONE)); +- PyDict_SetItemString(d, "IMPROVE_SOLUTION", PyInt_FromLong(IMPROVE_SOLUTION)); +- PyDict_SetItemString(d, "IMPROVE_DUALFEAS", PyInt_FromLong(IMPROVE_DUALFEAS)); +- PyDict_SetItemString(d, "IMPROVE_THETAGAP", PyInt_FromLong(IMPROVE_THETAGAP)); +- PyDict_SetItemString(d, "IMPROVE_BBSIMPLEX", PyInt_FromLong(IMPROVE_BBSIMPLEX)); +- PyDict_SetItemString(d, "PRICER_FIRSTINDEX", PyInt_FromLong(PRICER_FIRSTINDEX)); +- PyDict_SetItemString(d, "PRICER_DANTZIG", PyInt_FromLong(PRICER_DANTZIG)); +- PyDict_SetItemString(d, "PRICER_DEVEX", PyInt_FromLong(PRICER_DEVEX)); +- PyDict_SetItemString(d, "PRICER_STEEPESTEDGE", PyInt_FromLong(PRICER_STEEPESTEDGE)); +- PyDict_SetItemString(d, "PRICE_PRIMALFALLBACK", PyInt_FromLong(PRICE_PRIMALFALLBACK)); +- PyDict_SetItemString(d, "PRICE_MULTIPLE", PyInt_FromLong(PRICE_MULTIPLE)); +- PyDict_SetItemString(d, "PRICE_PARTIAL", PyInt_FromLong(PRICE_PARTIAL)); +- PyDict_SetItemString(d, "PRICE_ADAPTIVE", PyInt_FromLong(PRICE_ADAPTIVE)); +- PyDict_SetItemString(d, "PRICE_RANDOMIZE", PyInt_FromLong(PRICE_RANDOMIZE)); +- PyDict_SetItemString(d, "PRICE_AUTOPARTIAL", PyInt_FromLong(PRICE_AUTOPARTIAL)); +- PyDict_SetItemString(d, "PRICE_LOOPLEFT", PyInt_FromLong(PRICE_LOOPLEFT)); +- PyDict_SetItemString(d, "PRICE_LOOPALTERNATE", PyInt_FromLong(PRICE_LOOPALTERNATE)); +- PyDict_SetItemString(d, "PRICE_HARRISTWOPASS", PyInt_FromLong(PRICE_HARRISTWOPASS)); +- PyDict_SetItemString(d, "PRICE_TRUENORMINIT", PyInt_FromLong(PRICE_TRUENORMINIT)); +- PyDict_SetItemString(d, "PRESOLVE_NONE", PyInt_FromLong(PRESOLVE_NONE)); +- PyDict_SetItemString(d, "PRESOLVE_ROWS", PyInt_FromLong(PRESOLVE_ROWS)); +- PyDict_SetItemString(d, "PRESOLVE_COLS", PyInt_FromLong(PRESOLVE_COLS)); +- PyDict_SetItemString(d, "PRESOLVE_LINDEP", PyInt_FromLong(PRESOLVE_LINDEP)); +- PyDict_SetItemString(d, "PRESOLVE_SOS", PyInt_FromLong(PRESOLVE_SOS)); +- PyDict_SetItemString(d, "PRESOLVE_REDUCEMIP", PyInt_FromLong(PRESOLVE_REDUCEMIP)); +- PyDict_SetItemString(d, "PRESOLVE_KNAPSACK", PyInt_FromLong(PRESOLVE_KNAPSACK)); +- PyDict_SetItemString(d, "PRESOLVE_ELIMEQ2", PyInt_FromLong(PRESOLVE_ELIMEQ2)); +- PyDict_SetItemString(d, "PRESOLVE_IMPLIEDFREE", PyInt_FromLong(PRESOLVE_IMPLIEDFREE)); +- PyDict_SetItemString(d, "PRESOLVE_REDUCEGCD", PyInt_FromLong(PRESOLVE_REDUCEGCD)); +- PyDict_SetItemString(d, "PRESOLVE_PROBEFIX", PyInt_FromLong(PRESOLVE_PROBEFIX)); +- PyDict_SetItemString(d, "PRESOLVE_PROBEREDUCE", PyInt_FromLong(PRESOLVE_PROBEREDUCE)); +- PyDict_SetItemString(d, "PRESOLVE_ROWDOMINATE", PyInt_FromLong(PRESOLVE_ROWDOMINATE)); +- PyDict_SetItemString(d, "PRESOLVE_COLDOMINATE", PyInt_FromLong(PRESOLVE_COLDOMINATE)); +- PyDict_SetItemString(d, "PRESOLVE_MERGEROWS", PyInt_FromLong(PRESOLVE_MERGEROWS)); +- PyDict_SetItemString(d, "PRESOLVE_IMPLIEDSLK", PyInt_FromLong(PRESOLVE_IMPLIEDSLK)); +- PyDict_SetItemString(d, "PRESOLVE_COLFIXDUAL", PyInt_FromLong(PRESOLVE_COLFIXDUAL)); +- PyDict_SetItemString(d, "PRESOLVE_BOUNDS", PyInt_FromLong(PRESOLVE_BOUNDS)); +- PyDict_SetItemString(d, "PRESOLVE_DUALS", PyInt_FromLong(PRESOLVE_DUALS)); +- PyDict_SetItemString(d, "PRESOLVE_SENSDUALS", PyInt_FromLong(PRESOLVE_SENSDUALS)); +- PyDict_SetItemString(d, "ANTIDEGEN_NONE", PyInt_FromLong(ANTIDEGEN_NONE)); +- PyDict_SetItemString(d, "ANTIDEGEN_FIXEDVARS", PyInt_FromLong(ANTIDEGEN_FIXEDVARS)); +- PyDict_SetItemString(d, "ANTIDEGEN_COLUMNCHECK", PyInt_FromLong(ANTIDEGEN_COLUMNCHECK)); +- PyDict_SetItemString(d, "ANTIDEGEN_STALLING", PyInt_FromLong(ANTIDEGEN_STALLING)); +- PyDict_SetItemString(d, "ANTIDEGEN_NUMFAILURE", PyInt_FromLong(ANTIDEGEN_NUMFAILURE)); +- PyDict_SetItemString(d, "ANTIDEGEN_LOSTFEAS", PyInt_FromLong(ANTIDEGEN_LOSTFEAS)); +- PyDict_SetItemString(d, "ANTIDEGEN_INFEASIBLE", PyInt_FromLong(ANTIDEGEN_INFEASIBLE)); +- PyDict_SetItemString(d, "ANTIDEGEN_DYNAMIC", PyInt_FromLong(ANTIDEGEN_DYNAMIC)); +- PyDict_SetItemString(d, "ANTIDEGEN_DURINGBB", PyInt_FromLong(ANTIDEGEN_DURINGBB)); +- PyDict_SetItemString(d, "ANTIDEGEN_RHSPERTURB", PyInt_FromLong(ANTIDEGEN_RHSPERTURB)); +- PyDict_SetItemString(d, "ANTIDEGEN_BOUNDFLIP", PyInt_FromLong(ANTIDEGEN_BOUNDFLIP)); +- PyDict_SetItemString(d, "CRASH_NONE", PyInt_FromLong(CRASH_NONE)); +- PyDict_SetItemString(d, "CRASH_MOSTFEASIBLE", PyInt_FromLong(CRASH_MOSTFEASIBLE)); +- PyDict_SetItemString(d, "CRASH_LEASTDEGENERATE", PyInt_FromLong(CRASH_LEASTDEGENERATE)); +- PyDict_SetItemString(d, "SIMPLEX_PRIMAL_PRIMAL", PyInt_FromLong(SIMPLEX_PRIMAL_PRIMAL)); +- PyDict_SetItemString(d, "SIMPLEX_DUAL_PRIMAL", PyInt_FromLong(SIMPLEX_DUAL_PRIMAL)); +- PyDict_SetItemString(d, "SIMPLEX_PRIMAL_DUAL", PyInt_FromLong(SIMPLEX_PRIMAL_DUAL)); +- PyDict_SetItemString(d, "SIMPLEX_DUAL_DUAL", PyInt_FromLong(SIMPLEX_DUAL_DUAL)); +- PyDict_SetItemString(d, "NODE_FIRSTSELECT", PyInt_FromLong(NODE_FIRSTSELECT)); +- PyDict_SetItemString(d, "NODE_GAPSELECT", PyInt_FromLong(NODE_GAPSELECT)); +- PyDict_SetItemString(d, "NODE_RANGESELECT", PyInt_FromLong(NODE_RANGESELECT)); +- PyDict_SetItemString(d, "NODE_FRACTIONSELECT", PyInt_FromLong(NODE_FRACTIONSELECT)); +- PyDict_SetItemString(d, "NODE_PSEUDOCOSTSELECT", PyInt_FromLong(NODE_PSEUDOCOSTSELECT)); +- PyDict_SetItemString(d, "NODE_PSEUDONONINTSELECT", PyInt_FromLong(NODE_PSEUDONONINTSELECT)); +- PyDict_SetItemString(d, "NODE_PSEUDORATIOSELECT", PyInt_FromLong(NODE_PSEUDORATIOSELECT)); +- PyDict_SetItemString(d, "NODE_USERSELECT", PyInt_FromLong(NODE_USERSELECT)); +- PyDict_SetItemString(d, "NODE_WEIGHTREVERSEMODE", PyInt_FromLong(NODE_WEIGHTREVERSEMODE)); +- PyDict_SetItemString(d, "NODE_BRANCHREVERSEMODE", PyInt_FromLong(NODE_BRANCHREVERSEMODE)); +- PyDict_SetItemString(d, "NODE_GREEDYMODE", PyInt_FromLong(NODE_GREEDYMODE)); +- PyDict_SetItemString(d, "NODE_PSEUDOCOSTMODE", PyInt_FromLong(NODE_PSEUDOCOSTMODE)); +- PyDict_SetItemString(d, "NODE_DEPTHFIRSTMODE", PyInt_FromLong(NODE_DEPTHFIRSTMODE)); +- PyDict_SetItemString(d, "NODE_RANDOMIZEMODE", PyInt_FromLong(NODE_RANDOMIZEMODE)); +- PyDict_SetItemString(d, "NODE_GUBMODE", PyInt_FromLong(NODE_GUBMODE)); +- PyDict_SetItemString(d, "NODE_DYNAMICMODE", PyInt_FromLong(NODE_DYNAMICMODE)); +- PyDict_SetItemString(d, "NODE_RESTARTMODE", PyInt_FromLong(NODE_RESTARTMODE)); +- PyDict_SetItemString(d, "NODE_BREADTHFIRSTMODE", PyInt_FromLong(NODE_BREADTHFIRSTMODE)); +- PyDict_SetItemString(d, "NODE_AUTOORDER", PyInt_FromLong(NODE_AUTOORDER)); +- PyDict_SetItemString(d, "NODE_RCOSTFIXING", PyInt_FromLong(NODE_RCOSTFIXING)); +- PyDict_SetItemString(d, "NODE_STRONGINIT", PyInt_FromLong(NODE_STRONGINIT)); +- PyDict_SetItemString(d, "NOMEMORY", PyInt_FromLong(NOMEMORY)); +- PyDict_SetItemString(d, "OPTIMAL", PyInt_FromLong(OPTIMAL)); +- PyDict_SetItemString(d, "SUBOPTIMAL", PyInt_FromLong(SUBOPTIMAL)); +- PyDict_SetItemString(d, "INFEASIBLE", PyInt_FromLong(INFEASIBLE)); +- PyDict_SetItemString(d, "UNBOUNDED", PyInt_FromLong(UNBOUNDED)); +- PyDict_SetItemString(d, "DEGENERATE", PyInt_FromLong(DEGENERATE)); +- PyDict_SetItemString(d, "NUMFAILURE", PyInt_FromLong(NUMFAILURE)); +- PyDict_SetItemString(d, "USERABORT", PyInt_FromLong(USERABORT)); +- PyDict_SetItemString(d, "TIMEOUT", PyInt_FromLong(TIMEOUT)); +- PyDict_SetItemString(d, "PRESOLVED", PyInt_FromLong(PRESOLVED)); +- PyDict_SetItemString(d, "PROCFAIL", PyInt_FromLong(PROCFAIL)); +- PyDict_SetItemString(d, "PROCBREAK", PyInt_FromLong(PROCBREAK)); +- PyDict_SetItemString(d, "FEASFOUND", PyInt_FromLong(FEASFOUND)); +- PyDict_SetItemString(d, "NOFEASFOUND", PyInt_FromLong(NOFEASFOUND)); +- PyDict_SetItemString(d, "BRANCH_CEILING", PyInt_FromLong(BRANCH_CEILING)); +- PyDict_SetItemString(d, "BRANCH_FLOOR", PyInt_FromLong(BRANCH_FLOOR)); +- PyDict_SetItemString(d, "BRANCH_AUTOMATIC", PyInt_FromLong(BRANCH_AUTOMATIC)); +- PyDict_SetItemString(d, "BRANCH_DEFAULT", PyInt_FromLong(BRANCH_DEFAULT)); +- PyDict_SetItemString(d, "MSG_PRESOLVE", PyInt_FromLong(MSG_PRESOLVE)); +- PyDict_SetItemString(d, "MSG_LPFEASIBLE", PyInt_FromLong(MSG_LPFEASIBLE)); +- PyDict_SetItemString(d, "MSG_LPOPTIMAL", PyInt_FromLong(MSG_LPOPTIMAL)); +- PyDict_SetItemString(d, "MSG_MILPEQUAL", PyInt_FromLong(MSG_MILPEQUAL)); +- PyDict_SetItemString(d, "MSG_MILPFEASIBLE", PyInt_FromLong(MSG_MILPFEASIBLE)); +- PyDict_SetItemString(d, "MSG_MILPBETTER", PyInt_FromLong(MSG_MILPBETTER)); +- PyDict_SetItemString(d, "NEUTRAL", PyInt_FromLong(NEUTRAL)); +- PyDict_SetItemString(d, "CRITICAL", PyInt_FromLong(CRITICAL)); +- PyDict_SetItemString(d, "SEVERE", PyInt_FromLong(SEVERE)); +- PyDict_SetItemString(d, "IMPORTANT", PyInt_FromLong(IMPORTANT)); +- PyDict_SetItemString(d, "NORMAL", PyInt_FromLong(NORMAL)); +- PyDict_SetItemString(d, "DETAILED", PyInt_FromLong(DETAILED)); +- PyDict_SetItemString(d, "FULL", PyInt_FromLong(FULL)); ++ PyDict_SetItemString(d, "LE", PyLong_FromLong(LE)); ++ PyDict_SetItemString(d, "EQ", PyLong_FromLong(EQ)); ++ PyDict_SetItemString(d, "GE", PyLong_FromLong(GE)); ++ PyDict_SetItemString(d, "FR", PyLong_FromLong(FR)); ++ PyDict_SetItemString(d, "SCALE_NONE", PyLong_FromLong(SCALE_NONE)); ++ PyDict_SetItemString(d, "SCALE_EXTREME", PyLong_FromLong(SCALE_EXTREME)); ++ PyDict_SetItemString(d, "SCALE_RANGE", PyLong_FromLong(SCALE_RANGE)); ++ PyDict_SetItemString(d, "SCALE_MEAN", PyLong_FromLong(SCALE_MEAN)); ++ PyDict_SetItemString(d, "SCALE_GEOMETRIC", PyLong_FromLong(SCALE_GEOMETRIC)); ++ PyDict_SetItemString(d, "SCALE_CURTISREID", PyLong_FromLong(SCALE_CURTISREID)); ++ PyDict_SetItemString(d, "SCALE_QUADRATIC", PyLong_FromLong(SCALE_QUADRATIC)); ++ PyDict_SetItemString(d, "SCALE_LOGARITHMIC", PyLong_FromLong(SCALE_LOGARITHMIC)); ++ PyDict_SetItemString(d, "SCALE_USERWEIGHT", PyLong_FromLong(SCALE_USERWEIGHT)); ++ PyDict_SetItemString(d, "SCALE_POWER2", PyLong_FromLong(SCALE_POWER2)); ++ PyDict_SetItemString(d, "SCALE_EQUILIBRATE", PyLong_FromLong(SCALE_EQUILIBRATE)); ++ PyDict_SetItemString(d, "SCALE_INTEGERS", PyLong_FromLong(SCALE_INTEGERS)); ++ PyDict_SetItemString(d, "SCALE_DYNUPDATE", PyLong_FromLong(SCALE_DYNUPDATE)); ++ PyDict_SetItemString(d, "SCALE_ROWSONLY", PyLong_FromLong(SCALE_ROWSONLY)); ++ PyDict_SetItemString(d, "SCALE_COLSONLY", PyLong_FromLong(SCALE_COLSONLY)); ++ PyDict_SetItemString(d, "IMPROVE_NONE", PyLong_FromLong(IMPROVE_NONE)); ++ PyDict_SetItemString(d, "IMPROVE_SOLUTION", PyLong_FromLong(IMPROVE_SOLUTION)); ++ PyDict_SetItemString(d, "IMPROVE_DUALFEAS", PyLong_FromLong(IMPROVE_DUALFEAS)); ++ PyDict_SetItemString(d, "IMPROVE_THETAGAP", PyLong_FromLong(IMPROVE_THETAGAP)); ++ PyDict_SetItemString(d, "IMPROVE_BBSIMPLEX", PyLong_FromLong(IMPROVE_BBSIMPLEX)); ++ PyDict_SetItemString(d, "PRICER_FIRSTINDEX", PyLong_FromLong(PRICER_FIRSTINDEX)); ++ PyDict_SetItemString(d, "PRICER_DANTZIG", PyLong_FromLong(PRICER_DANTZIG)); ++ PyDict_SetItemString(d, "PRICER_DEVEX", PyLong_FromLong(PRICER_DEVEX)); ++ PyDict_SetItemString(d, "PRICER_STEEPESTEDGE", PyLong_FromLong(PRICER_STEEPESTEDGE)); ++ PyDict_SetItemString(d, "PRICE_PRIMALFALLBACK", PyLong_FromLong(PRICE_PRIMALFALLBACK)); ++ PyDict_SetItemString(d, "PRICE_MULTIPLE", PyLong_FromLong(PRICE_MULTIPLE)); ++ PyDict_SetItemString(d, "PRICE_PARTIAL", PyLong_FromLong(PRICE_PARTIAL)); ++ PyDict_SetItemString(d, "PRICE_ADAPTIVE", PyLong_FromLong(PRICE_ADAPTIVE)); ++ PyDict_SetItemString(d, "PRICE_RANDOMIZE", PyLong_FromLong(PRICE_RANDOMIZE)); ++ PyDict_SetItemString(d, "PRICE_AUTOPARTIAL", PyLong_FromLong(PRICE_AUTOPARTIAL)); ++ PyDict_SetItemString(d, "PRICE_LOOPLEFT", PyLong_FromLong(PRICE_LOOPLEFT)); ++ PyDict_SetItemString(d, "PRICE_LOOPALTERNATE", PyLong_FromLong(PRICE_LOOPALTERNATE)); ++ PyDict_SetItemString(d, "PRICE_HARRISTWOPASS", PyLong_FromLong(PRICE_HARRISTWOPASS)); ++ PyDict_SetItemString(d, "PRICE_TRUENORMINIT", PyLong_FromLong(PRICE_TRUENORMINIT)); ++ PyDict_SetItemString(d, "PRESOLVE_NONE", PyLong_FromLong(PRESOLVE_NONE)); ++ PyDict_SetItemString(d, "PRESOLVE_ROWS", PyLong_FromLong(PRESOLVE_ROWS)); ++ PyDict_SetItemString(d, "PRESOLVE_COLS", PyLong_FromLong(PRESOLVE_COLS)); ++ PyDict_SetItemString(d, "PRESOLVE_LINDEP", PyLong_FromLong(PRESOLVE_LINDEP)); ++ PyDict_SetItemString(d, "PRESOLVE_SOS", PyLong_FromLong(PRESOLVE_SOS)); ++ PyDict_SetItemString(d, "PRESOLVE_REDUCEMIP", PyLong_FromLong(PRESOLVE_REDUCEMIP)); ++ PyDict_SetItemString(d, "PRESOLVE_KNAPSACK", PyLong_FromLong(PRESOLVE_KNAPSACK)); ++ PyDict_SetItemString(d, "PRESOLVE_ELIMEQ2", PyLong_FromLong(PRESOLVE_ELIMEQ2)); ++ PyDict_SetItemString(d, "PRESOLVE_IMPLIEDFREE", PyLong_FromLong(PRESOLVE_IMPLIEDFREE)); ++ PyDict_SetItemString(d, "PRESOLVE_REDUCEGCD", PyLong_FromLong(PRESOLVE_REDUCEGCD)); ++ PyDict_SetItemString(d, "PRESOLVE_PROBEFIX", PyLong_FromLong(PRESOLVE_PROBEFIX)); ++ PyDict_SetItemString(d, "PRESOLVE_PROBEREDUCE", PyLong_FromLong(PRESOLVE_PROBEREDUCE)); ++ PyDict_SetItemString(d, "PRESOLVE_ROWDOMINATE", PyLong_FromLong(PRESOLVE_ROWDOMINATE)); ++ PyDict_SetItemString(d, "PRESOLVE_COLDOMINATE", PyLong_FromLong(PRESOLVE_COLDOMINATE)); ++ PyDict_SetItemString(d, "PRESOLVE_MERGEROWS", PyLong_FromLong(PRESOLVE_MERGEROWS)); ++ PyDict_SetItemString(d, "PRESOLVE_IMPLIEDSLK", PyLong_FromLong(PRESOLVE_IMPLIEDSLK)); ++ PyDict_SetItemString(d, "PRESOLVE_COLFIXDUAL", PyLong_FromLong(PRESOLVE_COLFIXDUAL)); ++ PyDict_SetItemString(d, "PRESOLVE_BOUNDS", PyLong_FromLong(PRESOLVE_BOUNDS)); ++ PyDict_SetItemString(d, "PRESOLVE_DUALS", PyLong_FromLong(PRESOLVE_DUALS)); ++ PyDict_SetItemString(d, "PRESOLVE_SENSDUALS", PyLong_FromLong(PRESOLVE_SENSDUALS)); ++ PyDict_SetItemString(d, "ANTIDEGEN_NONE", PyLong_FromLong(ANTIDEGEN_NONE)); ++ PyDict_SetItemString(d, "ANTIDEGEN_FIXEDVARS", PyLong_FromLong(ANTIDEGEN_FIXEDVARS)); ++ PyDict_SetItemString(d, "ANTIDEGEN_COLUMNCHECK", PyLong_FromLong(ANTIDEGEN_COLUMNCHECK)); ++ PyDict_SetItemString(d, "ANTIDEGEN_STALLING", PyLong_FromLong(ANTIDEGEN_STALLING)); ++ PyDict_SetItemString(d, "ANTIDEGEN_NUMFAILURE", PyLong_FromLong(ANTIDEGEN_NUMFAILURE)); ++ PyDict_SetItemString(d, "ANTIDEGEN_LOSTFEAS", PyLong_FromLong(ANTIDEGEN_LOSTFEAS)); ++ PyDict_SetItemString(d, "ANTIDEGEN_INFEASIBLE", PyLong_FromLong(ANTIDEGEN_INFEASIBLE)); ++ PyDict_SetItemString(d, "ANTIDEGEN_DYNAMIC", PyLong_FromLong(ANTIDEGEN_DYNAMIC)); ++ PyDict_SetItemString(d, "ANTIDEGEN_DURINGBB", PyLong_FromLong(ANTIDEGEN_DURINGBB)); ++ PyDict_SetItemString(d, "ANTIDEGEN_RHSPERTURB", PyLong_FromLong(ANTIDEGEN_RHSPERTURB)); ++ PyDict_SetItemString(d, "ANTIDEGEN_BOUNDFLIP", PyLong_FromLong(ANTIDEGEN_BOUNDFLIP)); ++ PyDict_SetItemString(d, "CRASH_NONE", PyLong_FromLong(CRASH_NONE)); ++ PyDict_SetItemString(d, "CRASH_MOSTFEASIBLE", PyLong_FromLong(CRASH_MOSTFEASIBLE)); ++ PyDict_SetItemString(d, "CRASH_LEASTDEGENERATE", PyLong_FromLong(CRASH_LEASTDEGENERATE)); ++ PyDict_SetItemString(d, "SIMPLEX_PRIMAL_PRIMAL", PyLong_FromLong(SIMPLEX_PRIMAL_PRIMAL)); ++ PyDict_SetItemString(d, "SIMPLEX_DUAL_PRIMAL", PyLong_FromLong(SIMPLEX_DUAL_PRIMAL)); ++ PyDict_SetItemString(d, "SIMPLEX_PRIMAL_DUAL", PyLong_FromLong(SIMPLEX_PRIMAL_DUAL)); ++ PyDict_SetItemString(d, "SIMPLEX_DUAL_DUAL", PyLong_FromLong(SIMPLEX_DUAL_DUAL)); ++ PyDict_SetItemString(d, "NODE_FIRSTSELECT", PyLong_FromLong(NODE_FIRSTSELECT)); ++ PyDict_SetItemString(d, "NODE_GAPSELECT", PyLong_FromLong(NODE_GAPSELECT)); ++ PyDict_SetItemString(d, "NODE_RANGESELECT", PyLong_FromLong(NODE_RANGESELECT)); ++ PyDict_SetItemString(d, "NODE_FRACTIONSELECT", PyLong_FromLong(NODE_FRACTIONSELECT)); ++ PyDict_SetItemString(d, "NODE_PSEUDOCOSTSELECT", PyLong_FromLong(NODE_PSEUDOCOSTSELECT)); ++ PyDict_SetItemString(d, "NODE_PSEUDONONINTSELECT", PyLong_FromLong(NODE_PSEUDONONINTSELECT)); ++ PyDict_SetItemString(d, "NODE_PSEUDORATIOSELECT", PyLong_FromLong(NODE_PSEUDORATIOSELECT)); ++ PyDict_SetItemString(d, "NODE_USERSELECT", PyLong_FromLong(NODE_USERSELECT)); ++ PyDict_SetItemString(d, "NODE_WEIGHTREVERSEMODE", PyLong_FromLong(NODE_WEIGHTREVERSEMODE)); ++ PyDict_SetItemString(d, "NODE_BRANCHREVERSEMODE", PyLong_FromLong(NODE_BRANCHREVERSEMODE)); ++ PyDict_SetItemString(d, "NODE_GREEDYMODE", PyLong_FromLong(NODE_GREEDYMODE)); ++ PyDict_SetItemString(d, "NODE_PSEUDOCOSTMODE", PyLong_FromLong(NODE_PSEUDOCOSTMODE)); ++ PyDict_SetItemString(d, "NODE_DEPTHFIRSTMODE", PyLong_FromLong(NODE_DEPTHFIRSTMODE)); ++ PyDict_SetItemString(d, "NODE_RANDOMIZEMODE", PyLong_FromLong(NODE_RANDOMIZEMODE)); ++ PyDict_SetItemString(d, "NODE_GUBMODE", PyLong_FromLong(NODE_GUBMODE)); ++ PyDict_SetItemString(d, "NODE_DYNAMICMODE", PyLong_FromLong(NODE_DYNAMICMODE)); ++ PyDict_SetItemString(d, "NODE_RESTARTMODE", PyLong_FromLong(NODE_RESTARTMODE)); ++ PyDict_SetItemString(d, "NODE_BREADTHFIRSTMODE", PyLong_FromLong(NODE_BREADTHFIRSTMODE)); ++ PyDict_SetItemString(d, "NODE_AUTOORDER", PyLong_FromLong(NODE_AUTOORDER)); ++ PyDict_SetItemString(d, "NODE_RCOSTFIXING", PyLong_FromLong(NODE_RCOSTFIXING)); ++ PyDict_SetItemString(d, "NODE_STRONGINIT", PyLong_FromLong(NODE_STRONGINIT)); ++ PyDict_SetItemString(d, "NOMEMORY", PyLong_FromLong(NOMEMORY)); ++ PyDict_SetItemString(d, "OPTIMAL", PyLong_FromLong(OPTIMAL)); ++ PyDict_SetItemString(d, "SUBOPTIMAL", PyLong_FromLong(SUBOPTIMAL)); ++ PyDict_SetItemString(d, "INFEASIBLE", PyLong_FromLong(INFEASIBLE)); ++ PyDict_SetItemString(d, "UNBOUNDED", PyLong_FromLong(UNBOUNDED)); ++ PyDict_SetItemString(d, "DEGENERATE", PyLong_FromLong(DEGENERATE)); ++ PyDict_SetItemString(d, "NUMFAILURE", PyLong_FromLong(NUMFAILURE)); ++ PyDict_SetItemString(d, "USERABORT", PyLong_FromLong(USERABORT)); ++ PyDict_SetItemString(d, "TIMEOUT", PyLong_FromLong(TIMEOUT)); ++ PyDict_SetItemString(d, "PRESOLVED", PyLong_FromLong(PRESOLVED)); ++ PyDict_SetItemString(d, "PROCFAIL", PyLong_FromLong(PROCFAIL)); ++ PyDict_SetItemString(d, "PROCBREAK", PyLong_FromLong(PROCBREAK)); ++ PyDict_SetItemString(d, "FEASFOUND", PyLong_FromLong(FEASFOUND)); ++ PyDict_SetItemString(d, "NOFEASFOUND", PyLong_FromLong(NOFEASFOUND)); ++ PyDict_SetItemString(d, "BRANCH_CEILING", PyLong_FromLong(BRANCH_CEILING)); ++ PyDict_SetItemString(d, "BRANCH_FLOOR", PyLong_FromLong(BRANCH_FLOOR)); ++ PyDict_SetItemString(d, "BRANCH_AUTOMATIC", PyLong_FromLong(BRANCH_AUTOMATIC)); ++ PyDict_SetItemString(d, "BRANCH_DEFAULT", PyLong_FromLong(BRANCH_DEFAULT)); ++ PyDict_SetItemString(d, "MSG_PRESOLVE", PyLong_FromLong(MSG_PRESOLVE)); ++ PyDict_SetItemString(d, "MSG_LPFEASIBLE", PyLong_FromLong(MSG_LPFEASIBLE)); ++ PyDict_SetItemString(d, "MSG_LPOPTIMAL", PyLong_FromLong(MSG_LPOPTIMAL)); ++ PyDict_SetItemString(d, "MSG_MILPEQUAL", PyLong_FromLong(MSG_MILPEQUAL)); ++ PyDict_SetItemString(d, "MSG_MILPFEASIBLE", PyLong_FromLong(MSG_MILPFEASIBLE)); ++ PyDict_SetItemString(d, "MSG_MILPBETTER", PyLong_FromLong(MSG_MILPBETTER)); ++ PyDict_SetItemString(d, "NEUTRAL", PyLong_FromLong(NEUTRAL)); ++ PyDict_SetItemString(d, "CRITICAL", PyLong_FromLong(CRITICAL)); ++ PyDict_SetItemString(d, "SEVERE", PyLong_FromLong(SEVERE)); ++ PyDict_SetItemString(d, "IMPORTANT", PyLong_FromLong(IMPORTANT)); ++ PyDict_SetItemString(d, "NORMAL", PyLong_FromLong(NORMAL)); ++ PyDict_SetItemString(d, "DETAILED", PyLong_FromLong(DETAILED)); ++ PyDict_SetItemString(d, "FULL", PyLong_FromLong(FULL)); + PyDict_SetItemString(d, "Infinite", PyFloat_FromDouble(DEF_INFINITE)); ++ ++ return m; + } + + void Printf(char *format, ...) +@@ -768,7 +777,7 @@ int GetString(structlpsolvecaller *lpsolvecaller, pMat + } + item = GetpMatrix(lpsolvecaller, element); + if((item == NULL) || +- (PyString_AsStringAndSize(item, &ptr, &size1) != 0) || ++ (PyBytes_AsStringAndSize(item, &ptr, &size1) != 0) || + (ptr == NULL)) { + PyErr_Clear(); + if(ShowError) +@@ -796,7 +805,7 @@ strArray GetCellCharItems(structlpsolvecaller *lpsolve + ErrMsgTxt(lpsolvecaller, "Expecting a character array."); + return(NULL); + } +- if (PyString_Check(vector)) { ++ if (PyUnicode_Check(vector)) { + m = 1; + isvector = FALSE; + } +@@ -821,7 +830,7 @@ strArray GetCellCharItems(structlpsolvecaller *lpsolve + item = PySequence_GetItem(vector, i); + else + item = vector; +- if ((item == NULL) || (!PyString_Check(item))) { ++ if ((item == NULL) || (!PyUnicode_Check(item))) { + PyErr_Clear(); + if ((isvector) && (item != NULL)) { + Py_DECREF(item); +@@ -829,7 +838,7 @@ strArray GetCellCharItems(structlpsolvecaller *lpsolve + FreeCellCharItems(pa, i); + ErrMsgTxt(lpsolvecaller, "invalid vector (non-string item)."); + } +- if ((PyString_AsStringAndSize(item, &ptr, &size1) != 0) || ++ if ((PyBytes_AsStringAndSize(item, &ptr, &size1) != 0) || + (ptr == NULL)) { + PyErr_Clear(); + if (isvector) { +@@ -1025,14 +1034,14 @@ void SetColumnDoubleSparseMatrix(structlpsolvecaller * + void CreateString(structlpsolvecaller *lpsolvecaller, char **str, int m, int element) + { + if(m == 1) +- setlhs(lpsolvecaller, element, PyString_FromString(*str)); ++ setlhs(lpsolvecaller, element, PyUnicode_FromString(*str)); + else { + PyObject *PyObject1; + int i, len = m; + + PyObject1 = MyPyArray_New(len); + for (i = 0; i < len; i++) +- MyPyArray_SET_ITEM(PyObject1, i, PyString_FromString(*(str++))); ++ MyPyArray_SET_ITEM(PyObject1, i, PyUnicode_FromString(*(str++))); + setlhs(lpsolvecaller, element, PyObject1); + } + } Index: python/patches/patch-setup_py =================================================================== RCS file: /cvs/ports/math/lpsolve/python/patches/patch-setup_py,v retrieving revision 1.1 diff -u -p -u -r1.1 patch-setup_py --- python/patches/patch-setup_py 11 May 2012 23:29:30 -0000 1.1 +++ python/patches/patch-setup_py 11 Oct 2020 19:02:43 -0000 @@ -1,6 +1,15 @@ $OpenBSD: patch-setup_py,v 1.1 2012/05/11 23:29:30 edd Exp $ ---- setup.py.orig Mon Feb 1 20:57:56 2010 -+++ setup.py Fri May 11 15:02:36 2012 + +Convert lpsolve from python2 to python3. Recipe from: +https://stackoverflow.com/questions/48765299/ + +Roughly: +- remove hash.c +- add colamd to list of libraries + +Index: setup.py +--- setup.py.orig ++++ setup.py @@ -3,15 +3,8 @@ from os import getenv import sys import os @@ -19,12 +28,17 @@ $OpenBSD: patch-setup_py,v 1.1 2012/05/1 windir = getenv('windir') if windir == None: WIN32 = 'NOWIN32' -@@ -29,7 +22,7 @@ setup (name = "lpsolve55", +@@ -27,10 +20,10 @@ setup (name = "lpsolve55", + url = "http://www.peno.be/", + py_modules=['lp_solve', 'lp_maker'], ext_modules = [Extension("lpsolve55", - ["lpsolve.c", "hash.c", "pythonmod.c"], +- ["lpsolve.c", "hash.c", "pythonmod.c"], ++ ["lpsolve.c", "pythonmod.c"], define_macros=[('PYTHON', '1'), (WIN32, '1'), ('NODEBUG', '1'), ('DINLINE', 'static'), (NUMPY, '1'), ('_CRT_SECURE_NO_WARNINGS', '1')], - include_dirs=['../..', NUMPYPATH], + include_dirs=['../..', NUMPYPATH, '${LOCALBASE}/include/lpsolve'], library_dirs=[LPSOLVE55], - libraries = ["lpsolve55"]) +- libraries = ["lpsolve55"]) ++ libraries = ["lpsolve55", "colamd"]) ] + ) Index: python/pkg/PLIST =================================================================== RCS file: /cvs/ports/math/lpsolve/python/pkg/PLIST,v retrieving revision 1.1 diff -u -p -u -r1.1 PLIST --- python/pkg/PLIST 11 May 2012 23:29:30 -0000 1.1 +++ python/pkg/PLIST 11 Oct 2020 19:02:43 -0000 @@ -1,7 +1,8 @@ @comment $OpenBSD: PLIST,v 1.1 2012/05/11 23:29:30 edd Exp $ +lib/python${MODPY_VERSION}/site-packages/${MODPY_PYCACHE}/ +lib/python${MODPY_VERSION}/site-packages/${MODPY_PYCACHE}lp_maker.${MODPY_PYC_MAGIC_TAG}pyc +lib/python${MODPY_VERSION}/site-packages/${MODPY_PYCACHE}lp_solve.${MODPY_PYC_MAGIC_TAG}pyc lib/python${MODPY_VERSION}/site-packages/lp_maker.py -lib/python${MODPY_VERSION}/site-packages/lp_maker.pyc lib/python${MODPY_VERSION}/site-packages/lp_solve.py -lib/python${MODPY_VERSION}/site-packages/lp_solve.pyc lib/python${MODPY_VERSION}/site-packages/lpsolve55-${MODPY_EGG_VERSION}-py${MODPY_VERSION}.egg-info -lib/python${MODPY_VERSION}/site-packages/lpsolve55.so +@so lib/python${MODPY_VERSION}/site-packages/lpsolve55.so