Compare commits

..

1 Commits
c9 ... i10ce

2
.gitignore vendored

@ -1 +1 @@
SOURCES/lp_solve_5.5.2.0_source.tar.gz
SOURCES/lp_solve_5.5.2.11_source-repackaged.tar.gz

@ -1 +1 @@
e2830053cf079839b9ce21662cbc886ac6d31c80 SOURCES/lp_solve_5.5.2.0_source.tar.gz
ae1c2bc586cffb4aae85fa893fd2fe9146b4e12f SOURCES/lp_solve_5.5.2.11_source-repackaged.tar.gz

@ -0,0 +1,46 @@
From 11c6cd491bd192e0e3fef9fd2652297797e0fef1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Thu, 8 Jun 2023 16:11:00 +0200
Subject: [PATCH] Link a tool to a shared library
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Build first lpsolve55 (the library), then lp_solve (the tool). It will
save time and space.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
lp_solve/ccc | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/lp_solve/ccc b/lp_solve/ccc
index f86be81..d3aaba8 100644
--- a/lp_solve/ccc
+++ b/lp_solve/ccc
@@ -1,5 +1,5 @@
:
-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'
+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_SOS.c ../lp_utils.c ../yacc_read.c'
c=${CC:-cc}
CFLAGS=${CFLAGS:--O3}
@@ -34,11 +34,14 @@ rm "$MYTMP"/isnan.c "$MYTMP"/isnan >/dev/null 2>&1
rmdir "$MYTMP"
def=
+LIBS=
if [ "$PLATFORM" = "SCO_UNIX" ]
then CFLAGS="${CFLAGS} -O0"
def='-dy -K PIC -DLLONG=long'
dl=-ldl
else dl=-ldl
+ LIBS="-L../lpsolve55/bin/$PLATFORM -llpsolve55"
+ src=''
fi
-$c $CFLAGS -I.. -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -I../shared $def $NOISNAN -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src $LDFLAGS -o bin/$PLATFORM/lp_solve $math $dl
+$c $CFLAGS -I.. -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -I../shared $def $NOISNAN -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src lp_solve.c $LDFLAGS -o bin/$PLATFORM/lp_solve $math $dl $LIBS
--
2.40.1

