From a0216687d24c3550ad5878a40b3e89f81462da92 Mon Sep 17 00:00:00 2001 From: Laurent Perron Date: Mon, 2 Dec 2024 13:47:30 +0100 Subject: [PATCH] patch scip b920; disable parallel scip --- MODULE.bazel | 10 +- bazel/BUILD.bazel | 1 + bazel/scip-v920.patch | 343 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 353 insertions(+), 1 deletion(-) create mode 100644 bazel/scip-v920.patch diff --git a/MODULE.bazel b/MODULE.bazel index 69b1ae6b04..c29c099da7 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -36,7 +36,7 @@ bazel_dep(name = "rules_jvm_external", version = "6.4") bazel_dep(name = "rules_license", version = "1.0.0") bazel_dep(name = "rules_proto", version = "6.0.2") bazel_dep(name = "rules_python", version = "0.37.2") -bazel_dep(name = "scip", version = "8.1.0") +bazel_dep(name = "scip", version = "9.2.0") bazel_dep(name = "swig", version = "4.2.0") bazel_dep(name = "zlib", version = "1.3.1.bcr.3") @@ -48,6 +48,14 @@ git_override( remote = "https://github.com/pybind/pybind11_abseil.git", ) +git_override( + module_name = "scip", + commit = "74cea9222e98f7351dc4540f562a6dfa4c1d7595", + patch_strip = 1, + patches = ["//bazel:scip-v920.patch"], + remote = "https://github.com/scipopt/scip.git", +) + SUPPORTED_PYTHON_VERSIONS = [ "3.9", "3.10", diff --git a/bazel/BUILD.bazel b/bazel/BUILD.bazel index ee8d11342e..2b97809edc 100644 --- a/bazel/BUILD.bazel +++ b/bazel/BUILD.bazel @@ -19,6 +19,7 @@ exports_files([ "notebook_requirements.txt", "ortools_requirements.in", "ortools_requirements.txt", + "scip-v920.patch", ]) compile_pip_requirements( diff --git a/bazel/scip-v920.patch b/bazel/scip-v920.patch new file mode 100644 index 0000000000..dbfb56441b --- /dev/null +++ b/bazel/scip-v920.patch @@ -0,0 +1,343 @@ +diff --git a/BUILD.bazel b/BUILD.bazel +new file mode 100644 +index 0000000000..0c3f1853b4 +--- /dev/null ++++ b/BUILD.bazel +@@ -0,0 +1,126 @@ ++# Copyright 2010-2024 Google LLC ++# Licensed under the Apache License, Version 2.0 (the "License"); ++# you may not use this file except in compliance with the License. ++# You may obtain a copy of the License at ++# ++# http://www.apache.org/licenses/LICENSE-2.0 ++# ++# Unless required by applicable law or agreed to in writing, software ++# distributed under the License is distributed on an "AS IS" BASIS, ++# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++# See the License for the specific language governing permissions and ++# limitations under the License. ++ ++exports_files( ++ ["src/lpi/lpi_glop.cpp"], ++) ++ ++config_setting( ++ name = "on_linux", ++ constraint_values = [ ++ "@platforms//os:linux", ++ ], ++) ++ ++config_setting( ++ name = "on_macos", ++ constraint_values = [ ++ "@platforms//os:macos", ++ ], ++) ++ ++config_setting( ++ name = "on_windows", ++ constraint_values = [ ++ "@platforms//os:windows", ++ ], ++) ++ ++PLATFORM_FLAGS = select({ ++ "on_linux": [ ++ "-Wunknown-pragmas", ++ "-fexceptions", ++ "-DSYM=bliss", ++ ], ++ "on_macos": [ ++ "-Wunknown-pragmas", ++ "-fexceptions", ++ "-DSYM=bliss", ++ ], ++ "on_windows": [ ++ "/DSYM=none", ++ "/DSCIP_NO_SIGACTION", ++ "/DSCIP_NO_STRTOK_R", ++ ], ++ "//conditions:default": [], ++}) ++ ++PLATFORM_DEPS = select({ ++ "on_linux": ["@bliss"], ++ "on_macos": ["@bliss"], ++ "on_windows": [], ++ "//conditions:default": [], ++}) ++ ++BLISS_FILE = select({ ++ "on_linux": ["src/symmetry/compute_symmetry_bliss.cpp"], ++ "on_macos": ["src/symmetry/compute_symmetry_bliss.cpp"], ++ "on_windows": ["src/symmetry/compute_symmetry_none.cpp"], ++ "//conditions:default": ["src/symmetry/compute_symmetry_none.cpp"], ++}) ++ ++cc_library( ++ name = "scip", ++ srcs = glob( ++ [ ++ "src/*/*.c", ++ ], ++ exclude = [ ++ "src/lpi/lpi_*.c", ++ "src/nauty/*", ++ "src/scip/exprinterpret_*.c", ++ "src/scip/nlpi_filtersqp.c", ++ "src/scip/nlpi_worhp.c", ++ "src/scip/*_xyz.c", ++ "src/scip/sorttpl.c", ++ "src/symmetry/compute_symmetry_*.cpp", ++ "src/symmetry/*nauty*", ++ "src/tpi/tpi_*.c", ++ ], ++ ) + BLISS_FILE + [ ++ "src/scip/exprinterpret_none.c", ++ "src/tpi/tpi_none.c", ++ ], ++ hdrs = glob( ++ [ ++ "src/*/*.h", ++ "src/*/*.hpp", ++ "src/scip/githash.c", ++ "src/scip/sorttpl.c", ++ "src/scip/buildflags.c", ++ ], ++ exclude = ++ [ ++ "src/scip/*_xyz.h", ++ ], ++ ), ++ copts = [ ++ "$(STACK_FRAME_UNLIMITED)", # src/scip/reader_cnf.c ++ "-DTPI_NONE", ++ "-DNPARASCIP", ++ ] + PLATFORM_FLAGS, ++ defines = [ ++ # We need every library and binary that depends on SCIP libraries to ++ # define this macro. That is why we use `defines' here instead of ++ # `copts' or `local_defines'. ++ "NO_CONFIG_HEADER", ++ ], ++ features = ["-parse_headers"], ++ includes = [ ++ "src", ++ ], ++ visibility = ["//visibility:public"], ++ deps = [ ++ "@zlib", ++ ] + PLATFORM_DEPS, ++) +diff --git a/MODULE.bazel b/MODULE.bazel +new file mode 100644 +index 0000000000..47cf7b2212 +--- /dev/null ++++ b/MODULE.bazel +@@ -0,0 +1,18 @@ ++module( ++ name = "scip", ++ version = "9.2.0", ++ compatibility_level = 1, ++) ++ ++bazel_dep( ++ name = "bliss", ++ version = "0.73", ++) ++bazel_dep( ++ name = "platforms", ++ version = "0.0.9", ++) ++bazel_dep( ++ name = "zlib", ++ version = "1.2.13", ++) +diff --git a/src/lpi/lpi_glop.cpp b/src/lpi/lpi_glop.cpp +index 2471778a8f..673e9689e9 100644 +--- a/src/lpi/lpi_glop.cpp ++++ b/src/lpi/lpi_glop.cpp +@@ -51,7 +51,6 @@ + #include "ortools/util/time_limit.h" + + #include "ortools/base/logging.h" +-#include "ortools/base/vlog_is_on.h" + + #include "lpi/lpi.h" + #include "scip/pub_message.h" +@@ -2942,12 +2941,12 @@ SCIP_RETCODE SCIPlpiSetIntpar( + SCIPdebugMessage("SCIPlpiSetIntpar: SCIP_LPPAR_LPINFO -> %d.\n", ival); + if ( ival == 0 ) + { +- (void) google::SetVLOGLevel("*", google::GLOG_INFO); ++ absl::SetFlag(&FLAGS_stderrthreshold, 2); + lpi->lp_info = false; + } + else + { +- (void) google::SetVLOGLevel("*", google::GLOG_ERROR); ++ absl::SetFlag(&FLAGS_stderrthreshold, 0); + lpi->lp_info = true; + } + break; +@@ -3190,7 +3189,7 @@ SCIP_RETCODE SCIPlpiReadLP( + + const std::string filespec(fname); + MPModelProto proto; +- if ( ! ReadFileToProto(filespec, &proto) ) ++ if ( ! ReadFileToProto(filespec, &proto).ok() ) + { + SCIPerrorMessage("Could not read <%s>\n", fname); + return SCIP_READERROR; +@@ -3214,7 +3213,7 @@ SCIP_RETCODE SCIPlpiWriteLP( + MPModelProto proto; + LinearProgramToMPModelProto(*lpi->linear_program, &proto); + const std::string filespec(fname); +- if ( ! WriteProtoToFile(filespec, proto, operations_research::ProtoWriteFormat::kProtoText, true) ) ++ if ( ! WriteProtoToFile(filespec, proto, operations_research::ProtoWriteFormat::kProtoText, true).ok() ) + { + SCIPerrorMessage("Could not write <%s>\n", fname); + return SCIP_READERROR; +diff --git a/src/scip/config.h b/src/scip/config.h +new file mode 100644 +index 0000000000..871fde8e55 +--- /dev/null ++++ b/src/scip/config.h +@@ -0,0 +1,32 @@ ++#ifndef __CONFIG_H__ ++#define __CONFIG_H__ ++ ++#define CMAKE_BUILD_TYPE "Release" ++#define SCIP_VERSION_MAJOR 9 ++#define SCIP_VERSION_MINOR 2 ++#define SCIP_VERSION_PATCH 0 ++#define SCIP_VERSION_SUB 0 ++#define SCIP_VERSION_API 115 ++/* #undef BMS_NOBLOCKMEM */ ++/* #undef SCIP_NOBUFFERMEM */ ++/* #undef WITH_DEBUG_SOLUTION */ ++/* #undef SCIP_NO_SIGACTION */ ++/* #undef SCIP_NO_STRTOK_R */ ++/* #undef TPI_NONE */ ++#define TPI_NONE ++/* #undef TPI_OMP */ ++#define SCIP_THREADSAFE ++#define WITH_SCIPDEF ++/* #undef SCIP_WITH_LAPACK */ ++/* #undef SCIP_WITH_PAPILO */ ++#define SCIP_WITH_ZLIB ++/* #undef SCIP_WITH_READLINE */ ++/* #undef SCIP_WITH_GMP */ ++/* #undef SCIP_WITH_LPSCHECK */ ++/* #undef SCIP_WITH_ZIMPL */ ++/* #undef SCIP_WITH_AMPL */ ++#define SCIP_ROUNDING_FE ++/* #undef SCIP_ROUNDING_FP */ ++/* #undef SCIP_ROUNDING_MS */ ++ ++#endif +diff --git a/src/scip/scip_export.h b/src/scip/scip_export.h +new file mode 100644 +index 0000000000..871fde8e55 +--- /dev/null ++++ b/src/scip/scip_export.h +@@ -0,0 +1,24 @@ ++ ++#ifndef SCIP_EXPORT_H ++#define SCIP_EXPORT_H ++ ++#ifdef SCIP_STATIC_DEFINE ++# define SCIP_EXPORT ++# define SCIP_NO_EXPORT ++#else ++# ifndef SCIP_EXPORT ++# ifdef libscip_EXPORTS ++/* We are building this library */ ++# define SCIP_EXPORT ++# else ++/* We are using this library */ ++# define SCIP_EXPORT ++# endif ++# endif ++ ++# ifndef SCIP_NO_EXPORT ++# define SCIP_NO_EXPORT ++# endif ++#endif ++ ++#endif /* SCIP_EXPORT_H */ +diff --git a/src/scip/githash.c b/src/scip/githash.c +new file mode 100644 +index 0000000000..d1e99c662d +--- /dev/null ++++ b/src/scip/githash.c +@@ -0,0 +1 @@ ++#define SCIP_GITHASH "a740f0891e" +\ No newline at end of file +diff --git a/src/scip/scipbuildflags.c b/src/scip/scipbuildflags.c +--- a/src/scip/scipbuildflags.c ++++ b/src/scip/scipbuildflags.c +@@ -23,7 +23,6 @@ + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + + /**@file scipbuildflags.c +- * @ingroup OTHER_CFILES + * @brief build flags methods + * @author Felipe Serrano + */ +@@ -31,12 +30,36 @@ + /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/ + + #include "scip/scipbuildflags.h" +-#include "scip/buildflags.h" + + /** returns the flags that were used to build SCIP */ + const char* SCIPgetBuildFlags( + void + ) + { +- return SCIP_BUILDFLAGS "\n LPS=" SCIP_LPS "\n IPOPT=" SCIP_IPOPT; ++ return " ARCH=arm64\n\ ++ OSTYPE=Darwin-23.6.0\n\ ++ COMP=AppleClang 16.0.0.16000026\n\ ++ BUILD=Release\n\ ++ DEBUGSOL=OFF\n\ ++ EXPRINT=none\n\ ++ SYM=none\n\ ++ GMP=OFF\n\ ++ IPOPT=OFF\n\ ++ WORHP=OFF\n\ ++ LPS=none\n\ ++ LPSCHECK=OFF\n\ ++ NOBLKBUFMEM=OFF\n\ ++ NOBLKMEM=OFF\n\ ++ NOBUFMEM=OFF\n\ ++ THREADSAFE=ON;FORCE\n\ ++ READLINE=OFF\n\ ++ SANITIZE_ADDRESS=OFF\n\ ++ SANITIZE_MEMORY=OFF\n\ ++ SANITIZE_UNDEFINED=OFF\n\ ++ SANITIZE_THREAD=OFF\n\ ++ SHARED=OFF\n\ ++ VERSION=9.2.0.0\n\ ++ API_VERSION=115\n\ ++ ZIMPL=OFF\n\ ++ ZLIB=ON"; + } +diff --git a/src/symmetry/compute_symmetry_bliss.cpp b/src/symmetry/compute_symmetry_bliss.cpp +index 26117a8026..2f164d133b 100644 +--- a/src/compute_symmetry_bliss.cpp 2024-11-08 16:36:13 ++++ b/src/symmetry/compute_symmetry_bliss.cpp 2024-11-08 16:37:32 +@@ -34,8 +34,9 @@ + #include "compute_symmetry.h" + + /* include bliss graph */ +-#include +-#include ++#define BLISS_VERSION "0.73" ++#include ++#include + + #include + #include