Skip to content

Commit

Permalink
Merge branch 'main' of github.com:google/or-tools
Browse files Browse the repository at this point in the history
  • Loading branch information
lperron committed Sep 6, 2024
2 parents 5d8e372 + f204c4f commit 634c6b5
Show file tree
Hide file tree
Showing 34 changed files with 1,401 additions and 354 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/amd64_windows_cmake_cpp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ jobs:
fail-fast: false
name: Windows • ${{ matrix.cmake.generator }} (${{ matrix.cmake.config }}) • C++
runs-on: windows-latest
env:
CTEST_OUTPUT_ON_FAILURE: 1
steps:
- uses: actions/checkout@v4
- name: Check cmake
Expand Down
9 changes: 2 additions & 7 deletions .github/workflows/amd64_windows_cmake_dotnet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,10 @@ jobs:
fail-fast: false
name: Windows • ${{ matrix.cmake.generator }} • .Net
runs-on: windows-latest
env:
CTEST_OUTPUT_ON_FAILURE: 1
steps:
- uses: actions/checkout@v4
- name: Install SWIG 4.2.1
run: |
(New-Object System.Net.WebClient).DownloadFile("http://prdownloads.sourceforge.net/swig/swigwin-4.2.1.zip","swigwin-4.2.1.zip");
Expand-Archive .\swigwin-4.2.1.zip .;
echo "$((Get-Item .).FullName)/swigwin-4.2.1" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Check swig
run: swig -version
- name: Setup .NET 6.0
uses: actions/setup-dotnet@v4
with:
Expand Down
37 changes: 29 additions & 8 deletions .github/workflows/amd64_windows_cmake_java.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,41 @@ jobs:
cmake: [
{generator: "Visual Studio 17 2022", config: Release, build_target: ALL_BUILD, test_target: RUN_TESTS, install_target: INSTALL},
]
java: [
# see https://endoflife.date/azul-zulu
{distrib: 'zulu', version: '8'}, # 2030/12
{distrib: 'zulu', version: '11'}, # 2026/09
{distrib: 'zulu', version: '17'}, # 2029/09
{distrib: 'zulu', version: '21'}, # 2031/09
# see https://endoflife.date/eclipse-temurin
{distrib: 'temurin', version: '8'}, # 2026/11
{distrib: 'temurin', version: '11'}, # 2027/10
{distrib: 'temurin', version: '17'}, # 2027/10
{distrib: 'temurin', version: '21'}, # 2029/12
# see https://endoflife.date/microsoft-build-of-openjdk
{distrib: 'microsoft', version: '11'}, # 2027/09
{distrib: 'microsoft', version: '17'}, # 2027/09
{distrib: 'microsoft', version: '21'}, # 2028/09
]
fail-fast: false
name: Windows • ${{ matrix.cmake.generator }} • Java
name: Windows • ${{ matrix.cmake.generator }} • ${{ matrix.java.distrib }}-${{ matrix.java.version }}
runs-on: windows-latest
env:
CTEST_OUTPUT_ON_FAILURE: 1
steps:
- uses: actions/checkout@v4
- name: Install SWIG 4.2.1
- uses: actions/setup-java@v4
with:
distribution: ${{ matrix.java.distrib }}
java-version: ${{ matrix.java.version }}
- name: Update maven
run: |
(New-Object System.Net.WebClient).DownloadFile("http://prdownloads.sourceforge.net/swig/swigwin-4.2.1.zip","swigwin-4.2.1.zip");
Expand-Archive .\swigwin-4.2.1.zip .;
echo "$((Get-Item .).FullName)/swigwin-4.2.1" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Check swig
run: swig -version
choco upgrade maven
echo "C:\ProgramData\chocolatey\lib\maven\apache-maven-3.9.9\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Check java
run: java -version
run: |
java -version
mvn --version
- name: Check cmake
run: cmake --version
- name: Configure
Expand Down
9 changes: 2 additions & 7 deletions .github/workflows/amd64_windows_cmake_python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,20 +20,15 @@ jobs:
fail-fast: false
name: Windows • ${{ matrix.cmake.generator }} • Python-${{ matrix.python.version }}
runs-on: windows-latest
env:
CTEST_OUTPUT_ON_FAILURE: 1
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python.version }}
- name: Install python3
run: python3 -m pip install --user mypy-protobuf absl-py setuptools wheel numpy pandas
- name: Install SWIG 4.2.1
run: |
(New-Object System.Net.WebClient).DownloadFile("http://prdownloads.sourceforge.net/swig/swigwin-4.2.1.zip","swigwin-4.2.1.zip");
Expand-Archive .\swigwin-4.2.1.zip .;
echo "$((Get-Item .).FullName)/swigwin-4.2.1" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Check swig
run: swig -version
- name: Add Python binaries to path
run: >
echo "$((Get-Item ~).FullName)/AppData/Roaming/Python/${{ matrix.python.dir }}/Scripts" |
Expand Down
2 changes: 1 addition & 1 deletion cmake/dependencies/SWIG.CMakeLists.txt.in
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ ExternalProject_Add(SWIG_project
SOURCE_DIR "@CMAKE_CURRENT_BINARY_DIR@/${PROJECT_NAME}/source"
BUILD_IN_SOURCE 1

URL "http://prdownloads.sourceforge.net/swig/swigwin-4.1.1.zip"
URL "http://prdownloads.sourceforge.net/swig/swigwin-4.2.1.zip"
LOG_DOWNLOAD TRUE

UPDATE_COMMAND ""
Expand Down
26 changes: 21 additions & 5 deletions cmake/dotnet.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -264,11 +264,27 @@ function(add_dotnet_test)
WORKING_DIRECTORY ${DOTNET_TEST_DIR})