@ -0,0 +1,92 @@
From a826560622624aefbe1df965a4887c35051de9d9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Tue, 27 Jun 2023 14:58:25 +0200
Subject: [PATCH 2/2] Port lp_MDO to colamd-3.0.4
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The port was done intentionally without modifying the COLAMD sources.
That should ease any future rebases, or building against
a system-provided COLAMD library.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
lp_MDO.c | 27 +++++++++++++++++++++++----
1 file changed, 23 insertions(+), 4 deletions(-)
diff --git a/lp_MDO.c b/lp_MDO.c
index 1217229..a617cf0 100644
--- a/lp_MDO.c
+++ b/lp_MDO.c
@@ -18,6 +18,7 @@
----------------------------------------------------------------------------------
*/
+#include <limits.h> /* for INT_MAX */
#include <string.h>
#include "commonlib.h"
#include "lp_lib.h"
@@ -28,6 +29,18 @@
# include "lp_fortify.h"
#endif
+/* COLAMD has explicit 32-bit and 64-bit interfaces. To keep polymorphic int
+ * type in this code, alias the functions here. */
+#if INT_MAX == (1<<31) - 1
+ /* Use default names. */
+#elif INT_MAX == (1<<63) - 1
+# define colamd colamd_l
+# define colamd_recommended colamd_l_recommended
+# define symamd symamd_l
+#else
+# error "Only 32-bit and 64-bit int types are supported"
+#endif
+
STATIC MYBOOL includeMDO(MYBOOL *usedpos, int item)
{
/* Legend: TRUE => A basic slack variable already in the basis
@@ -160,7 +173,8 @@ int __WINAPI getMDO(lprec *lp, MYBOOL *usedpos, int *colorder, int *size, MYBOOL
int nrows = lp->rows+1, ncols = colorder[0];
int i, j, kk, n;
int *col_end, *row_map = NULL;
- int Bnz, Blen, *Brows = NULL;
+ int Bnz, *Brows = NULL;
+ size_t Blen;
int stats[COLAMD_STATS];
double knobs[COLAMD_KNOBS];
@@ -187,7 +201,12 @@ int __WINAPI getMDO(lprec *lp, MYBOOL *usedpos, int *colorder, int *size, MYBOOL
/* Store row indeces of non-zero values in the basic columns */
Blen = colamd_recommended(Bnz, nrows, ncols);
- allocINT(lp, &Brows, Blen, FALSE);
+ if (Blen == 0 || Blen > INT_MAX) {
+ error = TRUE;
+ stats[COLAMD_STATUS] = COLAMD_ERROR_out_of_memory;
+ goto Transfer;
+ }
+ allocINT(lp, &Brows, (int)Blen, FALSE);
prepareMDO(lp, usedpos, colorder, Brows, row_map);
#ifdef Paranoia
verifyMDO(lp, col_end, Brows, nrows, ncols);
@@ -203,14 +222,14 @@ int __WINAPI getMDO(lprec *lp, MYBOOL *usedpos, int *colorder, int *size, MYBOOL
error = !symamd(nrows, colorder, col_end, Brows, knobs, stats, mdo_calloc, mdo_free);
}
else
- error = !colamd(nrows, ncols, Blen, Brows, col_end, knobs, stats);
+ error = !colamd(nrows, ncols, (int)Blen, Brows, col_end, knobs, stats);
#else
if(symmetric && (nrows == ncols)) {
MEMCOPY(colorder, Brows, ncols + 1);
error = !symamd(nrows, colorder, col_end, Brows, knobs, stats, mdo_calloc, mdo_free);
}
else
- error = !colamd(nrows, ncols, Blen, Brows, col_end, (double *) NULL, stats);
+ error = !colamd(nrows, ncols, (int)Blen, Brows, col_end, (double *) NULL, stats);
#endif
/* Transfer the estimated optimal ordering, adjusting for index offsets */
--
2.41.0

@ -0,0 +1,82 @@
From dc262b45ae8c63be64fa38c7db0296e0d3889895 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Wed, 7 Jun 2023 17:30:18 +0200
Subject: [PATCH] Port to C99
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Port the ccc build configuration detection tool to C99 by
specifying the return type of main as int.
Submitted upstream:
<https://groups.google.com/g/lp_solve/c/WjVf0dxrwfQ/m/rKMwf57tAwAJ>
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
bfp/bfp_LUSOL/ccc | 2 +-
lp_solve/ccc | 4 ++--
lpsolve55/ccc | 4 ++--
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/bfp/bfp_LUSOL/ccc b/bfp/bfp_LUSOL/ccc
index 86b274c..a349345 100644
--- a/bfp/bfp_LUSOL/ccc
+++ b/bfp/bfp_LUSOL/ccc
@@ -7,7 +7,7 @@ c=${CC:-cc}
>/tmp/platform.c
echo '#include <stdlib.h>'>>/tmp/platform.c
echo '#include <stdio.h>'>>/tmp/platform.c
-echo 'main(){printf("ux%d", (int) (sizeof(void *)*8));}'>>/tmp/platform.c
+echo 'int main(void){printf("ux%d", (int) (sizeof(void *)*8));}'>>/tmp/platform.c
$c $CFLAGS /tmp/platform.c $LDFLAGS -o /tmp/platform
PLATFORM=`/tmp/platform`
rm /tmp/platform /tmp/platform.c >/dev/null 2>&1
diff --git a/lp_solve/ccc b/lp_solve/ccc
index 83f21df..2e99f39 100644
--- a/lp_solve/ccc
+++ b/lp_solve/ccc
@@ -8,7 +8,7 @@ MYTMP=`mktemp -d "${TMPDIR:-/tmp}"/lp_solve_XXXXXX`
>"$MYTMP"/platform.c
echo '#include <stdlib.h>'>>"$MYTMP"/platform.c
echo '#include <stdio.h>'>>"$MYTMP"/platform.c
-echo 'main(){printf("ux%d", (int) (sizeof(void *)*8));}'>>"$MYTMP"/platform.c
+echo 'int main(void){printf("ux%d", (int) (sizeof(void *)*8));}'>>"$MYTMP"/platform.c
$c $CFLAGS "$MYTMP"/platform.c $LDFLAGS -o "$MYTMP"/platform
PLATFORM=`"$MYTMP"/platform`
rm "$MYTMP"/platform "$MYTMP"/platform.c >/dev/null 2>&1
@@ -22,7 +22,7 @@ math=-lm
echo '#include <stdio.h>'>>"$MYTMP"/isnan.c
echo '#include <stdlib.h>'>>"$MYTMP"/isnan.c
echo '#include <math.h>'>>"$MYTMP"/isnan.c
-echo 'main(){isnan(0.0);return 0;}'>>"$MYTMP"/isnan.c
+echo 'int main(void){isnan(0.0);return 0;}'>>"$MYTMP"/isnan.c
$c $CFLAGS "$MYTMP"/isnan.c $LDFLAGS -o "$MYTMP"/isnan $math >/dev/null 2>&1
if [ $? = 0 ]
then NOISNAN=
diff --git a/lpsolve55/ccc b/lpsolve55/ccc
index 49cd7dc..59c720f 100644
--- a/lpsolve55/ccc
+++ b/lpsolve55/ccc
@@ -8,7 +8,7 @@ MYTMP=`mktemp -d "${TMPDIR:-/tmp}"/lp_solve_XXXXXX`
>"$MYTMP"/platform.c
echo '#include <stdlib.h>'>>"$MYTMP"/platform.c
echo '#include <stdio.h>'>>"$MYTMP"/platform.c
-echo 'main(){printf("ux%d", (int) (sizeof(void *)*8));}'>>"$MYTMP"/platform.c
+echo 'int main(void){printf("ux%d", (int) (sizeof(void *)*8));}'>>"$MYTMP"/platform.c
$c $CFLAGS "$MYTMP"/platform.c $LDFLAGS -o "$MYTMP"/platform
PLATFORM=`"$MYTMP"/platform`
rm "$MYTMP"/platform "$MYTMP"/platform.c >/dev/null 2>&1
@@ -20,7 +20,7 @@ mkdir bin bin/$PLATFORM >/dev/null 2>&1
echo '#include <stdio.h>'>>"$MYTMP"/isnan.c
echo '#include <stdlib.h>'>>"$MYTMP"/isnan.c
echo '#include <math.h>'>>"$MYTMP"/isnan.c
-echo 'main(){isnan(0.0);return 0;}'>>"$MYTMP"/isnan.c
+echo 'int main(void){isnan(0.0);return 0;}'>>"$MYTMP"/isnan.c
$c $CFLAGS "$MYTMP"/isnan.c $LDFLAGS -o "$MYTMP"/isnan $math >/dev/null 2>&1
if [ $? = 0 ]
then NOISNAN=
--
2.40.1

File diff suppressed because it is too large Load Diff

@ -0,0 +1,193 @@
From f29ae58ddc93d86504c7e646ec5e73befb36594c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Wed, 7 Jun 2023 17:16:50 +0200
Subject: [PATCH] Respect CC, CFLAGS, and LDFLAGS
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The distributions use these environment variables to compile their
software uniformly. This patch modifies the ccc scripts to respect
them.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
bfp/bfp_LUSOL/ccc | 20 +++++++++-----------
demo/ccc | 7 +++----
lp_solve/ccc | 13 ++++++-------
lpsolve55/ccc | 14 ++++++--------
4 files changed, 24 insertions(+), 30 deletions(-)
diff --git a/bfp/bfp_LUSOL/ccc b/bfp/bfp_LUSOL/ccc
index 754738b..3ec9596 100644
--- a/bfp/bfp_LUSOL/ccc
+++ b/bfp/bfp_LUSOL/ccc
@@ -1,37 +1,35 @@
:
src='../../shared/commonlib.c ../../colamd/colamd.c lp_LUSOL.c ../../lp_utils.c ../../shared/myblas.c LUSOL/lusol.c'
-c=cc
+c=${CC:-cc}
+CFLAGS=${CFLAGS:--O3}
#determine platform (32/64 bit)
>/tmp/platform.c
echo '#include <stdlib.h>'>>/tmp/platform.c
echo '#include <stdio.h>'>>/tmp/platform.c
echo 'main(){printf("ux%d", (int) (sizeof(void *)*8));}'>>/tmp/platform.c
-$c /tmp/platform.c -o /tmp/platform
+$c $CFLAGS /tmp/platform.c $LDFLAGS -o /tmp/platform
PLATFORM=`/tmp/platform`
rm /tmp/platform /tmp/platform.c >/dev/null 2>&1
mkdir bin bin/$PLATFORM >/dev/null 2>&1
-opts='-O3'
-#opts=''
-
if [ "$PLATFORM" = "RS6000" ]
-then opts="$opts"
+then
so="-bM:SRE -bE:../bfp_lpsolve.exp"
#so="$so -e _nostart"
so="$so -bnoentry"
elif [ "$PLATFORM" = "SCO_UNIX" ]
then
- opts='-O0'
so="-G -dy"
- opts="$opts -DNOLONGLONG $so"
-else opts="$opts -fpic"
+ CFLAGS="${CFLAGS} -O0 -DNOLONGLONG $so"
+else
+ CFLAGS="${CFLAGS} -fpic"
so="-shared -Wl,-Bsymbolic -Wl,-soname,libbfp_LUSOL.so"
fi
-$c -s -c $opts -I.. -I../.. -I../../colamd -I../../shared -ILUSOL -I. -DRoleIsExternalInvEngine -DINVERSE_ACTIVE=INVERSE_LUSOL $src
-$c $so -o bin/$PLATFORM/libbfp_LUSOL.so `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'` -lc -lm -ldl
+$c $CFLAGS -c -I.. -I../.. -I../../colamd -I../../shared -ILUSOL -I. -DRoleIsExternalInvEngine -DINVERSE_ACTIVE=INVERSE_LUSOL $src
+$c $LDFLAGS $so -o bin/$PLATFORM/libbfp_LUSOL.so `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'` -lc -lm -ldl
rm *.o >/dev/null
diff --git a/demo/ccc b/demo/ccc
index 38713a1..154b898 100644
--- a/demo/ccc
+++ b/demo/ccc
@@ -1,5 +1,6 @@
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
+c=${CC:-cc}
+CFLAGS=${CFLAGS:--O3}
math=-lm
@@ -10,6 +11,4 @@ then def='-dy -K PIC -DNOLONGLONG'
else dl=-ldl
fi
-opts='-O3'
-
-$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 $CFLAGS -I.. -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -I../shared $def -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine demo.c $src $LDFLAGS -o demo $math $dl
diff --git a/lp_solve/ccc b/lp_solve/ccc
index bd5a938..fbb67d9 100644
--- a/lp_solve/ccc
+++ b/lp_solve/ccc
@@ -1,6 +1,7 @@
:
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'
-c=cc
+c=${CC:-cc}
+CFLAGS=${CFLAGS:--O3}
MYTMP=`mktemp -d "${TMPDIR:-/tmp}"/lp_solve_XXXXXX`
@@ -9,7 +10,7 @@ MYTMP=`mktemp -d "${TMPDIR:-/tmp}"/lp_solve_XXXXXX`
echo '#include <stdlib.h>'>>"$MYTMP"/platform.c
echo '#include <stdio.h>'>>"$MYTMP"/platform.c
echo 'main(){printf("ux%d", (int) (sizeof(void *)*8));}'>>"$MYTMP"/platform.c
-$c "$MYTMP"/platform.c -o "$MYTMP"/platform
+$c $CFLAGS "$MYTMP"/platform.c $LDFLAGS -o "$MYTMP"/platform
PLATFORM=`"$MYTMP"/platform`
rm "$MYTMP"/platform "$MYTMP"/platform.c >/dev/null 2>&1
@@ -23,23 +24,21 @@ echo '#include <stdio.h>'>>"$MYTMP"/isnan.c
echo '#include <stdlib.h>'>>"$MYTMP"/isnan.c
echo '#include <math.h>'>>"$MYTMP"/isnan.c
echo 'main(){isnan(0.0);return 0;}'>>"$MYTMP"/isnan.c
-$c "$MYTMP"/isnan.c -o "$MYTMP"/isnan $math >/dev/null 2>&1
+$c $CFLAGS "$MYTMP"/isnan.c $LDFLAGS -o "$MYTMP"/isnan $math >/dev/null 2>&1
if [ $? = 0 ]
then NOISNAN=
else NOISNAN=-DNOISNAN
fi
rm "$MYTMP"/isnan.c "$MYTMP"/isnan >/dev/null 2>&1
-opts='-O3'
-
rmdir "$MYTMP"
def=
if [ "$PLATFORM" = "SCO_UNIX" ]
-then opts='-O0'
+then CFLAGS="${CFLAGS} -O0"
def='-dy -K PIC -DLLONG=long'
dl=-ldl
else dl=-ldl
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
+$c $CFLAGS -I.. -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -I../shared $def $NOISNAN -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src $LDFLAGS -o bin/$PLATFORM/lp_solve $math $dl
diff --git a/lpsolve55/ccc b/lpsolve55/ccc
index 999f5f6..49cd7dc 100644
--- a/lpsolve55/ccc
+++ b/lpsolve55/ccc
@@ -1,6 +1,6 @@
:
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'
-c=cc
+c=${CC:-cc}
MYTMP=`mktemp -d "${TMPDIR:-/tmp}"/lp_solve_XXXXXX`
@@ -9,7 +9,7 @@ MYTMP=`mktemp -d "${TMPDIR:-/tmp}"/lp_solve_XXXXXX`
echo '#include <stdlib.h>'>>"$MYTMP"/platform.c
echo '#include <stdio.h>'>>"$MYTMP"/platform.c
echo 'main(){printf("ux%d", (int) (sizeof(void *)*8));}'>>"$MYTMP"/platform.c
-$c "$MYTMP"/platform.c -o "$MYTMP"/platform
+$c $CFLAGS "$MYTMP"/platform.c $LDFLAGS -o "$MYTMP"/platform
PLATFORM=`"$MYTMP"/platform`
rm "$MYTMP"/platform "$MYTMP"/platform.c >/dev/null 2>&1
@@ -21,7 +21,7 @@ echo '#include <stdio.h>'>>"$MYTMP"/isnan.c
echo '#include <stdlib.h>'>>"$MYTMP"/isnan.c
echo '#include <math.h>'>>"$MYTMP"/isnan.c
echo 'main(){isnan(0.0);return 0;}'>>"$MYTMP"/isnan.c
-$c "$MYTMP"/isnan.c -o "$MYTMP"/isnan $math >/dev/null 2>&1
+$c $CFLAGS "$MYTMP"/isnan.c $LDFLAGS -o "$MYTMP"/isnan $math >/dev/null 2>&1
if [ $? = 0 ]
then NOISNAN=
else NOISNAN=-DNOISNAN
@@ -39,16 +39,14 @@ else dl=-ldl
so=y
fi
-opts='-O3'
-
-$c -s -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd $opts $def $NOISNAN -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
+$c $CFLAGS -fPIC -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd $def $NOISNAN -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
ar rv bin/$PLATFORM/liblpsolve55.a `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'`
ranlib bin/$PLATFORM/liblpsolve55.a
if [ "$so" != "" ]
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 $CFLAGS -fPIC -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -I. $NOISNAN -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
+ $c $LDFLAGS -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
fi
rm *.o 2>/dev/null
--
2.40.1

@ -1,39 +0,0 @@
--- lp_solve_5.5/lpsolve55/ccc 2018-02-26 09:27:51.074682302 +0000
+++ lp_solve_5.5/lpsolve55/ccc 2018-02-26 09:36:36.329990782 +0000
@@ -35,16 +35,14 @@
so=y
fi
-opts='-O3'
-
-$c -s -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd $opts $def $NOISNAN -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
+$c $CFLAGS -fPIC -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd $def $NOISNAN -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
ar rv bin/$PLATFORM/liblpsolve55.a `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'`
ranlib bin/$PLATFORM/liblpsolve55.a
if [ "$so" != "" ]
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 $CFLAGS -fPIC -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -I. $NOISNAN -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
+ $c $LDFLAGS -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
fi
rm *.o 2>/dev/null
--- lp_solve_5.5/lp_solve/ccc 2018-02-26 14:32:54.304981484 +0000
+++ lp_solve_5.5/lp_solve/ccc 2018-02-26 14:34:03.524750992 +0000
@@ -28,8 +28,6 @@
fi
rm /tmp/isnan.c /tmp/isnan >/dev/null 2>&1
-opts='-O3'
-
def=
if [ "$PLATFORM" = "SCO_UNIX" ]
then opts='-O0'
@@ -38,4 +36,4 @@
else dl=-ldl
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
+$c $CFLAGS $LDFLAGS -I.. -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -I../shared $def $NOISNAN -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src -o bin/$PLATFORM/lp_solve $math $dl

@ -1,22 +0,0 @@
--- lp_solve_5.5/lpsolve55/ccc
+++ lp_solve_5.5/lpsolve55/ccc
@@ -18,7 +18,7 @@
echo '#include <stdio.h>'>>/tmp/isnan.c
echo '#include <stdlib.h>'>>/tmp/isnan.c
echo '#include <math.h>'>>/tmp/isnan.c
-echo 'main(){isnan(0);}'>>/tmp/isnan.c
+echo 'main(){isnan(0.0);}'>>/tmp/isnan.c
$c /tmp/isnan.c -o /tmp/isnan $math >/dev/null 2>&1
if [ $? = 0 ]
then NOISNAN=
--- lp_solve_5.5/lp_solve/ccc
+++ lp_solve_5.5/lp_solve/ccc
@@ -20,7 +20,7 @@
echo '#include <stdio.h>'>>/tmp/isnan.c
echo '#include <stdlib.h>'>>/tmp/isnan.c
echo '#include <math.h>'>>/tmp/isnan.c
-echo 'main(){isnan(0);}'>>/tmp/isnan.c
+echo 'main(){isnan(0.0);}'>>/tmp/isnan.c
$c /tmp/isnan.c -o /tmp/isnan $math >/dev/null 2>&1
if [ $? = 0 ]
then NOISNAN=

@ -1,22 +0,0 @@
diff -ruN lp_solve_5.5.orig/lp_solve/ccc lp_solve_5.5/lp_solve/ccc
--- lp_solve_5.5.orig/lp_solve/ccc 2020-12-08 12:24:15.118953722 +0100
+++ lp_solve_5.5/lp_solve/ccc 2020-12-08 12:49:39.661428497 +0100
@@ -1,6 +1,6 @@
:
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'
-c=cc
+c=$CC
#determine platform (32/64 bit)
>/tmp/platform.c
diff -ruN lp_solve_5.5.orig/lpsolve55/ccc lp_solve_5.5/lpsolve55/ccc
--- lp_solve_5.5.orig/lpsolve55/ccc 2020-12-08 12:24:15.118953722 +0100
+++ lp_solve_5.5/lpsolve55/ccc 2020-12-08 12:40:22.677752522 +0100
@@ -1,6 +1,6 @@
:
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'
-c=cc
+c=$CC
#determine platform (32/64 bit)
>/tmp/platform.c

@ -1,69 +1,163 @@
Name: lpsolve
Summary: A Mixed Integer Linear Programming (MILP) solver
Version: 5.5.2.0
Release: 28%{?dist}
Source: http://downloads.sourceforge.net/lpsolve/lp_solve_%{version}_source.tar.gz
URL: http://sourceforge.net/projects/lpsolve
License: LGPLv2+
BuildRequires: gcc-c++
Patch0: lpsolve-5.5.0.11.cflags.patch
Patch1: lpsolve-5.5.2.0.defines.patch
Patch2: read-cc-from-env.patch
Name: lpsolve
Version: 5.5.2.11
Release: 6%{?dist}
Summary: Mixed Integer Linear Programming (MILP) solver
# bfp/bfp_LUSOL/lp_LUSOL.c: LGPL-2.1-or-later
# lp_crash.c: LGPL-2.1-or-later
# lp_lib.c: LGPL-2.1-or-later
# lp_lib.h: LGPL-2.1-or-later
# lp_matrix.c: LGPL-2.1-or-later
# lp_MDO.c: LGPL-2.1-or-later
# lp_mipbb.c: LGPL-2.1-or-later
# lp_presolve.c: LGPL-2.1-or-later
# lp_price.c: LGPL-2.1-or-later
# lp_pricePSE.c: LGPL-2.1-or-later
# lp_report.c: LGPL-2.1-or-later
# lp_rlp.c: GPL-2.0-or-later WITH Bison-exception-2.2
# lp_scale.c: LGPL-2.1-or-later
# lp_simplex.c: LGPL-2.1-or-later
# lp_SOS.c: LGPL-2.1-or-later
# lp_utils.c: LGPL-2.1-or-later
# README.txt: LGPL-2.1-or-later
# lp_solve-5.5.2.11-Rebase-COLAMD-to-3.0.4.patch: BSD-3-clause
## Unused and nonpackaged
# bfp/bfp_LUSOL/LUSOL/hbio.c: xlock-like
# configure: FSFUL
License: LGPL-2.1-or-later AND GPL-2.0-or-later WITH Bison-exception-2.2 AND BSD-3-clause
# There is a mailing list at <https://groups.google.com/g/lp_solve>.
URL: https://sourceforge.net/projects/lpsolve
# A separate documention at
# <https://downloads.sourceforge.net/lpsolve/lp_solve_%%{version}_doc.tar.gz>
# contains proprietary JavaScript files and javascript trackers.
#
# This is a repackaged source tar ball from
# <https://downloads.sourceforge.net/lpsolve/lp_solve_%%{version}_source.tar.gz>.
# Original archive contained a nonfree COLAMD code (colamd/colamd.{c,h}),
# <https://gitlab.com/fedora/legal/fedora-license-data/-/issues/230>.
# A new upstream COLAMD code with an acceptable code is supplied in
# Rebase-COLAMD-to-3.0.4.patch.
Source: lp_solve_5.5.2.11_source-repackaged.tar.gz
# Use system-wide compiler, compiler and linker flags
Patch0: lp_solve-5.5.2.11-Respect-CC-CFLAGS-and-LDFLAGS.patch
# Port to C99, GCC 14 will remove support for previous standards, proposed to
# an upstream <https://groups.google.com/g/lp_solve/c/WjVf0dxrwfQ/m/rKMwf57tAwAJ>.
Patch1: lp_solve-5.5.2.11-Port-to-C99.patch
# Do not duplicate library code in the the tool
Patch2: lp_solve-5.5.2.11-Link-a-tool-to-a-shared-library.patch
# 1/2 Rebase bundled COLAMD to 3.0.4, proposed to the upstream.
Patch3: lp_solve-5.5.2.11-Rebase-COLAMD-to-3.0.4.patch
# 2/2 Rebase bundled COLAMD to 3.0.4, proposed to the upstream.
Patch4: lp_solve-5.5.2.11-Port-lp_MDO-to-colamd-3.0.4.patch
BuildRequires: bash
# binutils for ar and ranlib
BuildRequires: binutils
BuildRequires: coreutils
BuildRequires: gcc
# Tests:
BuildRequires: grep
Provides: bundled(colamd) = 3.0.4
%description
Mixed Integer Linear Programming (MILP) solver lpsolve solves pure linear,
(mixed) integer/binary, semi-continuous and special ordered sets (SOS) models.
%package devel
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: Files for developing with lpsolve
License: LGPL-2.1-or-later
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: Files for developing with lpsolve
%description devel
Includes and definitions for developing with lpsolve
Header files for developing with lpsolve library.
%prep
%setup -q -n lp_solve_5.5
%patch0 -p1 -b .cflags.patch
%patch1 -p1 -b .defines.patch
%patch2 -p1 -b .cc-from-env.patch
%autosetup -p1 -n lp_solve_5.5
mv colamd/License.txt colamd/colamd_license
chmod -x lp_lib.h
%build
%set_build_flags
cd lpsolve55
pushd lpsolve55
sh -x ccc
rm bin/ux*/liblpsolve55.a
cd ../lp_solve
popd
pushd lp_solve
sh -x ccc
popd
%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT%{_bindir} $RPM_BUILD_ROOT%{_libdir} $RPM_BUILD_ROOT%{_includedir}/lpsolve
install -d %{buildroot}%{_bindir} %{buildroot}%{_libdir} %{buildroot}%{_includedir}/lpsolve
install -p -m 755 \
lp_solve/bin/ux*/lp_solve $RPM_BUILD_ROOT%{_bindir}
lp_solve/bin/ux*/lp_solve %{buildroot}%{_bindir}
install -p -m 755 \
lpsolve55/bin/ux*/liblpsolve55.so $RPM_BUILD_ROOT%{_libdir}
lpsolve55/bin/ux*/liblpsolve55.so %{buildroot}%{_libdir}
install -p -m 644 \
lp*.h $RPM_BUILD_ROOT%{_includedir}/lpsolve
%ldconfig_scriptlets
lp*.h %{buildroot}%{_includedir}/lpsolve
%check
LP_PATH="$(echo lpsolve55/bin/ux*)"
# Verify lp_solve tool works
echo 'max: x; x < 42;' | \
LD_LIBRARY_PATH="$LP_PATH" ./lp_solve/bin/ux*/lp_solve -S1 | \
grep -e ': 42\.0*$'
# Verify a demo code is buildable
%set_build_flags
${CC} ${CFLAGS} -I. demo/demo.c ${LDFLAGS} -L"$LP_PATH" -llpsolve55
LD_LIBRARY_PATH="$LP_PATH" ./a.out </dev/null
%files
%doc README.txt ./bfp/bfp_LUSOL/LUSOL/LUSOL_LGPL.txt ./bfp/bfp_LUSOL/LUSOL/LUSOL_README.txt ./bfp/bfp_LUSOL/LUSOL/LUSOL-overview.txt
%license colamd/colamd_license
%doc README.txt
%{_bindir}/lp_solve
%{_libdir}/*.so
%{_libdir}/liblpsolve55.so
%files devel
%doc demo/demo.c
%{_includedir}/lpsolve
%changelog
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 5.5.2.0-28
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Mon Dec 23 2024 Arkady L. Shane <tigro@msvsphere-os.ru> - 5.5.2.11-6
- Rebuilt for MSVSphere 10
* Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 5.5.2.11-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 5.5.2.11-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 5.5.2.11-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Tue Aug 01 2023 Petr Pisar <ppisar@redhat.com> - 5.5.2.11-3
- Rebase COLAMD to 3.0.4
* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 5.5.2.11-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Wed Jun 07 2023 Petr Pisar <ppisar@redhat.com> - 5.5.2.11-1
- 5.5.2.11 bump
- Link lp_solve tool dynamically
* Wed Jun 07 2023 Petr Pisar <ppisar@redhat.com> - 5.5.2.0-33
- Modernize a spec file
- Partially correct a license tag
* Thu Feb 23 2023 Caolán McNamara <caolanm@redhat.com> - 5.5.2.0-32
- migrated to SPDX license
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 5.5.2.0-31
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Fri Nov 25 2022 Florian Weimer <fweimer@redhat.com> - 5.5.2.0-30
- Port the ccc build configuration tool to C99
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 5.5.2.0-29
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 5.5.2.0-28
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 5.5.2.0-27
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 5.5.2.0-27
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 5.5.2.0-26
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild

Loading…
Cancel
Save