Loading pkgs/development/libraries/science/math/or-tools/default.nix +42 −22 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ , eigen , ensureNewerSourcesForZipFilesHook , fetchFromGitHub , fetchpatch , substituteAll , glpk , lib , pkg-config Loading @@ -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="; }) # 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="; (substituteAll { src = ./offline.patch; pybind11_protobuf = "../../pybind11_protobuf"; }) # 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 Loading @@ -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 Loading @@ -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, Loading pkgs/development/libraries/science/math/or-tools/fix-stringview-compile.patchdeleted 100644 → 0 +0 −36 Original line number Diff line number Diff line 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)); } } pkgs/development/libraries/science/math/or-tools/offline.patch 0 → 100644 +16 −0 Original line number Diff line number Diff line 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) pkgs/top-level/all-packages.nix +2 −2 Original line number Diff line number Diff line Loading @@ -37725,10 +37725,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"; }; Loading
pkgs/development/libraries/science/math/or-tools/default.nix +42 −22 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ , eigen , ensureNewerSourcesForZipFilesHook , fetchFromGitHub , fetchpatch , substituteAll , glpk , lib , pkg-config Loading @@ -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="; }) # 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="; (substituteAll { src = ./offline.patch; pybind11_protobuf = "../../pybind11_protobuf"; }) # 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 Loading @@ -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 Loading @@ -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, Loading
pkgs/development/libraries/science/math/or-tools/fix-stringview-compile.patchdeleted 100644 → 0 +0 −36 Original line number Diff line number Diff line 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)); } }
pkgs/development/libraries/science/math/or-tools/offline.patch 0 → 100644 +16 −0 Original line number Diff line number Diff line 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)
pkgs/top-level/all-packages.nix +2 −2 Original line number Diff line number Diff line Loading @@ -37725,10 +37725,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"; };