Add Python bindings for lpsolve-5.5.20, move all common stuff into a

Makefile.inc, remove dependency upon libcompat with patching.

OK jasper@
This commit is contained in:
edd 2012-05-11 23:29:30 +00:00
parent 617e4e085f
commit 695cd59509
12 changed files with 128 additions and 30 deletions

View File

@ -1,7 +1,7 @@
# $OpenBSD: Makefile,v 1.1 2012/04/20 09:56:56 edd Exp $
# $OpenBSD: Makefile,v 1.2 2012/05/11 23:29:30 edd Exp $
SUBDIR =
SUBDIR += core
# bindings may come later
SUBDIR += python
.include <bsd.port.subdir.mk>

15
math/lpsolve/Makefile.inc Normal file
View File

@ -0,0 +1,15 @@
# $OpenBSD: Makefile.inc,v 1.1 2012/05/11 23:29:30 edd Exp $
V_MAJOR ?= 5.5
V ?= ${V_MAJOR}.2.0
CATEGORIES ?= math devel
HOMEPAGE ?= http://lpsolve.sourceforge.net
MAINTAINER ?= Edd Barrett <edd@openbsd.org>
MASTER_SITES ?= ${MASTER_SITE_SOURCEFORGE:=lpsolve/}
# LGPLv2.1
PERMIT_PACKAGE_CDROM ?= Yes
PERMIT_PACKAGE_FTP ?= Yes
PERMIT_DISTFILES_CDROM ?= Yes
PERMIT_DISTFILES_FTP ?= Yes

View File

@ -1,32 +1,15 @@
# $OpenBSD: Makefile,v 1.1.1.1 2012/04/20 09:54:11 edd Exp $
# $OpenBSD: Makefile,v 1.2 2012/05/11 23:29:30 edd Exp $
COMMENT = mixed integer linear programming solver
V_MAJOR = 5.5
V = ${V_MAJOR}.2.0
DISTNAME = lp_solve_${V}_source
PKGNAME = lpsolve-${V}
WRKDIST = ${WRKDIR}/lp_solve_${V_MAJOR}
SHARED_LIBS = lpsolve55 0.0 # unversioned upstream
CATEGORIES = math devel
HOMEPAGE = http://lpsolve.sourceforge.net
MAINTAINER = Edd Barrett <edd@openbsd.org>
# LGPLv2.1
# Also contains static LUSOL library which is also LGPLv2.1
PERMIT_PACKAGE_CDROM = Yes
PERMIT_PACKAGE_FTP = Yes
PERMIT_DISTFILES_CDROM =Yes
PERMIT_DISTFILES_FTP = Yes
WANTLIB += c m
MASTER_SITES = ${MASTER_SITE_SOURCEFORGE:=lpsolve/}
# Docs are distributed separately
DOCDISTFILE = lp_solve_5.5.2.0_doc${EXTRACT_SUFX}
DISTFILES = ${DISTNAME}${EXTRACT_SUFX} \
@ -36,6 +19,7 @@ EXTRACT_ONLY = ${DISTNAME}${EXTRACT_SUFX}
# Build is a series of shell scripts
MAKE_ENV += CC=${CC} LIBlpsolve55_VERSION=${LIBlpsolve55_VERSION} \
WRKDIR=${WRKDIR}
do-build:
mkdir ${WRKDIR}/tmp # builds programs here to check for features
cd ${WRKSRC}/lpsolve55 && \

View File

@ -1,6 +1,6 @@
$OpenBSD: patch-demo_ccc,v 1.1.1.1 2012/04/20 09:54:11 edd Exp $
$OpenBSD: patch-demo_ccc,v 1.2 2012/05/11 23:29:30 edd Exp $
--- demo/ccc.orig Thu Jun 23 20:52:04 2005
+++ demo/ccc Wed Apr 18 17:20:18 2012
+++ demo/ccc Wed May 2 14:34:01 2012
@@ -1,5 +1,5 @@
src='../lp_MDO.c ../shared/commonlib.c ../colamd/colamd.c ../shared/mmio.c ../shared/myblas.c ../ini.c ../lp_rlp.c ../lp_crash.c ../bfp/bfp_LUSOL/lp_LUSOL.c ../bfp/bfp_LUSOL/LUSOL/lusol.c ../lp_Hash.c ../lp_lib.c ../lp_wlp.c ../lp_matrix.c ../lp_mipbb.c ../lp_MPS.c ../lp_params.c ../lp_presolve.c ../lp_price.c ../lp_pricePSE.c ../lp_report.c ../lp_scale.c ../lp_simplex.c ../lp_SOS.c ../lp_utils.c ../yacc_read.c'
-c=cc
@ -19,5 +19,4 @@ $OpenBSD: patch-demo_ccc,v 1.1.1.1 2012/04/20 09:54:11 edd Exp $
-opts='-O3'
+opts=${CFLAGS}
-$c -I.. -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -I../shared $opts $def -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine demo.c $src -o demo $math $dl
+$c -I.. -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -I../shared $opts $def -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine demo.c $src -o demo $math $dl -lcompat
$c -I.. -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -I../shared $opts $def -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine demo.c $src -o demo $math $dl

