diff --git a/.pylintrc b/.pylintrc index e8f9f02da1..5a82c5b33c 100644 --- a/.pylintrc +++ b/.pylintrc @@ -7,11 +7,11 @@ # pygtk.require(). #init-hook= -# Add files or directories to the blacklist. They should be base names, not +# Add files or directories to the denylist. They should be base names, not # paths. ignore=CVS -# Add files or directories matching the regex patterns to the blacklist. The +# Add files or directories matching the regex patterns to the denylist. The # regex matches against base names, not paths. ignore-patterns= diff --git a/bazel/README.md b/bazel/README.md index d61260cbc6..7ab9003893 100644 --- a/bazel/README.md +++ b/bazel/README.md @@ -44,53 +44,55 @@ You'll need: Here the list of supported solvers: -* CP-SAT -* GLOP -* GLPK -* PDLP -* SCIP +* CP-SAT +* GLOP +* GLPK +* PDLP +* SCIP ## Dependencies OR-Tools depends on several mandatory libraries. -* Eigen -* Google Abseil-cpp, -* Google Protobuf, -* Google Gtest, -* Bliss, -* SCIP, -* GLPK (GNU Linear Programming Kit) +* Eigen +* Google Abseil-cpp, +* Google Protobuf, +* Google Gtest, +* Bliss, +* SCIP, +* GLPK (GNU Linear Programming Kit) ## Compilation You must compile OR-Tools using C++20: -* on UNIX: +* on UNIX: - ```sh - bazel build --cxxopt=-std=c++17 ... - ``` -* on Windows when using MSVC: + ```sh + bazel build --cxxopt=-std=c++17 ... + ``` - ```sh - bazel build --cxxopt="-std:c++20" ... - ``` +* on Windows when using MSVC: + + ```sh + bazel build --cxxopt="-std:c++20" ... + ``` ## Testing You may run tests using: -* on UNIX: +* on UNIX: - ```sh - bazel test --cxxopt=-std=c++17 ... - ``` -* on Windows when using MSVC: + ```sh + bazel test --cxxopt=-std=c++17 ... + ``` - ```sh - bazel test --cxxopt="-std:c++20" ... - ``` +* on Windows when using MSVC: + + ```sh + bazel test --cxxopt="-std:c++20" ... + ``` ## Integration diff --git a/examples/cpp/course_scheduling.cc b/examples/cpp/course_scheduling.cc index 526ac868df..9cce42e037 100644 --- a/examples/cpp/course_scheduling.cc +++ b/examples/cpp/course_scheduling.cc @@ -13,6 +13,7 @@ #include "examples/cpp/course_scheduling.h" +#include #include #include @@ -22,11 +23,11 @@ #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" #include "absl/strings/str_split.h" -#include "examples/cpp/course_scheduling.pb.h" #include "ortools/base/logging.h" #include "ortools/base/mathutil.h" #include "ortools/base/status_macros.h" #include "ortools/linear_solver/linear_solver.h" +#include "ortools/scheduling/course_scheduling.pb.h" namespace operations_research { diff --git a/examples/cpp/course_scheduling.h b/examples/cpp/course_scheduling.h index 512d734ff1..1de03e93f1 100644 --- a/examples/cpp/course_scheduling.h +++ b/examples/cpp/course_scheduling.h @@ -20,9 +20,9 @@ #include "absl/container/flat_hash_set.h" #include "absl/status/status.h" #include "absl/strings/str_format.h" -#include "examples/cpp/course_scheduling.pb.h" #include "ortools/linear_solver/linear_solver.h" #include "ortools/sat/cp_model.pb.h" +#include "ortools/scheduling/course_scheduling.pb.h" namespace operations_research { class CourseSchedulingSolver { diff --git a/examples/dotnet/CMakeLists.txt b/examples/dotnet/CMakeLists.txt index ace2e87bf5..c3f55303ce 100644 --- a/examples/dotnet/CMakeLists.txt +++ b/examples/dotnet/CMakeLists.txt @@ -1,3 +1,16 @@ +# Copyright 2010-2022 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. + if(NOT BUILD_DOTNET_EXAMPLES) return() endif() diff --git a/ortools/base/strong_int.h b/ortools/base/strong_int.h index d58ac417b3..5cd61f7894 100644 --- a/ortools/base/strong_int.h +++ b/ortools/base/strong_int.h @@ -366,20 +366,20 @@ class StrongIntRange { public: using value_type = IntType; using difference_type = IntType; - using reference = const IntType &; - using pointer = const IntType *; + using reference = const IntType&; + using pointer = const IntType*; using iterator_category = std::input_iterator_tag; explicit StrongIntRangeIterator(IntType initial) : current_(initial) {} - bool operator!=(const StrongIntRangeIterator &other) const { + bool operator!=(const StrongIntRangeIterator& other) const { return current_ != other.current_; } - bool operator==(const StrongIntRangeIterator &other) const { + bool operator==(const StrongIntRangeIterator& other) const { return current_ == other.current_; } value_type operator*() const { return current_; } pointer operator->() const { return ¤t_; } - StrongIntRangeIterator &operator++() { + StrongIntRangeIterator& operator++() { ++current_; return *this; } diff --git a/ortools/constraint_solver/routing.cc b/ortools/constraint_solver/routing.cc index 0f9be7ecad..f3dbf24ba7 100644 --- a/ortools/constraint_solver/routing.cc +++ b/ortools/constraint_solver/routing.cc @@ -37,12 +37,9 @@ #include "absl/container/flat_hash_set.h" #include "absl/flags/flag.h" #include "absl/functional/bind_front.h" -#include "absl/memory/memory.h" -#include "absl/meta/type_traits.h" #include "absl/status/statusor.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_format.h" -#include "absl/strings/str_join.h" #include "absl/strings/string_view.h" #include "absl/time/time.h" #include "ortools/base/int_type.h" diff --git a/ortools/constraint_solver/routing_filters.cc b/ortools/constraint_solver/routing_filters.cc index 01864a7a8b..caad525d96 100644 --- a/ortools/constraint_solver/routing_filters.cc +++ b/ortools/constraint_solver/routing_filters.cc @@ -31,18 +31,13 @@ #include #include -#include "absl/algorithm/container.h" #include "absl/container/btree_set.h" #include "absl/container/flat_hash_map.h" #include "absl/container/flat_hash_set.h" #include "absl/flags/flag.h" -#include "absl/memory/memory.h" -#include "absl/strings/str_join.h" #include "absl/strings/string_view.h" -#include "ortools/base/int_type.h" #include "ortools/base/integral_types.h" #include "ortools/base/logging.h" -#include "ortools/base/map_util.h" #include "ortools/base/small_map.h" #include "ortools/base/strong_vector.h" #include "ortools/constraint_solver/constraint_solver.h" @@ -50,7 +45,6 @@ #include "ortools/constraint_solver/routing.h" #include "ortools/constraint_solver/routing_lp_scheduling.h" #include "ortools/constraint_solver/routing_parameters.pb.h" -#include "ortools/graph/min_cost_flow.h" #include "ortools/util/bitset.h" #include "ortools/util/piecewise_linear_function.h" #include "ortools/util/saturated_arithmetic.h" diff --git a/ortools/constraint_solver/routing_lp_scheduling.cc b/ortools/constraint_solver/routing_lp_scheduling.cc index 344776cb89..8aa6c0c661 100644 --- a/ortools/constraint_solver/routing_lp_scheduling.cc +++ b/ortools/constraint_solver/routing_lp_scheduling.cc @@ -23,8 +23,6 @@ #include #include -#include "absl/memory/memory.h" -#include "absl/strings/str_join.h" #include "absl/time/time.h" #include "ortools/base/logging.h" #include "ortools/base/mathutil.h" diff --git a/ortools/constraint_solver/routing_lp_scheduling.h b/ortools/constraint_solver/routing_lp_scheduling.h index 07b9fb2e6a..7e4546665a 100644 --- a/ortools/constraint_solver/routing_lp_scheduling.h +++ b/ortools/constraint_solver/routing_lp_scheduling.h @@ -26,7 +26,6 @@ #include #include "absl/container/flat_hash_map.h" -#include "absl/memory/memory.h" #include "absl/time/time.h" #include "ortools/base/logging.h" #include "ortools/base/mathutil.h" @@ -38,10 +37,8 @@ #include "ortools/lp_data/lp_types.h" #include "ortools/sat/cp_model.pb.h" #include "ortools/sat/cp_model_solver.h" -#include "ortools/sat/lp_utils.h" #include "ortools/sat/model.h" #include "ortools/sat/sat_parameters.pb.h" -#include "ortools/util/saturated_arithmetic.h" #include "ortools/util/sorted_interval_list.h" namespace operations_research { diff --git a/ortools/linear_solver/model_validator.cc b/ortools/linear_solver/model_validator.cc index 8c0a0ed7f3..dbaf82a744 100644 --- a/ortools/linear_solver/model_validator.cc +++ b/ortools/linear_solver/model_validator.cc @@ -701,7 +701,7 @@ ExtractValidMPModelOrPopulateResponseStatus(const MPModelRequest& request, LazyMutableCopy model(request.model()); if (request.has_model_delta()) { // NOTE(user): This library needs to be portable, so we can't include - // ortools/base/file.h; see ../port/file.h. + // ortools/base/helpers.h; see ../port/file.h. std::string contents; const absl::Status file_read_status = PortableFileGetContents( request.model_delta().baseline_model_file_path(), &contents); diff --git a/ortools/linear_solver/samples/assignment_mip.py b/ortools/linear_solver/samples/assignment_mip.py index 76ac6fd8c0..2a94f82acf 100755 --- a/ortools/linear_solver/samples/assignment_mip.py +++ b/ortools/linear_solver/samples/assignment_mip.py @@ -36,6 +36,7 @@ def main(): # [START solver] # Create the mip solver with the SCIP backend. solver = pywraplp.Solver.CreateSolver('SCIP') + if not solver: return # [END solver] diff --git a/ortools/linear_solver/samples/assignment_task_sizes_mip.py b/ortools/linear_solver/samples/assignment_task_sizes_mip.py index 70eb7f7bc0..6d213e124f 100755 --- a/ortools/linear_solver/samples/assignment_task_sizes_mip.py +++ b/ortools/linear_solver/samples/assignment_task_sizes_mip.py @@ -46,6 +46,7 @@ def main(): # [START solver] # Create the mip solver with the SCIP backend. solver = pywraplp.Solver.CreateSolver('SCIP') + if not solver: return # [END solver] diff --git a/ortools/linear_solver/samples/bin_packing_mip.py b/ortools/linear_solver/samples/bin_packing_mip.py index ae142b8915..9ed982ec8e 100755 --- a/ortools/linear_solver/samples/bin_packing_mip.py +++ b/ortools/linear_solver/samples/bin_packing_mip.py @@ -42,6 +42,7 @@ def main(): # [START solver] # Create the mip solver with the SCIP backend. solver = pywraplp.Solver.CreateSolver('SCIP') + if not solver: return # [END solver] diff --git a/ortools/linear_solver/samples/multiple_knapsack_mip.py b/ortools/linear_solver/samples/multiple_knapsack_mip.py index 5d061e7580..b9e2cbc1df 100755 --- a/ortools/linear_solver/samples/multiple_knapsack_mip.py +++ b/ortools/linear_solver/samples/multiple_knapsack_mip.py @@ -11,6 +11,7 @@ # 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. + # [START program] """Solve a multiple knapsack problem using a MIP solver.""" # [START import] diff --git a/ortools/linear_solver/samples/stigler_diet.py b/ortools/linear_solver/samples/stigler_diet.py index 73de83f094..e34c4a5ac7 100755 --- a/ortools/linear_solver/samples/stigler_diet.py +++ b/ortools/linear_solver/samples/stigler_diet.py @@ -11,6 +11,7 @@ # 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. + # [START program] """The Stigler diet problem. diff --git a/ortools/math_opt/tools/mathopt_solve_main.cc b/ortools/math_opt/tools/mathopt_solve_main.cc index 75206d87c6..5b8d06e627 100644 --- a/ortools/math_opt/tools/mathopt_solve_main.cc +++ b/ortools/math_opt/tools/mathopt_solve_main.cc @@ -284,7 +284,7 @@ absl::Status RunSolver() { // Optionally prints the problem. if (absl::GetFlag(FLAGS_print_model)) { - std::cout << model; + std::cout << *model; std::cout.flush(); } diff --git a/ortools/port/file.h b/ortools/port/file.h index ca51984932..62a239625d 100644 --- a/ortools/port/file.h +++ b/ortools/port/file.h @@ -21,7 +21,7 @@ namespace operations_research { -// See ortools/base/file.h +// See ortools/base/helpers.h ::absl::Status PortableFileSetContents(absl::string_view file_name, absl::string_view content); diff --git a/ortools/sat/samples/assignment_groups_sat.py b/ortools/sat/samples/assignment_groups_sat.py index aee5f4c46c..0292b7cb1d 100755 --- a/ortools/sat/samples/assignment_groups_sat.py +++ b/ortools/sat/samples/assignment_groups_sat.py @@ -11,6 +11,7 @@ # 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. + # [START program] """Solve assignment problem for given group of workers.""" # [START import] diff --git a/ortools/sat/samples/assignment_task_sizes_sat.py b/ortools/sat/samples/assignment_task_sizes_sat.py index 43f1637e92..2a64fc38b1 100755 --- a/ortools/sat/samples/assignment_task_sizes_sat.py +++ b/ortools/sat/samples/assignment_task_sizes_sat.py @@ -11,6 +11,7 @@ # 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. + # [START program] """Solve a simple assignment problem.""" # [START import] diff --git a/ortools/sat/samples/assignment_teams_sat.py b/ortools/sat/samples/assignment_teams_sat.py index 1f481ba1dc..67312df496 100755 --- a/ortools/sat/samples/assignment_teams_sat.py +++ b/ortools/sat/samples/assignment_teams_sat.py @@ -11,6 +11,7 @@ # 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. + # [START program] """Solve a simple assignment problem.""" # [START import] diff --git a/ortools/sat/samples/code_samples.bzl b/ortools/sat/samples/code_samples.bzl index 05e6dafd3e..5358ab0b35 100644 --- a/ortools/sat/samples/code_samples.bzl +++ b/ortools/sat/samples/code_samples.bzl @@ -1,3 +1,16 @@ +# Copyright 2010-2022 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. + """Helper macro to compile and test code samples.""" load("@rules_python//python:defs.bzl", "py_binary") diff --git a/ortools/sat/samples/code_samples_cc_test.sh b/ortools/sat/samples/code_samples_cc_test.sh index 6066dc195f..b831ad38aa 100755 --- a/ortools/sat/samples/code_samples_cc_test.sh +++ b/ortools/sat/samples/code_samples_cc_test.sh @@ -1,4 +1,16 @@ -#!/bin/bash +#!/usr/bin/env bash +# Copyright 2010-2022 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. declare -r DIR="${TEST_SRCDIR}/com_google_ortools/ortools/sat/samples" @@ -6,4 +18,4 @@ function test::ortools::code_samples_sat_cc() { "${DIR}/$1_cc" } -test::ortools::code_samples_sat_cc $1 \ No newline at end of file +test::ortools::code_samples_sat_cc $1 diff --git a/ortools/sat/samples/code_samples_py_test.sh b/ortools/sat/samples/code_samples_py_test.sh index 96f22f817e..7809f11b6b 100755 --- a/ortools/sat/samples/code_samples_py_test.sh +++ b/ortools/sat/samples/code_samples_py_test.sh @@ -1,4 +1,16 @@ -#!/bin/bash +#!/usr/bin/env bash +# Copyright 2010-2022 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. declare -r DIR="${TEST_SRCDIR}/com_google_ortools/ortools/sat/samples" diff --git a/ortools/sat/samples/cp_is_fun_sat.py b/ortools/sat/samples/cp_is_fun_sat.py index e51961ed06..03705d6f15 100755 --- a/ortools/sat/samples/cp_is_fun_sat.py +++ b/ortools/sat/samples/cp_is_fun_sat.py @@ -11,6 +11,7 @@ # 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. + # [START program] """Cryptarithmetic puzzle. diff --git a/ortools/sat/samples/cp_sat_example.py b/ortools/sat/samples/cp_sat_example.py index 9e7ad59037..a8e403b338 100755 --- a/ortools/sat/samples/cp_sat_example.py +++ b/ortools/sat/samples/cp_sat_example.py @@ -11,6 +11,7 @@ # 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. + # [START program] """Simple solve.""" # [START import] diff --git a/ortools/sat/samples/minimal_jobshop_sat.py b/ortools/sat/samples/minimal_jobshop_sat.py index f495092e24..489f155c1f 100755 --- a/ortools/sat/samples/minimal_jobshop_sat.py +++ b/ortools/sat/samples/minimal_jobshop_sat.py @@ -11,6 +11,7 @@ # 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. + # [START program] """Minimal jobshop example.""" # [START import] diff --git a/ortools/sat/samples/multiple_knapsack_sat.py b/ortools/sat/samples/multiple_knapsack_sat.py index fc87c36231..ba75d19d7a 100755 --- a/ortools/sat/samples/multiple_knapsack_sat.py +++ b/ortools/sat/samples/multiple_knapsack_sat.py @@ -11,6 +11,7 @@ # 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. + # [START program] """Solves a multiple knapsack problem using the CP-SAT solver.""" # [START import] diff --git a/ortools/sat/samples/nqueens_sat.py b/ortools/sat/samples/nqueens_sat.py index c284264366..74ca01c904 100644 --- a/ortools/sat/samples/nqueens_sat.py +++ b/ortools/sat/samples/nqueens_sat.py @@ -11,6 +11,7 @@ # 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. + # [START program] """OR-Tools solution to the N-queens problem.""" # [START import] diff --git a/ortools/sat/samples/nurses_sat.py b/ortools/sat/samples/nurses_sat.py index a24f828035..ef8f2730b3 100755 --- a/ortools/sat/samples/nurses_sat.py +++ b/ortools/sat/samples/nurses_sat.py @@ -11,6 +11,7 @@ # 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. + # [START program] """Example of a simple nurse scheduling problem.""" # [START import] diff --git a/ortools/sat/samples/schedule_requests_sat.py b/ortools/sat/samples/schedule_requests_sat.py index 0542b35a6e..181fde763d 100755 --- a/ortools/sat/samples/schedule_requests_sat.py +++ b/ortools/sat/samples/schedule_requests_sat.py @@ -11,6 +11,7 @@ # 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. + # [START program] """Nurse scheduling problem with shift requests.""" # [START import] diff --git a/ortools/sat/samples/simple_sat_program.py b/ortools/sat/samples/simple_sat_program.py index 42370fc4b4..dd107ee320 100755 --- a/ortools/sat/samples/simple_sat_program.py +++ b/ortools/sat/samples/simple_sat_program.py @@ -11,6 +11,7 @@ # 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. + # [START program] """Simple solve.""" # [START import] diff --git a/ortools/sat/samples/solve_with_time_limit_sample_sat.py b/ortools/sat/samples/solve_with_time_limit_sample_sat.py index ee81c6324f..85bd29d427 100755 --- a/ortools/sat/samples/solve_with_time_limit_sample_sat.py +++ b/ortools/sat/samples/solve_with_time_limit_sample_sat.py @@ -11,6 +11,7 @@ # 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. + # [START program] """Solves a problem with a time limit.""" diff --git a/ortools/sat/samples/stop_after_n_solutions_sample_sat.py b/ortools/sat/samples/stop_after_n_solutions_sample_sat.py index 1823ca1211..c119bf6fb8 100755 --- a/ortools/sat/samples/stop_after_n_solutions_sample_sat.py +++ b/ortools/sat/samples/stop_after_n_solutions_sample_sat.py @@ -11,6 +11,7 @@ # 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. + # [START program] """Code sample that solves a model and displays a small number of solutions.""" diff --git a/tools/doc/doxygen_filter.py b/tools/doc/doxygen_filter.py index b0053bc669..5b76e553be 100644 --- a/tools/doc/doxygen_filter.py +++ b/tools/doc/doxygen_filter.py @@ -81,7 +81,7 @@ class DoxygenFormatter(object): # doesn't treat it like a code block. (re.compile(r'(^\s*)//\s{4,}([-\d*].*)'), r'\1 \2', self.COMMENT), - # Replace TODO(user) in a comment with @todo (someone) + # Replace TODO(someone) in a comment with @todo (someone) (re.compile(r'TODO'), r'@todo ', self.COMMENT), # Replace leading 'Note:' or 'Note that' in a comment with @note diff --git a/tools/release/build_delivery_linux.sh b/tools/release/build_delivery_linux.sh index 18d8fd858a..2530f54523 100755 --- a/tools/release/build_delivery_linux.sh +++ b/tools/release/build_delivery_linux.sh @@ -165,7 +165,7 @@ function build_java() { } # Python 3 -# todo(user) Use `make --directory tools/docker python` instead +# TODO(user) Use `make --directory tools/docker python` instead function build_python() { if echo "${ORTOOLS_BRANCH} ${ORTOOLS_SHA1}" | cmp --silent "${ROOT_DIR}/export/python_build" -; then echo "build python up to date!" | tee -a build.log diff --git a/tools/release/build_delivery_mac.sh b/tools/release/build_delivery_mac.sh index 83520b4c09..4d2ce1b073 100755 --- a/tools/release/build_delivery_mac.sh +++ b/tools/release/build_delivery_mac.sh @@ -158,7 +158,7 @@ function build_java() { } # Python 3 -# todo(user) Use `make --directory tools/docker python` instead +# TODO(user) Use `make --directory tools/docker python` instead function build_python() { if echo "${ORTOOLS_BRANCH} ${ORTOOLS_SHA1}" | cmp --silent "${ROOT_DIR}/export/python_build" -; then echo "build python up to date!" | tee -a build.log