update and fix scipopt-* packages (#463827)
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
--- a/ortools/gscip/gscip.cc
|
||||
+++ b/ortools/gscip/gscip.cc
|
||||
@@ -48,7 +48,13 @@
|
||||
#include "scip/cons_indicator.h"
|
||||
#include "scip/cons_linear.h"
|
||||
#include "scip/cons_or.h"
|
||||
+#if SCIP_VERSION_MAJOR >= 10
|
||||
+#include "scip/cons_nonlinear.h"
|
||||
+#define SCIPcreateConsBasicQuadratic SCIPcreateConsBasicQuadraticNonlinear
|
||||
+#define SCIPcreateConsQuadratic SCIPcreateConsQuadraticNonlinear
|
||||
+#else
|
||||
#include "scip/cons_quadratic.h"
|
||||
+#endif // SCIP_VERSION_MAJOR >= 10
|
||||
#include "scip/cons_sos1.h"
|
||||
#include "scip/cons_sos2.h"
|
||||
@@ -64,12 +64,13 @@ let
|
||||
scipopt-scip' = scipopt-scip.overrideAttrs (old: {
|
||||
patches = old.patches or [ ] ++ [
|
||||
# from https://github.com/google/or-tools/commit/77a28070b9c4c83995ac6bbfa9544722ff3342ce#diff-c95174a817e73db366d414af1e329c1856f70e5158ed3994d43da88765ccc98f
|
||||
# and updated with https://github.com/google/or-tools/pull/4932/files#diff-e6b0a69b2e4b97ec922abc459d909483d440a1e0d2868bed263927b106b6efe6
|
||||
./scip.patch
|
||||
];
|
||||
# Their patch forgets to find_package() soplex, bring it back.
|
||||
postPatch = (old.postPatch or "") + ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace-fail 'message(STATUS "Finding Soplex...")' 'find_package(SOPLEX CONFIG HINTS ''${SOPLEX_DIR})'
|
||||
--replace-fail 'message(STATUS "Finding Soplex")' 'find_package(SOPLEX CONFIG HINTS ''${SOPLEX_DIR})'
|
||||
'';
|
||||
});
|
||||
|
||||
@@ -112,6 +113,16 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
includes = [ "ortools/math_opt/solvers/highs_solver_test.cc" ];
|
||||
hash = "sha256-/dFk/F/3/BwH5IwIwNU4Ua+4sROPXYCjO8R6jpoZpgo=";
|
||||
})
|
||||
# Fix compatibility with SCIP 10.0
|
||||
# https://github.com/google/or-tools/issues/4912
|
||||
(fetchpatch {
|
||||
url = "https://github.com/google/or-tools/pull/4932.patch";
|
||||
includes = [ "ortools/linear_solver/proto_solver/scip_proto_solver.cc" ];
|
||||
hash = "sha256-1jw/r3yAjIpq9o8mqAbNorQgmT1E5nt809N+Gb+D9ZI=";
|
||||
})
|
||||
# Compatibility with SCIP 10.0 also needs the following patch adjusted for or-tools 9.14
|
||||
# https://github.com/google/or-tools/pull/4932/files#diff-9559febee3c6051bab4def3c102cb78cbf8a57fc2be4058ace32f89436c784a9
|
||||
./gscip-scip10.patch
|
||||
];
|
||||
|
||||
# or-tools normally attempts to build Protobuf for the build platform when
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 8492dc75..4c12a9bf 100644
|
||||
index b3c57799..eeeca4c8 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -38,9 +38,11 @@ set(CPACK_PACKAGE_VENDOR "Zuse Institute Berlin")
|
||||
@@ -52,9 +52,11 @@ set(CPACK_PACKAGE_VENDOR "Zuse Institute Berlin")
|
||||
set(CPACK_PACKAGE_CONTACT "http://scipopt.org")
|
||||
include(CPack)
|
||||
|
||||
@@ -17,25 +17,12 @@ index 8492dc75..4c12a9bf 100644
|
||||
|
||||
if(SCIPOptSuite_BINARY_DIR)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${SCIPOptSuite_BINARY_DIR}/bin)
|
||||
@@ -412,22 +414,11 @@ endif()
|
||||
#search the selected LP solver library
|
||||
@@ -517,10 +519,10 @@ endif()
|
||||
message(STATUS "Finding Solver \"${LPS}\"")
|
||||
if(LPS STREQUAL "spx")
|
||||
- message(STATUS "Finding Soplex")
|
||||
- find_package(SOPLEX CONFIG HINTS ${SOPLEX_DIR})
|
||||
message(STATUS "Finding Soplex")
|
||||
- find_package(SOPLEX REQUIRED CONFIG HINTS ${SOPLEX_DIR})
|
||||
- if(NOT SOPLEX_FOUND)
|
||||
- # Utilities to automatically download missing dependencies
|
||||
- include(cmake/Dependencies.cmake)
|
||||
- find_or_download_package(
|
||||
- NAME SOPLEX
|
||||
- VERSION 7.0.1
|
||||
- URL https://github.com/scipopt/soplex/archive/refs/tags/release-701.tar.gz
|
||||
- URL_HASH SHA256=80cce994dcbe45fd52b60e31a3aeb5d2c60a7ddbaae495e0ce6bf58481675696
|
||||
- COMPONENTS soplex)
|
||||
- find_package(SOPLEX REQUIRED CONFIG HINTS _deps/local)
|
||||
- endif()
|
||||
- if(NOT SOPLEX_FOUND)
|
||||
+ message(STATUS "Finding Soplex...")
|
||||
+ if(NOT TARGET libsoplex-pic OR NOT TARGET libsoplex)
|
||||
message(FATAL_ERROR "Requested LP solver SoPlex not found.")
|
||||
endif()
|
||||
@@ -43,64 +30,41 @@ index 8492dc75..4c12a9bf 100644
|
||||
if (DEFINED SOPLEX_WITH_PAPILO)
|
||||
message(STATUS "SOPLEX links PAPILO")
|
||||
if((NOT SCIP_WITH_PAPILO)) # TODO not sure how to handle AUTOBUILD
|
||||
@@ -502,9 +493,9 @@ if(SOPLEX_FOUND)
|
||||
@@ -593,11 +595,11 @@ if(SOPLEX_FOUND)
|
||||
message(STATUS "Finding SOPLEX - found")
|
||||
# SoPlex headers can be directly included
|
||||
include_directories(${SOPLEX_INCLUDE_DIRS})
|
||||
- set(LPS_LIBRARIES ${SOPLEX_LIBRARIES})
|
||||
- set(LPS_PIC_LIBRARIES ${SOPLEX_PIC_LIBRARIES})
|
||||
+ set(LPS_LIBRARIES libsoplex)
|
||||
if(SHARED)
|
||||
- set(LPS_PIC_LIBRARIES ${SOPLEX_PIC_LIBRARIES})
|
||||
+ set(LPS_PIC_LIBRARIES libsoplex-pic)
|
||||
else()
|
||||
set(LPS_PIC_LIBRARIES ${LPS_LIBRARIES})
|
||||
endif()
|
||||
@@ -514,7 +505,7 @@ if(SOPLEX_FOUND)
|
||||
set(lpi lpi/lpi_spx2.cpp)
|
||||
endif()
|
||||
+ set(LPS_PIC_LIBRARIES libsoplex-pic)
|
||||
set(lpi lpi/lpi_spx.cpp)
|
||||
else()
|
||||
- message(STATUS "Support SOPLEX: OFF")
|
||||
+ message(FATAL_ERROR "SOPLEX not found !")
|
||||
endif()
|
||||
|
||||
if(CLP_FOUND)
|
||||
diff --git a/scip-config.cmake.in b/scip-config.cmake.in
|
||||
index 559552f9..682ac40a 100644
|
||||
--- a/scip-config.cmake.in
|
||||
+++ b/scip-config.cmake.in
|
||||
@@ -1,17 +1,16 @@
|
||||
if(NOT TARGET libscip)
|
||||
- include("${CMAKE_CURRENT_LIST_DIR}/scip-targets.cmake")
|
||||
-endif()
|
||||
+ include(CMakeFindDependencyMacro)
|
||||
+ if(@ZIMPL_NEEDED@)
|
||||
+ find_dependency(ZIMPL REQUIRED NO_MODULE)
|
||||
+ endif()
|
||||
+ if(@SOPLEX_NEEDED@)
|
||||
+ find_dependency(SOPLEX REQUIRED NO_MODULE)
|
||||
+ endif()
|
||||
|
||||
-if(@ZIMPL_NEEDED@)
|
||||
- set(ZIMPL_DIR "@CONF_ZIMPL_DIR@")
|
||||
- find_package(ZIMPL QUIET CONFIG)
|
||||
-endif()
|
||||
-
|
||||
-if(@SOPLEX_NEEDED@)
|
||||
- set(SOPLEX_DIR "@CONF_SOPLEX_DIR@")
|
||||
- find_package(SOPLEX QUIET CONFIG)
|
||||
+ include("${CMAKE_CURRENT_LIST_DIR}/scip-targets.cmake")
|
||||
endif()
|
||||
|
||||
+# Legacy
|
||||
set(SCIP_LIBRARIES libscip)
|
||||
set(SCIP_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@")
|
||||
set(SCIP_FOUND TRUE)
|
||||
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
|
||||
index e6fda2d5..2d04b845 100644
|
||||
index c6ce7283..6b6b1fc8 100644
|
||||
--- a/src/CMakeLists.txt
|
||||
+++ b/src/CMakeLists.txt
|
||||
@@ -1149,17 +1149,8 @@ install(TARGETS scip libscip EXPORT scip-targets
|
||||
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
@@ -1213,6 +1213,13 @@ target_link_libraries(scip
|
||||
add_dependencies(libscip scip_update_githash)
|
||||
add_dependencies(scip scip_update_githash)
|
||||
|
||||
+if(APPLE)
|
||||
+ set_target_properties(libscip PROPERTIES
|
||||
+ INSTALL_RPATH "@loader_path")
|
||||
+elseif(UNIX)
|
||||
+ set_target_properties(libscip PROPERTIES
|
||||
+ INSTALL_RPATH "$ORIGIN")
|
||||
+endif()
|
||||
set_target_properties(libscip PROPERTIES
|
||||
VERSION ${SCIP_VERSION_MAJOR}.${SCIP_VERSION_MINOR}.${SCIP_VERSION_PATCH}
|
||||
SOVERSION ${SCIP_VERSION_MAJOR}.${SCIP_VERSION_MINOR}
|
||||
@@ -1265,17 +1272,8 @@ install(FILES ${PROJECT_SOURCE_DIR}/LICENSE DESTINATION ${CMAKE_INSTALL_DATADIR}
|
||||
install(FILES ${PROJECT_SOURCE_DIR}/src/tclique/LICENSE DESTINATION ${CMAKE_INSTALL_DATADIR}/licenses/scip/tclique)
|
||||
|
||||
# Add all targets to the build-tree export set
|
||||
-export(TARGETS scip libscip
|
||||
@@ -117,11 +81,11 @@ index e6fda2d5..2d04b845 100644
|
||||
+#export(TARGETS scip libscip
|
||||
+# FILE "${PROJECT_BINARY_DIR}/scip-targets.cmake")
|
||||
|
||||
# configure the config file for the build tree
|
||||
set(CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/src" "${PROJECT_BINARY_DIR}")
|
||||
@@ -1175,18 +1166,16 @@ ${PROJECT_BINARY_DIR}/scip-config-version.cmake
|
||||
|
||||
#configure the config file for the install
|
||||
# Configure scip-config.cmake for the build-tree:
|
||||
# We add the CMake module path from the sources.
|
||||
@@ -1295,18 +1293,16 @@ ${PROJECT_BINARY_DIR}/scip-config-version.cmake
|
||||
# We add the current directory of the installed scip-config.cmake as a CMake module path.
|
||||
set(EXTRA_CMAKE_MODULE_PATH "\${CMAKE_CURRENT_LIST_DIR}")
|
||||
set(CONF_INCLUDE_DIRS "\${CMAKE_CURRENT_LIST_DIR}/../../../include")
|
||||
-if(SOPLEX_NEEDED)
|
||||
- set(CONF_SOPLEX_DIR "\${CMAKE_CURRENT_LIST_DIR}/../soplex")
|
||||
|
||||
@@ -13,16 +13,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "scipopt-gcg";
|
||||
version = "372-unstable-2025-10-11";
|
||||
|
||||
# To correlate scipVersion and version, check: https://scipopt.org/#news
|
||||
scipVersion = "9.2.4";
|
||||
version = "4.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "scipopt";
|
||||
repo = "gcg";
|
||||
rev = "83a2d210a03f920dd941d547da94867deb504882";
|
||||
hash = "sha256-wbzknCmwDhJ38gItA3DppJxSJfNK7NeIkxZVRd2kmp0=";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-HMhb35Zkjt3yzYk6X1OfigZjJrLuelrkQyCBs/UpFjc=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@@ -54,14 +51,9 @@ stdenv.mkDerivation rec {
|
||||
'';
|
||||
doCheck = true;
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace-fail "cmake_minimum_required(VERSION 3.3)" "cmake_minimum_required(VERSION 3.10)"
|
||||
'';
|
||||
|
||||
meta = {
|
||||
maintainers = with lib.maintainers; [ fettgoenner ];
|
||||
changelog = "https://scipopt.org/doc-${scipVersion}/html/RN${lib.versions.major scipVersion}.php";
|
||||
changelog = "https://gcg.or.rwth-aachen.de/doc-3.5.0/RN${lib.versions.major version}${lib.versions.minor version}.html";
|
||||
description = "Branch-and-Price & Column Generation for Everyone";
|
||||
license = lib.licenses.lgpl3Plus;
|
||||
homepage = "https://gcg.zib.de";
|
||||
|
||||
@@ -12,16 +12,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "scipopt-papilo";
|
||||
version = "2.4.4";
|
||||
|
||||
# To correlate scipVersion and version, check: https://scipopt.org/#news
|
||||
scipVersion = "9.2.4";
|
||||
version = "3.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "scipopt";
|
||||
repo = "papilo";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-VHOwr3uIhurab1zI9FeecBXZIp1ee2pk8fhVak6H0+A=";
|
||||
hash = "sha256-oxuXv/xWQiApxrrVdH3aEUOp40Em6kCz/DJXXpCxdzs=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
@@ -46,7 +43,6 @@ stdenv.mkDerivation rec {
|
||||
doCheck = true;
|
||||
meta = {
|
||||
maintainers = with lib.maintainers; [ fettgoenner ];
|
||||
changelog = "https://scipopt.org/doc-${scipVersion}/html/RN${lib.versions.major scipVersion}.php";
|
||||
description = "Parallel Presolve for Integer and Linear Optimization";
|
||||
license = lib.licenses.lgpl3Plus;
|
||||
homepage = "https://github.com/scipopt/papilo";
|
||||
|
||||
@@ -15,17 +15,18 @@
|
||||
gfortran,
|
||||
criterion,
|
||||
mpfr,
|
||||
enableZimpl ? (!stdenv.hostPlatform.isDarwin),
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "scipopt-scip";
|
||||
version = "9.2.4";
|
||||
version = "10.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "scipopt";
|
||||
repo = "scip";
|
||||
tag = "v${lib.replaceStrings [ "." ] [ "" ] version}";
|
||||
hash = "sha256-nwFRtP63/HPfk9JhcyLKApicgqE9IF+7s5MGGrVJrpM=";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-KW7N2ORspzkaR/gdU//p38BV4GyuhoSIVb6q9RTrCYQ=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
@@ -33,7 +34,6 @@ stdenv.mkDerivation rec {
|
||||
buildInputs = [
|
||||
scipopt-soplex
|
||||
scipopt-papilo
|
||||
scipopt-zimpl
|
||||
ipopt
|
||||
gmp
|
||||
readline
|
||||
@@ -42,8 +42,12 @@ stdenv.mkDerivation rec {
|
||||
boost
|
||||
gfortran
|
||||
criterion
|
||||
mpfr # if not included, throws fatal error: mpfr.h not found
|
||||
];
|
||||
]
|
||||
++ lib.optional enableZimpl scipopt-zimpl;
|
||||
|
||||
cmakeFlags = lib.optional (!enableZimpl) "-DZIMPL=OFF";
|
||||
|
||||
propagatedBuildInputs = [ mpfr ];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
|
||||
@@ -11,16 +11,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "scipopt-soplex";
|
||||
version = "7.1.5";
|
||||
|
||||
# To correlate scipVersion and version, check: https://scipopt.org/#news
|
||||
scipVersion = "9.2.4";
|
||||
version = "8.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "scipopt";
|
||||
repo = "soplex";
|
||||
rev = "release-${builtins.replaceStrings [ "." ] [ "" ] finalAttrs.version}";
|
||||
hash = "sha256-gtz2h5EszE77zYZ8m2UtkYnoquO8GJhAAzsvQW5b+3I=";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-AppJUule+0x23gF/PwjDMsZ194aqK91UTevQgjPZIgc=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
@@ -41,8 +38,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
description = "Sequential object-oriented simPlex";
|
||||
license = with lib.licenses; [ asl20 ];
|
||||
mainProgram = "soplex";
|
||||
maintainers = with lib.maintainers; [ david-r-cox ];
|
||||
changelog = "https://scipopt.org/doc-${finalAttrs.scipVersion}/html/RN${lib.versions.major finalAttrs.scipVersion}.php";
|
||||
maintainers = with lib.maintainers; [ fettgoenner ];
|
||||
changelog = "https://soplex.zib.de/doc-${finalAttrs.version}/html/CHANGELOG.php";
|
||||
platforms = lib.platforms.unix;
|
||||
};
|
||||
})
|
||||
|
||||
@@ -6,21 +6,20 @@
|
||||
scipopt-scip,
|
||||
zlib,
|
||||
mpi,
|
||||
gmp,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "scipopt-ug";
|
||||
version = "1.0.0-beta6";
|
||||
version = "1.0.0";
|
||||
|
||||
# To correlate scipVersion and version, check: https://scipopt.org/#news
|
||||
scipVersion = "9.2.4";
|
||||
scipVersion = "10.0.0";
|
||||
|
||||
# Take the SCIPOptSuite source since no other source exists publicly.
|
||||
src = fetchzip {
|
||||
url = "https://github.com/scipopt/scip/releases/download/v${
|
||||
lib.replaceStrings [ "." ] [ "" ] scipVersion
|
||||
}/scipoptsuite-${scipVersion}.tgz";
|
||||
hash = "sha256-ZFgHaC4JL0eFt/do0ucGkarmfL1WdGEecrE1iPBpFh0=";
|
||||
url = "https://github.com/scipopt/scip/releases/download/v${scipVersion}/scipoptsuite-${scipVersion}.tgz";
|
||||
hash = "sha256-Nskb8quLsox7igz1UZCfd+VjR9Q8/oa8dZBYjAdc1EU=";
|
||||
};
|
||||
|
||||
sourceRoot = "${src.name}/ug";
|
||||
@@ -33,6 +32,7 @@ stdenv.mkDerivation rec {
|
||||
scipopt-scip
|
||||
mpi
|
||||
zlib
|
||||
gmp
|
||||
];
|
||||
|
||||
meta = {
|
||||
|
||||
@@ -11,16 +11,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "scipopt-zimpl";
|
||||
version = "362";
|
||||
|
||||
# To correlate scipVersion and version, check: https://scipopt.org/#news
|
||||
scipVersion = "9.2.4";
|
||||
version = "3.7.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "scipopt";
|
||||
repo = "zimpl";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-juqAwzqBArsFXmz7L7RQaE78EhQdP5P51wQFlCoo7/o=";
|
||||
hash = "sha256-ataepqBfdA7CgqPhbw+Xy7PC3VZTLcSrF2/xnFyx+YI=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
@@ -48,7 +45,9 @@ stdenv.mkDerivation rec {
|
||||
'';
|
||||
meta = {
|
||||
maintainers = with lib.maintainers; [ fettgoenner ];
|
||||
changelog = "https://scipopt.org/doc-${scipVersion}/html/RN${lib.versions.major scipVersion}.php";
|
||||
platforms = lib.platforms.linux;
|
||||
broken = stdenv.isDarwin;
|
||||
changelog = "https://zimpl.zib.de/download/CHANGELOG.txt";
|
||||
description = "Zuse Institut Mathematical Programming Language";
|
||||
longDescription = ''
|
||||
ZIMPL is a little language to translate the mathematical model of a
|
||||
|
||||
Reference in New Issue
Block a user