View File

@ -1,4 +1,4 @@
$OpenBSD: patch-lp_solve_ccc,v 1.1.1.1 2012/04/20 09:54:11 edd Exp $
$OpenBSD: patch-lp_solve_ccc,v 1.2 2012/05/11 23:29:30 edd Exp $
* We don't use -ldl
* Don't use platform specific paths
@ -6,7 +6,7 @@ $OpenBSD: patch-lp_solve_ccc,v 1.1.1.1 2012/04/20 09:54:11 edd Exp $
* Don't write to /tmp suring build
--- lp_solve/ccc.orig Sun Jan 25 18:39:03 2009
+++ lp_solve/ccc Fri Apr 20 10:04:09 2012
+++ lp_solve/ccc Wed May 2 14:35:02 2012
@@ -1,41 +1,41 @@
:
src='../lp_MDO.c ../shared/commonlib.c ../colamd/colamd.c ../shared/mmio.c ../shared/myblas.c ../ini.c ../fortify.c ../lp_rlp.c ../lp_crash.c ../bfp/bfp_LUSOL/lp_LUSOL.c ../bfp/bfp_LUSOL/LUSOL/lusol.c ../lp_Hash.c ../lp_lib.c ../lp_wlp.c ../lp_matrix.c ../lp_mipbb.c ../lp_MPS.c ../lp_params.c ../lp_presolve.c ../lp_price.c ../lp_pricePSE.c ../lp_report.c ../lp_scale.c ../lp_simplex.c lp_solve.c ../lp_SOS.c ../lp_utils.c ../yacc_read.c'
@ -63,7 +63,7 @@ $OpenBSD: patch-lp_solve_ccc,v 1.1.1.1 2012/04/20 09:54:11 edd Exp $
def='-dy -K PIC -DLLONG=long'
dl=-ldl
-else dl=-ldl
+else dl=-lcompat
+else dl=
fi
-$c -I.. -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -I../shared $opts $def $NOISNAN -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src -o bin/$PLATFORM/lp_solve $math $dl

View File

@ -1,4 +1,4 @@
$OpenBSD: patch-lpsolve55_ccc,v 1.1.1.1 2012/04/20 09:54:11 edd Exp $
$OpenBSD: patch-lpsolve55_ccc,v 1.2 2012/05/11 23:29:30 edd Exp $
* We don't use -ldl
* Don't use platform specific paths
@ -6,7 +6,7 @@ $OpenBSD: patch-lpsolve55_ccc,v 1.1.1.1 2012/04/20 09:54:11 edd Exp $
* Don't write to /tmp during build
--- lpsolve55/ccc.orig Wed Mar 25 00:27:18 2009
+++ lpsolve55/ccc Fri Apr 20 10:02:22 2012
+++ lpsolve55/ccc Fri May 11 15:16:45 2012
@@ -1,50 +1,50 @@
:
src='../lp_MDO.c ../shared/commonlib.c ../shared/mmio.c ../shared/myblas.c ../ini.c ../fortify.c ../colamd/colamd.c ../lp_rlp.c ../lp_crash.c ../bfp/bfp_LUSOL/lp_LUSOL.c ../bfp/bfp_LUSOL/LUSOL/lusol.c ../lp_Hash.c ../lp_lib.c ../lp_wlp.c ../lp_matrix.c ../lp_mipbb.c ../lp_MPS.c ../lp_params.c ../lp_presolve.c ../lp_price.c ../lp_pricePSE.c ../lp_report.c ../lp_scale.c ../lp_simplex.c ../lp_SOS.c ../lp_utils.c ../yacc_read.c'
@ -75,7 +75,7 @@ $OpenBSD: patch-lpsolve55_ccc,v 1.1.1.1 2012/04/20 09:54:11 edd Exp $
then
$c -fpic -s -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -I. $opts $NOISNAN -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
- $c -shared -Wl,-Bsymbolic -Wl,-soname,liblpsolve55.so -o bin/$PLATFORM/liblpsolve55.so `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'` -lc -lm -ldl
+ $c -shared -Wl,-Bsymbolic -Wl,-soname,liblpsolve55.so.${LIBlpsolve55_VERSION} -o bin/liblpsolve55.so.${LIBlpsolve55_VERSION} `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'` -lc -lm
+ $c -shared -Wl,-Bsymbolic -Wl,-soname,liblpsolve55.so.${LIBlpsolve55_VERSION} -o bin/liblpsolve55.so.${LIBlpsolve55_VERSION} `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'` -lc -lm ${dl}
fi
rm *.o 2>/dev/null

