or-tools: 9.4 -> 9.7

This commit is contained in:
Weijia Wang
2024-07-16 11:01:24 +02:00
parent d0306536db
commit feb20da98f
4 changed files with 60 additions and 60 deletions
@@ -6,7 +6,7 @@
, eigen
, ensureNewerSourcesForZipFilesHook
, fetchFromGitHub
, fetchpatch
, substituteAll
, glpk
, lib
, pkg-config
@@ -19,53 +19,57 @@
, zlib
}:
let
pybind11_protobuf = fetchFromGitHub {
owner = "pybind";
repo = "pybind11_protobuf";
rev = "b713501f1da56d9b76c42f89efd00b97c26c9eac";
hash = "sha256-f6pzRWextH+7lm1xzyhx98wCIWH3lbhn59gSCcjsBVw=";
};
in
stdenv.mkDerivation rec {
pname = "or-tools";
version = "9.4";
version = "9.7";
src = fetchFromGitHub {
owner = "google";
repo = "or-tools";
rev = "v${version}";
sha256 = "sha256-joWonJGuxlgHhXLznRhC1MDltQulXzpo4Do9dec1bLY=";
hash = "sha256-eHukf6TbY2dx7iEf8WfwfWsjDEubPtRO02ju0kHtASo=";
};
patches = [
# Disable test that requires external input: https://github.com/google/or-tools/issues/3429
(fetchpatch {
url = "https://github.com/google/or-tools/commit/7072ae92ec204afcbfce17d5360a5884c136ce90.patch";
hash = "sha256-iWE+atp308q7pC1L1FD6sK8LvWchZ3ofxvXssguozbM=";
(substituteAll {
src = ./offline.patch;
pybind11_protobuf = "../../pybind11_protobuf";
})
# Fix test that broke in parallel builds: https://github.com/google/or-tools/issues/3461
(fetchpatch {
url = "https://github.com/google/or-tools/commit/a26602f24781e7bfcc39612568aa9f4010bb9736.patch";
hash = "sha256-gM0rW0xRXMYaCwltPK0ih5mdo3HtX6mKltJDHe4gbLc=";
})
# Backport fix in cmake test configuration where pip installs newer version from PyPi over local build,
# breaking checkPhase: https://github.com/google/or-tools/issues/3260
(fetchpatch {
url = "https://github.com/google/or-tools/commit/edd1544375bd55f79168db315151a48faa548fa0.patch";
hash = "sha256-S//1YM3IoRCp3Ghg8zMF0XXgIpVmaw4gH8cVb9eUbqM=";
})
# Don't use non-existent member of string_view. Partial patch from commit
# https://github.com/google/or-tools/commit/c5a2fa1eb673bf652cb9ad4f5049d054b8166e17.patch
./fix-stringview-compile.patch
];
# or-tools normally attempts to build Protobuf for the build platform when
# cross-compiling. Instead, just tell it where to find protoc.
postPatch = ''
echo "set(PROTOC_PRG $(type -p protoc))" > cmake/host.cmake
cp -R ${pybind11_protobuf} pybind11_protobuf
chmod -R u+w pybind11_protobuf
'';
cmakeFlags = [
"-DBUILD_DEPS=OFF"
"-DBUILD_PYTHON=ON"
"-DBUILD_pybind11=OFF"
"-DBUILD_pybind11_protobuf=ON"
"-DCMAKE_INSTALL_BINDIR=bin"
"-DCMAKE_INSTALL_INCLUDEDIR=include"
"-DCMAKE_INSTALL_LIBDIR=lib"
"-DFETCH_PYTHON_DEPS=OFF"
"-DUSE_GLPK=ON"
"-DUSE_SCIP=OFF"
"-DPython3_EXECUTABLE=${python.pythonOnBuildForHost.interpreter}"
] ++ lib.optionals stdenv.isDarwin [ "-DCMAKE_MACOSX_RPATH=OFF" ];
strictDeps = true;
nativeBuildInputs = [
cmake
ensureNewerSourcesForZipFilesHook
@@ -78,14 +82,18 @@ stdenv.mkDerivation rec {
] ++ (with python.pythonOnBuildForHost.pkgs; [
pip
mypy-protobuf
mypy
]);
buildInputs = [
abseil-cpp
bzip2
cbc
eigen
glpk
python.pkgs.absl-py
python.pkgs.pybind11
python.pkgs.pytest
python.pkgs.scipy
python.pkgs.setuptools
python.pkgs.wheel
re2
@@ -103,7 +111,19 @@ stdenv.mkDerivation rec {
python.pkgs.virtualenv
];
doCheck = true;
env.NIX_CFLAGS_COMPILE = toString [
# fatal error: 'python/google/protobuf/proto_api.h' file not found
"-I${protobuf.src}"
# fatal error: 'pybind11_protobuf/native_proto_caster.h' file not found
"-I${pybind11_protobuf}"
];
# some tests fail on linux and hang on darwin
doCheck = false;
preCheck = ''
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$PWD/lib
'';
# This extra configure step prevents the installer from littering
# $out/bin with sample programs that only really function as tests,
@@ -1,36 +0,0 @@
diff --git a/ortools/lp_data/lp_parser.cc b/ortools/lp_data/lp_parser.cc
index 58286306e5..bd26c019ab 100644
--- a/ortools/lp_data/lp_parser.cc
+++ b/ortools/lp_data/lp_parser.cc
@@ -185,7 +185,7 @@ bool LPParser::ParseIntegerVariablesList(StringPiece line) {
bool LPParser::ParseConstraint(StringPiece constraint) {
const StatusOr<ParsedConstraint> parsed_constraint_or_status =
- ::operations_research::glop::ParseConstraint(constraint.as_string());
+ ::operations_research::glop::ParseConstraint(constraint);
if (!parsed_constraint_or_status.ok()) return false;
const ParsedConstraint& parsed_constraint =
parsed_constraint_or_status.value();
@@ -342,10 +342,9 @@ TokenType LPParser::ConsumeToken(StringPiece* sp) {
} // namespace
-StatusOr<ParsedConstraint> ParseConstraint(absl::string_view constraint_view) {
+StatusOr<ParsedConstraint> ParseConstraint(absl::string_view constraint) {
ParsedConstraint parsed_constraint;
// Get the name, if present.
- StringPiece constraint{constraint_view};
StringPiece constraint_copy{constraint};
std::string consumed_name;
Fractional consumed_coeff;
@@ -413,8 +412,8 @@ StatusOr<ParsedConstraint> ParseConstraint(absl::string_view constraint_view) {
right_bound = consumed_coeff;
if (ConsumeToken(&constraint, &consumed_name, &consumed_coeff) !=
TokenType::END) {
- return absl::InvalidArgumentError(absl::StrCat(
- "End of input was expected, found: ", constraint.as_string()));
+ return absl::InvalidArgumentError(
+ absl::StrCat("End of input was expected, found: ", constraint));
}
}
@@ -0,0 +1,16 @@
diff --git a/cmake/dependencies/CMakeLists.txt b/cmake/dependencies/CMakeLists.txt
index af3a28c113..ba92c3c55e 100644
--- a/cmake/dependencies/CMakeLists.txt
+++ b/cmake/dependencies/CMakeLists.txt
@@ -177,9 +177,8 @@ if(BUILD_PYTHON AND BUILD_pybind11_protobuf)
list(APPEND CMAKE_MESSAGE_INDENT " ")
FetchContent_Declare(
pybind11_protobuf
- GIT_REPOSITORY "https://github.com/pybind/pybind11_protobuf.git"
- GIT_TAG "main"
- PATCH_COMMAND git apply --ignore-whitespace "${CMAKE_CURRENT_LIST_DIR}/../../patches/pybind11_protobuf.patch"
+ SOURCE_DIR @pybind11_protobuf@
+ PATCH_COMMAND patch -p1 < "${CMAKE_CURRENT_LIST_DIR}/../../patches/pybind11_protobuf.patch"
)
FetchContent_MakeAvailable(pybind11_protobuf)
list(POP_BACK CMAKE_MESSAGE_INDENT)
+2 -2
View File
@@ -37751,10 +37751,10 @@ with pkgs;
inherit (darwin) DarwinTools;
stdenv = if stdenv.isDarwin then overrideSDK stdenv "11.0" else stdenv;
python = python3;
protobuf = protobuf_21;
protobuf = protobuf_23;
# or-tools builds with -std=c++20, so abseil-cpp must
# also be built that way
abseil-cpp = abseil-cpp.override {
abseil-cpp = abseil-cpp_202301.override {
static = true;
cxxStandard = "20";
};