if(BUILD_TESTING)
add_test(
NAME dotnet_${COMPONENT_NAME}_${TEST_NAME}
COMMAND ${CMAKE_COMMAND} -E env --unset=TARGETNAME
${DOTNET_EXECUTABLE} test --nologo -c Release ${TEST_NAME}.csproj
WORKING_DIRECTORY ${DOTNET_TEST_DIR})
if(USE_DOTNET_6)
add_test(
NAME dotnet_${COMPONENT_NAME}_${TEST_NAME}_net60
COMMAND ${CMAKE_COMMAND} -E env --unset=TARGETNAME
${DOTNET_EXECUTABLE} test --nologo --framework net6.0 -c Release
WORKING_DIRECTORY ${DOTNET_TEST_DIR})
endif()
if(USE_DOTNET_7)
add_test(
NAME dotnet_${COMPONENT_NAME}_${TEST_NAME}_net70
COMMAND ${CMAKE_COMMAND} -E env --unset=TARGETNAME
${DOTNET_EXECUTABLE} test --nologo --framework net7.0 -c Release
WORKING_DIRECTORY ${DOTNET_TEST_DIR})
endif()
if(USE_DOTNET_8)
add_test(
NAME dotnet_${COMPONENT_NAME}_${TEST_NAME}_net80
COMMAND ${CMAKE_COMMAND} -E env --unset=TARGETNAME
${DOTNET_EXECUTABLE} test --nologo --framework net8.0 -c Release
WORKING_DIRECTORY ${DOTNET_TEST_DIR})
endif()
endif()
message(STATUS "Configuring test ${TEST_FILE_NAME} ...DONE")
endfunction()
Expand Down
4 changes: 4 additions & 0 deletions cmake/python.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -455,6 +455,8 @@ add_custom_command(
$<TARGET_FILE:init_pybind11> ${PYTHON_PROJECT}/init/python
COMMAND ${CMAKE_COMMAND} -E copy
$<TARGET_FILE:knapsack_solver_pybind11> ${PYTHON_PROJECT}/algorithms/python
COMMAND ${CMAKE_COMMAND} -E copy
$<TARGET_FILE:set_cover_pybind11> ${PYTHON_PROJECT}/algorithms/python
COMMAND ${CMAKE_COMMAND} -E copy
$<TARGET_FILE:linear_sum_assignment_pybind11> ${PYTHON_PROJECT}/graph/python
COMMAND ${CMAKE_COMMAND} -E copy
Expand Down Expand Up @@ -492,6 +494,7 @@ add_custom_command(
DEPENDS
init_pybind11
knapsack_solver_pybind11
set_cover_pybind11
linear_sum_assignment_pybind11
max_flow_pybind11
min_cost_flow_pybind11
Expand Down Expand Up @@ -530,6 +533,7 @@ add_custom_command(
COMMAND ${CMAKE_COMMAND} -E remove -f stub_timestamp
COMMAND ${stubgen_EXECUTABLE} -p ortools.init.python.init --output .
COMMAND ${stubgen_EXECUTABLE} -p ortools.algorithms.python.knapsack_solver --output .
COMMAND ${stubgen_EXECUTABLE} -p ortools.algorithms.python.set_cover --output .
COMMAND ${stubgen_EXECUTABLE} -p ortools.graph.python.linear_sum_assignment --output .
COMMAND ${stubgen_EXECUTABLE} -p ortools.graph.python.max_flow --output .
COMMAND ${stubgen_EXECUTABLE} -p ortools.graph.python.min_cost_flow --output .
Expand Down
20 changes: 20 additions & 0 deletions ortools/algorithms/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
load("@bazel_skylib//rules:common_settings.bzl", "bool_flag")
load("@rules_cc//cc:defs.bzl", "cc_library", "cc_proto_library")
load("@rules_proto//proto:defs.bzl", "proto_library")
load("@rules_python//python:proto.bzl", "py_proto_library")

package(default_visibility = ["//visibility:public"])

Expand Down Expand Up @@ -259,6 +260,24 @@ cc_proto_library(
deps = [":set_cover_proto"],
)

py_proto_library(
name = "set_cover_py_pb2",
deps = [":set_cover_proto"],
)

cc_library(
name = "set_cover_lagrangian",
srcs = ["set_cover_lagrangian.cc"],
hdrs = ["set_cover_lagrangian.h"],
deps = [
":adjustable_k_ary_heap",
":set_cover_invariant",
":set_cover_model",
"//ortools/base:threadpool",
"@com_google_absl//absl/log:check",
],
)

cc_library(
name = "set_cover_model",
srcs = ["set_cover_model.cc"],
Expand All @@ -284,6 +303,7 @@ cc_library(
"//ortools/base",
"@com_google_absl//absl/log",
"@com_google_absl//absl/log:check",
"@com_google_absl//absl/types:span",
],
)

Expand Down
28 changes: 28 additions & 0 deletions ortools/algorithms/python/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ config_setting(
},
)

# knapsack_solver
cc_library(
name = "knapsack_solver_doc",
hdrs = ["knapsack_solver_doc.h"],
Expand Down Expand Up @@ -77,3 +78,30 @@ py_test(
requirement("absl-py"),
],
)

# set_cover
pybind_extension(
name = "set_cover",
srcs = ["set_cover.cc"],
visibility = ["//visibility:public"],
deps = [
"//ortools/algorithms:set_cover_cc_proto",
"//ortools/algorithms:set_cover_heuristics",
"//ortools/algorithms:set_cover_invariant",
"//ortools/algorithms:set_cover_model",
"//ortools/algorithms:set_cover_reader",
"@com_google_absl//absl/strings",
"@pybind11_protobuf//pybind11_protobuf:native_proto_caster",
],
)

py_test(
name = "set_cover_test",
srcs = ["set_cover_test.py"],
python_version = "PY3",
deps = [
":set_cover",
"//ortools/algorithms:set_cover_py_pb2",
requirement("absl-py"),
],
)
27 changes: 27 additions & 0 deletions ortools/algorithms/python/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.

# knapsack_solver
pybind11_add_module(knapsack_solver_pybind11 MODULE knapsack_solver.cc)
set_target_properties(knapsack_solver_pybind11 PROPERTIES
LIBRARY_OUTPUT_NAME "knapsack_solver")
Expand All @@ -33,6 +34,32 @@ endif()
target_link_libraries(knapsack_solver_pybind11 PRIVATE ${PROJECT_NAMESPACE}::ortools)
add_library(${PROJECT_NAMESPACE}::knapsack_solver_pybind11 ALIAS knapsack_solver_pybind11)

# set_cover
pybind11_add_module(set_cover_pybind11 MODULE set_cover.cc)
set_target_properties(set_cover_pybind11 PROPERTIES
LIBRARY_OUTPUT_NAME "set_cover")

# note: macOS is APPLE and also UNIX !
if(APPLE)
set_target_properties(set_cover_pybind11 PROPERTIES
SUFFIX ".so"
INSTALL_RPATH "@loader_path;@loader_path/../../../${PYTHON_PROJECT}/.libs"
)
set_property(TARGET set_cover_pybind11 APPEND PROPERTY
LINK_FLAGS "-flat_namespace -undefined suppress"
)
elseif(UNIX)
set_target_properties(set_cover_pybind11 PROPERTIES
INSTALL_RPATH "$ORIGIN:$ORIGIN/../../../${PYTHON_PROJECT}/.libs"
)
endif()

target_link_libraries(set_cover_pybind11 PRIVATE
${PROJECT_NAMESPACE}::ortools
pybind11_native_proto_caster
)
add_library(${PROJECT_NAMESPACE}::set_cover_pybind11 ALIAS set_cover_pybind11)

if(BUILD_TESTING)
file(GLOB PYTHON_SRCS "*_test.py")
foreach(FILE_NAME IN LISTS PYTHON_SRCS)
Expand Down
Loading

0 comments on commit 634c6b5

Please sign in to comment.