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

Reply via email to