From 4f381f6d078ccf21a629f0f6a05528578bd95ab9 Mon Sep 17 00:00:00 2001 From: Mizux Seiha Date: Tue, 16 Sep 2025 16:25:04 +0200 Subject: [PATCH] backport from main: * bump abseil to 20250814 * bump protobuf to v32.0 * cmake: add ccache auto support * backport flatzinc, math_opt and sat update --- .dockerignore | 1 - CMakeLists.txt | 5 +- Dependencies.txt | 4 +- MODULE.bazel | 8 +- bazel/notebook_requirements.in | 2 +- bazel/notebook_requirements.txt | 2 +- bazel/ortools_requirements.in | 2 +- bazel/ortools_requirements.txt | 2 +- bazel/swig_java.bzl | 28 +- cmake/README.md | 11 - cmake/ccache.cmake | 67 + cmake/cpp.cmake | 1 + cmake/dependencies/CMakeLists.txt | 50 +- cmake/glop.cmake | 2 - cmake/host.CMakeLists.txt | 8 +- cmake/java.cmake | 2 +- cmake/python.cmake | 2 +- ortools/algorithms/BUILD.bazel | 39 +- ortools/algorithms/java/BUILD.bazel | 8 +- ortools/algorithms/python/BUILD.bazel | 1 - ortools/algorithms/samples/code_samples.bzl | 4 - ortools/base/BUILD.bazel | 74 +- ortools/base/CMakeLists.txt | 24 +- ortools/base/case.cc | 129 - ortools/base/case.h | 128 - ortools/base/parse_test_proto.h | 3 +- ortools/base/protocol-buffer-matchers.cc | 396 + ortools/base/protocol-buffer-matchers.h | 368 +- ortools/base/small_map.h | 22 - ortools/base/stl_logging.h | 149 - ortools/bop/bop_solver.cc | 1 + ortools/dotnet/Google.OrTools-full.csproj.in | 2 +- ortools/dotnet/Google.OrTools-local.csproj.in | 2 +- .../dotnet/Google.OrTools.runtime.csproj.in | 2 +- ortools/flatzinc/BUILD.bazel | 26 +- ortools/flatzinc/checker.cc | 374 +- ortools/flatzinc/cp_model_fz_solver.cc | 1748 +++- ortools/flatzinc/fz.cc | 26 + ortools/flatzinc/model.cc | 71 +- ortools/flatzinc/model.h | 14 +- .../flatzinc/mznlib/fzn_all_different_set.mzn | 1 + ortools/flatzinc/mznlib/fzn_all_disjoint.mzn | 1 + ortools/flatzinc/mznlib/fzn_all_equal_int.mzn | 4 + ortools/flatzinc/mznlib/fzn_all_equal_set.mzn | 4 + ortools/flatzinc/mznlib/fzn_arg_max_bool.mzn | 4 + ortools/flatzinc/mznlib/fzn_arg_max_int.mzn | 4 + ortools/flatzinc/mznlib/fzn_arg_min_bool.mzn | 4 + ortools/flatzinc/mznlib/fzn_arg_min_int.mzn | 4 + ortools/flatzinc/mznlib/fzn_disjoint.mzn | 1 + .../mznlib/fzn_global_cardinality.mzn | 12 + .../mznlib/fzn_global_cardinality_closed.mzn | 12 + .../mznlib/fzn_global_cardinality_low_up.mzn | 14 + .../fzn_global_cardinality_low_up_closed.mzn | 14 + ortools/flatzinc/mznlib/fzn_lex_less_bool.mzn | 14 + ortools/flatzinc/mznlib/fzn_lex_less_int.mzn | 14 + .../flatzinc/mznlib/fzn_lex_lesseq_bool.mzn | 14 + .../flatzinc/mznlib/fzn_lex_lesseq_int.mzn | 14 + ortools/flatzinc/mznlib/fzn_partition_set.mzn | 1 + .../mznlib/fzn_seq_precede_chain_int.mzn | 5 + .../mznlib/fzn_value_precede_chain_int.mzn | 12 + .../flatzinc/mznlib/fzn_value_precede_int.mzn | 1 + .../flatzinc/mznlib/redefinitions-2.0.2.mzn | 8 +- ortools/flatzinc/parser.tab.cc | 745 +- ortools/flatzinc/parser.yy | 25 +- ortools/flatzinc/parser_main.cc | 11 +- ortools/glop/BUILD.bazel | 27 +- ortools/glpk/BUILD.bazel | 15 + ortools/graph/BUILD.bazel | 38 +- ortools/graph/bidirectional_dijkstra.h | 8 +- ortools/graph/generic_max_flow_test.cc | 7 +- ortools/graph/java/BUILD.bazel | 6 +- ortools/graph/line_graph.h | 62 - ortools/graph/line_graph_test.cc | 104 - ortools/graph/samples/code_samples.bzl | 4 - ortools/init/java/BUILD.bazel | 8 +- ortools/init/python/BUILD.bazel | 1 - ortools/java/com/google/ortools/BUILD.bazel | 1 + .../google/ortools/modelbuilder/BUILD.bazel | 5 +- .../java/com/google/ortools/sat/BUILD.bazel | 5 +- ortools/java/pom-full.xml.in | 2 +- ortools/java/pom-local.xml.in | 2 +- ortools/linear_solver/cbc_interface.cc | 2 +- ortools/linear_solver/csharp/linear_solver.i | 3 - ortools/linear_solver/gurobi_interface.cc | 4 +- ortools/linear_solver/highs_interface.cc | 15 +- ortools/linear_solver/java/BUILD.bazel | 8 +- ortools/linear_solver/linear_solver.cc | 6 +- ortools/linear_solver/linear_solver.proto | 1 - .../proto_solver/highs_proto_solver.cc | 6 +- .../proto_solver/highs_proto_solver.h | 14 +- .../linear_solver/samples/code_samples.bzl | 4 - ortools/linear_solver/scip_callback.cc | 2 +- ortools/linear_solver/scip_interface.cc | 4 +- ortools/lp_data/BUILD.bazel | 28 +- ortools/lp_data/lp_decomposer.cc | 12 +- ortools/math_opt/core/python/BUILD.bazel | 23 - ortools/math_opt/cpp/BUILD.bazel | 260 + ortools/math_opt/cpp/CMakeLists.txt | 2 +- ortools/math_opt/cpp/callback_test.cc | 358 + ...ompute_infeasible_subsystem_result_test.cc | 590 ++ ortools/math_opt/cpp/enums_test.cc | 132 + .../cpp/enums_test.proto} | 17 +- ortools/math_opt/cpp/formatters_test.cc | 137 + ortools/math_opt/cpp/key_types.h | 6 +- ortools/math_opt/cpp/key_types_test.cc | 165 + .../math_opt/cpp/linear_constraint_test.cc | 205 + ortools/math_opt/cpp/map_filter_test.cc | 331 + ortools/math_opt/cpp/matchers_test.cc | 2032 +++++ ortools/math_opt/cpp/message_callback.cc | 9 +- ortools/math_opt/cpp/message_callback_test.cc | 415 + .../cpp/model_solve_parameters_test.cc | 742 ++ ortools/math_opt/cpp/objective_test.cc | 233 + ortools/math_opt/cpp/parameters_test.cc | 249 + ortools/math_opt/cpp/solution_test.cc | 504 ++ ortools/math_opt/cpp/solve_arguments_test.cc | 97 + ortools/math_opt/cpp/solve_impl.cc | 4 +- ortools/math_opt/cpp/solve_impl_test.cc | 1865 ++++ ortools/math_opt/cpp/solve_result_test.cc | 932 ++ ortools/math_opt/cpp/solve_test.cc | 1539 ++++ ortools/math_opt/cpp/solver_resources_test.cc | 103 + ortools/math_opt/cpp/statistics_test.cc | 162 + .../streamable_solver_init_arguments_test.cc | 50 + .../cpp/variable_and_expressions_nc_test.cc | 101 + .../cpp/variable_and_expressions_test.cc | 7643 +++++++++++++++++ ortools/math_opt/elemental/BUILD.bazel | 14 - ortools/math_opt/elemental/CMakeLists.txt | 2 +- ortools/math_opt/elemental/element_storage.h | 3 +- ortools/math_opt/elemental/elemental_test.cc | 3 +- ortools/math_opt/python/BUILD.bazel | 6 +- .../math_opt/python/bounded_expressions.py | 1 + .../math_opt/python/ipc/proto_converter.py | 2 +- .../math_opt/python/linear_expression_test.py | 28 +- .../python/normalized_inequality_test.py | 18 +- ortools/math_opt/python/result_test.py | 14 +- ortools/math_opt/samples/cpp/BUILD.bazel | 5 - ortools/math_opt/samples/cpp/CMakeLists.txt | 1 + .../math_opt/samples/cpp/coil_in_the_box.cc | 383 + ortools/math_opt/samples/python/BUILD.bazel | 1 - .../samples/python/linear_regression.py | 3 - ortools/math_opt/solver_tests/CMakeLists.txt | 44 +- .../solver_tests/invalid_input_tests.cc | 1 - ortools/math_opt/solvers/BUILD.bazel | 50 +- ortools/math_opt/solvers/CMakeLists.txt | 76 +- ortools/math_opt/solvers/glpk/BUILD.bazel | 25 + ortools/math_opt/solvers/gscip/BUILD.bazel | 44 +- .../solvers/gscip/gscip_event_handler_test.cc | 1 - ortools/math_opt/solvers/highs_solver.cc | 2 +- .../math_opt/solvers/message_callback_data.cc | 4 +- ortools/math_opt/solvers/osqp.proto | 4 +- ortools/math_opt/storage/update_trackers.h | 10 +- ortools/math_opt/testing/BUILD.bazel | 2 +- ortools/math_opt/validators/BUILD.bazel | 2 +- ortools/pdlp/BUILD.bazel | 31 +- ortools/pdlp/gtest_main.cc | 24 - ortools/pdlp/python/BUILD.bazel | 2 - ortools/port/BUILD.bazel | 5 + ortools/port/os.h | 42 + ortools/python/setup.py.in | 2 +- ortools/sat/2d_distances_propagator.cc | 26 +- .../sat/2d_mandatory_overlap_propagator.cc | 1 + ortools/sat/2d_try_edge_propagator.cc | 3 +- ortools/sat/2d_try_edge_propagator_test.cc | 2 +- ortools/sat/BUILD.bazel | 222 +- ortools/sat/all_different.cc | 55 +- ortools/sat/all_different.h | 26 +- ortools/sat/all_different_test.cc | 34 + ortools/sat/boolean_problem.cc | 5 +- ortools/sat/circuit.cc | 200 +- ortools/sat/circuit.h | 17 +- ortools/sat/circuit_test.cc | 14 +- ortools/sat/clause.cc | 470 +- ortools/sat/clause.h | 56 +- ortools/sat/colab/cp_sat.ipynb | 14 + ortools/sat/combine_solutions.cc | 5 +- ortools/sat/combine_solutions.h | 3 +- ortools/sat/constraint_violation.cc | 52 +- ortools/sat/constraint_violation.h | 33 +- ortools/sat/container.h | 238 + ortools/sat/container_test.cc | 139 + ortools/sat/cp_constraints.cc | 407 +- ortools/sat/cp_constraints.h | 131 +- ortools/sat/cp_constraints_test.cc | 112 - ortools/sat/cp_model.proto | 30 +- ortools/sat/cp_model_checker.cc | 97 +- ortools/sat/cp_model_checker_test.cc | 27 - ortools/sat/cp_model_copy.cc | 287 +- ortools/sat/cp_model_copy.h | 26 +- ortools/sat/cp_model_copy_test.cc | 131 + ortools/sat/cp_model_expand.cc | 626 +- ortools/sat/cp_model_expand_test.cc | 588 +- ortools/sat/cp_model_loader.cc | 52 +- ortools/sat/cp_model_presolve.cc | 68 +- ortools/sat/cp_model_search.cc | 21 +- ortools/sat/cp_model_solver.cc | 41 +- ortools/sat/cp_model_solver_helpers.cc | 42 +- ortools/sat/cp_model_solver_test.cc | 501 +- ortools/sat/cp_model_symmetries.cc | 16 +- ortools/sat/cp_model_utils.cc | 18 + ortools/sat/cp_model_utils.h | 20 + ortools/sat/cumulative.cc | 43 +- ortools/sat/cumulative.h | 5 + ortools/sat/cumulative_energy.cc | 21 +- ortools/sat/cumulative_energy_test.cc | 17 +- ortools/sat/cumulative_test.cc | 17 +- ortools/sat/diffn.cc | 121 +- ortools/sat/diffn.h | 8 +- ortools/sat/diffn_test.cc | 4 +- ortools/sat/diffn_util.cc | 8 +- ortools/sat/disjunctive.cc | 261 +- ortools/sat/disjunctive.h | 23 +- ortools/sat/disjunctive_test.cc | 27 +- ortools/sat/docs/README.md | 65 +- ortools/sat/docs/boolean_logic.md | 40 +- ortools/sat/docs/channeling.md | 325 +- ortools/sat/docs/integer_arithmetic.md | 22 +- ortools/sat/docs/model.md | 1 + ortools/sat/docs/scheduling.md | 2164 ++--- ortools/sat/docs/solver.md | 3 + ortools/sat/drat_proof_handler.h | 4 +- ortools/sat/enforcement.cc | 313 + ortools/sat/enforcement.h | 134 + ortools/sat/enforcement_helper.cc | 132 + ortools/sat/enforcement_helper.h | 103 + ortools/sat/enforcement_test.cc | 146 + ortools/sat/implied_bounds_test.cc | 6 +- ortools/sat/integer.cc | 60 +- ortools/sat/integer.h | 11 +- ortools/sat/integer_expr.cc | 358 +- ortools/sat/integer_expr.h | 63 +- ortools/sat/integer_expr_test.cc | 140 +- ortools/sat/integer_search.cc | 45 +- ortools/sat/integer_test.cc | 17 +- ortools/sat/intervals.cc | 22 +- ortools/sat/intervals.h | 13 +- ortools/sat/java/BUILD.bazel | 12 +- ortools/sat/linear_constraint_manager.cc | 5 +- ortools/sat/linear_propagation.cc | 19 +- ortools/sat/linear_propagation.h | 4 +- ortools/sat/linear_relaxation.cc | 166 +- ortools/sat/linear_relaxation.h | 13 +- ortools/sat/linear_relaxation_test.cc | 94 +- ortools/sat/no_overlap_2d_helper.cc | 67 +- ortools/sat/no_overlap_2d_helper.h | 21 +- ortools/sat/parameters_validation.cc | 5 - ortools/sat/precedences.cc | 238 + ortools/sat/precedences.h | 41 +- ortools/sat/precedences_test.cc | 12 +- ortools/sat/presolve_context.cc | 1 - ortools/sat/probing.cc | 4 +- ortools/sat/python/cp_model_helper.cc | 9 + ortools/sat/python/cp_model_test.py | 5 + ortools/sat/python/wrappers.cc | 6 +- ortools/sat/routing_cuts.cc | 8 +- ortools/sat/routing_cuts.h | 4 +- ortools/sat/routing_cuts_test.cc | 18 +- ortools/sat/samples/BinPackingProblemSat.cs | 2 + ortools/sat/samples/BinPackingProblemSat.java | 2 + ortools/sat/samples/BoolOrSampleSat.cs | 2 + ortools/sat/samples/BoolOrSampleSat.java | 2 + ortools/sat/samples/ChannelingSampleSat.cs | 2 + ortools/sat/samples/ChannelingSampleSat.java | 2 + .../EarlinessTardinessCostSampleSat.cs | 2 + .../EarlinessTardinessCostSampleSat.java | 2 + ortools/sat/samples/IntervalSampleSat.cs | 2 + ortools/sat/samples/IntervalSampleSat.java | 2 + ortools/sat/samples/LiteralSampleSat.cs | 2 + ortools/sat/samples/LiteralSampleSat.java | 2 + ortools/sat/samples/NoOverlapSampleSat.cs | 2 + ortools/sat/samples/NoOverlapSampleSat.java | 2 + .../sat/samples/OptionalIntervalSampleSat.cs | 2 + .../samples/OptionalIntervalSampleSat.java | 2 + ortools/sat/samples/RabbitsAndPheasantsSat.cs | 3 + .../sat/samples/RabbitsAndPheasantsSat.java | 2 + ortools/sat/samples/RankingSampleSat.cs | 2 + ortools/sat/samples/RankingSampleSat.java | 2 + ortools/sat/samples/ReifiedSampleSat.cs | 2 + ortools/sat/samples/ReifiedSampleSat.java | 2 + ortools/sat/samples/StepFunctionSampleSat.cs | 2 + .../sat/samples/StepFunctionSampleSat.java | 2 + .../all_different_except_zero_sample_sat.py | 2 + ortools/sat/samples/binpacking_problem_sat.cc | 2 + ortools/sat/samples/binpacking_problem_sat.go | 3 + ortools/sat/samples/binpacking_problem_sat.py | 2 + .../bool_and_int_var_product_sample_sat.py | 2 + ortools/sat/samples/bool_or_sample_sat.cc | 2 + ortools/sat/samples/bool_or_sample_sat.go | 3 + ortools/sat/samples/bool_or_sample_sat.py | 2 + .../sat/samples/boolean_product_sample_sat.go | 3 + .../sat/samples/boolean_product_sample_sat.py | 2 + ortools/sat/samples/channeling_sample_sat.cc | 2 + ortools/sat/samples/channeling_sample_sat.go | 3 + ortools/sat/samples/channeling_sample_sat.py | 2 + ortools/sat/samples/code_samples.bzl | 4 - .../cumulative_variable_profile_sample_sat.py | 2 + .../earliness_tardiness_cost_sample_sat.cc | 2 + .../earliness_tardiness_cost_sample_sat.go | 3 + .../earliness_tardiness_cost_sample_sat.py | 2 + .../index_first_boolvar_true_sample_sat.py | 2 + .../samples/interval_relations_sample_sat.py | 2 + ortools/sat/samples/interval_sample_sat.cc | 2 + ortools/sat/samples/interval_sample_sat.go | 3 + ortools/sat/samples/interval_sample_sat.py | 2 + ortools/sat/samples/literal_sample_sat.cc | 2 + ortools/sat/samples/literal_sample_sat.go | 3 + ortools/sat/samples/literal_sample_sat.py | 2 + ortools/sat/samples/no_overlap_sample_sat.cc | 2 + ortools/sat/samples/no_overlap_sample_sat.go | 3 + ortools/sat/samples/no_overlap_sample_sat.py | 2 + .../samples/optional_interval_sample_sat.cc | 2 + .../samples/optional_interval_sample_sat.go | 3 + .../samples/optional_interval_sample_sat.py | 2 + .../overlapping_intervals_sample_sat.py | 2 + .../sat/samples/rabbits_and_pheasants_sat.cc | 2 + .../sat/samples/rabbits_and_pheasants_sat.go | 3 + .../sat/samples/rabbits_and_pheasants_sat.py | 2 + .../sat/samples/ranking_circuit_sample_sat.py | 2 + ortools/sat/samples/ranking_sample_sat.cc | 2 + ortools/sat/samples/ranking_sample_sat.go | 3 + ortools/sat/samples/ranking_sample_sat.py | 2 + ortools/sat/samples/reified_sample_sat.cc | 2 + ortools/sat/samples/reified_sample_sat.go | 3 + ortools/sat/samples/reified_sample_sat.py | 2 + .../scheduling_with_calendar_sample_sat.py | 2 + .../search_for_all_solutions_sample_sat.go | 3 + .../sequences_in_no_overlap_sample_sat.py | 2 + ortools/sat/samples/simple_sat_program.go | 3 + .../samples/solution_hinting_sample_sat.go | 3 + ...print_intermediate_solutions_sample_sat.go | 3 + .../solve_with_time_limit_sample_sat.go | 3 + .../sat/samples/step_function_sample_sat.cc | 2 + .../sat/samples/step_function_sample_sat.go | 3 + .../sat/samples/step_function_sample_sat.py | 2 + .../transitions_in_no_overlap_sample_sat.py | 2 + ortools/sat/sat_parameters.proto | 24 +- ortools/sat/sat_solver.cc | 5 +- ortools/sat/sat_solver.h | 2 + ortools/sat/scheduling_cuts_test.cc | 51 +- ortools/sat/scheduling_helpers.cc | 189 +- ortools/sat/scheduling_helpers.h | 144 +- ortools/sat/scheduling_helpers_test.cc | 20 +- ortools/sat/solution_crush.cc | 7 + ortools/sat/stat_tables.cc | 8 +- ortools/sat/synchronization.h | 19 +- ortools/sat/table_test.cc | 17 - ortools/sat/timetable.cc | 123 +- ortools/sat/timetable.h | 24 +- ortools/sat/timetable_edgefinding.cc | 5 +- ortools/sat/timetable_test.cc | 44 +- ortools/sat/util.cc | 40 +- ortools/sat/util.h | 7 +- ortools/sat/util_test.cc | 73 +- ortools/scheduling/python/BUILD.bazel | 1 - ortools/service/v1/BUILD.bazel | 1 + ortools/set_cover/BUILD.bazel | 1 + ortools/set_cover/python/BUILD.bazel | 1 - ortools/third_party_solvers/BUILD.bazel | 19 +- .../third_party_solvers/xpress_environment.cc | 2 +- ortools/util/BUILD.bazel | 32 +- ortools/util/java/BUILD.bazel | 65 +- ortools/util/proto_tools.cc | 3 + ortools/util/proto_tools.h | 54 +- ortools/util/python/BUILD.bazel | 4 +- ortools/util/python/py_solve_interrupter.cc | 6 +- ortools/util/sigint.cc | 5 + ortools/util/sigint.h | 6 + ortools/util/solve_interrupter.cc | 8 +- ortools/util/time_limit.h | 14 +- patches/BUILD.bazel | 5 - patches/abseil-cpp-20250512.0.patch | 20 - patches/abseil-cpp-20250814.0.patch | 125 + ...-02-14.patch => fuzztest-2025-08-05.patch} | 141 +- ...tobuf-v31.1.patch => protobuf-v32.0.patch} | 0 tools/doc/doxygen_filter.py | 2 +- 373 files changed, 30302 insertions(+), 6458 deletions(-) create mode 100644 cmake/ccache.cmake delete mode 100644 ortools/base/case.cc delete mode 100644 ortools/base/case.h create mode 100644 ortools/base/protocol-buffer-matchers.cc delete mode 100644 ortools/base/small_map.h delete mode 100644 ortools/base/stl_logging.h create mode 100644 ortools/flatzinc/mznlib/fzn_all_different_set.mzn create mode 100644 ortools/flatzinc/mznlib/fzn_all_disjoint.mzn create mode 100644 ortools/flatzinc/mznlib/fzn_all_equal_int.mzn create mode 100644 ortools/flatzinc/mznlib/fzn_all_equal_set.mzn create mode 100644 ortools/flatzinc/mznlib/fzn_arg_max_bool.mzn create mode 100644 ortools/flatzinc/mznlib/fzn_arg_max_int.mzn create mode 100644 ortools/flatzinc/mznlib/fzn_arg_min_bool.mzn create mode 100644 ortools/flatzinc/mznlib/fzn_arg_min_int.mzn create mode 100644 ortools/flatzinc/mznlib/fzn_disjoint.mzn create mode 100644 ortools/flatzinc/mznlib/fzn_global_cardinality.mzn create mode 100644 ortools/flatzinc/mznlib/fzn_global_cardinality_closed.mzn create mode 100644 ortools/flatzinc/mznlib/fzn_global_cardinality_low_up.mzn create mode 100644 ortools/flatzinc/mznlib/fzn_global_cardinality_low_up_closed.mzn create mode 100644 ortools/flatzinc/mznlib/fzn_lex_less_bool.mzn create mode 100644 ortools/flatzinc/mznlib/fzn_lex_less_int.mzn create mode 100644 ortools/flatzinc/mznlib/fzn_lex_lesseq_bool.mzn create mode 100644 ortools/flatzinc/mznlib/fzn_lex_lesseq_int.mzn create mode 100644 ortools/flatzinc/mznlib/fzn_partition_set.mzn create mode 100644 ortools/flatzinc/mznlib/fzn_seq_precede_chain_int.mzn create mode 100644 ortools/flatzinc/mznlib/fzn_value_precede_chain_int.mzn create mode 100644 ortools/flatzinc/mznlib/fzn_value_precede_int.mzn delete mode 100644 ortools/graph/line_graph.h delete mode 100644 ortools/graph/line_graph_test.cc create mode 100644 ortools/math_opt/cpp/callback_test.cc create mode 100644 ortools/math_opt/cpp/compute_infeasible_subsystem_result_test.cc create mode 100644 ortools/math_opt/cpp/enums_test.cc rename ortools/{base/ptr_util.h => math_opt/cpp/enums_test.proto} (66%) create mode 100644 ortools/math_opt/cpp/formatters_test.cc create mode 100644 ortools/math_opt/cpp/key_types_test.cc create mode 100644 ortools/math_opt/cpp/linear_constraint_test.cc create mode 100644 ortools/math_opt/cpp/map_filter_test.cc create mode 100644 ortools/math_opt/cpp/matchers_test.cc create mode 100644 ortools/math_opt/cpp/message_callback_test.cc create mode 100644 ortools/math_opt/cpp/model_solve_parameters_test.cc create mode 100644 ortools/math_opt/cpp/objective_test.cc create mode 100644 ortools/math_opt/cpp/parameters_test.cc create mode 100644 ortools/math_opt/cpp/solution_test.cc create mode 100644 ortools/math_opt/cpp/solve_arguments_test.cc create mode 100644 ortools/math_opt/cpp/solve_impl_test.cc create mode 100644 ortools/math_opt/cpp/solve_result_test.cc create mode 100644 ortools/math_opt/cpp/solve_test.cc create mode 100644 ortools/math_opt/cpp/solver_resources_test.cc create mode 100644 ortools/math_opt/cpp/statistics_test.cc create mode 100644 ortools/math_opt/cpp/streamable_solver_init_arguments_test.cc create mode 100644 ortools/math_opt/cpp/variable_and_expressions_nc_test.cc create mode 100644 ortools/math_opt/cpp/variable_and_expressions_test.cc create mode 100644 ortools/math_opt/samples/cpp/coil_in_the_box.cc delete mode 100644 ortools/pdlp/gtest_main.cc create mode 100644 ortools/port/os.h create mode 100644 ortools/sat/container.h create mode 100644 ortools/sat/container_test.cc create mode 100644 ortools/sat/enforcement.cc create mode 100644 ortools/sat/enforcement.h create mode 100644 ortools/sat/enforcement_helper.cc create mode 100644 ortools/sat/enforcement_helper.h create mode 100644 ortools/sat/enforcement_test.cc delete mode 100644 patches/abseil-cpp-20250512.0.patch create mode 100644 patches/abseil-cpp-20250814.0.patch rename patches/{fuzztest-2025-02-14.patch => fuzztest-2025-08-05.patch} (57%) rename patches/{protobuf-v31.1.patch => protobuf-v32.0.patch} (100%) diff --git a/.dockerignore b/.dockerignore index 87ec80e5e9..db7c918e2e 100644 --- a/.dockerignore +++ b/.dockerignore @@ -32,7 +32,6 @@ makefiles/docker makefiles/Makefile Makefile.local -binder docs tools/docker tools/release diff --git a/CMakeLists.txt b/CMakeLists.txt index 7d3b443efd..0f30547c7d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -90,6 +90,9 @@ if(MSVC AND BUILD_SHARED_LIBS) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) endif() +# Enable CCache if any +include(ccache) + # Disable CTest targets set_property(GLOBAL PROPERTY CTEST_TARGETS_ADDED 1) include(CTest) @@ -198,7 +201,7 @@ if(BUILD_TESTING) CMAKE_DEPENDENT_OPTION(BUILD_benchmark "Build benchmark" OFF "NOT BUILD_DEPS" ON) # Fuzztest do not support MSVC or toolchain - if(MSVC OR CMAKE_CROSSCOMPILING) + if(APPLE OR MSVC OR CMAKE_CROSSCOMPILING) set(USE_fuzztest OFF) else() # since no distro provide a fuzztest package disable support by default. diff --git a/Dependencies.txt b/Dependencies.txt index 5d072a8acb..c4fa4626ed 100644 --- a/Dependencies.txt +++ b/Dependencies.txt @@ -1,6 +1,6 @@ ZLIB=1.3.1 -abseil-cpp=20250512.0 -Protobuf=v31.1 +abseil-cpp=20250814.0 +Protobuf=v32.0 Eigen=3.4.0 Re2=2024-07-02 CoinUtils=2.11.12 diff --git a/MODULE.bazel b/MODULE.bazel index 28d7579aa7..f3112f60c1 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -41,17 +41,17 @@ bazel_dep(name = "rules_python", version = "1.5.1") # OR-Tools C++ dependencies # keep sorted go/buildifier#keep-sorted -bazel_dep(name = "abseil-cpp", version = "20250512.0") +bazel_dep(name = "abseil-cpp", version = "20250814.0") bazel_dep(name = "bzip2", version = "1.0.8.bcr.2") bazel_dep(name = "eigen", version = "3.4.0.bcr.3") -bazel_dep(name = "fuzztest", version = "20250214.0") +bazel_dep(name = "fuzztest", version = "20250805.0") bazel_dep(name = "riegeli", version = "0.0.0-20241218-3385e3c") # otherwise fuzztest use a borken version bazel_dep(name = "glpk", version = "5.0.bcr.4") bazel_dep(name = "google_benchmark", version = "1.9.2") bazel_dep(name = "googletest", version = "1.17.0") bazel_dep(name = "highs", version = "1.11.0") -bazel_dep(name = "protobuf", version = "31.1") -bazel_dep(name = "re2", version = "2024-07-02.bcr.1") +bazel_dep(name = "protobuf", version = "32.0") +bazel_dep(name = "re2", version = "2025-08-12") bazel_dep(name = "scip", version = "9.2.2") bazel_dep(name = "zlib", version = "1.3.1.bcr.5") diff --git a/bazel/notebook_requirements.in b/bazel/notebook_requirements.in index c2d02e6fcb..d1c56d4459 100644 --- a/bazel/notebook_requirements.in +++ b/bazel/notebook_requirements.in @@ -2,7 +2,7 @@ absl-py==2.2.2 immutabledict==4.2.1 numpy==2.2.0 -protobuf==6.31.1 +protobuf==6.32.0 requests==2.32.4 scipy==1.14.1 typing-extensions==4.13.1 diff --git a/bazel/notebook_requirements.txt b/bazel/notebook_requirements.txt index 51e2da3358..4f44c1c124 100644 --- a/bazel/notebook_requirements.txt +++ b/bazel/notebook_requirements.txt @@ -215,7 +215,7 @@ prometheus-client==0.22.1 # via jupyter-server prompt-toolkit==3.0.51 # via ipython -protobuf==6.31.1 +protobuf==6.32.0 # via # -r bazel/notebook_requirements.in # mypy-protobuf diff --git a/bazel/ortools_requirements.in b/bazel/ortools_requirements.in index e893a8b629..115af98e15 100644 --- a/bazel/ortools_requirements.in +++ b/bazel/ortools_requirements.in @@ -2,7 +2,7 @@ absl-py==2.2.2 immutabledict==4.2.1 numpy==2.2.0 -protobuf==6.31.1 +protobuf==6.32.0 requests==2.32.4 scipy==1.14.1 typing-extensions==4.13.1 diff --git a/bazel/ortools_requirements.txt b/bazel/ortools_requirements.txt index 3232c1e420..e11a30013e 100644 --- a/bazel/ortools_requirements.txt +++ b/bazel/ortools_requirements.txt @@ -45,7 +45,7 @@ platformdirs==4.3.8 # via # black # virtualenv -protobuf==6.31.1 +protobuf==6.32.0 # via # -r bazel/ortools_requirements.in # mypy-protobuf diff --git a/bazel/swig_java.bzl b/bazel/swig_java.bzl index 17439585e3..e320982c81 100644 --- a/bazel/swig_java.bzl +++ b/bazel/swig_java.bzl @@ -15,6 +15,7 @@ load("@bazel_skylib//lib:paths.bzl", "paths") load("@rules_cc//cc:cc_library.bzl", "cc_library") +load("@rules_cc//cc/common:cc_info.bzl", "CcInfo") load("@rules_java//java:java_library.bzl", "java_library") load("@rules_java//java/common:java_common.bzl", "java_common") @@ -33,7 +34,9 @@ def _create_src_jar(ctx, java_runtime_info, input_dir, output_jar): ) def _java_wrap_cc_impl(ctx): - src = ctx.file.src + if len(ctx.files.srcs) != 1: + fail("There must be exactly one *.swig file", attr = "srcs") + swig_src = ctx.files.srcs[0] outfile = ctx.outputs.outfile outhdr = ctx.outputs.outhdr @@ -65,7 +68,7 @@ def _java_wrap_cc_impl(ctx): swig_args.add("-module", ctx.attr.module) for include_path in depset(transitive = include_path_sets).to_list(): swig_args.add("-I" + include_path) - swig_args.add(src.path) + swig_args.add(swig_src.path) generated_c_files = [outfile] if ctx.attr.use_directors: generated_c_files.append(outhdr) @@ -74,7 +77,7 @@ def _java_wrap_cc_impl(ctx): swig_lib = {"SWIG_LIB": paths.dirname(ctx.files._swig_lib[0].path)} ctx.actions.run( outputs = generated_c_files + [java_files_dir], - inputs = depset([src] + ctx.files.swig_includes + ctx.files._swig_lib, transitive = header_sets), + inputs = depset([swig_src] + ctx.files.swig_includes + ctx.files._swig_lib, transitive = header_sets), env = swig_lib, executable = ctx.executable._swig, arguments = [swig_args], @@ -92,10 +95,13 @@ It's expected that the `swig` binary exists in the host's path. """, implementation = _java_wrap_cc_impl, attrs = { - "src": attr.label( - doc = "Single swig source file.", - allow_single_file = True, - mandatory = True, + "srcs": attr.label_list( + allow_empty = False, + allow_files = [".swig", ".i"], + flags = ["DIRECT_COMPILE_TIME_INPUT", "ORDER_INDEPENDENT"], + doc = """ +A list of one swig source. + """, ), "deps": attr.label_list( doc = "C++ dependencies.", @@ -141,9 +147,9 @@ It's expected that the `swig` binary exists in the host's path. }, ) -def ortools_java_wrap_cc( +def java_wrap_cc( name, - src, + srcs, package, deps = [], java_deps = [], @@ -159,7 +165,7 @@ def ortools_java_wrap_cc( Args: name: target name. - src: single .i source file. + srcs: A list of one swig source. package: package of generated Java files. deps: C++ deps. java_deps: Java deps. @@ -183,7 +189,7 @@ def ortools_java_wrap_cc( _java_wrap_cc( name = wrapper_name, - src = src, + srcs = srcs, package = package, outfile = outfile, outhdr = outhdr if use_directors else None, diff --git a/cmake/README.md b/cmake/README.md index ff84170a29..ea95808966 100644 --- a/cmake/README.md +++ b/cmake/README.md @@ -51,17 +51,6 @@ Dockers: [docker_svg]: ./../../../actions/workflows/amd64_docker_cmake.yml/badge.svg?branch=main [docker_link]: ./../../../actions/workflows/amd64_docker_cmake.yml -[![Build Status][aarch64_toolchain_status]][aarch64_toolchain_link] -[![Build Status][mips_toolchain_status]][mips_toolchain_link] -[![Build Status][powerpc_toolchain_status]][powerpc_toolchain_link] - -[aarch64_toolchain_status]: ./../../../actions/workflows/aarch64_toolchain.yml/badge.svg?branch=main -[aarch64_toolchain_link]: ./../../../actions/workflows/aarch64_toolchain.yml -[mips_toolchain_status]: ./../../../actions/workflows/mips_toolchain.yml/badge.svg?branch=main -[mips_toolchain_link]: ./../../../actions/workflows/mips_toolchain.yml -[powerpc_toolchain_status]: ./../../../actions/workflows/powerpc_toolchain.yml/badge.svg?branch=main -[powerpc_toolchain_link]: ./../../../actions/workflows/powerpc_toolchain.yml - ## Introduction