[PATCH] implement --with-system-colamd (for internal lpsolve)
authorRene Engelhard <rene@rene-engelhard.de>
Mon, 3 Mar 2025 20:48:18 +0000 (21:48 +0100)
committerRene Engelhard <rene@debian.org>
Wed, 23 Apr 2025 17:20:04 +0000 (19:20 +0200)
using suitesparse. Tested with both suitesparse 5.12.0 (Debian stable,
without pc) and 7.9.0 (Debian unstable, with .pc)

Change-Id: I6e0d014455ea2dec111aa3380bd49bd586dfad0a

Gbp-Pq: Name system-colamd.diff

config_host.mk.in
configure.ac
external/lpsolve/UnpackedTarball_lpsolve.mk
external/lpsolve/ccc.static
external/lpsolve/system-colamd.diff [new file with mode: 0644]

index 332172bfe2ea3da73be0c35ab12aa947e843733b..41a605d409803fc032dd719d2b6a9ea3d4a2bae7 100644 (file)
@@ -97,6 +97,8 @@ export CPDB_CFLAGS=@CPDB_CFLAGS@
 export CPDB_LIBS=@CPDB_LIBS@
 export CPPU_ENV=@CPPU_ENV@
 export CPPU_ENV_FOR_BUILD=@CPPU_ENV_FOR_BUILD@
+export COLAMD_CFLAGS=$(gb_SPACE)@COLAMD_CFLAGS@
+export COLAMD_LIBS=$(gb_SPACE)@COLAMD_LIBS@
 export CPPUNIT_CFLAGS=$(gb_SPACE)@CPPUNIT_CFLAGS@
 export CPPUNIT_LIBS=$(gb_SPACE)@CPPUNIT_LIBS@
 export CPUNAME=@CPUNAME@
@@ -660,6 +662,7 @@ SYSTEM_BOX2D=@SYSTEM_BOX2D@
 SYSTEM_BZIP2=@SYSTEM_BZIP2@
 SYSTEM_CAIRO=@SYSTEM_CAIRO@
 SYSTEM_CLUCENE=@SYSTEM_CLUCENE@
+export SYSTEM_COLAMD=@SYSTEM_COLAMD@
 SYSTEM_CPPUNIT=@SYSTEM_CPPUNIT@
 SYSTEM_CURL=@SYSTEM_CURL@
 SYSTEM_DICTS=@SYSTEM_DICTS@
index 016fd109b7b703d535b5c9e358904979d8e2fc51..23663e829c41b3713f4d25a80e8305f5b55c0d6d 100644 (file)
Binary files a/configure.ac and b/configure.ac differ
index bcb885fb918633d46bb98f2ad2f9406072efaf44..c1e6be8e3c095586575dae13eb16f4fa295f22cb 100644 (file)
@@ -25,6 +25,7 @@ else
 $(eval $(call gb_UnpackedTarball_add_patches,lpsolve,\
        external/lpsolve/lp_solve_5.5.patch \
        external/lpsolve/lpsolve-ubsan.patch.0 \
+       external/lpsolve/system-colamd.diff \
 ))
 
 $(eval $(call gb_UnpackedTarball_add_file,lpsolve,lpsolve55/ccc.static,external/lpsolve/ccc.static))
index 6911c4b2c89267b6e0c892eff05f2928752965bc..c78a9583089aa7e643d9d80b121c0c6592a9407e 100644 (file)
@@ -1,11 +1,20 @@
-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'
+if [ "$SYSTEM_COLAMD" != "TRUE" ]; then
+    colamd_c=../colamd/colamd.c
+fi
+src='../lp_MDO.c ../shared/commonlib.c ../shared/mmio.c ../shared/myblas.c ../ini.c ../fortify.c $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'
 obj=`echo $src|sed -e 's/\.c/.o/g' -e 's!\([^ ]*/\)*!!g'`
 
 opts='-O3'
 
 def=
 
-$CC -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 -c $src
+# FIMXE: Link statically with colamd?
+if test "$SYSTEM_COLAMD" = "TRUE"; then
+    colamd_i=$COLAMD_CFLAGS
+else
+    colamd_i=-I../colamd
+fi
+$CC -I.. -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL $colamd_i -I../shared $opts $def -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine -c $src
 
 $AR -r liblpsolve55.a $obj
 rm $obj
diff --git a/external/lpsolve/system-colamd.diff b/external/lpsolve/system-colamd.diff
new file mode 100644 (file)
index 0000000..a872d96
--- /dev/null
@@ -0,0 +1,41 @@
+diff -urN lp_solve_5.5-old/lpsolve55/ccc lp_solve_5.5/lpsolve55/ccc
+--- misc/build/lp_solve_5.5/lpsolve55/ccc      2005-06-11 21:27:18.000000000 +0200
++++ misc/build/lp_solve_5.5/lpsolve55/ccc      2025-03-02 17:58:19.904235635 +0100
+@@ -1,4 +1,7 @@
+-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'
++if test "$SYSTEM_COLAMD" != "TRUE"; then
++     colamd_c=../colamd/colamd.c
++fi
++src="../lp_MDO.c ../shared/commonlib.c ../shared/mmio.c ../shared/myblas.c ../ini.c ../fortify.c $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"
+ ar=$AR
+ c=$CC
+ ranlib=$RANLIB
+@@ -25,17 +28,26 @@
+ if [ "$OS" = "LINUX" ]; then
+      libs="$libs -ldl"
++     if test "$SYSTEM_COLAMD" = "TRUE"; then
++         libs="$libs $COLAMD_LIBS"
++     fi
+ fi
+ opts='-O3'
+-$c -s $inline -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd $opts $def -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
++if test "$SYSTEM_COLAMD" = "TRUE"; then
++    colamd_i=$COLAMD_CFLAGS
++else
++    colamd_i=-I../colamd
++fi
++
++$c -s $inline -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL $colamd_i $opts $def -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
+ $ar rv liblpsolve55.$a `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'`
+ $ranlib liblpsolve55.$a
+ if [ "$so" != "" ]
+ then
+-  $c $pic -s $inline -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL -I../colamd -I. $opts -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
++  $c $pic -s $inline -c -I.. -I../shared -I../bfp -I../bfp/bfp_LUSOL -I../bfp/bfp_LUSOL/LUSOL $colamd_i -I. $opts -DYY_NEVER_INTERACTIVE -DPARSER_LP -DINVERSE_ACTIVE=INVERSE_LUSOL -DRoleIsExternalInvEngine $src
+   $c -shared $ldflags -o ${soprefix}lpsolve55.$so `echo $src|sed s/[.]c/.o/g|sed 's/[^ ]*\///g'` $libs
+ fi