From ae3ea8c12ab192e7942e0fea82c4aa2306c2ab9e Mon Sep 17 00:00:00 2001 From: Henner Zeller Date: Sun, 1 Oct 2023 03:31:24 -0700 Subject: [PATCH] or-tools: fix string_view compilation issue (#258332) Fixes #256266 Don't use non-existent member function on string_view. (StringPiece and string_view are almost the same looks like they are typedef'd to the same string_view. StringPiece used to have a as_string() member) --- .../science/math/or-tools/default.nix | 3 ++ .../or-tools/fix-stringview-compile.patch | 36 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 pkgs/development/libraries/science/math/or-tools/fix-stringview-compile.patch diff --git a/pkgs/development/libraries/science/math/or-tools/default.nix b/pkgs/development/libraries/science/math/or-tools/default.nix index 55438c63a5e..8f0c930eff6 100644 --- a/pkgs/development/libraries/science/math/or-tools/default.nix +++ b/pkgs/development/libraries/science/math/or-tools/default.nix @@ -45,6 +45,9 @@ stdenv.mkDerivation rec { 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 diff --git a/pkgs/development/libraries/science/math/or-tools/fix-stringview-compile.patch b/pkgs/development/libraries/science/math/or-tools/fix-stringview-compile.patch new file mode 100644 index 00000000000..760ab80a38e --- /dev/null +++ b/pkgs/development/libraries/science/math/or-tools/fix-stringview-compile.patch @@ -0,0 +1,36 @@ +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 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 ParseConstraint(absl::string_view constraint_view) { ++StatusOr 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 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)); + } + } +