View File

@ -0,0 +1,32 @@
$OpenBSD: patch-shared_commonlib_c,v 1.1 2012/05/11 23:29:30 edd Exp $
ftime() is deprecated and causes issues for the python bindings.
From freebsd patch-shared+commonlib.c 1.2.
--- shared/commonlib.c.orig Sun Feb 1 19:31:59 2009
+++ shared/commonlib.c Wed May 2 14:29:13 2012
@@ -6,7 +6,7 @@
#elif defined EnhTime
# include <windows.h>
#else
-# include <sys/timeb.h>
+# include <sys/time.h>
#endif
#include <stdlib.h>
@@ -844,10 +844,12 @@ double timeNow(void)
}
return( timeBase + (double) now.QuadPart/(double) freq.QuadPart );
#else
- struct timeb buf;
+ struct timeval tv;
+ struct timezone tz;
- ftime(&buf);
- return((double)buf.time+((double) buf.millitm)/1000.0);
+ gettimeofday(&tv, &tz);
+ return((double)tv.tv_sec+((double)tv.tv_usec)/1000000.0);
+
#endif
}

View File

@ -0,0 +1,24 @@
# $OpenBSD: Makefile,v 1.1 2012/05/11 23:29:30 edd Exp $
COMMENT = Python bindings for lpsolve
DISTNAME = lp_solve_${V}_Python_source
MODPY_EGG_VERSION = 5.5.0.9 # interface version differs from pkg version
PKGNAME = py-lpsolve-${V}
LIB_DEPENDS += math/lpsolve/core
BUILD_DEPENDS += math/py-numpy
RUN_DEPENDS += math/py-numpy
MODULES = lang/python
WRKDIST = ${WRKDIR}/lp_solve_${V_MAJOR}/extra/Python
WANTLIB += lpsolve55 ${MODPY_WANTLIB}
NUMPY_PATH = ${MODPY_LIBDIR}/site-packages/numpy/core/include
SUBST_VARS += NUMPY_PATH
pre-configure:
${SUBST_CMD} ${WRKBUILD}/setup.py
NO_REGRESS = Yes
.include <bsd.port.mk>

View File

@ -0,0 +1,5 @@
MD5 (lp_solve_5.5.2.0_Python_source.tar.gz) = /tprVaYvh3VX9J4EsJEZHA==
RMD160 (lp_solve_5.5.2.0_Python_source.tar.gz) = w9Wzh+2FoiKxfzPxmH0l2oAYKv0=
SHA1 (lp_solve_5.5.2.0_Python_source.tar.gz) = BYzO1raifMFgycUFTGuUsOrm2Yk=
SHA256 (lp_solve_5.5.2.0_Python_source.tar.gz) = eWg7wmLp2lsvpzOLoZCpzRBVm58tvLjzvwfiqBCDrFE=
SIZE (lp_solve_5.5.2.0_Python_source.tar.gz) = 58017

View File

@ -0,0 +1,30 @@
$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
@@ -3,15 +3,8 @@ from os import getenv
import sys
import os
p = sys.prefix
-NUMPYPATH = '.'
-if os.path.isdir(p + '/include/numpy'):
- NUMPY = 'NUMPY'
-elif os.path.isdir(p + '/Lib/site-packages/numpy/core/include/numpy'):
- NUMPY = 'NUMPY'
- NUMPYPATH = p + '/Lib/site-packages/numpy/core/include'
-else:
- NUMPY = 'NONUMPY'
-print 'numpy: ' + NUMPY
+NUMPYPATH = '${NUMPY_PATH}'
+NUMPY='NUMPY'
windir = getenv('windir')
if windir == None:
WIN32 = 'NOWIN32'
@@ -29,7 +22,7 @@ setup (name = "lpsolve55",
ext_modules = [Extension("lpsolve55",
["lpsolve.c", "hash.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"])
]

View File

@ -0,0 +1,2 @@
Python bindings for the lpsolve mixed integer linear programming (MILP)
solver.

View File

@ -0,0 +1,7 @@
@comment $OpenBSD: PLIST,v 1.1 2012/05/11 23:29:30 edd Exp $
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