Merge remote-tracking branch 'origin/mizux/rc' into stable

This commit is contained in:
Corentin Le Molgat
2026-01-12 16:44:39 +01:00
2146 changed files with 129880 additions and 64423 deletions

View File

@@ -1,40 +1,61 @@
# Enable logging rc options.
common --announce_rc
# ----CONFIG OPTIONS----
###############################################################################
# Global options for building OR-Tools.
###############################################################################
build --flag_alias=with_bop=//ortools/linear_solver:with_bop
build --flag_alias=with_cbc=//ortools/linear_solver:with_cbc
build --flag_alias=with_clp=//ortools/linear_solver:with_clp
build --flag_alias=with_cp_sat=//ortools/linear_solver:with_cp_sat
build --flag_alias=with_cplex=//ortools/linear_solver:with_cplex
build --flag_alias=with_glop=//ortools/linear_solver:with_glop
build --flag_alias=with_glpk=//ortools/linear_solver:with_glpk
build --flag_alias=with_highs=//ortools/linear_solver:with_highs
build --flag_alias=with_pdlp=//ortools/linear_solver:with_pdlp
build --flag_alias=with_scip=//ortools/linear_solver:with_scip
build --flag_alias=with_cplex=//ortools/linear_solver:with_cplex
build --flag_alias=with_xpress=//ortools/linear_solver:with_xpress
# Sets the default Apple platform to macOS.
build --apple_platform_type=macos
# By default, build OR-Tools in C++ 17 mode, with various extra flags per
# platform.
build --enable_platform_specific_config
# Enable absl::string_view support in @googletest
build --define absl=1
# Fix the python version
build --@rules_python//python/config_settings:python_version=3.12
# Per platform parameters.
build:linux --cxxopt="-std=c++17" --cxxopt=-Wno-sign-compare
build:linux --host_cxxopt="-std=c++17" --host_cxxopt=-Wno-sign-compare
###############################################################################
# Per plaform options
###############################################################################
# By default, build with various extra flags per platform.
build --enable_platform_specific_config
###############################################################################
# Options for Linux.
###############################################################################
build:linux --cxxopt=-std=c++17 --host_cxxopt=-std=c++17
build:linux --cxxopt=-Wno-sign-compare --host_cxxopt=-Wno-sign-compare
build:linux --cxxopt=-Wno-range-loop-construct --host_cxxopt=-Wno-range-loop-construct
###############################################################################
# Options for macOS.
###############################################################################
# Sets the default Apple platform to macOS.
build --apple_platform_type=macos
build:macos --features=-supports_dynamic_linker
build:macos --cxxopt="-std=c++17" --cxxopt=-Wno-sign-compare --cxxopt=-mmacos-version-min=10.15 --cxxopt=-Wno-dangling-field
build:macos --host_cxxopt="-std=c++17" --host_cxxopt=-Wno-sign-compare --host_cxxopt=-mmacos-version-min=10.15 --host_cxxopt=-Wno-dangling-field
build:macos --cxxopt=-std=c++17 --host_cxxopt=-std=c++17
build:macos --cxxopt=-Wno-sign-compare --host_cxxopt=-Wno-sign-compare
build:macos --cxxopt=-Wno-dangling-field --host_cxxopt=-Wno-dangling-field
build:macos --cxxopt=-Wno-range-loop-construct --host_cxxopt=-Wno-range-loop-construct
build:macos --cxxopt=-mmacos-version-min=10.15 --host_cxxopt=-mmacos-version-min=10.15
build:windows --cxxopt="/std:c++20"
build:windows --host_cxxopt="/std:c++20"
###############################################################################
# Options for Windows.
###############################################################################
build:windows --cxxopt=/std:c++20 --host_cxxopt=/std:c++20
# Enable the runfiles symlink tree on Windows. This makes it possible to build
# the pip package on Windows without an intermediate data-file archive, as the
@@ -43,16 +64,38 @@ build:windows --host_cxxopt="/std:c++20"
startup --windows_enable_symlinks
build:windows --enable_runfiles
# Print command lines for build commands.
# build --subcommands=pretty_print
###############################################################################
# Options for continuous integration.
###############################################################################
# Print test logs for failed tests.
test --test_output=errors --test_timeout_filters=-eternal
# All build options also apply to test as described by the "Option precedence"
# section in https://bazel.build/run/bazelrc#bazelrc-syntax-semantics.
# Put user-specific options in .bazelrc.user
try-import %workspace%/.bazelrc.user
# Note for anybody considering using --compilation_mode=opt in CI, it builds
# most files twice, one PIC version for shared libraries in tests, and one
# non-PIC version for binaries.
build:ci --copt=-O1
# Show as many errors as possible.
build:ci --keep_going
# Show test errors.
build:ci --test_output=errors
# Skip tests that are too large to run on CI.
build:ci --test_tag_filters=-noci
# Print information only about tests executed
build:ci --test_summary=short
# Attempt to work around intermittent issue while trying to fetch remote blob.
# See e.g. https://github.com/bazelbuild/bazel/issues/18694.
build:ci --remote_default_exec_properties=cache-silo-key=CleverPeafowl
###############################################################################
# Options for asan.
################################################################################
# asan
build:asan --strip=never
build:asan --copt -fsanitize=address
build:asan --copt -DADDRESS_SANITIZER
@@ -60,3 +103,9 @@ build:asan --copt -O1
build:asan --copt -g
build:asan --copt -fno-omit-frame-pointer
build:asan --linkopt -fsanitize=address
###############################################################################
# Put user-specific options in user.bazelrc
# See https://bazel.build/configure/best-practices#bazelrc-file
################################################################################
try-import %workspace%/user.bazelrc

View File

@@ -1,3 +1,4 @@
#!/usr/bin/env python3
# Copyright 2010-2025 Google LLC
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.

View File

@@ -32,7 +32,6 @@ makefiles/docker
makefiles/Makefile
Makefile.local
binder
docs
tools/docker
tools/release
@@ -43,6 +42,7 @@ CONTRIBUTING.md
#LICENSE-2.0.txt
# Native CMake/Make build
.cache/
dependencies/sources
dependencies/install
ortools/gen

2
.gitattributes vendored Normal file
View File

@@ -0,0 +1,2 @@
examples/cpp/wt40.txt text eol=lf
examples/cpp/testdata/wt40.txt text eol=lf

View File

@@ -1,7 +1,7 @@
# ref: https://toolchains.bootlin.com/
name: aarch64 Toolchain
on: [push, pull_request, workflow_dispatch]
on: [workflow_dispatch]
concurrency:
group: ${{github.workflow}}-${{github.ref}}

View File

@@ -1,7 +1,13 @@
# ref: https://github.com/actions/runner-images
name: amd64 CMake Glop C++
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
pull_request:
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
@@ -46,7 +52,7 @@ jobs:
},
{
platform: amd64,
runner: "macos-13", # last macos intel based runner
runner: "macos-15-intel",
generator: "Xcode",
config: Release,
build_target: ALL_BUILD,

View File

@@ -1,7 +1,12 @@
# ref: https://github.com/docker-library/official-images
name: amd64 Docker Bazel
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}

View File

@@ -1,7 +1,12 @@
# ref: https://github.com/docker-library/official-images
name: amd64 Docker CMake
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}

View File

@@ -1,36 +1,50 @@
# ref: https://github.com/actions/runner-images
name: amd64 FreeBSD CMake
on: [push, pull_request, workflow_dispatch]
on: [workflow_dispatch]
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Only macos-12 runner provide virtualisation with vagrant/virtualbox installed.
# ref: https://github.com/actions/runner-images/tree/main/images/macos
# ref: https://app.vagrantup.com/generic/boxes/freebsd13
# Building using the github runner environement directly.
jobs:
vagrant:
strategy:
fail-fast: false
matrix:
distro: [freebsd]
lang: [cpp, python]
allow_failure: [false]
include:
- distro: freebsd
lang: dotnet
allow_failure: true
- distro: freebsd
lang: java
allow_failure: true
name: amd64•FreeBSD•CMake•${{matrix.lang}}
runs-on: macos-12
distro: [
freebsd,
#netbsd,
#openbsd,
]
lang: [
cpp,
dotnet,
java,
python,
]
allow_failure: [true]
fail-fast: false
name: amd64•${{matrix.distro}}•CMake•${{matrix.lang}}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: vagrant version
run: Vagrant --version
- name: VirtualBox version
run: virtualbox -h
- name: Virtualbox install
run: |
sudo apt update -q
sudo apt install -yq virtualbox
virtualbox --help
- name: Vagrant install
run: |
sudo apt update -q
wget https://releases.hashicorp.com/vagrant/2.4.7/vagrant_2.4.7-1_amd64.deb
sudo apt install -y ./vagrant_2.4.7-1_amd64.deb
vagrant --version
- name: Build
run: make --directory=cmake ${{matrix.distro}}_${{matrix.lang}}
amd64_bsd_cmake:
runs-on: ubuntu-latest
needs: vagrant
steps:
- uses: actions/checkout@v6

View File

@@ -1,15 +1,23 @@
# ref: https://github.com/actions/runner-images
name: amd64 Linux Bazel
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
env:
cache-root: /tmp/bazel
# Building using the github runner environement directly.
jobs:
native:
amd64-Linux-Bazel-Python:
strategy:
matrix:
python: [
@@ -17,13 +25,14 @@ jobs:
#{version: '3.11'},
{version: '3.12'},
#{version: '3.13'},
#{version: '3.14'},
]
fail-fast: false
name: amd64•Linux•Bazel•Python-${{matrix.python.version}}
runs-on: ubuntu-latest
env:
CC: gcc-12
CXX: g++-12
cache-name: ${{github.job}}-${{matrix.python.version}}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Check Java
@@ -53,21 +62,26 @@ jobs:
run: |
sed -i -e 's/\(DEFAULT_PYTHON =\) "3.[0-9]\+"/\1 "${{matrix.python.version}}"/g' MODULE.bazel
cat MODULE.bazel
- name: Restore bazel cache
uses: actions/cache/restore@v4
id: bazel-cache-restore
with:
key: ${{env.cache-name}}
path: ${{env.cache-root}}
- name: Build
run: >
bazel build
-c opt
--subcommands=pretty_print
//ortools/... //examples/...
run: bazel --output_user_root=${{env.cache-root}} build --config=ci //ortools/... //examples/...
- name: Test
run: >
bazel test
-c opt
--test_output=errors
//ortools/... //examples/...
run: bazel --output_user_root=${{env.cache-root}} test --config=ci //ortools/... //examples/...
- name: Save Bazel cache for branch main even when Build and Test fail.
uses: actions/cache/save@v4
# https://docs.github.com/en/actions/reference/workflows-and-actions/dependency-caching#restrictions-for-accessing-a-cache
if: always() && github.ref == 'refs/heads/main'
with:
key: ${{env.cache-name}}-${{github.sha}}
path: ${{env.cache-root}}
amd64_linux_bazel:
runs-on: ubuntu-latest
needs: native
needs: amd64-Linux-Bazel-Python
steps:
- uses: actions/checkout@v6

View File

@@ -1,75 +1,135 @@
# ref: https://github.com/actions/runner-images
name: amd64 Linux CMake CoinOR OFF
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
env:
CCACHE_BASEDIR: ${{github.workspace}}
CCACHE_DIR: ${{github.workspace}}/.ccache
jobs:
native:
strategy:
matrix:
cmake: [
{language: 'C++', args: '-DBUILD_CXX=ON'},
{language: '.Net', args: '-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF -DBUILD_DOTNET=ON'},
{language: 'Java', args: '-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF -DBUILD_JAVA=ON'},
{language: 'Python', args: '-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF -DBUILD_PYTHON=ON'},
]
fail-fast: false
name: amd64•Linux•CMake•${{matrix.cmake.language}}•CoinOR=OFF
name: amd64•Linux•CMake•CoinOR=OFF
runs-on: ubuntu-latest
env:
deps_src_key: amd64_linux_coinor_deps_src
deps_build_key: amd64_linux_coinor_deps_build
ccache_key: amd64_linux_coinor_ccache
steps:
- uses: actions/checkout@v6
# Install SWIG
- name: Swig install
run: sudo apt install -y swig
- name: Check swig
run: swig -version
# Install .NET SDKs
- name: Setup .NET 8.0
uses: actions/setup-dotnet@v5
with:
dotnet-version: 8.0.x
- name: Check dotnet
run: dotnet --info
# Install Java
- name: Check java
run: java -version
# Install Python
- name: Install python3 venv
run: sudo apt-get install python3-venv
- name: Update Path
run: echo "$HOME/.local/bin" >> $GITHUB_PATH
# CMake
- name: Check cmake
run: cmake --version
- name: Configure
run: >
cmake -S. -Bbuild
-DCMAKE_BUILD_TYPE=Release
-DBUILD_DEPS=ON
-DUSE_COINOR=OFF
${{matrix.cmake.args}}
- name: Build
run: >
cmake --build build
--config Release
--target all
-v -j2
- name: Test
run: >
CTEST_OUTPUT_ON_FAILURE=1
cmake --build build
--config Release
--target test
-v
- name: Install
run: >
cmake --build build
--config Release
--target install
-v
-- DESTDIR=install
- uses: actions/checkout@v6
- name: Install Dependencies
run: |
sudo apt update
sudo apt install -y ninja-build ccache swig
swig -version
# Install .NET SDKs
- name: Setup .NET 8.0
uses: actions/setup-dotnet@v5
with:
dotnet-version: 8.0.x
- name: Check dotnet
run: dotnet --info
# Install Java
- name: Check java
run: java -version
# Install Python
- name: Install python3 venv
run: sudo apt-get install python3-venv
- name: Update Path
run: echo "$HOME/.local/bin" >> $GITHUB_PATH
# RESTORING CACHES
- name: Restore CMake dependency source code
uses: actions/cache/restore@v4
id: deps_src_restore
with:
key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: ${{github.workspace}}/build/_deps/*-src
- name: Restore CMake dependency build
uses: actions/cache/restore@v4
id: deps_build_restore
with:
key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Restore CCache
uses: actions/cache/restore@v4
id: ccache_restore
with:
key: ${{env.ccache_key}}-${{github.sha}}
restore-keys: ${{env.ccache_key}}-
path: ${{env.CCACHE_DIR}}
- name: Check CMake
run: cmake --version
- name: Configure
run: >
cmake -S. -Bbuild
-G "Ninja"
-DCMAKE_BUILD_TYPE=Release
-DBUILD_DOTNET=ON -DBUILD_JAVA=ON -DBUILD_PYTHON=ON
-DUSE_GLPK=OFF -DUSE_SCIP=OFF
-DUSE_COINOR=OFF
-DCMAKE_INSTALL_PREFIX=install
- name: Build
run: >
cmake --build build
--config Release
--target all
-v -j2
- name: Test
run: >
CTEST_OUTPUT_ON_FAILURE=1
cmake --build build
--config Release
--target test
-v
- name: Install
run: >
cmake --build build
--config Release
--target install
-v
- name: CCache stats
run: |
ccache --show-stats
ccache --zero-stats
# SAVING CACHES
- name: Save CCache
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.ccache_restore.outputs.cache-primary-key}}
path: ${{env.CCACHE_DIR}}
- name: Save CMake dependency build
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Save CMake dependency source code
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
path: ${{github.workspace}}/build/_deps/*-src
amd64_linux_cmake_coinor:
runs-on: ubuntu-latest
needs: native
steps:
- uses: actions/checkout@v6

View File

@@ -1,13 +1,22 @@
# ref: https://github.com/actions/runner-images
name: amd64 Linux CMake C++
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
env:
CCACHE_BASEDIR: ${{github.workspace}}
CCACHE_DIR: ${{github.workspace}}/.ccache
jobs:
native:
strategy:
@@ -15,17 +24,45 @@ jobs:
cmake: [
{name: "Make", generator: "Unix Makefiles", config: Release},
{name: "Ninja", generator: "Ninja", config: Release},
{name: "Ninja Multi", generator: "Ninja Multi-Config", config: Release},
]
{name: "NinjaMulti", generator: "Ninja Multi-Config", config: Release}
]
fail-fast: false
name: amd64•Linux•CMake(${{matrix.cmake.name}})•C++
runs-on: ubuntu-latest
env:
deps_src_key: amd64_linux_cpp_deps_src
deps_build_key: amd64_linux_cpp_deps_build_${{matrix.cmake.name}}
ccache_key: amd64_linux_cpp_ccache_${{matrix.cmake.name}}
steps:
- uses: actions/checkout@v6
- name: Install Ninja
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install ninja-build
sudo apt update
sudo apt install -y ninja-build ccache
# RESTORING CACHES
- name: Restore CMake dependency source code
uses: actions/cache/restore@v4
id: deps_src_restore
with:
key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: ${{github.workspace}}/build/_deps/*-src
- name: Restore CMake dependency build
uses: actions/cache/restore@v4
id: deps_build_restore
with:
key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Restore CCache
uses: actions/cache/restore@v4
id: ccache_restore
with:
key: ${{env.ccache_key}}-${{github.sha}}
restore-keys: ${{env.ccache_key}}-
path: ${{env.CCACHE_DIR}}
- name: Check CMake
run: cmake --version
- name: Configure
@@ -54,6 +91,32 @@ jobs:
--config ${{matrix.cmake.config}}
--target install
-v
- name: CCache stats
run: |
ccache --show-stats
ccache --zero-stats
# SAVING CACHES
- name: Save CCache
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.ccache_restore.outputs.cache-primary-key}}
path: ${{env.CCACHE_DIR}}
- name: Save CMake dependency build
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Save CMake dependency source code
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
path: ${{github.workspace}}/build/_deps/*-src
amd64_linux_cmake_cpp:
runs-on: ubuntu-latest

View File

@@ -1,22 +1,43 @@
# ref: https://github.com/actions/runner-images
name: amd64 Linux CMake .Net
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
env:
CCACHE_BASEDIR: ${{github.workspace}}
CCACHE_DIR: ${{github.workspace}}/.ccache
jobs:
native:
name: amd64•Linux•CMake•.Net
strategy:
matrix:
config: [
{name: "examples", flags: "-DBUILD_DOTNET_EXAMPLES=ON -DBUILD_DOTNET_SAMPLES=OFF"},
{name: "samples", flags: "-DBUILD_DOTNET_EXAMPLES=OFF -DBUILD_DOTNET_SAMPLES=ON"},
]
fail-fast: false
name: amd64•Linux•CMake•.Net(${{matrix.config.name}})
runs-on: ubuntu-latest
env:
deps_src_key: amd64_linux_dotnet_deps_src
deps_build_key: amd64_linux_dotnet_deps_build
ccache_key: amd64_linux_dotnet_ccache
steps:
- uses: actions/checkout@v6
- name: Swig install
- name: Install Dependencies
run: |
sudo apt install -y swig
sudo apt update
sudo apt install -y ninja-build ccache swig
swig -version
- name: Setup .NET 8.0
uses: actions/setup-dotnet@v5
@@ -24,13 +45,39 @@ jobs:
dotnet-version: 8.0.x
- name: Check dotnet
run: dotnet --info
# RESTORING CACHES
- name: Restore CMake dependency source code
uses: actions/cache/restore@v4
id: deps_src_restore
with:
key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: ${{github.workspace}}/build/_deps/*-src
- name: Restore CMake dependency build
uses: actions/cache/restore@v4
id: deps_build_restore
with:
key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Restore CCache
uses: actions/cache/restore@v4
id: ccache_restore
with:
key: ${{env.ccache_key}}-${{github.sha}}
restore-keys: ${{env.ccache_key}}-
path: ${{env.CCACHE_DIR}}
- name: Check CMake
run: cmake --version
- name: Configure
run: >
cmake -S. -Bbuild
-G "Ninja"
-DCMAKE_BUILD_TYPE=Release
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
${{matrix.config.flags}}
-DBUILD_DOTNET=ON
-DCMAKE_INSTALL_PREFIX=install
- name: Build
@@ -52,6 +99,32 @@ jobs:
--config Release
--target install
-v
- name: CCache stats
run: |
ccache --show-stats
ccache --zero-stats
# SAVING CACHES
- name: Save CCache
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.ccache_restore.outputs.cache-primary-key}}
path: ${{env.CCACHE_DIR}}
- name: Save CMake dependency build
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Save CMake dependency source code
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
path: ${{github.workspace}}/build/_deps/*-src
amd64_linux_cmake_dotnet:
runs-on: ubuntu-latest

View File

@@ -1,28 +1,87 @@
# ref: https://github.com/actions/runner-images
name: amd64 Linux CMake GLPK ON
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
env:
CCACHE_BASEDIR: ${{github.workspace}}
CCACHE_DIR: ${{github.workspace}}/.ccache
jobs:
native:
name: amd64•Linux•CMake•GLPK=ON
runs-on: ubuntu-latest
env:
deps_src_key: amd64_linux_glpk_deps_src
deps_build_key: amd64_linux_glpk_deps_build
ccache_key: amd64_linux_glpk_ccache
steps:
- uses: actions/checkout@v6
- name: Check cmake
- name: Install Dependencies
run: |
sudo apt update
sudo apt install -y ninja-build ccache swig
swig -version
# Install .NET SDKs
- name: Setup .NET 8.0
uses: actions/setup-dotnet@v5
with:
dotnet-version: 8.0.x
- name: Check dotnet
run: dotnet --info
# Install Java
- name: Check java
run: java -version
# Install Python
- name: Install python3 venv
run: sudo apt-get install python3-venv
- name: Update Path
run: echo "$HOME/.local/bin" >> $GITHUB_PATH
# RESTORING CACHES
- name: Restore CMake dependency source code
uses: actions/cache/restore@v4
id: deps_src_restore
with:
key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: ${{github.workspace}}/build/_deps/*-src
- name: Restore CMake dependency build
uses: actions/cache/restore@v4
id: deps_build_restore
with:
key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Restore CCache
uses: actions/cache/restore@v4
id: ccache_restore
with:
key: ${{env.ccache_key}}-${{github.sha}}
restore-keys: ${{env.ccache_key}}-
path: ${{env.CCACHE_DIR}}
- name: Check CMake
run: cmake --version
- name: Configure
run: >
cmake -S. -Bbuild
-G "Ninja"
-DCMAKE_BUILD_TYPE=Release
-DBUILD_DEPS=ON
-DBUILD_DOTNET=ON -DBUILD_JAVA=ON -DBUILD_PYTHON=ON
-DUSE_SCIP=OFF -DUSE_COINOR=OFF
-DUSE_GLPK=ON
-DCMAKE_INSTALL_PREFIX=install
- name: Build
run: >
cmake --build build
@@ -42,4 +101,35 @@ jobs:
--config Release
--target install
-v
-- DESTDIR=install
- name: CCache stats
run: |
ccache --show-stats
ccache --zero-stats
# SAVING CACHES
- name: Save CCache
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.ccache_restore.outputs.cache-primary-key}}
path: ${{env.CCACHE_DIR}}
- name: Save CMake dependency build
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Save CMake dependency source code
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
path: ${{github.workspace}}/build/_deps/*-src
amd64_linux_cmake_glpk:
runs-on: ubuntu-latest
needs: native
steps:
- uses: actions/checkout@v6

View File

@@ -1,30 +1,69 @@
# ref: https://github.com/actions/runner-images
name: amd64 Linux CMake Java
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
env:
CCACHE_BASEDIR: ${{github.workspace}}
CCACHE_DIR: ${{github.workspace}}/.ccache
jobs:
native:
name: amd64•Linux•CMake•Java
runs-on: ubuntu-latest
env:
deps_src_key: amd64_linux_java_deps_src
deps_build_key: amd64_linux_java_deps_build
ccache_key: amd64_linux_java_ccache
steps:
- uses: actions/checkout@v6
- name: Swig install
- name: Install Dependencies
run: |
sudo apt install -y swig
sudo apt update
sudo apt install -y ninja-build ccache swig
swig -version
- name: Check java
run: java -version
# RESTORING CACHES
- name: Restore CMake dependency source code
uses: actions/cache/restore@v4
id: deps_src_restore
with:
key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: ${{github.workspace}}/build/_deps/*-src
- name: Restore CMake dependency build
uses: actions/cache/restore@v4
id: deps_build_restore
with:
key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Restore CCache
uses: actions/cache/restore@v4
id: ccache_restore
with:
key: ${{env.ccache_key}}-${{github.sha}}
restore-keys: ${{env.ccache_key}}-
path: ${{env.CCACHE_DIR}}
- name: Check CMake
run: cmake --version
- name: Configure
run: >
cmake -S. -Bbuild
-G "Ninja"
-DCMAKE_BUILD_TYPE=Release
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
-DBUILD_JAVA=ON -DSKIP_GPG=ON
@@ -48,6 +87,32 @@ jobs:
--config Release
--target install
-v
- name: CCache stats
run: |
ccache --show-stats
ccache --zero-stats
# SAVING CACHES
- name: Save CCache
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.ccache_restore.outputs.cache-primary-key}}
path: ${{env.CCACHE_DIR}}
- name: Save CMake dependency build
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Save CMake dependency source code
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
path: ${{github.workspace}}/build/_deps/*-src
amd64_linux_cmake_java:
runs-on: ubuntu-latest

View File

@@ -1,41 +1,47 @@
# ref: https://github.com/actions/runner-images
name: amd64 Linux CMake Python
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
env:
CCACHE_BASEDIR: ${{github.workspace}}
CCACHE_DIR: ${{github.workspace}}/.ccache
jobs:
native:
strategy:
matrix:
cmake: [
{name: "Make", generator: "Unix Makefiles", config: Release},
{name: "Ninja", generator: "Ninja", config: Release},
{name: "Ninja Multi", generator: "Ninja Multi-Config", config: Release},
]
python: [
{version: "3.9"},
{version: "3.10"},
{version: "3.11"},
{version: "3.12"},
#{version: "3.10"},
#{version: "3.11"},
#{version: "3.12"},
{version: "3.13"},
]
{version: "3.14"},
]
fail-fast: false
name: amd64•Linux•CMake(${{matrix.cmake.name}})•Python-${{matrix.python.version}}
name: amd64•Linux•CMake•Python${{matrix.python.version}}
runs-on: ubuntu-latest
env:
deps_src_key: amd64_linux_python_deps_src_${{matrix.python.version}}
deps_build_key: amd64_linux_python_deps_build_${{matrix.python.version}}
ccache_key: amd64_linux_python_ccache_${{matrix.python.version}}
steps:
- uses: actions/checkout@v6
- name: Install Ninja
- name: Install Dependencies
run: |
sudo apt update
sudo apt install -y ninja-build
- name: Swig install
run: |
sudo apt install -y swig
sudo apt install -y ninja-build ccache swig
swig -version
- name: Setup Python
uses: actions/setup-python@v6
@@ -43,35 +49,85 @@ jobs:
python-version: ${{matrix.python.version}}
- name: Update Path
run: echo "$HOME/.local/bin" >> $GITHUB_PATH
# RESTORING CACHES
- name: Restore CMake dependency source code
uses: actions/cache/restore@v4
id: deps_src_restore
with:
key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: ${{github.workspace}}/build/_deps/*-src
- name: Restore CMake dependency build
uses: actions/cache/restore@v4
id: deps_build_restore
with:
key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Restore CCache
uses: actions/cache/restore@v4
id: ccache_restore
with:
key: ${{env.ccache_key}}-${{github.sha}}
restore-keys: ${{env.ccache_key}}-
path: ${{env.CCACHE_DIR}}
- name: Check CMake
run: cmake --version
- name: Configure
run: >
cmake -S. -Bbuild
-G "${{matrix.cmake.generator}}"
-DCMAKE_BUILD_TYPE=${{matrix.cmake.config}}
-G "Ninja"
-DCMAKE_BUILD_TYPE=Release
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
-DBUILD_PYTHON=ON
-DCMAKE_INSTALL_PREFIX=install
- name: Build
run: >
cmake --build build
--config ${{matrix.cmake.config}}
--config Release
--target all
-v -j2
- name: Test
run: >
CTEST_OUTPUT_ON_FAILURE=1
cmake --build build
--config ${{matrix.cmake.config}}
--config Release
--target test
-v
- name: Install
run: >
cmake --build build
--config ${{matrix.cmake.config}}
--config Release
--target install
-v
- name: CCache stats
run: |
ccache --show-stats
ccache --zero-stats
# SAVING CACHES
- name: Save CCache
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.ccache_restore.outputs.cache-primary-key}}
path: ${{env.CCACHE_DIR}}
- name: Save CMake dependency build
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Save CMake dependency source code
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
path: ${{github.workspace}}/build/_deps/*-src
amd64_linux_cmake_python:
runs-on: ubuntu-latest

View File

@@ -1,75 +1,135 @@
# ref: https://github.com/actions/runner-images
name: amd64 Linux CMake SCIP OFF
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
env:
CCACHE_BASEDIR: ${{github.workspace}}
CCACHE_DIR: ${{github.workspace}}/.ccache
jobs:
native:
strategy:
matrix:
cmake: [
{language: 'C++', args: '-DBUILD_CXX=ON'},
{language: '.Net', args: '-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF -DBUILD_DOTNET=ON'},
{language: 'Java', args: '-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF -DBUILD_JAVA=ON'},
{language: 'Python', args: '-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF -DBUILD_PYTHON=ON'},
]
fail-fast: false
name: amd64•Linux•CMake•${{matrix.cmake.language}}•SCIP=OFF
name: amd64•Linux•CMake•SCIP=OFF
runs-on: ubuntu-latest
env:
deps_src_key: amd64_linux_scip_deps_src
deps_build_key: amd64_linux_scip_deps_build
ccache_key: amd64_linux_scip_ccache
steps:
- uses: actions/checkout@v6
# Install SWIG
- name: Swig install
run: sudo apt install -y swig
- name: Check swig
run: swig -version
# Install .NET SDKs
- name: Setup .NET 8.0
uses: actions/setup-dotnet@v5
with:
dotnet-version: 8.0.x
- name: Check dotnet
run: dotnet --info
# Install Java
- name: Check java
run: java -version
# Install Python
- name: Install python3 venv
run: sudo apt-get install python3-venv
- name: Update Path
run: echo "$HOME/.local/bin" >> $GITHUB_PATH
# CMake
- name: Check cmake
run: cmake --version
- name: Configure
run: >
cmake -S. -Bbuild
-DCMAKE_BUILD_TYPE=Release
-DBUILD_DEPS=ON
-DUSE_SCIP=OFF
${{matrix.cmake.args}}
- name: Build
run: >
cmake --build build
--config Release
--target all
-v -j2
- name: Test
run: >
CTEST_OUTPUT_ON_FAILURE=1
cmake --build build
--config Release
--target test
-v
- name: Install
run: >
cmake --build build
--config Release
--target install
-v
-- DESTDIR=install
- uses: actions/checkout@v6
- name: Install Dependencies
run: |
sudo apt update
sudo apt install -y ninja-build ccache swig
swig -version
# Install .NET SDKs
- name: Setup .NET 8.0
uses: actions/setup-dotnet@v5
with:
dotnet-version: 8.0.x
- name: Check dotnet
run: dotnet --info
# Install Java
- name: Check java
run: java -version
# Install Python
- name: Install python3 venv
run: sudo apt-get install python3-venv
- name: Update Path
run: echo "$HOME/.local/bin" >> $GITHUB_PATH
# RESTORING CACHES
- name: Restore CMake dependency source code
uses: actions/cache/restore@v4
id: deps_src_restore
with:
key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: ${{github.workspace}}/build/_deps/*-src
- name: Restore CMake dependency build
uses: actions/cache/restore@v4
id: deps_build_restore
with:
key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Restore CCache
uses: actions/cache/restore@v4
id: ccache_restore
with:
key: ${{env.ccache_key}}-${{github.sha}}
restore-keys: ${{env.ccache_key}}-
path: ${{env.CCACHE_DIR}}
- name: Check CMake
run: cmake --version
- name: Configure
run: >
cmake -S. -Bbuild
-G "Ninja"
-DCMAKE_BUILD_TYPE=Release
-DBUILD_DOTNET=ON -DBUILD_JAVA=ON -DBUILD_PYTHON=ON
-DUSE_COINOR=OFF -DUSE_GLPK=OFF
-DUSE_SCIP=OFF
-DCMAKE_INSTALL_PREFIX=install
- name: Build
run: >
cmake --build build
--config Release
--target all
-v -j2
- name: Test
run: >
CTEST_OUTPUT_ON_FAILURE=1
cmake --build build
--config Release
--target test
-v
- name: Install
run: >
cmake --build build
--config Release
--target install
-v
- name: CCache stats
run: |
ccache --show-stats
ccache --zero-stats
# SAVING CACHES
- name: Save CCache
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.ccache_restore.outputs.cache-primary-key}}
path: ${{env.CCACHE_DIR}}
- name: Save CMake dependency build
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Save CMake dependency source code
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
path: ${{github.workspace}}/build/_deps/*-src
amd64_linux_cmake_scip:
runs-on: ubuntu-latest
needs: native
steps:
- uses: actions/checkout@v6

View File

@@ -1,14 +1,19 @@
# Test or-tools using system wide install dependencies.
name: amd64 Linux CMake System Dependencies
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
jobs:
native:
docker:
strategy:
matrix:
distro: [system_deps]

View File

@@ -1,15 +1,23 @@
# ref: https://github.com/actions/runner-images
name: amd64 MacOS Bazel
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
env:
cache-root: /private/tmp/bazel
# Building using the github runner environement directly.
jobs:
native:
amd64-MacOS-Bazel-Python:
strategy:
matrix:
python: [
@@ -17,10 +25,12 @@ jobs:
#{version: '3.11'},
{version: '3.12'},
#{version: '3.13'},
#{version: '3.14'},
]
fail-fast: false
name: amd64•MacOS•Bazel•Python-${{matrix.python.version}}
runs-on: macos-13 # last macos intel based runner
env:
cache-name: ${{github.job}}-${{matrix.python.version}}
runs-on: macos-15-intel
steps:
- uses: actions/checkout@v6
- name: Set Java to OpenJDK 17 (Temurin)
@@ -46,21 +56,26 @@ jobs:
run: |
sed -i '' -e 's/\(DEFAULT_PYTHON =\) "3.[0-9]*"/\1 "${{matrix.python.version}}"/g' MODULE.bazel
cat MODULE.bazel
- name: Restore bazel cache
uses: actions/cache/restore@v4
id: bazel-cache-restore
with:
key: ${{env.cache-name}}
path: ${{env.cache-root}}
- name: Build
run: >
bazel build
-c opt
--subcommands=pretty_print
//ortools/... //examples/...
run: bazel --output_user_root=${{env.cache-root}} build --config=ci //ortools/... //examples/...
- name: Test
run: >
bazel test
-c opt
--test_output=errors
//ortools/... //examples/...
run: bazel --output_user_root=${{env.cache-root}} test --config=ci //ortools/... //examples/...
- name: Save Bazel cache for branch main even when Build and Test fail.
uses: actions/cache/save@v4
# https://docs.github.com/en/actions/reference/workflows-and-actions/dependency-caching#restrictions-for-accessing-a-cache
if: always() && github.ref == 'refs/heads/main'
with:
key: ${{env.cache-name}}-${{github.sha}}
path: ${{env.cache-root}}
amd64_macos_bazel:
runs-on: ubuntu-latest
needs: native
needs: amd64-MacOS-Bazel-Python
steps:
- uses: actions/checkout@v6

View File

@@ -1,13 +1,22 @@
# ref: https://github.com/actions/runner-images
name: amd64 MacOS CMake C++
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
env:
CCACHE_BASEDIR: ${{github.workspace}}
CCACHE_DIR: ${{github.workspace}}/.ccache
jobs:
native:
strategy:
@@ -18,9 +27,39 @@ jobs:
]
fail-fast: false
name: amd64•MacOS•CMake(${{matrix.cmake.name}})•C++
runs-on: macos-13 # last macos intel based runner
runs-on: macos-15-intel
env:
deps_src_key: amd64_macos_cpp_deps_src
deps_build_key: amd64_macos_cpp_deps_build_${{matrix.cmake.name}}
ccache_key: amd64_macos_cpp_ccache_${{matrix.cmake.name}}
steps:
- uses: actions/checkout@v6
- name: Install Dependencies
run: brew install ccache
# RESTORING CACHES
- name: Restore CMake dependency source code
uses: actions/cache/restore@v4
id: deps_src_restore
with:
key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: ${{github.workspace}}/build/_deps/*-src
- name: Restore CMake dependency build
uses: actions/cache/restore@v4
id: deps_build_restore
with:
key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Restore CCache
uses: actions/cache/restore@v4
id: ccache_restore
with:
key: ${{env.ccache_key}}-${{github.sha}}
restore-keys: ${{env.ccache_key}}-
path: ${{env.CCACHE_DIR}}
- name: Check CMake
run: cmake --version
- name: Configure
@@ -49,6 +88,32 @@ jobs:
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.install_target}}
-v
- name: CCache stats
run: |
ccache --show-stats
ccache --zero-stats
# SAVING CACHES
- name: Save CCache
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.ccache_restore.outputs.cache-primary-key}}
path: ${{env.CCACHE_DIR}}
- name: Save CMake dependency build
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Save CMake dependency source code
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
path: ${{github.workspace}}/build/_deps/*-src
amd64_macos_cmake_cpp:
runs-on: ubuntu-latest

View File

@@ -1,13 +1,22 @@
# ref: https://github.com/actions/runner-images
name: amd64 MacOS CMake .Net
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
env:
CCACHE_BASEDIR: ${{github.workspace}}
CCACHE_DIR: ${{github.workspace}}/.ccache
jobs:
native:
strategy:
@@ -18,12 +27,16 @@ jobs:
]
fail-fast: false
name: amd64•MacOS•CMake(${{matrix.cmake.name}})•.Net
runs-on: macos-13 # last macos intel based runner
runs-on: macos-15-intel
env:
deps_src_key: amd64_macos_dotnet_deps_src
deps_build_key: amd64_macos_dotnet_deps_build_${{matrix.cmake.name}}
ccache_key: amd64_macos_dotnet_ccache_${{matrix.cmake.name}}
steps:
- uses: actions/checkout@v6
- name: Swig install
- name: Install Dependencies
run: |
brew install swig
brew install ccache swig
swig -version
- name: Setup .NET 8.0
uses: actions/setup-dotnet@v5
@@ -31,6 +44,30 @@ jobs:
dotnet-version: 8.0.x
- name: Check dotnet
run: dotnet --info
# RESTORING CACHES
- name: Restore CMake dependency source code
uses: actions/cache/restore@v4
id: deps_src_restore
with:
key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: ${{github.workspace}}/build/_deps/*-src
- name: Restore CMake dependency build
uses: actions/cache/restore@v4
id: deps_build_restore
with:
key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Restore CCache
uses: actions/cache/restore@v4
id: ccache_restore
with:
key: ${{env.ccache_key}}-${{github.sha}}
restore-keys: ${{env.ccache_key}}-
path: ${{env.CCACHE_DIR}}
- name: Check CMake
run: cmake --version
- name: Configure
@@ -60,6 +97,32 @@ jobs:
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.install_target}}
-v
- name: CCache stats
run: |
ccache --show-stats
ccache --zero-stats
# SAVING CACHES
- name: Save CCache
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.ccache_restore.outputs.cache-primary-key}}
path: ${{env.CCACHE_DIR}}
- name: Save CMake dependency build
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Save CMake dependency source code
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
path: ${{github.workspace}}/build/_deps/*-src
amd64_macos_cmake_dotnet:
runs-on: ubuntu-latest

View File

@@ -1,13 +1,22 @@
# ref: https://github.com/actions/runner-images
name: amd64 MacOS CMake Java
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
env:
CCACHE_BASEDIR: ${{github.workspace}}
CCACHE_DIR: ${{github.workspace}}/.ccache
jobs:
native:
strategy:
@@ -18,15 +27,43 @@ jobs:
]
fail-fast: false
name: amd64•MacOS•CMake(${{matrix.cmake.name}})•Java
runs-on: macos-13 # last macos intel based runner
runs-on: macos-15-intel
env:
deps_src_key: amd64_macos_java_deps_src
deps_build_key: amd64_macos_java_deps_build_${{matrix.cmake.name}}
ccache_key: amd64_macos_java_ccache_${{matrix.cmake.name}}
steps:
- uses: actions/checkout@v6
- name: Swig install
- name: Install Dependencies
run: |
brew install swig
brew install ccache swig
swig -version
- name: Check java
run: java -version
# RESTORING CACHES
- name: Restore CMake dependency source code
uses: actions/cache/restore@v4
id: deps_src_restore
with:
key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: ${{github.workspace}}/build/_deps/*-src
- name: Restore CMake dependency build
uses: actions/cache/restore@v4
id: deps_build_restore
with:
key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Restore CCache
uses: actions/cache/restore@v4
id: ccache_restore
with:
key: ${{env.ccache_key}}-${{github.sha}}
restore-keys: ${{env.ccache_key}}-
path: ${{env.CCACHE_DIR}}
- name: Check CMake
run: cmake --version
- name: Configure
@@ -56,6 +93,32 @@ jobs:
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.install_target}}
-v
- name: CCache stats
run: |
ccache --show-stats
ccache --zero-stats
# SAVING CACHES
- name: Save CCache
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.ccache_restore.outputs.cache-primary-key}}
path: ${{env.CCACHE_DIR}}
- name: Save CMake dependency build
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Save CMake dependency source code
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
path: ${{github.workspace}}/build/_deps/*-src
amd64_macos_cmake_java:
runs-on: ubuntu-latest

View File

@@ -1,13 +1,22 @@
# ref: https://github.com/actions/runner-images
name: amd64 MacOS CMake Python
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
env:
CCACHE_BASEDIR: ${{github.workspace}}
CCACHE_DIR: ${{github.workspace}}/.ccache
jobs:
native:
strategy:
@@ -17,20 +26,25 @@ jobs:
{name: "Make", generator: "Unix Makefiles", config: Release, build_target: all, test_target: test, install_target: install},
]
python: [
{version: "3.9"},
{version: "3.10"},
{version: "3.11"},
{version: "3.12"},
#{version: "3.9"},
#{version: "3.10"},
#{version: "3.11"},
#{version: "3.12"},
{version: "3.13"},
{version: "3.14"},
]
fail-fast: false
name: amd64•MacOS•CMake(${{matrix.cmake.name}})•Python-${{matrix.python.version}}
runs-on: macos-13 # last macos intel based runner
runs-on: macos-15-intel
env:
deps_src_key: amd64_macos_python_deps_src
deps_build_key: amd64_macos_python_deps_build_${{matrix.cmake.name}}
ccache_key: amd64_macos_python_ccache_${{matrix.cmake.name}}
steps:
- uses: actions/checkout@v6
- name: Swig install
- name: Install Dependencies
run: |
brew install swig
brew install ccache swig
swig -version
- name: Setup Python
uses: actions/setup-python@v6
@@ -40,6 +54,30 @@ jobs:
run: |
echo "$HOME/Library/Python/${{matrix.python.version}}/bin" >> $GITHUB_PATH
echo "$HOME/.local/bin" >> $GITHUB_PATH
# RESTORING CACHES
- name: Restore CMake dependency source code
uses: actions/cache/restore@v4
id: deps_src_restore
with:
key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: ${{github.workspace}}/build/_deps/*-src
- name: Restore CMake dependency build
uses: actions/cache/restore@v4
id: deps_build_restore
with:
key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Restore CCache
uses: actions/cache/restore@v4
id: ccache_restore
with:
key: ${{env.ccache_key}}-${{github.sha}}
restore-keys: ${{env.ccache_key}}-
path: ${{env.CCACHE_DIR}}
- name: Check CMake
run: cmake --version
- name: Configure
@@ -69,6 +107,32 @@ jobs:
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.install_target}}
-v
- name: CCache stats
run: |
ccache --show-stats
ccache --zero-stats
# SAVING CACHES
- name: Save CCache
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.ccache_restore.outputs.cache-primary-key}}
path: ${{env.CCACHE_DIR}}
- name: Save CMake dependency build
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Save CMake dependency source code
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
path: ${{github.workspace}}/build/_deps/*-src
amd64_macos_cmake_python:
runs-on: ubuntu-latest

View File

@@ -1,7 +1,8 @@
# ref: https://github.com/docker-library/official-images
name: amd64 Web
on: [push, pull_request, workflow_dispatch]
# still experimental
on: [workflow_dispatch]
concurrency:
group: ${{github.workflow}}-${{github.ref}}

View File

@@ -1,15 +1,23 @@
# ref: https://github.com/actions/runner-images
name: amd64 Windows Bazel
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
env:
cache-root: '%USERPROFILE%\AppData\Local\Temp\bazel'
# Building using the github runner environement directly.
jobs:
native:
amd64-Windows-Bazel-Python:
strategy:
matrix:
python: [
@@ -17,9 +25,11 @@ jobs:
# {version: '3.11'},
{version: '3.12'},
# {version: '3.13'},
# {version: '3.14'},
]
fail-fast: false # Don't cancel all jobs if one fails.
name: amd64•Windows•Bazel•Python-${{matrix.python.version}}
env:
cache-name: ${{github.job}}-${{matrix.python.version}}
runs-on: windows-2022
steps:
- uses: actions/checkout@v6
@@ -41,21 +51,26 @@ jobs:
run: choco install bazel
- name: Check Bazel
run: bazel version
- name: Restore bazel cache
uses: actions/cache/restore@v4
id: bazel-cache-restore
with:
key: ${{env.cache-name}}
path: ${{env.cache-root}}
- name: Build
run: >
bazel build
-c opt
--subcommands=pretty_print
//ortools/... //examples/...
run: bazel --output_user_root=${{env.cache-root}} build --config=ci //ortools/... //examples/...
- name: Test
run: >
bazel test
-c opt
--test_output=errors
//ortools/... //examples/...
run: bazel --output_user_root=${{env.cache-root}} test --config=ci //ortools/... //examples/...
- name: Save Bazel cache for branch main even when Build and Test fail.
uses: actions/cache/save@v4
# https://docs.github.com/en/actions/reference/workflows-and-actions/dependency-caching#restrictions-for-accessing-a-cache
if: always() && github.ref == 'refs/heads/main'
with:
key: ${{env.cache-name}}-${{github.sha}}
path: ${{env.cache-root}}
amd64_windows_bazel:
runs-on: ubuntu-latest
needs: native
needs: amd64-Windows-Bazel-Python
steps:
- uses: actions/checkout@v6

View File

@@ -1,7 +1,12 @@
# ref: https://github.com/actions/runner-images
name: amd64 Windows CMake C++
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
@@ -13,16 +18,33 @@ jobs:
strategy:
matrix:
cmake: [
{name: "VS2022", generator: "Visual Studio 17 2022", config: Release, build_target: ALL_BUILD, test_target: RUN_TESTS, install_target: INSTALL},
{name: "VS2022", generator: "Visual Studio 17 2022", config: Debug, build_target: ALL_BUILD, test_target: RUN_TESTS, install_target: INSTALL},
{name: "VS2022", generator: "Visual Studio 17 2022", config: Release},
# {name: "VS2022", generator: "Visual Studio 17 2022", config: Debug}, # too many symbols
]
fail-fast: false
name: amd64•Windows•CMake(${{matrix.cmake.name}},${{matrix.cmake.config}})•C++
runs-on: windows-latest
env:
deps_src_key: amd64_windows_cpp_deps_src
deps_build_key: amd64_windows_cpp_deps_build_${{matrix.cmake.config}}
CTEST_OUTPUT_ON_FAILURE: 1
steps:
- uses: actions/checkout@v6
# CONFIGURING CACHES
- name: Cache CMake dependency source code
uses: actions/cache@v4
with:
key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: ${{github.workspace}}/build/_deps/*-src
- name: Cache CMake dependency build
uses: actions/cache@v4
with:
key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Check CMake
run: |
cmake --version
@@ -38,19 +60,19 @@ jobs:
run: >
cmake --build build
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.build_target}}
--target ALL_BUILD
-v -j2
- name: Test
run: >
cmake --build build
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.test_target}}
--target RUN_TESTS
-v
- name: Install
run: >
cmake --build build
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.install_target}}
--target INSTALL
-v
amd64_windows_cmake_cpp:

View File

@@ -1,7 +1,12 @@
# ref: https://github.com/actions/runner-images
name: amd64 Windows CMake .Net
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
@@ -13,12 +18,14 @@ jobs:
strategy:
matrix:
cmake: [
{name: "VS2022", generator: "Visual Studio 17 2022", config: Release, build_target: ALL_BUILD, test_target: RUN_TESTS, install_target: INSTALL},
{name: "VS2022", generator: "Visual Studio 17 2022", config: Release},
]
fail-fast: false
name: amd64•Windows•CMake(${{matrix.cmake.name}})•.Net
runs-on: windows-latest
env:
deps_src_key: amd64_windows_dotnet_deps_src
deps_build_key: amd64_windows_dotnet_deps_build_${{matrix.cmake.config}}
CTEST_OUTPUT_ON_FAILURE: 1
steps:
- uses: actions/checkout@v6
@@ -28,32 +35,49 @@ jobs:
dotnet-version: 8.0.x
- name: Check dotnet
run: dotnet --info
# CONFIGURING CACHES
- name: Cache CMake dependency source code
uses: actions/cache@v4
with:
key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: ${{github.workspace}}/build/_deps/*-src
- name: Cache CMake dependency build
uses: actions/cache@v4
with:
key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Check CMake
run: cmake --version
run: |
cmake --version
cmake -G || true
- name: Configure
run: >
cmake -S. -Bbuild
-G "${{matrix.cmake.generator}}"
-DCMAKE_BUILD_TYPE=${{matrix.cmake.config}}
-DCMAKE_CONFIGURATION_TYPES=${{matrix.cmake.config}}
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
-DBUILD_DOTNET=ON
- name: Build
run: >
cmake --build build
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.build_target}}
--target ALL_BUILD
-v -j2
- name: Test
run: >
cmake --build build
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.test_target}}
--target RUN_TESTS
-v
- name: Install
run: >
cmake --build build
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.install_target}}
--target INSTALL
-v
amd64_windows_cmake_dotnet:

View File

@@ -1,7 +1,12 @@
# ref: https://github.com/actions/runner-images
name: amd64 Windows CMake Java
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
@@ -13,7 +18,7 @@ jobs:
strategy:
matrix:
cmake: [
{name: "VS2022", generator: "Visual Studio 17 2022", config: Release, build_target: ALL_BUILD, test_target: RUN_TESTS, install_target: INSTALL},
{name: "VS2022", generator: "Visual Studio 17 2022", config: Release},
]
java: [
# see https://endoflife.date/azul-zulu
@@ -27,14 +32,17 @@ jobs:
{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
# microsoft jdk seems to use an older redistributable
#{distrib: 'microsoft', version: '11'}, # 2027/09
#{distrib: 'microsoft', version: '17'}, # 2027/09
#{distrib: 'microsoft', version: '21'}, # 2028/09
]
fail-fast: false
name: amd64•Windows•CMake(${{matrix.cmake.name}})•${{matrix.java.distrib}}-${{matrix.java.version}}
runs-on: windows-latest
env:
deps_src_key: amd64_windows_java_deps_src
deps_build_key: amd64_windows_java_deps_build_${{matrix.cmake.config}}
CTEST_OUTPUT_ON_FAILURE: 1
steps:
- uses: actions/checkout@v6
@@ -42,40 +50,53 @@ jobs:
with:
distribution: ${{matrix.java.distrib}}
java-version: ${{matrix.java.version}}
- name: Update maven
run: |
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
mvn --version
# CONFIGURING CACHES
- name: Cache CMake dependency source code
uses: actions/cache@v4
with:
key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: ${{github.workspace}}/build/_deps/*-src
- name: Cache CMake dependency build
uses: actions/cache@v4
with:
key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Check CMake
run: cmake --version
run: |
cmake --version
cmake -G || true
- name: Configure
run: >
cmake -S. -Bbuild
-G "${{matrix.cmake.generator}}"
-DCMAKE_BUILD_TYPE=${{matrix.cmake.config}}
-DCMAKE_CONFIGURATION_TYPES=${{matrix.cmake.config}}
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
-DBUILD_JAVA=ON
- name: Build
run: >
cmake --build build
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.build_target}}
--target ALL_BUILD
-v -j2
- name: Test
run: >
cmake --build build
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.test_target}}
--target RUN_TESTS
-v
- name: Install
run: >
cmake --build build
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.install_target}}
--target INSTALL
-v
amd64_windows_cmake_java:

View File

@@ -1,7 +1,12 @@
# ref: https://github.com/actions/runner-images
name: amd64 Windows CMake Python
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
@@ -13,19 +18,22 @@ jobs:
strategy:
matrix:
cmake: [
{name: "VS2022", generator: "Visual Studio 17 2022", config: Release, build_target: ALL_BUILD, test_target: RUN_TESTS, install_target: INSTALL},
{name: "VS2022", generator: "Visual Studio 17 2022", config: Release},
]
python: [
{version: "3.9", dir: Python309},
{version: "3.10", dir: Python310},
{version: "3.11", dir: Python311},
{version: "3.12", dir: Python312},
#{version: "3.10", dir: Python310},
#{version: "3.11", dir: Python311},
#{version: "3.12", dir: Python312},
{version: "3.13", dir: Python313},
{version: "3.14", dir: Python314},
]
fail-fast: false
name: amd64•Windows•CMake(${{matrix.cmake.name}})•Python-${{matrix.python.version}}
runs-on: windows-latest
env:
deps_src_key: amd64_windows_python_deps_src
deps_build_key: amd64_windows_python_deps_build_${{matrix.cmake.config}}
CTEST_OUTPUT_ON_FAILURE: 1
steps:
- uses: actions/checkout@v6
@@ -38,32 +46,49 @@ jobs:
run: >
echo "$((Get-Item ~).FullName)/AppData/Roaming/Python/${{matrix.python.dir}}/Scripts" |
Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
# CONFIGURING CACHES
- name: Cache CMake dependency source code
uses: actions/cache@v4
with:
key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: ${{github.workspace}}/build/_deps/*-src
- name: Cache CMake dependency build
uses: actions/cache@v4
with:
key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Check CMake
run: cmake --version
run: |
cmake --version
cmake -G || true
- name: Configure
run: >
cmake -S. -Bbuild
-G "${{matrix.cmake.generator}}"
-DCMAKE_BUILD_TYPE=${{matrix.cmake.config}}
-DCMAKE_CONFIGURATION_TYPES=${{matrix.cmake.config}}
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
-DBUILD_PYTHON=ON
- name: Build
run: >
cmake --build build
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.build_target}}
--target ALL_BUILD
-v -j2
- name: Test
run: >
cmake --build build
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.test_target}}
--target RUN_TESTS
-v
- name: Install
run: >
cmake --build build
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.install_target}}
--target INSTALL
-v
amd64_windows_cmake_python:

View File

@@ -1,15 +1,23 @@
# ref: https://github.com/actions/runner-images
name: arm64 MacOS Bazel
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
env:
cache-root: /private/tmp/bazel
# Building using the github runner environement directly.
jobs:
native:
arm64-MacOS-Bazel-Python:
strategy:
matrix:
python: [
@@ -17,9 +25,11 @@ jobs:
#{version: '3.11'},
{version: '3.12'},
#{version: '3.13'},
#{version: '3.14'},
]
fail-fast: false
name: arm64•MacOS•Bazel•Python-${{matrix.python.version}}
env:
cache-name: ${{github.job}}-${{matrix.python.version}}
runs-on: macos-latest # macos arm64 based runner
steps:
- uses: actions/checkout@v6
@@ -46,21 +56,26 @@ jobs:
run: |
sed -i '' -e 's/\(DEFAULT_PYTHON =\) "3.[0-9]*"/\1 "${{matrix.python.version}}"/g' MODULE.bazel
cat MODULE.bazel
- name: Restore bazel cache
uses: actions/cache/restore@v4
id: bazel-cache-restore
with:
key: ${{env.cache-name}}
path: ${{env.cache-root}}
- name: Build
run: >
bazel build
-c opt
--subcommands=pretty_print
//ortools/... //examples/...
run: bazel --output_user_root=${{env.cache-root}} build --config=ci //ortools/... //examples/...
- name: Test
run: >
bazel test
-c opt
--test_output=errors
//ortools/... //examples/...
run: bazel --output_user_root=${{env.cache-root}} test --config=ci //ortools/... //examples/...
- name: Save Bazel cache for branch main even when Build and Test fail.
uses: actions/cache/save@v4
# https://docs.github.com/en/actions/reference/workflows-and-actions/dependency-caching#restrictions-for-accessing-a-cache
if: always() && github.ref == 'refs/heads/main'
with:
key: ${{env.cache-name}}-${{github.sha}}
path: ${{env.cache-root}}
arm64_macos_bazel:
runs-on: ubuntu-latest
needs: native
needs: arm64-MacOS-Bazel-Python
steps:
- uses: actions/checkout@v6

View File

@@ -1,13 +1,22 @@
# ref: https://github.com/actions/runner-images
name: arm64 MacOS CMake C++
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
env:
CCACHE_BASEDIR: ${{github.workspace}}
CCACHE_DIR: ${{github.workspace}}/.ccache
jobs:
native:
strategy:
@@ -19,8 +28,38 @@ jobs:
fail-fast: false
name: arm64•MacOS•CMake(${{matrix.cmake.name}})•C++
runs-on: macos-latest # macos M1 based runner
env:
deps_src_key: arm64_macos_cpp_deps_src
deps_build_key: arm64_macos_cpp_deps_build_${{matrix.cmake.name}}
ccache_key: arm64_macos_cpp_ccache_${{matrix.cmake.name}}
steps:
- uses: actions/checkout@v6
- name: Install Dependencies
run: brew install ccache
# RESTORING CACHES
- name: Restore CMake dependency source code
uses: actions/cache/restore@v4
id: deps_src_restore
with:
key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: ${{github.workspace}}/build/_deps/*-src
- name: Restore CMake dependency build
uses: actions/cache/restore@v4
id: deps_build_restore
with:
key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Restore CCache
uses: actions/cache/restore@v4
id: ccache_restore
with:
key: ${{env.ccache_key}}-${{github.sha}}
restore-keys: ${{env.ccache_key}}-
path: ${{env.CCACHE_DIR}}
- name: Check CMake
run: cmake --version
- name: Configure
@@ -49,6 +88,32 @@ jobs:
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.install_target}}
-v
- name: CCache stats
run: |
ccache --show-stats
ccache --zero-stats
# SAVING CACHES
- name: Save CCache
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.ccache_restore.outputs.cache-primary-key}}
path: ${{env.CCACHE_DIR}}
- name: Save CMake dependency build
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Save CMake dependency source code
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
path: ${{github.workspace}}/build/_deps/*-src
arm64_macos_cmake_cpp:
runs-on: ubuntu-latest

View File

@@ -1,13 +1,22 @@
# ref: https://github.com/actions/runner-images
name: arm64 MacOS CMake .Net
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
env:
CCACHE_BASEDIR: ${{github.workspace}}
CCACHE_DIR: ${{github.workspace}}/.ccache
jobs:
native:
strategy:
@@ -19,11 +28,15 @@ jobs:
fail-fast: false
name: arm64•MacOS•CMake(${{matrix.cmake.name}})•.Net
runs-on: macos-latest # macos arm64 based runner
env:
deps_src_key: arm64_macos_dotnet_deps_src
deps_build_key: arm64_macos_dotnet_deps_build_${{matrix.cmake.name}}
ccache_key: arm64_macos_dotnet_ccache_${{matrix.cmake.name}}
steps:
- uses: actions/checkout@v6
- name: Swig install
- name: Install Dependencies
run: |
brew install swig
brew install ccache swig
swig -version
- name: Setup .NET 8.0
uses: actions/setup-dotnet@v5
@@ -31,6 +44,30 @@ jobs:
dotnet-version: 8.0.x
- name: Check dotnet
run: dotnet --info
# RESTORING CACHES
- name: Restore CMake dependency source code
uses: actions/cache/restore@v4
id: deps_src_restore
with:
key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: ${{github.workspace}}/build/_deps/*-src
- name: Restore CMake dependency build
uses: actions/cache/restore@v4
id: deps_build_restore
with:
key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Restore CCache
uses: actions/cache/restore@v4
id: ccache_restore
with:
key: ${{env.ccache_key}}-${{github.sha}}
restore-keys: ${{env.ccache_key}}-
path: ${{env.CCACHE_DIR}}
- name: Check CMake
run: cmake --version
- name: Configure
@@ -60,6 +97,32 @@ jobs:
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.install_target}}
-v
- name: CCache stats
run: |
ccache --show-stats
ccache --zero-stats
# SAVING CACHES
- name: Save CCache
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.ccache_restore.outputs.cache-primary-key}}
path: ${{env.CCACHE_DIR}}
- name: Save CMake dependency build
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Save CMake dependency source code
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
path: ${{github.workspace}}/build/_deps/*-src
arm64_macos_cmake_dotnet:
runs-on: ubuntu-latest

View File

@@ -1,13 +1,22 @@
# ref: https://github.com/actions/runner-images
name: arm64 MacOS CMake Java
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
env:
CCACHE_BASEDIR: ${{github.workspace}}
CCACHE_DIR: ${{github.workspace}}/.ccache
jobs:
native:
strategy:
@@ -19,14 +28,42 @@ jobs:
fail-fast: false
name: arm64•MacOS•CMake(${{matrix.cmake.name}})•Java
runs-on: macos-latest # macos arm64 based runner
env:
deps_src_key: arm64_macos_java_deps_src
deps_build_key: arm64_macos_java_deps_build_${{matrix.cmake.name}}
ccache_key: arm64_macos_java_ccache_${{matrix.cmake.name}}
steps:
- uses: actions/checkout@v6
- name: Swig install
- name: Install Dependencies
run: |
brew install swig
brew install ccache swig
swig -version
- name: Check java
run: java -version
# RESTORING CACHES
- name: Restore CMake dependency source code
uses: actions/cache/restore@v4
id: deps_src_restore
with:
key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: ${{github.workspace}}/build/_deps/*-src
- name: Restore CMake dependency build
uses: actions/cache/restore@v4
id: deps_build_restore
with:
key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Restore CCache
uses: actions/cache/restore@v4
id: ccache_restore
with:
key: ${{env.ccache_key}}-${{github.sha}}
restore-keys: ${{env.ccache_key}}-
path: ${{env.CCACHE_DIR}}
- name: Check CMake
run: cmake --version
- name: Configure
@@ -56,6 +93,32 @@ jobs:
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.install_target}}
-v
- name: CCache stats
run: |
ccache --show-stats
ccache --zero-stats
# SAVING CACHES
- name: Save CCache
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.ccache_restore.outputs.cache-primary-key}}
path: ${{env.CCACHE_DIR}}
- name: Save CMake dependency build
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Save CMake dependency source code
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
path: ${{github.workspace}}/build/_deps/*-src
arm64_macos_cmake_java:
runs-on: ubuntu-latest

View File

@@ -1,13 +1,22 @@
# ref: https://github.com/actions/runner-images
name: arm64 MacOS CMake Python
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
# Building using the github runner environement directly.
env:
CCACHE_BASEDIR: ${{github.workspace}}
CCACHE_DIR: ${{github.workspace}}/.ccache
jobs:
native:
strategy:
@@ -17,20 +26,25 @@ jobs:
{name: "Make", generator: "Unix Makefiles", config: Release, build_target: all, test_target: test, install_target: install},
]
python: [
{version: "3.9"},
{version: "3.10"},
{version: "3.11"},
#{version: "3.9"},
#{version: "3.10"},
#{version: "3.11"},
{version: "3.12"},
{version: "3.13"},
#{version: "3.13"},
#{version: "3.14"},
]
fail-fast: false
name: arm64•MacOS•CMake(${{matrix.cmake.name}})•Python-${{matrix.python.version}}
runs-on: macos-latest # macos arm64 based runner
env:
deps_src_key: arm64_macos_python_deps_src
deps_build_key: arm64_macos_python_deps_build_${{matrix.cmake.name}}
ccache_key: arm64_macos_python_ccache_${{matrix.cmake.name}}
steps:
- uses: actions/checkout@v6
- name: Swig install
- name: Install Dependencies
run: |
brew install swig
brew install ccache swig
swig -version
- name: Setup Python
uses: actions/setup-python@v6
@@ -40,6 +54,30 @@ jobs:
run: |
echo "$HOME/Library/Python/${{matrix.python.version}}/bin" >> $GITHUB_PATH
echo "$HOME/.local/bin" >> $GITHUB_PATH
# RESTORING CACHES
- name: Restore CMake dependency source code
uses: actions/cache/restore@v4
id: deps_src_restore
with:
key: ${{env.deps_src_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: ${{github.workspace}}/build/_deps/*-src
- name: Restore CMake dependency build
uses: actions/cache/restore@v4
id: deps_build_restore
with:
key: ${{env.deps_build_key}}-${{hashFiles('CMakeLists.txt', 'cmake/**')}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Restore CCache
uses: actions/cache/restore@v4
id: ccache_restore
with:
key: ${{env.ccache_key}}-${{github.sha}}
restore-keys: ${{env.ccache_key}}-
path: ${{env.CCACHE_DIR}}
- name: Check CMake
run: cmake --version
- name: Configure
@@ -69,6 +107,32 @@ jobs:
--config ${{matrix.cmake.config}}
--target ${{matrix.cmake.install_target}}
-v
- name: CCache stats
run: |
ccache --show-stats
ccache --zero-stats
# SAVING CACHES
- name: Save CCache
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.ccache_restore.outputs.cache-primary-key}}
path: ${{env.CCACHE_DIR}}
- name: Save CMake dependency build
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_build_restore.outputs.cache-primary-key}}
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
- name: Save CMake dependency source code
if: github.ref == 'refs/heads/main'
uses: actions/cache/save@v4
with:
key: ${{steps.deps_src_restore.outputs.cache-primary-key}}
path: ${{github.workspace}}/build/_deps/*-src
arm64_macos_cmake_python:
runs-on: ubuntu-latest

View File

@@ -1,6 +1,11 @@
name: Check Format
on: [push, pull_request, workflow_dispatch]
on:
push:
branches:
- main
- v99bugfix
workflow_dispatch:
concurrency:
group: ${{github.workflow}}-${{github.ref}}

View File

@@ -1,7 +1,7 @@
# ref: https://codescape.mips.com/components/toolchain/2021.09-01/downloads.html
name: mips Toolchain
on: [push, pull_request, workflow_dispatch]
on: [workflow_dispatch]
concurrency:
group: ${{github.workflow}}-${{github.ref}}

View File

@@ -1,7 +1,7 @@
# ref: https://toolchains.bootlin.com/
name: powerpc Toolchain
on: [push, pull_request, workflow_dispatch]
on: [workflow_dispatch]
concurrency:
group: ${{github.workflow}}-${{github.ref}}

127
.github/workflows/presubmit.yml vendored Normal file
View File

@@ -0,0 +1,127 @@
# ref: https://github.com/actions/runner-images
name: Presubmit
on:
pull_request:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref_name }}
cancel-in-progress: true
env:
PYTHON_VERSION: '3.12'
JAVA_DISTRIBUTION: 'temurin'
JAVA_VERSION: '17'
jobs:
###############################################################################
clang-format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: jidicula/clang-format-action@v4.16.0
with:
exclude-regex: '\.tab\.hh$'
###############################################################################
Bazel:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-15-intel, macos-latest, windows-2022]
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v6
- uses: actions/setup-java@v5
with:
distribution: ${{env.JAVA_DISTRIBUTION}}
java-version: ${{env.JAVA_VERSION}}
- uses: actions/setup-python@v6
with:
python-version: ${{env.PYTHON_VERSION}}
- uses: bazel-contrib/setup-bazel@0.15.0
- name: Build
run: bazel test --config=ci //ortools/...
shell: bash
###############################################################################
CMake:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-15-intel, macos-latest, windows-2022]
build: [cpp, java, dotnet, python]
include:
# Map build to CMake
- build: cpp
cmake: ''
- build: java
cmake: '-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF -DBUILD_JAVA=ON -DSKIP_GPG=ON'
- build: dotnet
cmake: '-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF -DBUILD_DOTNET=ON'
- build: python
cmake: '-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF -DBUILD_PYTHON=ON'
# Map os to platform / generator
- os: ubuntu-latest
platform: linux
generator: Ninja
- os: macos-15-intel
platform: macos
generator: Xcode
- os: macos-latest
platform: macos
generator: Xcode
- os: windows-2022
platform: windows
generator: 'Visual Studio 17 2022'
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v6
- uses: actions/setup-java@v5
if: ${{ matrix.build == 'java' }}
with:
distribution: ${{env.JAVA_DISTRIBUTION}}
java-version: ${{env.JAVA_VERSION}}
- uses: actions/setup-python@v6
with:
python-version: ${{env.PYTHON_VERSION}}
- name: Setup linux
if: ${{ matrix.platform == 'linux' }}
run: sudo apt install -y ninja-build ccache swig
- name: Setup macos
if: ${{ matrix.platform == 'macos' }}
run: brew install ccache swig
- name: Setup Linux Python Env
if: ${{ matrix.build == 'python' && matrix.platform == 'linux' }}
run: echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: Setup MacOs Python Env
if: ${{ matrix.build == 'python' && matrix.platform == 'macos' }}
run: |
echo "$HOME/Library/Python/${{env.PYTHON_VERSION}}/bin" >> $GITHUB_PATH
echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: Setup Windows Python Env
if: ${{ matrix.build == 'python' && matrix.platform == 'windows' }}
run: |
python3 -m pip install --user mypy-protobuf absl-py setuptools wheel numpy pandas
echo "$((Get-Item ~).FullName)/AppData/Roaming/Python/Python312/Scripts" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Config
run: >
cmake
-S.
-Bbuild
-G "${{matrix.generator}}"
-DBUILD_DEPS=ON
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_C_FLAGS_RELEASE="-O1 -DNDEBUG"
-DCMAKE_CXX_FLAGS_RELEASE="-O1 -DNDEBUG"
-DCMAKE_INSTALL_PREFIX=install
-DUSE_COINOR=OFF
-DUSE_HIGHS=OFF
-DUSE_SCIP=OFF
${{matrix.cmake}}
- name: Build
run: cmake --build build --config Release -j --target ${{ matrix.generator == 'Ninja' && 'all' || 'ALL_BUILD'}}
- name: Test
env:
CTEST_OUTPUT_ON_FAILURE: 1
run: cmake --build build --config Release -j --target ${{ matrix.generator == 'Ninja' && 'test' || 'RUN_TESTS'}}

6
.gitignore vendored
View File

@@ -64,6 +64,7 @@ export_meta
ortools/bazel-*
examples/bazel-*
bazel-*
user.bazelrc
.vagrant/
@@ -94,8 +95,6 @@ ortools/dotnet/*/bin
ortools/dotnet/*/obj
ortools/**/samples/bin
ortools/**/samples/obj
examples/tests/bin
examples/tests/obj
examples/contrib/bin
examples/contrib/obj
examples/dotnet/bin
@@ -106,8 +105,7 @@ examples/dotnet/obj
CMakeCache.txt
CMakeFiles
DartConfiguration.tcl
*build*/*
build/
/build*/
# Ignore Bzlmod lock file until it is more stable
MODULE.bazel.lock

View File

@@ -14,17 +14,18 @@
load("@gazelle//:def.bzl", "gazelle")
load("@rules_license//rules:license.bzl", "license")
package(default_applicable_licenses = [":license"])
# Expose license for external usage through bazel.
licenses(["notice"])
exports_files(["LICENSE"])
license(
name = "license",
package_name = "or-tools",
license_kinds = ["@rules_license//licenses/spdx:Apache-2.0"],
license_text = ":LICENSE",
)
package(
default_applicable_licenses = [":license"],
name = "license",
package_name = "or-tools",
license_kinds = ["@rules_license//licenses/spdx:Apache-2.0"],
license_text = ":LICENSE",
)
# gazelle:build_file_name BUILD,BUILD.bazel

View File

@@ -12,18 +12,18 @@
# limitations under the License.
# This file is just an orchestration
cmake_minimum_required(VERSION 3.20)
cmake_minimum_required(VERSION 3.24)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
# Enable output of compile commands during generation.
option(CMAKE_EXPORT_COMPILE_COMMANDS "Export compile command" ON)
include(utils)
set_version(VERSION)
set_version(VERSION RELEASE)
project(ortools VERSION ${VERSION} LANGUAGES CXX C)
set(PROJECT_NAMESPACE ortools)
message(STATUS "${PROJECT_NAME} version: ${PROJECT_VERSION}")
message(STATUS "${PROJECT_NAME} version: ${PROJECT_VERSION} release: ${RELEASE}")
#message(STATUS "major: ${PROJECT_VERSION_MAJOR}")
#message(STATUS "minor: ${PROJECT_VERSION_MINOR}")
#message(STATUS "patch: ${PROJECT_VERSION_PATCH}")
@@ -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)
@@ -193,32 +196,21 @@ CMAKE_DEPENDENT_OPTION(BUILD_re2 "Build the re2 dependency Library" OFF
message(STATUS "Build re2: ${BUILD_re2}")
if(BUILD_TESTING)
set(OR_TOOLS_BUILD_TESTING ON)
CMAKE_DEPENDENT_OPTION(BUILD_googletest "Build googletest" OFF
"NOT BUILD_DEPS" ON)
CMAKE_DEPENDENT_OPTION(BUILD_benchmark "Build benchmark" OFF
"NOT BUILD_DEPS" ON)
# Fuzztest do not support MSVC or toolchain
if(MSVC OR CMAKE_CROSSCOMPILING)
set(USE_fuzztest OFF)
else()
CMAKE_DEPENDENT_OPTION(USE_fuzztest "Enable fuzztest" ON "BUILD_CXX" OFF)
endif()
if(NOT USE_fuzztest)
set(BUILD_fuzztest OFF)
else()
CMAKE_DEPENDENT_OPTION(BUILD_fuzztest "Build fuzztest" OFF
"NOT BUILD_DEPS" ON)
endif()
set(BUILD_protobuf_matchers ON)
else()
set(OR_TOOLS_BUILD_TESTING OFF)
set(BUILD_googletest OFF)
set(BUILD_protobuf_matchers OFF)
set(BUILD_benchmark OFF)
set(USE_fuzztest OFF)
set(BUILD_fuzztest OFF)
endif()
message(STATUS "Build googletest: ${BUILD_googletest}")
message(STATUS "Build protobuf_matchers: ${BUILD_protobuf_matchers}")
message(STATUS "Build benchmark: ${BUILD_benchmark}")
message(STATUS "Enable fuzztest: ${USE_fuzztest}")
message(STATUS "Build fuzztest: ${BUILD_fuzztest}")
# Optional third party solvers (enabled by default)
## BOP
@@ -478,6 +470,3 @@ endforeach()
foreach(EXAMPLES IN ITEMS contrib cpp dotnet java python)
add_subdirectory(examples/${EXAMPLES})
endforeach()
# Add tests in examples/tests
add_subdirectory(examples/tests)

View File

@@ -1,16 +1,17 @@
ZLIB=1.3.1
abseil-cpp=20250512.0
Protobuf=v31.1
abseil-cpp=20250814.1
Protobuf=v33.1
Eigen=3.4.0
Re2=2024-07-02
Re2=2025-08-12
CoinUtils=2.11.12
Osi=0.108.11
Clp=1.17.10
Cgl=0.60.9
Cbc=2.10.12
GLPK=5.0
HiGHS=v1.11.0
Scip=v922
HiGHS=v1.12.0
Scip=v10.0.0
Soplex=v8.0.0
# Python
pybind11=v2.13.6
pybind11_abseil=v202402.0

View File

@@ -1,3 +1,16 @@
# Copyright 2010-2025 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.
###############################################################################
# Bazel now uses Bzlmod by default to manage external dependencies.
# Please consider migrating your external dependencies from WORKSPACE to MODULE.bazel.
@@ -5,48 +18,51 @@
# For more details, please check https://github.com/bazelbuild/bazel/issues/18958
###############################################################################
OR_TOOLS_VERSION = "9.14"
module(
name = "or-tools",
version = OR_TOOLS_VERSION,
version = "9.15",
)
# see https://registry.bazel.build/
bazel_dep(name = "abseil-cpp", version = "20250512.0")
bazel_dep(name = "bazel_skylib", version = "1.7.1")
bazel_dep(name = "bzip2", version = "1.0.8.bcr.2")
# Bazel dependencies
bazel_dep(name = "bazel_skylib", version = "1.8.2")
bazel_dep(name = "contrib_rules_jvm", version = "0.28.0")
bazel_dep(name = "platforms", version = "1.0.0")
bazel_dep(name = "rules_cc", version = "0.2.9")
bazel_dep(name = "rules_go", version = "0.53.0")
bazel_dep(name = "rules_java", version = "8.14.0")
bazel_dep(name = "rules_jvm_external", version = "6.7")
bazel_dep(name = "rules_license", version = "1.0.0")
bazel_dep(name = "rules_proto", version = "7.1.0")
bazel_dep(name = "rules_python", version = "1.7.0")
bazel_dep(name = "rules_shell", version = "0.6.1")
# OR-Tools C++ dependencies
bazel_dep(name = "abseil-cpp", version = "20250814.1")
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 = "riegeli", version = "0.0.0-20241218-3385e3c") # otherwise fuzztest use a borken version
bazel_dep(name = "gazelle", version = "0.43.0")
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 = "platforms", version = "0.0.11")
bazel_dep(name = "protobuf", version = "31.1")
bazel_dep(name = "protobuf-matchers", version = "0.1.1")
bazel_dep(name = "protobuf", version = "32.0")
bazel_dep(name = "re2", version = "2025-08-12")
bazel_dep(name = "scip", version = "9.2.3")
bazel_dep(name = "zlib", version = "1.3.1.bcr.7")
# OR-Tools wrappers dependencies
bazel_dep(name = "gazelle", version = "0.43.0")
bazel_dep(name = "pybind11_abseil", version = "202402.0")
bazel_dep(name = "pybind11_bazel", version = "2.13.6")
bazel_dep(name = "pybind11_protobuf", version = "0.0.0-20240524-1d7a729")
bazel_dep(name = "re2", version = "2024-07-02.bcr.1")
bazel_dep(name = "rules_cc", version = "0.1.1")
bazel_dep(name = "rules_go", version = "0.53.0")
bazel_dep(name = "rules_java", version = "8.11.0")
bazel_dep(name = "rules_jvm_external", version = "6.7")
bazel_dep(name = "rules_license", version = "1.0.0")
bazel_dep(name = "rules_proto", version = "7.1.0")
bazel_dep(name = "rules_python", version = "1.2.0")
bazel_dep(name = "scip", version = "9.2.2")
bazel_dep(name = "swig", version = "4.3.0")
bazel_dep(name = "zlib", version = "1.3.1.bcr.5")
git_override(
module_name = "pybind11_bazel",
commit = "2b6082a4d9d163a52299718113fa41e4b7978db5",
patch_strip = 1,
patches = ["//patches:pybind11_bazel.patch"],
patches = ["//:patches/pybind11_bazel.patch"],
remote = "https://github.com/pybind/pybind11_bazel.git",
)
@@ -54,62 +70,46 @@ git_override(
module_name = "pybind11_abseil",
commit = "70f8b693b3b70573ca785ef62d9f48054f45d786",
patch_strip = 1,
patches = ["//patches:pybind11_abseil.patch"],
patches = ["//:patches/pybind11_abseil.patch"],
remote = "https://github.com/pybind/pybind11_abseil.git",
)
git_override(
module_name = "pybind11_protobuf",
commit = "f02a2b7653bc50eb5119d125842a3870db95d251",
#patch_strip = 1,
#patches = ["//patches:pybind11_protobuf.patch"],
remote = "https://github.com/pybind/pybind11_protobuf.git",
)
SUPPORTED_PYTHON_VERSIONS = [
"3.9",
"3.10",
"3.11",
"3.12",
"3.13",
]
# Python
# https://rules-python.readthedocs.io/en/latest/toolchains.html#library-modules-with-dev-only-python-usage
DEFAULT_PYTHON = "3.11"
DEFAULT_PYTHON = "3.12"
python = use_extension("@rules_python//python/extensions:python.bzl", "python", dev_dependency = True)
[
python.toolchain(
ignore_root_user_error = True, # needed for CI
is_default = version == DEFAULT_PYTHON,
python_version = version,
)
for version in SUPPORTED_PYTHON_VERSIONS
]
python.defaults(python_version = DEFAULT_PYTHON)
python.toolchain(python_version = DEFAULT_PYTHON)
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
[
pip.parse(
hub_name = "ortools_pip_deps",
python_version = python_version,
requirements_lock = "//bazel:ortools_requirements.txt",
envsubst = ["PIP_INDEX_URL"],
experimental_index_url = "${PIP_INDEX_URL:-https://pypi.org/simple}",
hub_name = hub_name,
python_version = DEFAULT_PYTHON,
requirements_lock = requirements_lock,
)
for python_version in SUPPORTED_PYTHON_VERSIONS
]
[
pip.parse(
hub_name = "ortools_notebook_deps",
python_version = python_version,
requirements_lock = "//bazel:notebook_requirements.txt",
)
for python_version in SUPPORTED_PYTHON_VERSIONS
for hub_name, requirements_lock in [
("ortools_pip_deps", "//bazel:ortools_requirements.txt"),
("ortools_notebook_deps", "//bazel:notebook_requirements.txt"),
]
]
use_repo(pip, pip_deps = "ortools_pip_deps")
use_repo(pip, "ortools_notebook_deps")
# Java
JUNIT_PLATFORM_VERSION = "1.9.2"
JUNIT_JUPITER_VERSION = "5.9.2"

View File

@@ -101,13 +101,6 @@ include $(OR_ROOT)makefiles/Makefile.dotnet.mk
include $(OR_ROOT)makefiles/Makefile.java.mk
include $(OR_ROOT)makefiles/Makefile.python.mk
include $(OR_ROOT)makefiles/Makefile.archive.mk
ifneq ($(PLATFORM),WIN64)
include $(OR_ROOT)makefiles/Makefile.doc.mk
else
# Remove some rules on windows
help_doc:
endif
.PHONY: help_usage
help_usage:
@@ -125,7 +118,7 @@ else
endif
.PHONY: help_all
help_all: help_usage help_cpp help_dotnet help_java help_python help_archive help_doc
help_all: help_usage help_cpp help_dotnet help_java help_python help_archive
.PHONY: check_all
check_all: check_cpp check_dotnet check_java check_python

View File

@@ -2,7 +2,6 @@
[![PyPI version](https://img.shields.io/pypi/v/ortools.svg)](https://pypi.org/project/ortools/)
[![PyPI download](https://img.shields.io/pypi/dm/ortools.svg)](https://pypi.org/project/ortools/#files)
[![Binder](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/google/or-tools/main)
\
[![NuGet version](https://img.shields.io/nuget/v/Google.OrTools.svg)](https://www.nuget.org/packages/Google.OrTools)
[![NuGet download](https://img.shields.io/nuget/dt/Google.OrTools.svg)](https://www.nuget.org/packages/Google.OrTools)
@@ -85,7 +84,6 @@ This software suite is composed of the following components:
* [python](examples/python) Python examples.
* [notebook](examples/notebook) Jupyter/IPython notebooks.
* [flatzinc](examples/flatzinc) FlatZinc examples.
* [tests](examples/tests) Unit tests and bug reports.
* [tools](tools) Delivery Tools (e.g. Windows GNU binaries, scripts, release dockers)
## Installation

View File

@@ -1,3 +1,3 @@
OR_TOOLS_MAJOR=9
OR_TOOLS_MINOR=14
#PRE_RELEASE=YES
OR_TOOLS_MINOR=15
#RELEASE_CANDIDATE=YES

30
arm.sh
View File

@@ -1,30 +0,0 @@
#!/usr/bin/env bash
# Copyright 2010-2025 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.
set -euo pipefail
#./tools/cross_compile.sh --help
export PROJECT=or-tools
#export PROJECT=glop
#export TARGET=x86_64
export TARGET=aarch64
#export TARGET=mips64
#export TARGET=ppc64
./tools/cross_compile.sh toolchain
./tools/cross_compile.sh build
./tools/cross_compile.sh qemu
./tools/cross_compile.sh test

View File

@@ -13,33 +13,33 @@
load("@rules_python//python:pip.bzl", "compile_pip_requirements")
exports_files([
"archive_helper.bzl",
"notebook_requirements.in",
"notebook_requirements.txt",
"ortools_requirements.in",
"ortools_requirements.txt",
"scip-v920.patch",
])
extra_args = [
"--no-emit-index-url", # Prevent emitting url in .txt file when using a proxy.
"--reuse-hashes", # Improve the speed of --generate-hashes by reusing the hashes from an existing output file.
"--verbose",
]
compile_pip_requirements(
name = "ortools_requirements",
extra_args = [
"--allow-unsafe", # Pin packages considered unsafe
"--resolver=backtracking", # Avoid warning, new default
],
generate_hashes = False,
requirements_in = "ortools_requirements.in",
src = "ortools_requirements.in",
extra_args = extra_args,
generate_hashes = True,
requirements_txt = "ortools_requirements.txt",
)
compile_pip_requirements(
name = "notebook_requirements",
extra_args = [
"--allow-unsafe", # Pin packages considered unsafe
"--resolver=backtracking", # Avoid warning, new default
],
generate_hashes = False,
requirements_in = "notebook_requirements.in",
src = "notebook_requirements.in",
data = ["ortools_requirements.in"],
extra_args = extra_args,
generate_hashes = True,
requirements_txt = "notebook_requirements.txt",
)
# To fully update `requirements.txt` files run the following commands:
# cat /dev/null > bazel/ortools_requirements.txt
# cat /dev/null > bazel/notebook_requirements.txt
# bazelisk-linux-amd64 run --config=ci //bazel:ortools_requirements.update
# bazelisk-linux-amd64 run --config=ci //bazel:notebook_requirements.update
package(default_visibility = ["//visibility:public"])

View File

@@ -5,23 +5,21 @@ FROM almalinux:latest AS env
# Install system build dependencies
ENV PATH=/usr/local/bin:$PATH
RUN dnf -y update \
&& dnf -y install git wget zlib-devel gcc-toolset-13 \
&& dnf -y install git wget zlib-devel \
&& dnf -y group install "Development Tools" \
&& dnf clean all \
&& rm -rf /var/cache/dnf
RUN echo "source /opt/rh/gcc-toolset-13/enable" >> /etc/bashrc
SHELL ["/bin/bash", "--login", "-c"]
# Install Bazelisk
ARG TARGETARCH=amd64
RUN wget \
https://github.com/bazelbuild/bazelisk/releases/download/v1.23.0/bazelisk-linux-amd64 \
&& chmod +x bazelisk-linux-amd64 \
&& mv bazelisk-linux-amd64 /usr/local/bin/bazel
https://github.com/bazelbuild/bazelisk/releases/download/v1.27.0/bazelisk-linux-${TARGETARCH} \
&& chmod +x bazelisk-linux-${TARGETARCH} \
&& mv bazelisk-linux-${TARGETARCH} /usr/local/bin/bazel
# Install Java
RUN dnf -y update \
&& dnf -y install java-11-openjdk java-11-openjdk-devel maven \
&& dnf -y install java-21-openjdk java-21-openjdk-devel maven \
&& dnf clean all
ENV JAVA_HOME=/usr/lib/jvm/java-openjdk
@@ -38,13 +36,7 @@ COPY . .
FROM devel AS build
RUN bazel version
RUN bazel build \
-c opt \
--subcommands=true \
//ortools/... //examples/...
RUN bazel build --config=ci //ortools/... //examples/...
FROM build AS test
RUN bazel test \
-c opt \
--test_output=errors \
//ortools/... //examples/...
RUN bazel test --config=ci //ortools/... //examples/...

View File

@@ -4,15 +4,19 @@ FROM alpine:edge AS env
# Install system build dependencies
ENV PATH=/usr/local/bin:$PATH
RUN apk add --no-cache git build-base linux-headers zlib-dev
RUN apk add --no-cache -X http://dl-cdn.alpinelinux.org/alpine/edge/testing bazel7
RUN apk add --no-cache \
git build-base linux-headers zlib-dev \
python3
RUN apk add --no-cache -X http://dl-cdn.alpinelinux.org/alpine/edge/testing bazel8
ENV JAVA_HOME=/usr/lib/jvm/default-jvm
ENV PATH=$JAVA_HOME/bin:$PATH
# Install Python
RUN apk add --no-cache openssl python3-dev py3-pip py3-wheel py3-numpy py3-pandas
RUN python3 -m pip install --break-system-package absl-py mypy-protobuf
RUN apk add --no-cache \
openssl python3-dev py3-pip py3-wheel py3-numpy py3-pandas
RUN python3 -m pip install --break-system-package \
absl-py mypy-protobuf
FROM env AS devel
WORKDIR /home/project
@@ -20,13 +24,7 @@ COPY . .
FROM devel AS build
RUN bazel version
RUN bazel build \
-c opt \
--subcommands=true \
//ortools/... //examples/...
RUN bazel build --config=ci //ortools/... //examples/...
FROM build AS test
RUN bazel test \
-c opt \
--test_output=errors \
//ortools/... //examples/...
RUN bazel test --config=ci //ortools/... //examples/...

View File

@@ -16,13 +16,7 @@ COPY . .
FROM devel AS build
RUN bazel version
RUN bazel build \
-c opt \
--subcommands=true \
//ortools/... //examples/...
RUN bazel build --config=ci //ortools/... //examples/...
FROM build AS test
RUN bazel test \
-c opt \
--test_output=errors \
//ortools/... //examples/...
RUN bazel test --config=ci //ortools/... //examples/...

View File

@@ -10,15 +10,12 @@ RUN apt-get update -qq \
&& apt-get install -yq default-jdk \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Install Bazel
RUN curl https://bazel.build/bazel-release.pub.gpg | apt-key add -
# Install Bazelisk
ARG TARGETARCH=amd64
RUN echo "deb [arch=$TARGETARCH] https://storage.googleapis.com/bazel-apt stable jdk1.8" | tee /etc/apt/sources.list.d/bazel.list
RUN apt-get update -qq \
&& apt-get install -yq bazel \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN wget \
https://github.com/bazelbuild/bazelisk/releases/download/v1.27.0/bazelisk-linux-${TARGETARCH} \
&& chmod +x bazelisk-linux-${TARGETARCH} \
&& mv bazelisk-linux-${TARGETARCH} /usr/local/bin/bazel
FROM env AS devel
WORKDIR /home/project
@@ -26,13 +23,7 @@ COPY . .
FROM devel AS build
RUN bazel version
RUN bazel build \
-c opt \
--subcommands=true \
//ortools/... //examples/...
RUN bazel build --config=ci //ortools/... //examples/...
FROM build AS test
RUN bazel test \
-c opt \
--test_output=errors \
//ortools/... //examples/...
RUN bazel test --config=ci //ortools/... //examples/...

View File

@@ -13,10 +13,11 @@ RUN dnf -y update \
&& dnf clean all
# Install Bazelisk
ARG TARGETARCH=amd64
RUN wget \
https://github.com/bazelbuild/bazelisk/releases/download/v1.23.0/bazelisk-linux-amd64 \
&& chmod +x bazelisk-linux-amd64 \
&& mv bazelisk-linux-amd64 /usr/local/bin/bazel
https://github.com/bazelbuild/bazelisk/releases/download/v1.27.0/bazelisk-linux-${TARGETARCH} \
&& chmod +x bazelisk-linux-${TARGETARCH} \
&& mv bazelisk-linux-${TARGETARCH} /usr/local/bin/bazel
# Install Java
RUN dnf -y update \
@@ -35,13 +36,7 @@ COPY . .
FROM devel AS build
RUN bazel version
RUN bazel build \
-c opt \
--subcommands=true \
//ortools/... //examples/...
RUN bazel build --java_runtime_version=remotejdk_21 --config=ci //ortools/... //examples/...
FROM build AS test
RUN bazel test \
-c opt \
--test_output=errors \
//ortools/... //examples/...
RUN bazel test --java_runtime_version=remotejdk_21 --config=ci //ortools/... //examples/...

View File

@@ -10,10 +10,11 @@ RUN zypper update -y \
ENV CC=gcc CXX=g++
# Install Bazelisk
ARG TARGETARCH=amd64
RUN wget \
https://github.com/bazelbuild/bazelisk/releases/download/v1.23.0/bazelisk-linux-amd64 \
&& chmod +x bazelisk-linux-amd64 \
&& mv bazelisk-linux-amd64 /usr/local/bin/bazel
https://github.com/bazelbuild/bazelisk/releases/download/v1.27.0/bazelisk-linux-${TARGETARCH} \
&& chmod +x bazelisk-linux-${TARGETARCH} \
&& mv bazelisk-linux-${TARGETARCH} /usr/local/bin/bazel
# Install Java JDK and Maven
RUN zypper refresh \
@@ -32,13 +33,7 @@ COPY . .
FROM devel AS build
RUN bazel version
RUN bazel build \
-c opt \
--subcommands=true \
//ortools/... //examples/...
RUN bazel build --config=ci //ortools/... //examples/...
FROM build AS test
RUN bazel test \
-c opt \
--test_output=errors \
//ortools/... //examples/...
RUN bazel test --config=ci //ortools/... //examples/...

View File

@@ -1,6 +1,6 @@
# Create a virtual environment with all tools installed
# ref: https://hub.docker.com/_/rockylinux
FROM rockylinux:9 AS env
# ref: https://hub.docker.com/rockylinux/rockylinux
FROM rockylinux/rockylinux:9 AS env
# Install system build dependencies
ENV PATH=/usr/local/bin:$PATH
@@ -14,10 +14,11 @@ RUN echo "source /opt/rh/gcc-toolset-13/enable" >> /etc/bashrc
SHELL ["/bin/bash", "--login", "-c"]
# Install Bazelisk
ARG TARGETARCH=amd64
RUN wget \
https://github.com/bazelbuild/bazelisk/releases/download/v1.23.0/bazelisk-linux-amd64 \
&& chmod +x bazelisk-linux-amd64 \
&& mv bazelisk-linux-amd64 /usr/local/bin/bazel
https://github.com/bazelbuild/bazelisk/releases/download/v1.27.0/bazelisk-linux-${TARGETARCH} \
&& chmod +x bazelisk-linux-${TARGETARCH} \
&& mv bazelisk-linux-${TARGETARCH} /usr/local/bin/bazel
# Install Java
RUN dnf -y update \
@@ -38,13 +39,7 @@ COPY . .
FROM devel AS build
RUN bazel version
RUN bazel build \
-c opt \
--subcommands=true \
//ortools/... //examples/...
RUN bazel build --config=ci //ortools/... //examples/...
FROM build AS test
RUN bazel test \
-c opt \
--test_output=errors \
//ortools/... //examples/...
RUN bazel test --config=ci //ortools/... //examples/...

View File

@@ -15,16 +15,12 @@ RUN apt update -qq \
&& apt clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Install Bazel
RUN apt install -y apt-transport-https curl gnupg \
&& curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor >bazel-archive-keyring.gpg \
&& mv bazel-archive-keyring.gpg /usr/share/keyrings
# Install Bazelisk
ARG TARGETARCH=amd64
RUN echo "deb [arch=$TARGETARCH signed-by=/usr/share/keyrings/bazel-archive-keyring.gpg] https://storage.googleapis.com/bazel-apt stable jdk1.8" | tee /etc/apt/sources.list.d/bazel.list
RUN apt update -qq \
&& apt install -yq bazel \
&& apt clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN wget \
https://github.com/bazelbuild/bazelisk/releases/download/v1.27.0/bazelisk-linux-${TARGETARCH} \
&& chmod +x bazelisk-linux-${TARGETARCH} \
&& mv bazelisk-linux-${TARGETARCH} /usr/local/bin/bazel
FROM env AS devel
WORKDIR /home/project
@@ -32,13 +28,7 @@ COPY . .
FROM devel AS build
RUN bazel version
RUN bazel build \
-c opt \
--subcommands=true \
//ortools/... //examples/...
RUN bazel build --config=ci //ortools/... //examples/...
FROM build AS test
RUN bazel test \
-c opt \
--test_output=errors \
//ortools/... //examples/...
RUN bazel test --config=ci //ortools/... //examples/...

View File

@@ -1,29 +1,12 @@
# OR-Tools code dependencies
absl-py==2.2.2
immutabledict==4.2.1
numpy==2.2.0
protobuf==6.31.1
requests==2.32.4
scipy==1.14.1
typing-extensions==4.13.1
# OR-Tools build dependencies
mypy==1.6.1
mypy-protobuf==3.5.0
virtualenv==20.28.1
black==24.8.0
# Example dependencies
pandas==2.2.3
-r ortools_requirements.in
# Visualization dependencies
svgwrite==1.4.3
plotly==5.15.0
# Notebook
jupyterlab==4.4.8
notebook==7.4.2
jupyter-server==2.16.0
jupyter-server==2.17.0
tornado==6.5.0
Pygments==2.19.1
jsonschema==4.23.0

File diff suppressed because it is too large Load Diff

View File

@@ -1,20 +1,19 @@
# OR-Tools code dependencies
absl-py==2.2.2
immutabledict==4.2.1
numpy==2.2.0
protobuf==6.31.1
absl-py==2.3.1
immutabledict==4.2.2
numpy==2.3.5
protobuf==6.32.0
requests==2.32.4
scipy==1.14.1
typing-extensions==4.13.1
scipy==1.16.3
typing-extensions==4.15.0
# OR-Tools build dependencies
mypy==1.6.1
mypy-protobuf==3.5.0
virtualenv==20.28.1
black==24.8.0
virtualenv==20.35.4
# Example dependencies
pandas==2.2.3
pandas==2.3.3
# Visualization dependencies
svgwrite==1.4.3

View File

@@ -4,72 +4,435 @@
#
# bazel run //bazel:ortools_requirements.update
#
absl-py==2.2.2
# via -r ortools_requirements.in
black==24.8.0
# via -r ortools_requirements.in
certifi==2024.7.4
absl-py==2.3.1 \
--hash=sha256:a97820526f7fbfd2ec1bce83f3f25e3a14840dac0d8e02a0b71cd75db3f77fc9 \
--hash=sha256:eeecf07f0c2a93ace0772c92e596ace6d3d3996c042b2128459aaae2a76de11d
# via -r bazel/ortools_requirements.in
certifi==2025.11.12 \
--hash=sha256:97de8790030bbd5c2d96b7ec782fc2f7820ef8dba6db909ccf95449f2d062d4b \
--hash=sha256:d8ab5478f2ecd78af242878415affce761ca6bc54a22a27e026d7c25357c3316
# via requests
charset-normalizer==3.3.2
charset-normalizer==3.4.4 \
--hash=sha256:027f6de494925c0ab2a55eab46ae5129951638a49a34d87f4c3eda90f696b4ad \
--hash=sha256:077fbb858e903c73f6c9db43374fd213b0b6a778106bc7032446a8e8b5b38b93 \
--hash=sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394 \
--hash=sha256:0d3d8f15c07f86e9ff82319b3d9ef6f4bf907608f53fe9d92b28ea9ae3d1fd89 \
--hash=sha256:0f04b14ffe5fdc8c4933862d8306109a2c51e0704acfa35d51598eb45a1e89fc \
--hash=sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86 \
--hash=sha256:194f08cbb32dc406d6e1aea671a68be0823673db2832b38405deba2fb0d88f63 \
--hash=sha256:1bee1e43c28aa63cb16e5c14e582580546b08e535299b8b6158a7c9c768a1f3d \
--hash=sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f \
--hash=sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8 \
--hash=sha256:244bfb999c71b35de57821b8ea746b24e863398194a4014e4c76adc2bbdfeff0 \
--hash=sha256:2677acec1a2f8ef614c6888b5b4ae4060cc184174a938ed4e8ef690e15d3e505 \
--hash=sha256:277e970e750505ed74c832b4bf75dac7476262ee2a013f5574dd49075879e161 \
--hash=sha256:2aaba3b0819274cc41757a1da876f810a3e4d7b6eb25699253a4effef9e8e4af \
--hash=sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152 \
--hash=sha256:2c9d3c380143a1fedbff95a312aa798578371eb29da42106a29019368a475318 \
--hash=sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72 \
--hash=sha256:31fd66405eaf47bb62e8cd575dc621c56c668f27d46a61d975a249930dd5e2a4 \
--hash=sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e \
--hash=sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3 \
--hash=sha256:44c2a8734b333e0578090c4cd6b16f275e07aa6614ca8715e6c038e865e70576 \
--hash=sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c \
--hash=sha256:4902828217069c3c5c71094537a8e623f5d097858ac6ca8252f7b4d10b7560f1 \
--hash=sha256:4bd5d4137d500351a30687c2d3971758aac9a19208fc110ccb9d7188fbe709e8 \
--hash=sha256:4fe7859a4e3e8457458e2ff592f15ccb02f3da787fcd31e0183879c3ad4692a1 \
--hash=sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2 \
--hash=sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44 \
--hash=sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26 \
--hash=sha256:5947809c8a2417be3267efc979c47d76a079758166f7d43ef5ae8e9f92751f88 \
--hash=sha256:5ae497466c7901d54b639cf42d5b8c1b6a4fead55215500d2f486d34db48d016 \
--hash=sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede \
--hash=sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf \
--hash=sha256:5cb4d72eea50c8868f5288b7f7f33ed276118325c1dfd3957089f6b519e1382a \
--hash=sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc \
--hash=sha256:5f819d5fe9234f9f82d75bdfa9aef3a3d72c4d24a6e57aeaebba32a704553aa0 \
--hash=sha256:64b55f9dce520635f018f907ff1b0df1fdc31f2795a922fb49dd14fbcdf48c84 \
--hash=sha256:6515f3182dbe4ea06ced2d9e8666d97b46ef4c75e326b79bb624110f122551db \
--hash=sha256:65e2befcd84bc6f37095f5961e68a6f077bf44946771354a28ad434c2cce0ae1 \
--hash=sha256:6aee717dcfead04c6eb1ce3bd29ac1e22663cdea57f943c87d1eab9a025438d7 \
--hash=sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed \
--hash=sha256:6e1fcf0720908f200cd21aa4e6750a48ff6ce4afe7ff5a79a90d5ed8a08296f8 \
--hash=sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133 \
--hash=sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e \
--hash=sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef \
--hash=sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14 \
--hash=sha256:778d2e08eda00f4256d7f672ca9fef386071c9202f5e4607920b86d7803387f2 \
--hash=sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0 \
--hash=sha256:798d75d81754988d2565bff1b97ba5a44411867c0cf32b77a7e8f8d84796b10d \
--hash=sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828 \
--hash=sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f \
--hash=sha256:7c308f7e26e4363d79df40ca5b2be1c6ba9f02bdbccfed5abddb7859a6ce72cf \
--hash=sha256:7fa17817dc5625de8a027cb8b26d9fefa3ea28c8253929b8d6649e705d2835b6 \
--hash=sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328 \
--hash=sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090 \
--hash=sha256:837c2ce8c5a65a2035be9b3569c684358dfbf109fd3b6969630a87535495ceaa \
--hash=sha256:840c25fb618a231545cbab0564a799f101b63b9901f2569faecd6b222ac72381 \
--hash=sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c \
--hash=sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb \
--hash=sha256:8ef3c867360f88ac904fd3f5e1f902f13307af9052646963ee08ff4f131adafc \
--hash=sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a \
--hash=sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec \
--hash=sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc \
--hash=sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac \
--hash=sha256:9cd98cdc06614a2f768d2b7286d66805f94c48cde050acdbbb7db2600ab3197e \
--hash=sha256:9d1bb833febdff5c8927f922386db610b49db6e0d4f4ee29601d71e7c2694313 \
--hash=sha256:9f7fcd74d410a36883701fafa2482a6af2ff5ba96b9a620e9e0721e28ead5569 \
--hash=sha256:a59cb51917aa591b1c4e6a43c132f0cdc3c76dbad6155df4e28ee626cc77a0a3 \
--hash=sha256:a61900df84c667873b292c3de315a786dd8dac506704dea57bc957bd31e22c7d \
--hash=sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525 \
--hash=sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894 \
--hash=sha256:a8bf8d0f749c5757af2142fe7903a9df1d2e8aa3841559b2bad34b08d0e2bcf3 \
--hash=sha256:a9768c477b9d7bd54bc0c86dbaebdec6f03306675526c9927c0e8a04e8f94af9 \
--hash=sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a \
--hash=sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9 \
--hash=sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14 \
--hash=sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25 \
--hash=sha256:b5d84d37db046c5ca74ee7bb47dd6cbc13f80665fdde3e8040bdd3fb015ecb50 \
--hash=sha256:b7cf1017d601aa35e6bb650b6ad28652c9cd78ee6caff19f3c28d03e1c80acbf \
--hash=sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1 \
--hash=sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3 \
--hash=sha256:c4ef880e27901b6cc782f1b95f82da9313c0eb95c3af699103088fa0ac3ce9ac \
--hash=sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e \
--hash=sha256:ca5862d5b3928c4940729dacc329aa9102900382fea192fc5e52eb69d6093815 \
--hash=sha256:cb01158d8b88ee68f15949894ccc6712278243d95f344770fa7593fa2d94410c \
--hash=sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6 \
--hash=sha256:cc00f04ed596e9dc0da42ed17ac5e596c6ccba999ba6bd92b0e0aef2f170f2d6 \
--hash=sha256:cd09d08005f958f370f539f186d10aec3377d55b9eeb0d796025d4886119d76e \
--hash=sha256:cd4b7ca9984e5e7985c12bc60a6f173f3c958eae74f3ef6624bb6b26e2abbae4 \
--hash=sha256:ce8a0633f41a967713a59c4139d29110c07e826d131a316b50ce11b1d79b4f84 \
--hash=sha256:cead0978fc57397645f12578bfd2d5ea9138ea0fac82b2f63f7f7c6877986a69 \
--hash=sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15 \
--hash=sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191 \
--hash=sha256:d9c7f57c3d666a53421049053eaacdd14bbd0a528e2186fcb2e672effd053bb0 \
--hash=sha256:d9e45d7faa48ee908174d8fe84854479ef838fc6a705c9315372eacbc2f02897 \
--hash=sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd \
--hash=sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2 \
--hash=sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794 \
--hash=sha256:e824f1492727fa856dd6eda4f7cee25f8518a12f3c4a56a74e8095695089cf6d \
--hash=sha256:e912091979546adf63357d7e2ccff9b44f026c075aeaf25a52d0e95ad2281074 \
--hash=sha256:eaabd426fe94daf8fd157c32e571c85cb12e66692f15516a83a03264b08d06c3 \
--hash=sha256:ebf3e58c7ec8a8bed6d66a75d7fb37b55e5015b03ceae72a8e7c74495551e224 \
--hash=sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838 \
--hash=sha256:eecbc200c7fd5ddb9a7f16c7decb07b566c29fa2161a16cf67b8d068bd21690a \
--hash=sha256:f155a433c2ec037d4e8df17d18922c3a0d9b3232a396690f17175d2946f0218d \
--hash=sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d \
--hash=sha256:f34be2938726fc13801220747472850852fe6b1ea75869a048d6f896838c896f \
--hash=sha256:f820802628d2694cb7e56db99213f930856014862f3fd943d290ea8438d07ca8 \
--hash=sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490 \
--hash=sha256:f8e160feb2aed042cd657a72acc0b481212ed28b1b9a95c0cee1621b524e1966 \
--hash=sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9 \
--hash=sha256:fa09f53c465e532f4d3db095e0c55b615f010ad81803d383195b6b5ca6cbf5f3 \
--hash=sha256:faa3a41b2b66b6e50f84ae4a68c64fcd0c44355741c6374813a800cd6695db9e \
--hash=sha256:fd44c878ea55ba351104cb93cc85e74916eb8fa440ca7903e57575e97394f608
# via requests
click==8.1.3
# via black
distlib==0.3.7
distlib==0.4.0 \
--hash=sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16 \
--hash=sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d
# via virtualenv
filelock==3.12.2
filelock==3.20.1 \
--hash=sha256:15d9e9a67306188a44baa72f569d2bfd803076269365fdea0934385da4dc361a \
--hash=sha256:b8360948b351b80f420878d8516519a2204b07aefcdcfd24912a5d33127f188c
# via virtualenv
idna==3.7
idna==3.11 \
--hash=sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea \
--hash=sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902
# via requests
immutabledict==4.2.1
# via -r ortools_requirements.in
mypy==1.6.1
# via -r ortools_requirements.in
mypy-extensions==1.0.0
immutabledict==4.2.2 \
--hash=sha256:97c31d098a2c850e93a958badeef765e4736ed7942ec73e439facd764a3a7217 \
--hash=sha256:cb6ed3090df593148f94cb407d218ca526fd2639694afdb553dc4f50ce6feeca
# via -r bazel/ortools_requirements.in
mypy==1.6.1 \
--hash=sha256:19f905bcfd9e167159b3d63ecd8cb5e696151c3e59a1742e79bc3bcb540c42c7 \
--hash=sha256:21a1ad938fee7d2d96ca666c77b7c494c3c5bd88dff792220e1afbebb2925b5e \
--hash=sha256:40b1844d2e8b232ed92e50a4bd11c48d2daa351f9deee6c194b83bf03e418b0c \
--hash=sha256:41697773aa0bf53ff917aa077e2cde7aa50254f28750f9b88884acea38a16169 \
--hash=sha256:49ae115da099dcc0922a7a895c1eec82c1518109ea5c162ed50e3b3594c71208 \
--hash=sha256:4c46b51de523817a0045b150ed11b56f9fff55f12b9edd0f3ed35b15a2809de0 \
--hash=sha256:4cbe68ef919c28ea561165206a2dcb68591c50f3bcf777932323bc208d949cf1 \
--hash=sha256:4d01c00d09a0be62a4ca3f933e315455bde83f37f892ba4b08ce92f3cf44bcc1 \
--hash=sha256:59a0d7d24dfb26729e0a068639a6ce3500e31d6655df8557156c51c1cb874ce7 \
--hash=sha256:68351911e85145f582b5aa6cd9ad666c8958bcae897a1bfda8f4940472463c45 \
--hash=sha256:7274b0c57737bd3476d2229c6389b2ec9eefeb090bbaf77777e9d6b1b5a9d143 \
--hash=sha256:81af8adaa5e3099469e7623436881eff6b3b06db5ef75e6f5b6d4871263547e5 \
--hash=sha256:82e469518d3e9a321912955cc702d418773a2fd1e91c651280a1bda10622f02f \
--hash=sha256:8b27958f8c76bed8edaa63da0739d76e4e9ad4ed325c814f9b3851425582a3cd \
--hash=sha256:8c223fa57cb154c7eab5156856c231c3f5eace1e0bed9b32a24696b7ba3c3245 \
--hash=sha256:8f57e6b6927a49550da3d122f0cb983d400f843a8a82e65b3b380d3d7259468f \
--hash=sha256:925cd6a3b7b55dfba252b7c4561892311c5358c6b5a601847015a1ad4eb7d332 \
--hash=sha256:a43ef1c8ddfdb9575691720b6352761f3f53d85f1b57d7745701041053deff30 \
--hash=sha256:a8032e00ce71c3ceb93eeba63963b864bf635a18f6c0c12da6c13c450eedb183 \
--hash=sha256:b96ae2c1279d1065413965c607712006205a9ac541895004a1e0d4f281f2ff9f \
--hash=sha256:bb8ccb4724f7d8601938571bf3f24da0da791fe2db7be3d9e79849cb64e0ae85 \
--hash=sha256:bbaf4662e498c8c2e352da5f5bca5ab29d378895fa2d980630656178bd607c46 \
--hash=sha256:cfd13d47b29ed3bbaafaff7d8b21e90d827631afda134836962011acb5904b71 \
--hash=sha256:d4473c22cc296425bbbce7e9429588e76e05bc7342da359d6520b6427bf76660 \
--hash=sha256:d8fbb68711905f8912e5af474ca8b78d077447d8f3918997fecbf26943ff3cbb \
--hash=sha256:e5012e5cc2ac628177eaac0e83d622b2dd499e28253d4107a08ecc59ede3fc2c \
--hash=sha256:eb4f18589d196a4cbe5290b435d135dee96567e07c2b2d43b5c4621b6501531a
# via -r bazel/ortools_requirements.in
mypy-extensions==1.1.0 \
--hash=sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505 \
--hash=sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558
# via mypy
mypy-protobuf==3.5.0 \
--hash=sha256:0d0548c6b9a6faf14ce1a9ce2831c403a5c1f2a9363e85b1e2c51d5d57aa8393 \
--hash=sha256:21f270da0a9792a9dac76b0df463c027e561664ab6973c59be4e4d064dfe67dc
# via -r bazel/ortools_requirements.in
numpy==2.3.5 \
--hash=sha256:00dc4e846108a382c5869e77c6ed514394bdeb3403461d25a829711041217d5b \
--hash=sha256:0472f11f6ec23a74a906a00b48a4dcf3849209696dff7c189714511268d103ae \
--hash=sha256:04822c00b5fd0323c8166d66c701dc31b7fbd252c100acd708c48f763968d6a3 \
--hash=sha256:052e8c42e0c49d2575621c158934920524f6c5da05a1d3b9bab5d8e259e045f0 \
--hash=sha256:09a1bea522b25109bf8e6f3027bd810f7c1085c64a0c7ce050c1676ad0ba010b \
--hash=sha256:0cd00b7b36e35398fa2d16af7b907b65304ef8bb4817a550e06e5012929830fa \
--hash=sha256:0d8163f43acde9a73c2a33605353a4f1bc4798745a8b1d73183b28e5b435ae28 \
--hash=sha256:1062fde1dcf469571705945b0f221b73928f34a20c904ffb45db101907c3454e \
--hash=sha256:11e06aa0af8c0f05104d56450d6093ee639e15f24ecf62d417329d06e522e017 \
--hash=sha256:17531366a2e3a9e30762c000f2c43a9aaa05728712e25c11ce1dbe700c53ad41 \
--hash=sha256:1978155dd49972084bd6ef388d66ab70f0c323ddee6f693d539376498720fb7e \
--hash=sha256:1ed1ec893cff7040a02c8aa1c8611b94d395590d553f6b53629a4461dc7f7b63 \
--hash=sha256:2dcd0808a421a482a080f89859a18beb0b3d1e905b81e617a188bd80422d62e9 \
--hash=sha256:2e2eb32ddb9ccb817d620ac1d8dae7c3f641c1e5f55f531a33e8ab97960a75b8 \
--hash=sha256:2feae0d2c91d46e59fcd62784a3a83b3fb677fead592ce51b5a6fbb4f95965ff \
--hash=sha256:3095bdb8dd297e5920b010e96134ed91d852d81d490e787beca7e35ae1d89cf7 \
--hash=sha256:30bc11310e8153ca664b14c5f1b73e94bd0503681fcf136a163de856f3a50139 \
--hash=sha256:3101e5177d114a593d79dd79658650fe28b5a0d8abeb8ce6f437c0e6df5be1a4 \
--hash=sha256:396084a36abdb603546b119d96528c2f6263921c50df3c8fd7cb28873a237748 \
--hash=sha256:3997b5b3c9a771e157f9aae01dd579ee35ad7109be18db0e85dbdbe1de06e952 \
--hash=sha256:414802f3b97f3c1eef41e530aaba3b3c1620649871d8cb38c6eaff034c2e16bd \
--hash=sha256:51c1e14eb1e154ebd80e860722f9e6ed6ec89714ad2db2d3aa33c31d7c12179b \
--hash=sha256:51c55fe3451421f3a6ef9a9c1439e82101c57a2c9eab9feb196a62b1a10b58ce \
--hash=sha256:5ee6609ac3604fa7780e30a03e5e241a7956f8e2fcfe547d51e3afa5247ac47f \
--hash=sha256:612a95a17655e213502f60cfb9bf9408efdc9eb1d5f50535cc6eb365d11b42b5 \
--hash=sha256:6203fdf9f3dc5bdaed7319ad8698e685c7a3be10819f41d32a0723e611733b42 \
--hash=sha256:63c0e9e7eea69588479ebf4a8a270d5ac22763cc5854e9a7eae952a3908103f7 \
--hash=sha256:66f85ce62c70b843bab1fb14a05d5737741e74e28c7b8b5a064de10142fad248 \
--hash=sha256:6cf9b429b21df6b99f4dee7a1218b8b7ffbbe7df8764dc0bd60ce8a0708fed1e \
--hash=sha256:70b37199913c1bd300ff6e2693316c6f869c7ee16378faf10e4f5e3275b299c3 \
--hash=sha256:727fd05b57df37dc0bcf1a27767a3d9a78cbbc92822445f32cc3436ba797337b \
--hash=sha256:74ae7b798248fe62021dbf3c914245ad45d1a6b0cb4a29ecb4b31d0bfbc4cc3e \
--hash=sha256:784db1dcdab56bf0517743e746dfb0f885fc68d948aba86eeec2cba234bdf1c0 \
--hash=sha256:86945f2ee6d10cdfd67bcb4069c1662dd711f7e2a4343db5cecec06b87cf31aa \
--hash=sha256:86d835afea1eaa143012a2d7a3f45a3adce2d7adc8b4961f0b362214d800846a \
--hash=sha256:872a5cf366aec6bb1147336480fef14c9164b154aeb6542327de4970282cd2f5 \
--hash=sha256:8b973c57ff8e184109db042c842423ff4f60446239bd585a5131cc47f06f789d \
--hash=sha256:8cba086a43d54ca804ce711b2a940b16e452807acebe7852ff327f1ecd49b0d4 \
--hash=sha256:8f7f0e05112916223d3f438f293abf0727e1181b5983f413dfa2fefc4098245c \
--hash=sha256:900218e456384ea676e24ea6a0417f030a3b07306d29d7ad843957b40a9d8d52 \
--hash=sha256:93eebbcf1aafdf7e2ddd44c2923e2672e1010bddc014138b229e49725b4d6be5 \
--hash=sha256:9c75442b2209b8470d6d5d8b1c25714270686f14c749028d2199c54e29f20b4d \
--hash=sha256:9ee2197ef8c4f0dfe405d835f3b6a14f5fee7782b5de51ba06fb65fc9b36e9f1 \
--hash=sha256:a414504bef8945eae5f2d7cb7be2d4af77c5d1cb5e20b296c2c25b61dff2900c \
--hash=sha256:a4b9159734b326535f4dd01d947f919c6eefd2d9827466a696c44ced82dfbc18 \
--hash=sha256:a80afd79f45f3c4a7d341f13acbe058d1ca8ac017c165d3fa0d3de6bc1a079d7 \
--hash=sha256:aa5bc7c5d59d831d9773d1170acac7893ce3a5e130540605770ade83280e7188 \
--hash=sha256:acfd89508504a19ed06ef963ad544ec6664518c863436306153e13e94605c218 \
--hash=sha256:aeffcab3d4b43712bb7a60b65f6044d444e75e563ff6180af8f98dd4b905dfd2 \
--hash=sha256:afaffc4393205524af9dfa400fa250143a6c3bc646c08c9f5e25a9f4b4d6a903 \
--hash=sha256:b0c7088a73aef3d687c4deef8452a3ac7c1be4e29ed8bf3b366c8111128ac60c \
--hash=sha256:b46b4ec24f7293f23adcd2d146960559aaf8020213de8ad1909dba6c013bf89c \
--hash=sha256:b501b5fa195cc9e24fe102f21ec0a44dffc231d2af79950b451e0d99cea02234 \
--hash=sha256:bf06bc2af43fa8d32d30fae16ad965663e966b1a3202ed407b84c989c3221e82 \
--hash=sha256:c804e3a5aba5460c73955c955bdbd5c08c354954e9270a2c1565f62e866bdc39 \
--hash=sha256:c8a9958e88b65c3b27e22ca2a076311636850b612d6bbfb76e8d156aacde2aaf \
--hash=sha256:cc0a57f895b96ec78969c34f682c602bf8da1a0270b09bc65673df2e7638ec20 \
--hash=sha256:cc8920d2ec5fa99875b670bb86ddeb21e295cb07aa331810d9e486e0b969d946 \
--hash=sha256:ccc933afd4d20aad3c00bcef049cb40049f7f196e0397f1109dba6fed63267b0 \
--hash=sha256:ce581db493ea1a96c0556360ede6607496e8bf9b3a8efa66e06477267bc831e9 \
--hash=sha256:d0f23b44f57077c1ede8c5f26b30f706498b4862d3ff0a7298b8411dd2f043ff \
--hash=sha256:d21644de1b609825ede2f48be98dfde4656aefc713654eeee280e37cadc4e0ad \
--hash=sha256:d6889ec4ec662a1a37eb4b4fb26b6100841804dac55bd9df579e326cdc146227 \
--hash=sha256:de5672f4a7b200c15a4127042170a694d4df43c992948f5e1af57f0174beed10 \
--hash=sha256:e6a0bc88393d65807d751a614207b7129a310ca4fe76a74e5c7da5fa5671417e \
--hash=sha256:ed89927b86296067b4f81f108a2271d8926467a8868e554eaf370fc27fa3ccaf \
--hash=sha256:ee3888d9ff7c14604052b2ca5535a30216aa0a58e948cdd3eeb8d3415f638769 \
--hash=sha256:f0963b55cdd70fad460fa4c1341f12f976bb26cb66021a5580329bd498988310 \
--hash=sha256:f16417ec91f12f814b10bafe79ef77e70113a2f5f7018640e7425ff979253425 \
--hash=sha256:f28620fe26bee16243be2b7b874da327312240a7cdc38b769a697578d2100013 \
--hash=sha256:f4255143f5160d0de972d28c8f9665d882b5f61309d8362fdd3e103cf7bf010c \
--hash=sha256:ffac52f28a7849ad7576293c0cb7b9f08304e8f7d738a8cb8a90ec4c55a998eb \
--hash=sha256:ffe22d2b05504f786c867c8395de703937f934272eb67586817b46188b4ded6d \
--hash=sha256:fffe29a1ef00883599d1dc2c51aa2e5d80afe49523c261a74933df395c15c520
# via
# black
# mypy
mypy-protobuf==3.5.0
# via -r ortools_requirements.in
numpy==2.2.0
# via
# -r ortools_requirements.in
# -r bazel/ortools_requirements.in
# pandas
# scipy
packaging==23.1
# via black
pandas==2.2.3
# via -r ortools_requirements.in
pathspec==0.11.1
# via black
platformdirs==3.10.0
pandas==2.3.3 \
--hash=sha256:0242fe9a49aa8b4d78a4fa03acb397a58833ef6199e9aa40a95f027bb3a1b6e7 \
--hash=sha256:1611aedd912e1ff81ff41c745822980c49ce4a7907537be8692c8dbc31924593 \
--hash=sha256:1b07204a219b3b7350abaae088f451860223a52cfb8a6c53358e7948735158e5 \
--hash=sha256:1d37b5848ba49824e5c30bedb9c830ab9b7751fd049bc7914533e01c65f79791 \
--hash=sha256:23ebd657a4d38268c7dfbdf089fbc31ea709d82e4923c5ffd4fbd5747133ce73 \
--hash=sha256:2462b1a365b6109d275250baaae7b760fd25c726aaca0054649286bcfbb3e8ec \
--hash=sha256:28083c648d9a99a5dd035ec125d42439c6c1c525098c58af0fc38dd1a7a1b3d4 \
--hash=sha256:2e3ebdb170b5ef78f19bfb71b0dc5dc58775032361fa188e814959b74d726dd5 \
--hash=sha256:318d77e0e42a628c04dc56bcef4b40de67918f7041c2b061af1da41dcff670ac \
--hash=sha256:371a4ab48e950033bcf52b6527eccb564f52dc826c02afd9a1bc0ab731bba084 \
--hash=sha256:376c6446ae31770764215a6c937f72d917f214b43560603cd60da6408f183b6c \
--hash=sha256:3869faf4bd07b3b66a9f462417d0ca3a9df29a9f6abd5d0d0dbab15dac7abe87 \
--hash=sha256:3fd2f887589c7aa868e02632612ba39acb0b8948faf5cc58f0850e165bd46f35 \
--hash=sha256:4793891684806ae50d1288c9bae9330293ab4e083ccd1c5e383c34549c6e4250 \
--hash=sha256:4e0a175408804d566144e170d0476b15d78458795bb18f1304fb94160cabf40c \
--hash=sha256:503cf027cf9940d2ceaa1a93cfb5f8c8c7e6e90720a2850378f0b3f3b1e06826 \
--hash=sha256:5554c929ccc317d41a5e3d1234f3be588248e61f08a74dd17c9eabb535777dc9 \
--hash=sha256:56851a737e3470de7fa88e6131f41281ed440d29a9268dcbf0002da5ac366713 \
--hash=sha256:5caf26f64126b6c7aec964f74266f435afef1c1b13da3b0636c7518a1fa3e2b1 \
--hash=sha256:602b8615ebcc4a0c1751e71840428ddebeb142ec02c786e8ad6b1ce3c8dec523 \
--hash=sha256:6253c72c6a1d990a410bc7de641d34053364ef8bcd3126f7e7450125887dffe3 \
--hash=sha256:6435cb949cb34ec11cc9860246ccb2fdc9ecd742c12d3304989017d53f039a78 \
--hash=sha256:6d21f6d74eb1725c2efaa71a2bfc661a0689579b58e9c0ca58a739ff0b002b53 \
--hash=sha256:6d2cefc361461662ac48810cb14365a365ce864afe85ef1f447ff5a1e99ea81c \
--hash=sha256:74ecdf1d301e812db96a465a525952f4dde225fdb6d8e5a521d47e1f42041e21 \
--hash=sha256:75ea25f9529fdec2d2e93a42c523962261e567d250b0013b16210e1d40d7c2e5 \
--hash=sha256:854d00d556406bffe66a4c0802f334c9ad5a96b4f1f868adf036a21b11ef13ff \
--hash=sha256:8fe25fc7b623b0ef6b5009149627e34d2a4657e880948ec3c840e9402e5c1b45 \
--hash=sha256:900f47d8f20860de523a1ac881c4c36d65efcb2eb850e6948140fa781736e110 \
--hash=sha256:93c2d9ab0fc11822b5eece72ec9587e172f63cff87c00b062f6e37448ced4493 \
--hash=sha256:a16dcec078a01eeef8ee61bf64074b4e524a2a3f4b3be9326420cabe59c4778b \
--hash=sha256:a21d830e78df0a515db2b3d2f5570610f5e6bd2e27749770e8bb7b524b89b450 \
--hash=sha256:a45c765238e2ed7d7c608fc5bc4a6f88b642f2f01e70c0c23d2224dd21829d86 \
--hash=sha256:a637c5cdfa04b6d6e2ecedcb81fc52ffb0fd78ce2ebccc9ea964df9f658de8c8 \
--hash=sha256:a68e15f780eddf2b07d242e17a04aa187a7ee12b40b930bfdd78070556550e98 \
--hash=sha256:b3d11d2fda7eb164ef27ffc14b4fcab16a80e1ce67e9f57e19ec0afaf715ba89 \
--hash=sha256:b468d3dad6ff947df92dcb32ede5b7bd41a9b3cceef0a30ed925f6d01fb8fa66 \
--hash=sha256:b98560e98cb334799c0b07ca7967ac361a47326e9b4e5a7dfb5ab2b1c9d35a1b \
--hash=sha256:bdcd9d1167f4885211e401b3036c0c8d9e274eee67ea8d0758a256d60704cfe8 \
--hash=sha256:bf1f8a81d04ca90e32a0aceb819d34dbd378a98bf923b6398b9a3ec0bf44de29 \
--hash=sha256:c46467899aaa4da076d5abc11084634e2d197e9460643dd455ac3db5856b24d6 \
--hash=sha256:c4fc4c21971a1a9f4bdb4c73978c7f7256caa3e62b323f70d6cb80db583350bc \
--hash=sha256:c503ba5216814e295f40711470446bc3fd00f0faea8a086cbc688808e26f92a2 \
--hash=sha256:d051c0e065b94b7a3cea50eb1ec32e912cd96dba41647eb24104b6c6c14c5788 \
--hash=sha256:d3e28b3e83862ccf4d85ff19cf8c20b2ae7e503881711ff2d534dc8f761131aa \
--hash=sha256:db4301b2d1f926ae677a751eb2bd0e8c5f5319c9cb3f88b0becbbb0b07b34151 \
--hash=sha256:dd7478f1463441ae4ca7308a70e90b33470fa593429f9d4c578dd00d1fa78838 \
--hash=sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b \
--hash=sha256:e19d192383eab2f4ceb30b412b22ea30690c9e618f78870357ae1d682912015a \
--hash=sha256:e32e7cc9af0f1cc15548288a51a3b681cc2a219faa838e995f7dc53dbab1062d \
--hash=sha256:ecaf1e12bdc03c86ad4a7ea848d66c685cb6851d807a26aa245ca3d2017a1908 \
--hash=sha256:ee15f284898e7b246df8087fc82b87b01686f98ee67d85a17b7ab44143a3a9a0 \
--hash=sha256:ee67acbbf05014ea6c763beb097e03cd629961c8a632075eeb34247120abcb4b \
--hash=sha256:f086f6fe114e19d92014a1966f43a3e62285109afe874f067f5abbdcbb10e59c \
--hash=sha256:f8bfc0e12dc78f777f323f55c58649591b2cd0c43534e8355c51d3fede5f4dee
# via -r bazel/ortools_requirements.in
platformdirs==4.5.1 \
--hash=sha256:61d5cdcc6065745cdd94f0f878977f8de9437be93de97c1c12f853c9c0cdcbda \
--hash=sha256:d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31
# via virtualenv
protobuf==6.32.0 \
--hash=sha256:15eba1b86f193a407607112ceb9ea0ba9569aed24f93333fe9a497cf2fda37d3 \
--hash=sha256:501fe6372fd1c8ea2a30b4d9be8f87955a64d6be9c88a973996cef5ef6f0abf1 \
--hash=sha256:75a2aab2bd1aeb1f5dc7c5f33bcb11d82ea8c055c9becbb41c26a8c43fd7092c \
--hash=sha256:7db8ed09024f115ac877a1427557b838705359f047b2ff2f2b2364892d19dacb \
--hash=sha256:84f9e3c1ff6fb0308dbacb0950d8aa90694b0d0ee68e75719cb044b7078fe741 \
--hash=sha256:a81439049127067fc49ec1d36e25c6ee1d1a2b7be930675f919258d03c04e7d2 \
--hash=sha256:a8bdbb2f009cfc22a36d031f22a625a38b615b5e19e558a7b756b3279723e68e \
--hash=sha256:ba377e5b67b908c8f3072a57b63e2c6a4cbd18aea4ed98d2584350dbf46f2783 \
--hash=sha256:d52691e5bee6c860fff9a1c86ad26a13afbeb4b168cd4445c922b7e2cf85aaf0
# via
# black
# virtualenv
protobuf==6.31.1
# via
# -r ortools_requirements.in
# -r bazel/ortools_requirements.in
# mypy-protobuf
python-dateutil==2.8.2
python-dateutil==2.9.0.post0 \
--hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427
# via pandas
pytz==2022.7.1
pytz==2025.2 \
--hash=sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3 \
--hash=sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00
# via pandas
requests==2.32.4
# via -r ortools_requirements.in
scipy==1.14.1
# via -r ortools_requirements.in
six==1.16.0
requests==2.32.4 \
--hash=sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c \
--hash=sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422
# via -r bazel/ortools_requirements.in
scipy==1.16.3 \
--hash=sha256:0151a0749efeaaab78711c78422d413c583b8cdd2011a3c1d6c794938ee9fdb2 \
--hash=sha256:01e87659402762f43bd2fee13370553a17ada367d42e7487800bf2916535aecb \
--hash=sha256:03192a35e661470197556de24e7cb1330d84b35b94ead65c46ad6f16f6b28f2a \
--hash=sha256:0553371015692a898e1aa858fed67a3576c34edefa6b7ebdb4e9dde49ce5c203 \
--hash=sha256:062246acacbe9f8210de8e751b16fc37458213f124bef161a5a02c7a39284304 \
--hash=sha256:0c3b4dd3d9b08dbce0f3440032c52e9e2ab9f96ade2d3943313dfe51a7056959 \
--hash=sha256:0c623a54f7b79dd88ef56da19bc2873afec9673a48f3b85b18e4d402bdd29a5a \
--hash=sha256:16b8bc35a4cc24db80a0ec836a9286d0e31b2503cb2fd7ff7fb0e0374a97081d \
--hash=sha256:1fb2472e72e24d1530debe6ae078db70fb1605350c88a3d14bc401d6306dbffe \
--hash=sha256:21d9d6b197227a12dcbf9633320a4e34c6b0e51c57268df255a0942983bac562 \
--hash=sha256:2a207a6ce9c24f1951241f4693ede2d393f59c07abc159b2cb2be980820e01fb \
--hash=sha256:2b71d93c8a9936046866acebc915e2af2e292b883ed6e2cbe5c34beb094b82d9 \
--hash=sha256:2d1ae2cf0c350e7705168ff2429962a89ad90c2d49d1dd300686d8b2a5af22fc \
--hash=sha256:3a4c460301fb2cffb7f88528f30b3127742cff583603aa7dc964a52c463b385d \
--hash=sha256:3d4a07a8e785d80289dfe66b7c27d8634a773020742ec7187b85ccc4b0e7b686 \
--hash=sha256:40be6cf99e68b6c4321e9f8782e7d5ff8265af28ef2cd56e9c9b2638fa08ad97 \
--hash=sha256:4aff59800a3b7f786b70bfd6ab551001cb553244988d7d6b8299cb1ea653b353 \
--hash=sha256:50a3dbf286dbc7d84f176f9a1574c705f277cb6565069f88f60db9eafdbe3ee2 \
--hash=sha256:532fb5ad6a87e9e9cd9c959b106b73145a03f04c7d57ea3e6f6bb60b86ab0876 \
--hash=sha256:53c3844d527213631e886621df5695d35e4f6a75f620dca412bcd292f6b87d78 \
--hash=sha256:56edc65510d1331dae01ef9b658d428e33ed48b4f77b1d51caf479a0253f96dc \
--hash=sha256:57d01cb6f85e34f0946b33caa66e892aae072b64b034183f3d87c4025802a119 \
--hash=sha256:5803c5fadd29de0cf27fa08ccbfe7a9e5d741bf63e4ab1085437266f12460ff9 \
--hash=sha256:6020470b9d00245926f2d5bb93b119ca0340f0d564eb6fbaad843eaebf9d690f \
--hash=sha256:63d3cdacb8a824a295191a723ee5e4ea7768ca5ca5f2838532d9f2e2b3ce2135 \
--hash=sha256:663b8d66a8748051c3ee9c96465fb417509315b99c71550fda2591d7dd634234 \
--hash=sha256:72d1717fd3b5e6ec747327ce9bda32d5463f472c9dce9f54499e81fbd50245a1 \
--hash=sha256:7dc1360c06535ea6116a2220f760ae572db9f661aba2d88074fe30ec2aa1ff88 \
--hash=sha256:7f68154688c515cdb541a31ef8eb66d8cd1050605be9dcd74199cbd22ac739bc \
--hash=sha256:81fc5827606858cf71446a5e98715ba0e11f0dbc83d71c7409d05486592a45d6 \
--hash=sha256:875555ce62743e1d54f06cdf22c1e0bc47b91130ac40fe5d783b6dfa114beeb6 \
--hash=sha256:8b3c820ddb80029fe9f43d61b81d8b488d3ef8ca010d15122b152db77dc94c22 \
--hash=sha256:8be1ca9170fcb6223cc7c27f4305d680ded114a1567c0bd2bfcbf947d1b17511 \
--hash=sha256:8d09d72dc92742988b0e7750bddb8060b0c7079606c0d24a8cc8e9c9c11f9079 \
--hash=sha256:9452781bd879b14b6f055b26643703551320aa8d79ae064a71df55c00286a184 \
--hash=sha256:96491a6a54e995f00a28a3c3badfff58fd093bf26cd5fb34a2188c8c756a3a2c \
--hash=sha256:9b9c9c07b6d56a35777a1b4cc8966118fb16cfd8daf6743867d17d36cfad2d40 \
--hash=sha256:a8a26c78ef223d3e30920ef759e25625a0ecdd0d60e5a8818b7513c3e5384cf2 \
--hash=sha256:aadd23f98f9cb069b3bd64ddc900c4d277778242e961751f77a8cb5c4b946fb0 \
--hash=sha256:b7180967113560cca57418a7bc719e30366b47959dd845a93206fbed693c867e \
--hash=sha256:b7c5f1bda1354d6a19bc6af73a649f8285ca63ac6b52e64e658a5a11d4d69800 \
--hash=sha256:b81c27fc41954319a943d43b20e07c40bdcd3ff7cf013f4fb86286faefe546c4 \
--hash=sha256:bb61878c18a470021fb515a843dc7a76961a8daceaaaa8bad1332f1bf4b54657 \
--hash=sha256:bea0a62734d20d67608660f69dcda23e7f90fb4ca20974ab80b6ed40df87a005 \
--hash=sha256:c5192722cffe15f9329a3948c4b1db789fbb1f05c97899187dcf009b283aea70 \
--hash=sha256:c97176013d404c7346bf57874eaac5187d969293bf40497140b0a2b2b7482e07 \
--hash=sha256:cd13e354df9938598af2be05822c323e97132d5e6306b83a3b4ee6724c6e522e \
--hash=sha256:d2ec56337675e61b312179a1ad124f5f570c00f920cc75e1000025451b88241c \
--hash=sha256:d3837938ae715fc0fe3c39c0202de3a8853aff22ca66781ddc2ade7554b7e2cc \
--hash=sha256:d9f48cafc7ce94cf9b15c6bffdc443a81a27bf7075cf2dcd5c8b40f85d10c4e7 \
--hash=sha256:da7763f55885045036fabcebd80144b757d3db06ab0861415d1c3b7c69042146 \
--hash=sha256:deb3841c925eeddb6afc1e4e4a45e418d19ec7b87c5df177695224078e8ec733 \
--hash=sha256:e1d27cbcb4602680a49d787d90664fa4974063ac9d4134813332a8c53dbe667c \
--hash=sha256:e5d42a9472e7579e473879a1990327830493a7047506d58d73fc429b84c1d49d \
--hash=sha256:e7efa2681ea410b10dde31a52b18b0154d66f2485328830e45fdf183af5aefc6 \
--hash=sha256:eab43fae33a0c39006a88096cd7b4f4ef545ea0447d250d5ac18202d40b6611d \
--hash=sha256:f2622206f5559784fa5c4b53a950c3c7c1cf3e84ca1b9c4b6c03f062f289ca26 \
--hash=sha256:f379b54b77a597aa7ee5e697df0d66903e41b9c85a6dd7946159e356319158e8 \
--hash=sha256:f667a4542cc8917af1db06366d3f78a5c8e83badd56409f94d1eac8d8d9133fa \
--hash=sha256:fb4b29f4cf8cc5a8d628bc8d8e26d12d7278cd1f219f22698a378c3d67db5e4b \
--hash=sha256:ffa6eea95283b2b8079b821dc11f50a17d0571c92b43e2b5b12764dc5f9b285d
# via -r bazel/ortools_requirements.in
six==1.17.0 \
--hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \
--hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81
# via python-dateutil
svgwrite==1.4.3
# via -r ortools_requirements.in
types-protobuf==4.24.0.0
svgwrite==1.4.3 \
--hash=sha256:bb6b2b5450f1edbfa597d924f9ac2dd099e625562e492021d7dd614f65f8a22d
# via -r bazel/ortools_requirements.in
types-protobuf==6.32.1.20251105 \
--hash=sha256:641002611ff87dd9fedc38a39a29cacb9907ae5ce61489b53e99ca2074bef764 \
--hash=sha256:a15109d38f7cfefd2539ef86d3f93a6a41c7cad53924f8aa1a51eaddbb72a660
# via mypy-protobuf
typing-extensions==4.13.1
typing-extensions==4.15.0 \
--hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466 \
--hash=sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548
# via
# -r ortools_requirements.in
# -r bazel/ortools_requirements.in
# mypy
tzdata==2023.3
tzdata==2025.3 \
--hash=sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1 \
--hash=sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7
# via pandas
urllib3==2.5.0
urllib3==2.6.3 \
--hash=sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed \
--hash=sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4
# via requests
virtualenv==20.28.1
# via -r ortools_requirements.in
virtualenv==20.35.4 \
--hash=sha256:643d3914d73d3eeb0c552cbb12d7e82adf0e504dbf86a3182f8771a153a1971c \
--hash=sha256:c21c9cede36c9753eeade68ba7d523529f228a403463376cf821eaae2b650f1b
# via -r bazel/ortools_requirements.in

View File

@@ -0,0 +1,94 @@
# Copyright 2010-2025 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.
"""run_binary_test will run a xx_binary as test with the given args.
"""
load("@bazel_skylib//rules:expand_template.bzl", "expand_template")
load("@rules_shell//shell:sh_test.bzl", "sh_test")
def parse_label(label):
"""Parse a label into (package, name).
Args:
label: string in relative or absolute form.
Returns:
Pair of strings: package, relative_name
Raises:
ValueError for malformed label (does not do an exhaustive validation)
"""
if label.startswith("//"):
label = label[2:] # drop the leading //
colon_split = label.split(":")
if len(colon_split) == 1: # no ":" in label
pkg = label
_, _, target = label.rpartition("/")
else:
pkg, target = colon_split # fails if len(colon_split) != 2
else:
colon_split = label.split(":")
if len(colon_split) == 1: # no ":" in label
pkg, target = native.package_name(), label
else:
pkg2, target = colon_split # fails if len(colon_split) != 2
pkg = native.package_name() + ("/" + pkg2 if pkg2 else "")
return pkg, target
def run_binary_test(
name,
binary,
template = "//bazel:test_runner_template",
args = [],
data = [],
**kwargs):
"""Create a sh_test to run the given binary as test.
Args:
name: name of the test target.
binary: name of the binary target to run.
template: template file for executing the binary target.
args: args to use to run the binary.
data: data files required by this test.
**kwargs: other attributes that are applicable to tests, size, tags, etc.
"""
shell_script = name + ".sh"
# Get the path to the binary we want to run.
binary_pkg, binary_name = parse_label(binary)
binary_path = "/".join([binary_pkg, binary_name])
# We would like to Include args in the generated shell script, so the "blaze-bin/.../test" can
# be run manually. Unfortunately expand_template does not resolve $(location) and other Make
# variables so we only pass them in `sh_test` below.
expand_template(
name = name + "_gensh",
template = template,
out = shell_script,
testonly = 1,
substitutions = {
"{package_name}": native.package_name(),
"{target}": name,
"{binary_path}": binary_path,
},
)
sh_test(
name = name,
testonly = 1,
srcs = [shell_script],
data = data + [binary],
args = args,
**kwargs
)

View File

@@ -14,7 +14,8 @@
"""Build definitions for SWIG Java."""
load("@bazel_skylib//lib:paths.bzl", "paths")
load("@rules_cc//cc:defs.bzl", "cc_library")
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 <code>swig</code> 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 <code>swig</code> 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,

View File

@@ -1,4 +0,0 @@
ortools
matplotlib
plotly
svgwrite

View File

@@ -20,7 +20,7 @@ This module determines the SCIP library of the system.
IMPORTED Targets
^^^^^^^^^^^^^^^^
This module defines :prop_tgt:`IMPORTED` target ``SCIP::SCIP``, if
This module defines :prop_tgt:`IMPORTED` target ``SCIP::libscip``, if
SCIP has been found.
Result Variables
@@ -45,6 +45,10 @@ find_package(SCIP QUIET NO_MODULE)
# if we found the SCIP cmake package then we are done.
if(SCIP_FOUND)
find_package_handle_standard_args(SCIP CONFIG_MODE)
if(NOT TARGET SCIP::libscip)
message(WARNING "SCIP::libscip not provided")
add_library(SCIP::libscip ALIAS libscip)
endif()
return()
endif()
@@ -69,15 +73,15 @@ else()
set(SCIP_FOUND TRUE)
endif()
if(SCIP_FOUND AND NOT TARGET SCIP::SCIP)
add_library(SCIP::SCIP UNKNOWN IMPORTED)
if(SCIP_FOUND AND NOT TARGET SCIP::libscip)
add_library(SCIP::libscip UNKNOWN IMPORTED)
set_target_properties(SCIP::SCIP PROPERTIES
set_target_properties(SCIP::libscip PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${SCIP_ROOT}/include")
if(APPLE)
set(SCIP_ARCH darwin.x86_64.gnu.opt)
set_property(TARGET SCIP::SCIP PROPERTY IMPORTED_LOCATION
set_property(TARGET SCIP::libscip PROPERTY IMPORTED_LOCATION
-force_load
${SCIP_ROOT}/lib/libscip.a
${SCIP_ROOT}/lib/libscipopt.a
@@ -86,14 +90,14 @@ if(SCIP_FOUND AND NOT TARGET SCIP::SCIP)
)
elseif(UNIX)
set(SCIP_ARCH linux.x86_64.gnu.opt)
set_property(TARGET SCIP::SCIP PROPERTY IMPORTED_LOCATION
set_property(TARGET SCIP::libscip PROPERTY IMPORTED_LOCATION
${SCIP_ROOT}/lib/libscip.a
${SCIP_ROOT}/lib/libscipopt.a
${SCIP_ROOT}/lib/libsoplex.a
${SCIP_ROOT}/lib/libsoplex.${SCIP_ARCH}.a
)
elseif(MSVC)
set_property(TARGET SCIP::SCIP PROPERTY IMPORTED_LOCATION
set_property(TARGET SCIP::libscip PROPERTY IMPORTED_LOCATION
${SCIP_ROOT}/lib/scip.lib
${SCIP_ROOT}/lib/soplex.lib
ignore:4006

View File

@@ -159,6 +159,7 @@ help:
@echo
@echo -e "\t${BOLD}NOCACHE=1${RESET}: use 'docker build --no-cache' when building container (default use cache)."
@echo -e "\t${BOLD}VERBOSE=1${RESET}: use 'docker build --progress=plain' when building container."
@echo -e "\t${BOLD}CMAKE_BUILD_PARALLEL_LEVEL=4${RESET}: number of concurrent processes to use when building."
@echo
@echo -e "branch: $(BRANCH)"
@echo -e "sha1: $(SHA1)"
@@ -190,6 +191,10 @@ ifdef VERBOSE
DOCKER_BUILD_CMD := ${DOCKER_BUILD_CMD} --progress=plain
DOCKER_BUILDX_CMD := ${DOCKER_BUILDX_CMD} --progress=plain
endif
ifdef CMAKE_BUILD_PARALLEL_LEVEL
DOCKER_BUILD_CMD := ${DOCKER_BUILD_CMD} --build-arg CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL}
DOCKER_BUILDX_CMD := ${DOCKER_BUILDX_CMD} --build-arg CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL}
endif
DOCKER_RUN_CMD := docker run --rm --init --net=host
# Currently supported distro
@@ -803,4 +808,4 @@ clean: clean_all clean_platforms clean_toolchains clean_web clean_vagrant clean_
distclean: clean
-docker container rm -f $$(docker container ls -aq)
-docker image rm -f $$(docker image ls -aq)
-vagrant box remove -f generic/freebsd12
-vagrant box remove -f generic/freebsd14

View File

@@ -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
<nav for="cmake"> |
<a href="#requirement">Requirement</a> |
@@ -88,7 +77,7 @@ CMake as a standalone project or incorporate it into an existing CMake project.
## Requirement
You'll need:
* `CMake >= 3.18`.
* `CMake >= 3.24`.
* A C++20 compiler (GCC 10 or above)
## Solvers supported

67
cmake/ccache.cmake Normal file
View File

@@ -0,0 +1,67 @@
# Copyright 2010-2025 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 UNIX)
return()
endif()
find_program(CCACHE_PROGRAM ccache)
if(CCACHE_PROGRAM)
# Set up wrapper scripts
set(C_LAUNCHER "${CCACHE_PROGRAM}")
set(CXX_LAUNCHER "${CCACHE_PROGRAM}")
file(WRITE "${CMAKE_BINARY_DIR}/launch-c"
"#!/usr/bin/env sh\n"
"# Xcode generator doesn't include the compiler as the\n"
"# first argument, Ninja and Makefiles do. Handle both cases.\n"
"if [ \"$1\" = \"${CMAKE_C_COMPILER}\" ]; then\n"
" shift\n"
"fi\n"
"export CCACHE_CPP2=true\n"
"exec \"${C_LAUNCHER}\" \"${CMAKE_C_COMPILER}\" \"$@\"\n"
)
file(WRITE "${CMAKE_BINARY_DIR}/launch-cxx"
"#!/usr/bin/env sh\n"
"# Xcode generator doesn't include the compiler as the\n"
"# first argument, Ninja and Makefiles do. Handle both cases.\n"
"if [ \"$1\" = \"${CMAKE_CXX_COMPILER}\" ]; then\n"
" shift\n"
"fi\n"
"export CCACHE_CPP2=true\n"
"exec \"${CXX_LAUNCHER}\" \"${CMAKE_CXX_COMPILER}\" \"$@\"\n"
)
file(CHMOD
"${CMAKE_BINARY_DIR}/launch-c"
"${CMAKE_BINARY_DIR}/launch-cxx"
FILE_PERMISSIONS
OWNER_READ OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
if(CMAKE_GENERATOR STREQUAL "Xcode")
# Set Xcode project attributes to route compilation and linking
# through our scripts
set(CMAKE_XCODE_ATTRIBUTE_CC "${CMAKE_BINARY_DIR}/launch-c")
set(CMAKE_XCODE_ATTRIBUTE_CXX "${CMAKE_BINARY_DIR}/launch-cxx")
set(CMAKE_XCODE_ATTRIBUTE_LD "${CMAKE_BINARY_DIR}/launch-c")
set(CMAKE_XCODE_ATTRIBUTE_LDPLUSPLUS "${CMAKE_BINARY_DIR}/launch-cxx")
else()
# Support Unix Makefiles and Ninja
set(CMAKE_C_COMPILER_LAUNCHER "${CMAKE_BINARY_DIR}/launch-c")
set(CMAKE_CXX_COMPILER_LAUNCHER "${CMAKE_BINARY_DIR}/launch-cxx")
endif()
message(STATUS "CCache enabled")
else()
message(WARNING "CCache disabled")
endif()

View File

@@ -121,9 +121,6 @@ if(BUILD_TESTING)
if(NOT TARGET benchmark::benchmark)
message(FATAL_ERROR "Target benchmark::benchmark not available.")
endif()
if(USE_fuzztest AND NOT TARGET fuzztest::fuzztest)
message(FATAL_ERROR "Target fuzztest::fuzztest not available.")
endif()
endif()
# Check language Dependencies

View File

@@ -15,28 +15,35 @@ if(NOT BUILD_CXX)
return()
endif()
# Basic type
include(CMakePushCheckState)
cmake_push_check_state(RESET)
set(CMAKE_EXTRA_INCLUDE_FILES "cstdint")
include(CheckTypeSize)
check_type_size("long" SIZEOF_LONG LANGUAGE CXX)
message(STATUS "Found long size: ${SIZEOF_LONG}")
check_type_size("long long" SIZEOF_LONG_LONG LANGUAGE CXX)
message(STATUS "Found long long size: ${SIZEOF_LONG_LONG}")
check_type_size("int64_t" SIZEOF_INT64_T LANGUAGE CXX)
message(STATUS "Found int64_t size: ${SIZEOF_INT64_T}")
# Check primitive types
option(CHECK_TYPE "Check primitive type size" OFF)
if(CHECK_TYPE)
include(CMakePushCheckState)
cmake_push_check_state(RESET)
set(CMAKE_EXTRA_INCLUDE_FILES "cstdint")
include(CheckTypeSize)
check_type_size("long" SIZEOF_LONG LANGUAGE CXX)
message(STATUS "Found long size: ${SIZEOF_LONG}")
check_type_size("long long" SIZEOF_LONG_LONG LANGUAGE CXX)
message(STATUS "Found long long size: ${SIZEOF_LONG_LONG}")
check_type_size("int64_t" SIZEOF_INT64_T LANGUAGE CXX)
message(STATUS "Found int64_t size: ${SIZEOF_INT64_T}")
check_type_size("unsigned long" SIZEOF_ULONG LANGUAGE CXX)
message(STATUS "Found unsigned long size: ${SIZEOF_ULONG}")
check_type_size("unsigned long long" SIZEOF_ULONG_LONG LANGUAGE CXX)
message(STATUS "Found unsigned long long size: ${SIZEOF_ULONG_LONG}")
check_type_size("uint64_t" SIZEOF_UINT64_T LANGUAGE CXX)
message(STATUS "Found uint64_t size: ${SIZEOF_UINT64_T}")
check_type_size("unsigned long" SIZEOF_ULONG LANGUAGE CXX)
message(STATUS "Found unsigned long size: ${SIZEOF_ULONG}")
check_type_size("unsigned long long" SIZEOF_ULONG_LONG LANGUAGE CXX)
message(STATUS "Found unsigned long long size: ${SIZEOF_ULONG_LONG}")
check_type_size("uint64_t" SIZEOF_UINT64_T LANGUAGE CXX)
message(STATUS "Found uint64_t size: ${SIZEOF_UINT64_T}")
check_type_size("int *" SIZEOF_INT_P LANGUAGE CXX)
message(STATUS "Found int * size: ${SIZEOF_INT_P}")
cmake_pop_check_state()
check_type_size("int *" SIZEOF_INT_P LANGUAGE CXX)
message(STATUS "Found int * size: ${SIZEOF_INT_P}")
check_type_size("intptr_t" SIZEOF_INTPTR_T LANGUAGE CXX)
message(STATUS "Found intptr_t size: ${SIZEOF_INTPTR_T}")
check_type_size("uintptr_t" SIZEOF_UINTPTR_T LANGUAGE CXX)
message(STATUS "Found uintptr_t size: ${SIZEOF_UINTPTR_T}")
cmake_pop_check_state()
endif()
#############
## FLAGS ##
@@ -72,7 +79,6 @@ if(USE_GLOP)
endif()
if(USE_GLPK)
list(APPEND OR_TOOLS_COMPILE_DEFINITIONS "USE_GLPK")
set(GLPK_DIR glpk)
endif()
if(USE_GUROBI)
set(GUROBI_DIR gurobi)
@@ -86,7 +92,6 @@ if(USE_PDLP)
endif()
if(USE_SCIP)
list(APPEND OR_TOOLS_COMPILE_DEFINITIONS "USE_SCIP")
set(GSCIP_DIR gscip)
endif()
if(USE_CPLEX)
list(APPEND OR_TOOLS_COMPILE_DEFINITIONS "USE_CPLEX")
@@ -105,6 +110,7 @@ if(MSVC)
"/D_CRT_SECURE_NO_WARNINGS"
"/D_CRT_SECURE_NO_DEPRECATE"
"/MP" # Build with multiple processes
"/Zc:inline" # Remove unreferenced COMDAT
"/Zc:preprocessor" # Enable preprocessor conformance mode
"/fp:precise"
)
@@ -132,7 +138,11 @@ if(MSVC)
"/wd4996" # The compiler encountered a deprecated declaration.
)
else()
list(APPEND OR_TOOLS_COMPILE_OPTIONS "-fwrapv")
list(APPEND OR_TOOLS_COMPILE_OPTIONS
"-fwrapv"
"-Wno-range-loop-construct"
"-Wno-sign-compare"
)
endif()
# Link option
@@ -197,6 +207,7 @@ function(ortools_cxx_test)
target_compile_options(${TEST_NAME} PRIVATE ${TEST_COMPILE_OPTIONS})
target_link_libraries(${TEST_NAME} PRIVATE
${PROJECT_NAMESPACE}::ortools
${PROJECT_NAMESPACE}::base_gmock
${TEST_LINK_LIBRARIES}
)
target_link_options(${TEST_NAME} PRIVATE ${TEST_LINK_OPTIONS})
@@ -213,13 +224,11 @@ function(ortools_cxx_test)
INSTALL_RPATH "$ORIGIN/${libdir_relative_path}:$ORIGIN")
endif()
if(BUILD_TESTING)
add_test(
NAME cxx_${TEST_NAME}
COMMAND ${TEST_NAME}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
)
endif()
add_test(
NAME cxx_${TEST_NAME}
COMMAND ${TEST_NAME}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
)
message(STATUS "Configuring test ${TEST_NAME} ...DONE")
endfunction()
@@ -231,7 +240,7 @@ endfunction()
# Parameters:
# NAME: CMake target name
# SOURCES: List of source files
# [TYPE]: SHARED or STATIC
# [TYPE]: SHARED, STATIC or INTERFACE
# [COMPILE_DEFINITIONS]: List of private compile definitions
# [COMPILE_OPTIONS]: List of private compile options
# [LINK_LIBRARIES]: List of **public** libraries to use when linking
@@ -275,16 +284,18 @@ function(ortools_cxx_library)
message(STATUS "Configuring library ${LIBRARY_NAME} ...")
add_library(${LIBRARY_NAME} ${LIBRARY_TYPE} "")
target_sources(${LIBRARY_NAME} PRIVATE ${LIBRARY_SOURCES})
target_include_directories(${LIBRARY_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_compile_definitions(${LIBRARY_NAME} PRIVATE ${LIBRARY_COMPILE_DEFINITIONS})
target_compile_features(${LIBRARY_NAME} PRIVATE cxx_std_17)
target_compile_options(${LIBRARY_NAME} PRIVATE ${LIBRARY_COMPILE_OPTIONS})
target_link_libraries(${LIBRARY_NAME} PUBLIC
${PROJECT_NAMESPACE}::ortools
${LIBRARY_LINK_LIBRARIES}
)
target_link_options(${LIBRARY_NAME} PRIVATE ${LIBRARY_LINK_OPTIONS})
if(LIBRARY_TYPE STREQUAL "INTERFACE")
target_include_directories(${LIBRARY_NAME} INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(${LIBRARY_NAME} INTERFACE ${PROJECT_NAMESPACE}::ortools ${LIBRARY_LINK_LIBRARIES})
else()
target_sources(${LIBRARY_NAME} PRIVATE ${LIBRARY_SOURCES})
target_include_directories(${LIBRARY_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_compile_definitions(${LIBRARY_NAME} PRIVATE ${LIBRARY_COMPILE_DEFINITIONS})
target_compile_features(${LIBRARY_NAME} PRIVATE cxx_std_17)
target_compile_options(${LIBRARY_NAME} PRIVATE ${LIBRARY_COMPILE_OPTIONS})
target_link_libraries(${LIBRARY_NAME} PUBLIC ${PROJECT_NAMESPACE}::ortools ${LIBRARY_LINK_LIBRARIES})
target_link_options(${LIBRARY_NAME} PRIVATE ${LIBRARY_LINK_OPTIONS})
endif()
include(GNUInstallDirs)
if(APPLE)
@@ -301,6 +312,126 @@ function(ortools_cxx_library)
message(STATUS "Configuring library ${LIBRARY_NAME} ...DONE")
endfunction()
# ortools_cxx_binary()
# CMake function to generate and build C++ library.
# Parameters:
# NAME: CMake target name
# SOURCES: List of source files
# [COMPILE_DEFINITIONS]: List of private compile definitions
# [COMPILE_OPTIONS]: List of private compile options
# [LINK_LIBRARIES]: List of **public** libraries to use when linking
# note: ortools::ortools is always linked to the target
# [LINK_OPTIONS]: List of private link options
# e.g.:
# ortools_cxx_binary(
# NAME
# foo_bar_binary
# SOURCES
# bar_binary.cc
# ${PROJECT_SOURCE_DIR}/ortools/foo/bar_binary.cc
# LINK_LIBRARIES
# GTest::gmock
# GTest::gtest_main
# TESTING
# )
function(ortools_cxx_binary)
set(options "TESTING")
set(oneValueArgs "NAME")
set(multiValueArgs
"SOURCES;COMPILE_DEFINITIONS;COMPILE_OPTIONS;LINK_LIBRARIES;LINK_OPTIONS")
cmake_parse_arguments(BINARY
"${options}"
"${oneValueArgs}"
"${multiValueArgs}"
${ARGN}
)
if(BINARY_TESTING AND NOT BUILD_TESTING)
return()
endif()
if(NOT BINARY_NAME)
message(FATAL_ERROR "no NAME provided")
endif()
if(NOT BINARY_SOURCES)
message(FATAL_ERROR "no SOURCES provided")
endif()
message(STATUS "Configuring binary ${BINARY_NAME} ...")
add_executable(${BINARY_NAME} ${BINARY_TYPE} "")
target_sources(${BINARY_NAME} PRIVATE ${BINARY_SOURCES})
target_include_directories(${BINARY_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
target_compile_definitions(${BINARY_NAME} PRIVATE ${BINARY_COMPILE_DEFINITIONS})
target_compile_features(${BINARY_NAME} PRIVATE cxx_std_17)
target_compile_options(${BINARY_NAME} PRIVATE ${BINARY_COMPILE_OPTIONS})
target_link_libraries(${BINARY_NAME} PRIVATE ${PROJECT_NAMESPACE}::ortools ${BINARY_LINK_LIBRARIES})
target_link_options(${BINARY_NAME} PRIVATE ${BINARY_LINK_OPTIONS})
include(GNUInstallDirs)
if(APPLE)
set_target_properties(${BINARY_NAME} PROPERTIES
INSTALL_RPATH "@loader_path/../${CMAKE_INSTALL_LIBDIR};@loader_path")
elseif(UNIX)
cmake_path(RELATIVE_PATH CMAKE_INSTALL_FULL_LIBDIR
BASE_DIRECTORY ${CMAKE_INSTALL_FULL_BINDIR}
OUTPUT_VARIABLE libdir_relative_path)
set_target_properties(${BINARY_NAME} PROPERTIES
INSTALL_RPATH "$ORIGIN/${libdir_relative_path}:$ORIGIN")
endif()
add_executable(${PROJECT_NAMESPACE}::${BINARY_NAME} ALIAS ${BINARY_NAME})
message(STATUS "Configuring binary ${BINARY_NAME} ...DONE")
endfunction()
find_package(Python3 COMPONENTS Interpreter)
# ortools_cxx_bintest()
# CMake function to generate and build C++ test.
# Parameters:
# NAME: CMake target name
# SCRIPT: The script to run the test.
# e.g.:
# ortools_cxx_bintest(
# NAME
# foo_bar_bintest
# SCRIPT
# foo_bar.bintest
# ENVIRONMENT
# "BINTEST_foo_bar=$<TARGET_FILE:foo_bar_binary>"
# "BINTEST_foo_bar_data=$(CMAKE_CURRENT_SOURCE_DIR)/foo_bar_data.txt"
# )
function(ortools_cxx_bintest)
set(options "")
set(oneValueArgs "NAME;SCRIPT")
set(multiValueArgs "ENVIRONMENT")
cmake_parse_arguments(BINTEST
"${options}"
"${oneValueArgs}"
"${multiValueArgs}"
${ARGN}
)
if(NOT BINTEST_NAME)
message(FATAL_ERROR "no NAME provided")
endif()
if(NOT BINTEST_SCRIPT)
message(FATAL_ERROR "no SCRIPT provided")
endif()
if(NOT Python3_Interpreter_FOUND)
message(WARNING "No python3 interpreter found, the bintest ${BINTEST_NAME} is disable")
return()
endif()
message(STATUS "Configuring bintest ${BINTEST_NAME} ...")
add_test(
NAME ${BINTEST_NAME}
COMMAND ${Python3_EXECUTABLE} -m tools.testing.bintest_script_launcher ${BINTEST_SCRIPT}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
)
set_tests_properties(${BINTEST_NAME} PROPERTIES
ENVIRONMENT "${BINTEST_ENVIRONMENT}"
)
message(STATUS "Configuring bintest ${BINTEST_NAME} ...DONE")
endfunction()
##################
## PROTO FILE ##
##################
@@ -405,7 +536,6 @@ file(GLOB_RECURSE OR_TOOLS_PROTO_FILES RELATIVE ${PROJECT_SOURCE_DIR}
"ortools/glop/*.proto"
"ortools/graph/*.proto"
"ortools/linear_solver/*.proto"
"ortools/linear_solver/*.proto"
"ortools/packing/*.proto"
"ortools/sat/*.proto"
"ortools/scheduling/*.proto"
@@ -416,16 +546,21 @@ if(USE_PDLP OR BUILD_MATH_OPT)
file(GLOB_RECURSE PDLP_PROTO_FILES RELATIVE ${PROJECT_SOURCE_DIR} "ortools/pdlp/*.proto")
list(APPEND OR_TOOLS_PROTO_FILES ${PDLP_PROTO_FILES})
endif()
if(USE_SCIP OR BUILD_MATH_OPT)
file(GLOB_RECURSE GSCIP_PROTO_FILES RELATIVE ${PROJECT_SOURCE_DIR} "ortools/gscip/*.proto")
list(APPEND OR_TOOLS_PROTO_FILES ${GSCIP_PROTO_FILES})
endif()
# ORTools proto
generate_proto_library(
NAME ortools
FILES ${OR_TOOLS_PROTO_FILES})
# Routing proto
file(GLOB_RECURSE ROUTING_PROTO_FILES RELATIVE ${PROJECT_SOURCE_DIR}
"ortools/routing/parsers/*.proto"
)
generate_proto_library(
NAME routing
FILES ${ROUTING_PROTO_FILES}
LINK_LIBRARIES ${PROJECT_NAMESPACE}::ortools_proto)
# MathOpt proto
if(BUILD_MATH_OPT)
file(GLOB_RECURSE MATH_OPT_PROTO_FILES RELATIVE ${PROJECT_SOURCE_DIR}
@@ -497,6 +632,11 @@ target_sources(${PROJECT_NAME} PRIVATE
$<TARGET_OBJECTS:${PROJECT_NAMESPACE}::ortools_proto>)
add_dependencies(${PROJECT_NAME} ${PROJECT_NAMESPACE}::ortools_proto)
# Add ${PROJECT_NAMESPACE}::routing_proto to libortools
target_sources(${PROJECT_NAME} PRIVATE
$<TARGET_OBJECTS:${PROJECT_NAMESPACE}::routing_proto>)
add_dependencies(${PROJECT_NAME} ${PROJECT_NAMESPACE}::routing_proto)
if(BUILD_MATH_OPT)
# Add ${PROJECT_NAMESPACE}::math_opt_proto to libortools
target_sources(${PROJECT_NAME} PRIVATE
@@ -513,17 +653,15 @@ foreach(SUBPROJECT IN ITEMS
linear_solver
bop
glop
${GLPK_DIR}
${GSCIP_DIR}
${GUROBI_DIR}
${PDLP_DIR}
sat
xpress
lp_data
packing
scheduling
set_cover
port
third_party_solvers
util)
add_subdirectory(ortools/${SUBPROJECT})
#target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_NAME}_${SUBPROJECT})
@@ -531,6 +669,13 @@ foreach(SUBPROJECT IN ITEMS
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}_${SUBPROJECT})
endforeach()
if(USE_GLPK)
add_subdirectory(ortools/third_party_solvers/glpk)
#target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_NAME}_glpk)
target_sources(${PROJECT_NAME} PRIVATE $<TARGET_OBJECTS:${PROJECT_NAME}_glpk>)
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}_glpk)
endif()
if(BUILD_MATH_OPT)
add_subdirectory(ortools/${MATH_OPT_DIR})
target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_NAME}_math_opt)
@@ -544,6 +689,10 @@ add_subdirectory(ortools/linear_solver/proto_solver)
target_sources(${PROJECT_NAME} PRIVATE $<TARGET_OBJECTS:${PROJECT_NAME}_linear_solver_proto_solver>)
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}_linear_solver_proto_solver)
add_subdirectory(ortools/routing/parsers)
target_sources(${PROJECT_NAME} PRIVATE $<TARGET_OBJECTS:${PROJECT_NAME}_routing_parsers>)
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}_routing_parsers)
# Dependencies
if(APPLE)
set_target_properties(${PROJECT_NAME} PROPERTIES
@@ -579,9 +728,20 @@ if(BUILD_CXX_DOC)
# add a target to generate API documentation with Doxygen
find_package(Doxygen REQUIRED)
if(DOXYGEN_FOUND)
configure_file(${PROJECT_SOURCE_DIR}/ortools/cpp/Doxyfile.in ${PROJECT_BINARY_DIR}/cpp/Doxyfile @ONLY)
configure_file(
${PROJECT_SOURCE_DIR}/ortools/cpp/Doxyfile.in
${PROJECT_BINARY_DIR}/cpp/Doxyfile
@ONLY)
configure_file(
${PROJECT_SOURCE_DIR}/ortools/cpp/dirs.cpp.dox.in
${PROJECT_BINARY_DIR}/ortools/dirs.cpp.dox
@ONLY)
configure_file(
${PROJECT_SOURCE_DIR}/ortools/cpp/main.cpp.dox.in
${PROJECT_BINARY_DIR}/ortools/main.cpp.dox
@ONLY)
file(DOWNLOAD
https://raw.githubusercontent.com/jothepro/doxygen-awesome-css/v2.1.0/doxygen-awesome.css
https://raw.githubusercontent.com/jothepro/doxygen-awesome-css/v2.3.4/doxygen-awesome.css
${PROJECT_BINARY_DIR}/cpp/doxygen-awesome.css
SHOW_PROGRESS
)
@@ -590,9 +750,14 @@ if(BUILD_CXX_DOC)
COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_BINARY_DIR}/docs/cpp
COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/cpp/Doxyfile
DEPENDS
${PROJECT_NAMESPACE}::ortools
${PROJECT_BINARY_DIR}/cpp/Doxyfile
${PROJECT_BINARY_DIR}/cpp/doxygen-awesome.css
${PROJECT_SOURCE_DIR}/ortools/doxygen/header.html
${PROJECT_SOURCE_DIR}/ortools/doxygen/DoxygenLayout.xml
${PROJECT_SOURCE_DIR}/ortools/cpp/stylesheet.css
${PROJECT_BINARY_DIR}/ortools/main.cpp.dox
${PROJECT_BINARY_DIR}/ortools/dirs.cpp.dox
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
COMMENT "Generating C++ API documentation with Doxygen"
VERBATIM)
@@ -620,7 +785,8 @@ install(TARGETS ${PROJECT_NAME}
install(EXPORT ${PROJECT_NAME}Targets
NAMESPACE ${PROJECT_NAMESPACE}::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
COMPONENT Devel)
install(DIRECTORY ortools
TYPE INCLUDE
COMPONENT Devel

View File

@@ -11,6 +11,10 @@
# See the License for the specific language governing permissions and
# limitations under the License.
# We are using FetchContent OVERRIDE_FIND_PACKAGE introduced in 3.24
# And SYSTEM introduced in 3.25.
cmake_minimum_required(VERSION 3.25)
# ##############################################################################
# SWIG (WIN32)
# ##############################################################################
@@ -60,14 +64,17 @@ set(CMAKE_Fortran_COMPILER OFF)
if(BUILD_ZLIB)
message(CHECK_START "Fetching ZLIB")
list(APPEND CMAKE_MESSAGE_INDENT " ")
set(ZLIB_BUILD_EXAMPLES OFF)
FetchContent_Declare(
ZLIB
GIT_REPOSITORY "https://github.com/madler/ZLIB.git"
GIT_TAG "v1.3.1"
GIT_SHALLOW TRUE
UPDATE_COMMAND git reset --hard
PATCH_COMMAND git apply --ignore-whitespace
"${CMAKE_CURRENT_LIST_DIR}/../../patches/ZLIB-v1.3.1.patch")
"${CMAKE_CURRENT_LIST_DIR}/../../patches/ZLIB-v1.3.1.patch"
SYSTEM
)
set(ZLIB_BUILD_EXAMPLES OFF)
FetchContent_MakeAvailable(ZLIB)
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(CHECK_PASS "fetched")
@@ -79,17 +86,19 @@ endif()
if(BUILD_BZip2)
message(CHECK_START "Fetching BZip2")
list(APPEND CMAKE_MESSAGE_INDENT " ")
set(ENABLE_LIB_ONLY ON)
set(ENABLE_TESTS OFF)
FetchContent_Declare(
BZip2
GIT_REPOSITORY "https://gitlab.com/bzip2/bzip2.git"
GIT_TAG "master"
# GIT_TAG "bzip2-1.0.8" # CMake support not available
GIT_SHALLOW TRUE
UPDATE_COMMAND git reset --hard
PATCH_COMMAND git apply --ignore-whitespace
"${CMAKE_CURRENT_LIST_DIR}/../../patches/bzip2.patch"
SYSTEM
)
set(ENABLE_LIB_ONLY ON)
set(ENABLE_TESTS OFF)
FetchContent_MakeAvailable(BZip2)
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(CHECK_PASS "fetched")
@@ -101,22 +110,31 @@ endif()
if(BUILD_absl)
message(CHECK_START "Fetching Abseil-cpp")
list(APPEND CMAKE_MESSAGE_INDENT " ")
FetchContent_Declare(
absl
GIT_REPOSITORY "https://github.com/abseil/abseil-cpp.git"
GIT_TAG "20250814.1"
GIT_SHALLOW TRUE
UPDATE_COMMAND git reset --hard
PATCH_COMMAND git apply --ignore-whitespace
"${CMAKE_CURRENT_LIST_DIR}/../../patches/abseil-cpp-20250814.1.patch"
OVERRIDE_FIND_PACKAGE
SYSTEM
)
set(ABSL_USE_SYSTEM_INCLUDES ON)
# We want Abseil to declare what C++ standard it was compiled with.
set(ABSL_PROPAGATE_CXX_STD ON)
if(OR_TOOLS_BUILD_TESTING)
set(ABSL_BUILD_TEST_HELPERS ON)
else()
set(ABSL_BUILD_TEST_HELPERS OFF)
endif()
set(ABSL_USE_EXTERNAL_GOOGLETEST ON)
set(ABSL_FIND_GOOGLETEST OFF)
# We want Abseil to keep the INSTALL rules enabled, even though it is a
# subproject. Otherwise the install rules in this project break.
set(ABSL_ENABLE_INSTALL ON)
set(ABSL_BUILD_TESTING OFF)
FetchContent_Declare(
absl
GIT_REPOSITORY "https://github.com/abseil/abseil-cpp.git"
GIT_TAG "20250512.0"
GIT_SHALLOW TRUE
PATCH_COMMAND git apply --ignore-whitespace
"${CMAKE_CURRENT_LIST_DIR}/../../patches/abseil-cpp-20250512.0.patch"
OVERRIDE_FIND_PACKAGE
)
FetchContent_MakeAvailable(absl)
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(CHECK_PASS "fetched")
@@ -128,20 +146,23 @@ endif()
if(BUILD_Protobuf)
message(CHECK_START "Fetching Protobuf")
list(APPEND CMAKE_MESSAGE_INDENT " ")
FetchContent_Declare(
Protobuf
GIT_REPOSITORY "https://github.com/protocolbuffers/protobuf.git"
GIT_TAG "v33.1"
GIT_SHALLOW TRUE
GIT_SUBMODULES ""
UPDATE_COMMAND git reset --hard
PATCH_COMMAND git apply --ignore-whitespace
"${CMAKE_CURRENT_LIST_DIR}/../../patches/protobuf-v33.1.patch"
OVERRIDE_FIND_PACKAGE # Make package visible for "protobuf-matchers" below
SYSTEM
)
set(protobuf_BUILD_TESTS OFF)
set(protobuf_BUILD_SHARED_LIBS ON)
set(protobuf_BUILD_EXPORT OFF)
set(protobuf_MSVC_STATIC_RUNTIME OFF)
#set(protobuf_BUILD_LIBUPB ON)
FetchContent_Declare(
Protobuf
GIT_REPOSITORY "https://github.com/protocolbuffers/protobuf.git"
GIT_TAG "v31.1"
GIT_SHALLOW TRUE
GIT_SUBMODULES ""
PATCH_COMMAND git apply --ignore-whitespace
"${CMAKE_CURRENT_LIST_DIR}/../../patches/protobuf-v31.1.patch"
)
FetchContent_MakeAvailable(Protobuf)
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(CHECK_PASS "fetched")
@@ -153,14 +174,17 @@ endif()
if(BUILD_re2)
message(CHECK_START "Fetching re2")
list(APPEND CMAKE_MESSAGE_INDENT " ")
set(RE2_BUILD_TESTING OFF)
FetchContent_Declare(
re2
GIT_REPOSITORY "https://github.com/google/re2.git"
GIT_TAG "2024-07-02"
GIT_TAG "2025-08-12"
GIT_SHALLOW TRUE
PATCH_COMMAND git apply --ignore-whitespace "${CMAKE_CURRENT_LIST_DIR}/../../patches/re2-2024-07-02.patch"
UPDATE_COMMAND git reset --hard
PATCH_COMMAND git apply --ignore-whitespace
"${CMAKE_CURRENT_LIST_DIR}/../../patches/re2-2025-08-12.patch"
SYSTEM
)
set(RE2_BUILD_TESTING OFF)
FetchContent_MakeAvailable(re2)
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(CHECK_PASS "fetched")
@@ -172,17 +196,20 @@ endif()
if(BUILD_Eigen3)
message(CHECK_START "Fetching Eigen3")
list(APPEND CMAKE_MESSAGE_INDENT " ")
set(EIGEN_MPL2_ONLY ON)
set(EIGEN_BUILD_PKGCONFIG OFF)
set(EIGEN_BUILD_DOC OFF)
set(EIGEN_BUILD_TESTING OFF)
FetchContent_Declare(
eigen3
GIT_REPOSITORY "https://gitlab.com/libeigen/eigen.git"
GIT_TAG "3.4.0"
GIT_SHALLOW TRUE
PATCH_COMMAND git apply --ignore-whitespace "${CMAKE_CURRENT_LIST_DIR}/../../patches/eigen3-3.4.0.patch"
UPDATE_COMMAND git reset --hard
PATCH_COMMAND git apply --ignore-whitespace
"${CMAKE_CURRENT_LIST_DIR}/../../patches/eigen3-3.4.0.patch"
SYSTEM
)
set(EIGEN_MPL2_ONLY ON)
set(EIGEN_BUILD_PKGCONFIG OFF)
set(EIGEN_BUILD_DOC OFF)
set(EIGEN_BUILD_TESTING OFF)
FetchContent_MakeAvailable(eigen3)
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(CHECK_PASS "fetched")
@@ -199,9 +226,6 @@ if(BUILD_PYTHON)
if(BUILD_pybind11)
message(CHECK_START "Fetching pybind11")
list(APPEND CMAKE_MESSAGE_INDENT " ")
set(PYBIND11_FINDPYTHON ON)
set(PYBIND11_INSTALL ON)
set(PYBIND11_TEST OFF)
FetchContent_Declare(
pybind11
GIT_REPOSITORY "https://github.com/pybind/pybind11.git"
@@ -213,9 +237,14 @@ if(BUILD_PYTHON)
#GIT_TAG "bd5951b6" # 2024/08/14 TEST FAIL
GIT_TAG "v2.13.6" # TEST PASS with a1d00916 patch apply
#GIT_SHALLOW TRUE
UPDATE_COMMAND git reset --hard
PATCH_COMMAND git apply --ignore-whitespace
"${CMAKE_CURRENT_LIST_DIR}/../../patches/pybind11-v2.13.6.patch"
SYSTEM
)
set(PYBIND11_FINDPYTHON ON)
set(PYBIND11_INSTALL ON)
set(PYBIND11_TEST OFF)
FetchContent_MakeAvailable(pybind11)
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(CHECK_PASS "fetched")
@@ -229,7 +258,10 @@ if(BUILD_PYTHON)
GIT_REPOSITORY "https://github.com/pybind/pybind11_abseil.git" # 2024/01/11
GIT_TAG "v202402.0"
GIT_SHALLOW TRUE
PATCH_COMMAND git apply --ignore-whitespace "${CMAKE_CURRENT_LIST_DIR}/../../patches/pybind11_abseil.patch"
UPDATE_COMMAND git reset --hard
PATCH_COMMAND git apply --ignore-whitespace
"${CMAKE_CURRENT_LIST_DIR}/../../patches/pybind11_abseil.patch"
SYSTEM
)
FetchContent_MakeAvailable(pybind11_abseil)
list(POP_BACK CMAKE_MESSAGE_INDENT)
@@ -243,8 +275,11 @@ if(BUILD_PYTHON)
pybind11_protobuf
GIT_REPOSITORY "https://github.com/pybind/pybind11_protobuf.git"
GIT_TAG "f02a2b7653bc50eb5119d125842a3870db95d251" # 2025/02/10
#PATCH_COMMAND git apply --ignore-whitespace "${CMAKE_CURRENT_LIST_DIR}/../../patches/pybind11_protobuf.patch"
#GIT_SHALLOW TRUE
#UPDATE_COMMAND git reset --hard
#PATCH_COMMAND git apply --ignore-whitespace
#"${CMAKE_CURRENT_LIST_DIR}/../../patches/pybind11_protobuf.patch"
SYSTEM
)
FetchContent_MakeAvailable(pybind11_protobuf)
list(POP_BACK CMAKE_MESSAGE_INDENT)
@@ -258,17 +293,17 @@ endif()
if(BUILD_GLPK)
message(CHECK_START "Fetching GLPK")
list(APPEND CMAKE_MESSAGE_INDENT " ")
set(BUILD_EXAMPLES OFF)
set(WITH_GMP OFF)
set(WITH_ODBC OFF)
set(WITH_MYSQL OFF)
FetchContent_Declare(
glpk
GIT_REPOSITORY "https://github.com/Mizux/GLPK.git"
GIT_TAG "5.0.1"
GIT_SHALLOW TRUE
SYSTEM
)
set(BUILD_EXAMPLES OFF)
set(WITH_GMP OFF)
set(WITH_ODBC OFF)
set(WITH_MYSQL OFF)
FetchContent_MakeAvailable(glpk)
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(CHECK_PASS "fetched")
@@ -280,16 +315,16 @@ endif()
if(BUILD_HIGHS)
message(CHECK_START "Fetching HiGHS")
list(APPEND CMAKE_MESSAGE_INDENT " ")
set(CI OFF) # disable CI tests
set(BUILD_EXAMPLES OFF)
FetchContent_Declare(
highs
GIT_REPOSITORY "https://github.com/ERGO-Code/HiGHS.git"
GIT_TAG "v1.11.0"
GIT_TAG "v1.12.0"
GIT_SHALLOW TRUE
PATCH_COMMAND git apply --ignore-whitespace
"${CMAKE_CURRENT_LIST_DIR}/../../patches/highs-v1.11.0.patch"
UPDATE_COMMAND git reset --hard
SYSTEM
)
set(CI OFF) # disable CI tests
set(BUILD_EXAMPLES OFF)
FetchContent_MakeAvailable(highs)
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(CHECK_PASS "fetched")
@@ -303,11 +338,15 @@ if(BUILD_Boost)
list(APPEND CMAKE_MESSAGE_INDENT " ")
FetchContent_Declare(
Boost
URL
https://github.com/boostorg/boost/releases/download/boost-1.87.0/boost-1.87.0-cmake.tar.gz
USES_TERMINAL_DOWNLOAD TRUE
DOWNLOAD_NO_EXTRACT FALSE
PATCH_COMMAND git apply --ignore-whitespace "${CMAKE_CURRENT_LIST_DIR}/../../patches/boost-1.87.0.patch"
GIT_REPOSITORY "https://github.com/boostorg/boost.git"
GIT_TAG "boost-1.87.0"
GIT_SHALLOW TRUE
GIT_SUBMODULES_RECURSE TRUE
UPDATE_COMMAND git reset --hard --recurse-submodules
PATCH_COMMAND git apply --ignore-whitespace
"${CMAKE_CURRENT_LIST_DIR}/../../patches/boost-1.87.0.patch"
OVERRIDE_FIND_PACKAGE # Needed for Soplex
SYSTEM
)
set(BOOST_INCLUDE_LIBRARIES multiprecision serialization)
option(BOOST_SKIP_INSTALL_RULES NO)
@@ -328,10 +367,12 @@ if(BUILD_soplex)
FetchContent_Declare(
soplex
GIT_REPOSITORY "https://github.com/scipopt/soplex.git"
GIT_TAG "release-713"
GIT_TAG "v8.0.0"
GIT_SHALLOW TRUE
UPDATE_COMMAND git reset --hard
PATCH_COMMAND git apply --ignore-whitespace
"${CMAKE_CURRENT_LIST_DIR}/../../patches/soplex-v7.1.3.patch"
"${CMAKE_CURRENT_LIST_DIR}/../../patches/soplex-v8.0.0.patch"
SYSTEM
)
set(SHARED ON CACHE BOOL "Soplex param" FORCE)
set(ZLIB ON CACHE BOOL "Soplex param" FORCE)
@@ -357,10 +398,12 @@ if(BUILD_SCIP)
FetchContent_Declare(
scip
GIT_REPOSITORY "https://github.com/scipopt/scip.git"
GIT_TAG "v922"
GIT_TAG "v10.0.0"
GIT_SHALLOW TRUE
UPDATE_COMMAND git reset --hard
PATCH_COMMAND git apply --ignore-whitespace
"${CMAKE_CURRENT_LIST_DIR}/../../patches/scip-v922.patch"
"${CMAKE_CURRENT_LIST_DIR}/../../patches/scip-v10.0.0.patch"
SYSTEM
)
set(SHARED ON CACHE BOOL "Scip param" FORCE)
set(ZLIB ON CACHE BOOL "Scip param" FORCE)
@@ -396,8 +439,11 @@ if(BUILD_CoinUtils)
GIT_REPOSITORY "https://github.com/Mizux/CoinUtils.git"
GIT_TAG "cmake/2.11.12"
GIT_SHALLOW TRUE
UPDATE_COMMAND git reset --hard
PATCH_COMMAND git apply --ignore-whitespace
"${CMAKE_CURRENT_LIST_DIR}/../../patches/coinutils-2.11.patch")
"${CMAKE_CURRENT_LIST_DIR}/../../patches/coinutils-2.11.patch"
SYSTEM
)
FetchContent_MakeAvailable(CoinUtils)
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(CHECK_PASS "fetched")
@@ -414,8 +460,11 @@ if(BUILD_Osi)
GIT_REPOSITORY "https://github.com/Mizux/Osi.git"
GIT_TAG "cmake/0.108.11"
GIT_SHALLOW TRUE
UPDATE_COMMAND git reset --hard
PATCH_COMMAND git apply --ignore-whitespace
"${CMAKE_CURRENT_LIST_DIR}/../../patches/osi-0.108.patch")
"${CMAKE_CURRENT_LIST_DIR}/../../patches/osi-0.108.patch"
SYSTEM
)
FetchContent_MakeAvailable(Osi)
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(CHECK_PASS "fetched")
@@ -432,8 +481,11 @@ if(BUILD_Clp)
GIT_REPOSITORY "https://github.com/Mizux/Clp.git"
GIT_TAG "cmake/1.17.10"
GIT_SHALLOW TRUE
UPDATE_COMMAND git reset --hard
PATCH_COMMAND git apply --ignore-whitespace
"${CMAKE_CURRENT_LIST_DIR}/../../patches/clp-1.17.patch")
"${CMAKE_CURRENT_LIST_DIR}/../../patches/clp-1.17.patch"
SYSTEM
)
FetchContent_MakeAvailable(Clp)
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(CHECK_PASS "fetched")
@@ -450,8 +502,11 @@ if(BUILD_Cgl)
GIT_REPOSITORY "https://github.com/Mizux/Cgl.git"
GIT_TAG "cmake/0.60.9"
GIT_SHALLOW TRUE
UPDATE_COMMAND git reset --hard
PATCH_COMMAND git apply --ignore-whitespace
"${CMAKE_CURRENT_LIST_DIR}/../../patches/cgl-0.60.patch")
"${CMAKE_CURRENT_LIST_DIR}/../../patches/cgl-0.60.patch"
SYSTEM
)
FetchContent_MakeAvailable(Cgl)
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(CHECK_PASS "fetched")
@@ -468,8 +523,11 @@ if(BUILD_Cbc)
GIT_REPOSITORY "https://github.com/Mizux/Cbc.git"
GIT_TAG "cmake/2.10.12"
GIT_SHALLOW TRUE
UPDATE_COMMAND git reset --hard
PATCH_COMMAND git apply --ignore-whitespace
"${CMAKE_CURRENT_LIST_DIR}/../../patches/cbc-2.10.patch")
"${CMAKE_CURRENT_LIST_DIR}/../../patches/cbc-2.10.patch"
SYSTEM
)
FetchContent_MakeAvailable(Cbc)
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(CHECK_PASS "fetched")
@@ -495,17 +553,37 @@ if(BUILD_googletest)
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG v1.17.0
GIT_SHALLOW TRUE
UPDATE_COMMAND git reset --hard
PATCH_COMMAND git apply --ignore-whitespace
"${CMAKE_CURRENT_LIST_DIR}/../../patches/googletest-v1.17.0.patch"
SYSTEM
)
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
set(INSTALL_GTEST OFF)
set(GTEST_HAS_ABSL ON)
set(INSTALL_GTEST ON)
FetchContent_MakeAvailable(googletest)
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(CHECK_PASS "fetched")
endif()
if(BUILD_protobuf_matchers)
message(CHECK_START "Fetching protobuf-matchers")
list(APPEND CMAKE_MESSAGE_INDENT " ")
FetchContent_Declare(
protobuf-matchers
GIT_REPOSITORY https://github.com/inazarenko/protobuf-matchers.git
GIT_TAG v0.1.1
GIT_SHALLOW TRUE
UPDATE_COMMAND git reset --hard
PATCH_COMMAND git apply --ignore-whitespace
"${CMAKE_CURRENT_LIST_DIR}/../../patches/protobuf-matchers-v0.1.1.patch"
SYSTEM
)
FetchContent_MakeAvailable(protobuf-matchers)
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(CHECK_PASS "fetched")
endif()
if(BUILD_benchmark)
message(CHECK_START "Fetching benchmark")
list(APPEND CMAKE_MESSAGE_INDENT " ")
@@ -515,6 +593,7 @@ if(BUILD_benchmark)
GIT_TAG v1.9.2
GIT_SHALLOW TRUE
#PATCH_COMMAND git apply --ignore-whitespace ""
SYSTEM
)
set(BENCHMARK_ENABLE_TESTING OFF)
set(BENCHMARK_ENABLE_WERROR OFF)
@@ -523,19 +602,3 @@ if(BUILD_benchmark)
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(CHECK_PASS "fetched")
endif()
if(BUILD_fuzztest)
message(CHECK_START "Fetching fuzztest")
list(APPEND CMAKE_MESSAGE_INDENT " ")
FetchContent_Declare(
fuzztest
GIT_REPOSITORY https://github.com/google/fuzztest.git
GIT_TAG 2025-02-14
GIT_SHALLOW TRUE
PATCH_COMMAND git apply --ignore-whitespace
"${CMAKE_CURRENT_LIST_DIR}/../../patches/fuzztest-2025-02-14.patch"
)
FetchContent_MakeAvailable(fuzztest)
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(CHECK_PASS "fetched")
endif()

View File

@@ -6,6 +6,9 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -S. -Bbuild -DBUILD_DEPS=ON
RUN cmake --build build --target all -v

View File

@@ -14,9 +14,14 @@ WORKDIR /home/project
COPY . .
RUN sed -i 's/\(<SignAssembly>\).*\(<\/SignAssembly>\)/\1false\2/' ortools/dotnet/Google.OrTools*.csproj.in
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -version
RUN cmake -S. -Bbuild -DBUILD_DOTNET=ON -DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
RUN cmake -S. -Bbuild -DBUILD_DOTNET=ON \
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF \
-DBUILD_DOTNET_EXAMPLES=OFF
RUN cmake --build build --target all -v
RUN cmake --build build --target install -v

View File

@@ -1,16 +1,19 @@
FROM ortools/cmake:almalinux_swig AS env
RUN dnf -y update \
&& dnf -y install java-11-openjdk java-11-openjdk-devel maven \
&& dnf -y install java-21-openjdk java-21-openjdk-devel maven \
&& dnf clean all \
&& rm -rf /var/cache/dnf
RUN alternatives --set java /usr/lib/jvm/java-11-openjdk*.x86_64/bin/java
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk
RUN alternatives --set java /usr/lib/jvm/java-21-openjdk/bin/java
ENV JAVA_HOME=/usr/lib/jvm/java-21-openjdk
FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -S. -Bbuild -DBUILD_JAVA=ON -DSKIP_GPG=ON \
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF

View File

@@ -12,6 +12,9 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -S. -Bbuild -DBUILD_PYTHON=ON -DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
RUN cmake --build build --target all -v

View File

@@ -6,6 +6,9 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -S. -Bbuild -DBUILD_DEPS=ON
RUN cmake --build build --target all -v

View File

@@ -10,9 +10,14 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -version
RUN cmake -S. -Bbuild -DBUILD_DOTNET=ON -DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
RUN cmake -S. -Bbuild -DBUILD_DOTNET=ON \
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF \
-DBUILD_DOTNET_EXAMPLES=OFF
RUN cmake --build build --target all -v
RUN cmake --build build --target install -v

View File

@@ -7,6 +7,9 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -S. -Bbuild -DBUILD_JAVA=ON -DSKIP_GPG=ON \
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF

View File

@@ -10,6 +10,9 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -S. -Bbuild -DBUILD_PYTHON=ON -DVENV_USE_SYSTEM_SITE_PACKAGES=ON \
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF

View File

@@ -6,6 +6,9 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -S. -Bbuild -DBUILD_DEPS=ON
RUN cmake --build build --target all -v

View File

@@ -8,8 +8,13 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -S. -Bbuild -DBUILD_DOTNET=ON -DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
RUN cmake -S. -Bbuild -DBUILD_DOTNET=ON \
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF \
-DBUILD_DOTNET_EXAMPLES=OFF
RUN cmake --build build --target all -v
RUN cmake --build build --target install

View File

@@ -7,6 +7,9 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -S. -Bbuild -DBUILD_JAVA=ON -DSKIP_GPG=ON \
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF

View File

@@ -11,6 +11,9 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -S. -Bbuild -DBUILD_PYTHON=ON -DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
RUN cmake --build build --target all -v

View File

@@ -6,6 +6,9 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -S. -Bbuild -DBUILD_DEPS=ON
RUN cmake --build build --target all -v

View File

@@ -3,7 +3,7 @@ FROM ortools/cmake:debian_swig AS env
# see: https://docs.microsoft.com/en-us/dotnet/core/install/linux-debian
RUN apt-get update -qq \
&& apt-get install -yq wget gpg apt-transport-https \
&& wget -q "https://packages.microsoft.com/config/debian/11/packages-microsoft-prod.deb" -O packages-microsoft-prod.deb \
&& wget -q "https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb" -O packages-microsoft-prod.deb \
&& dpkg -i packages-microsoft-prod.deb \
&& rm packages-microsoft-prod.deb \
&& apt-get update -qq \
@@ -17,9 +17,14 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -version
RUN cmake -S. -Bbuild -DBUILD_DOTNET=ON -DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
RUN cmake -S. -Bbuild -DBUILD_DOTNET=ON \
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF \
-DBUILD_DOTNET_EXAMPLES=OFF
RUN cmake --build build --target all -v
RUN cmake --build build --target install -v

View File

@@ -10,6 +10,9 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -S. -Bbuild -DBUILD_JAVA=ON -DSKIP_GPG=ON \
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF

View File

@@ -4,7 +4,8 @@ ENV PATH=/root/.local/bin:$PATH
RUN apt-get update -qq \
&& apt-get install -yq \
python3-dev python3-pip \
python3-wheel python3-venv python3-virtualenv \
python3-setuptools python3-wheel \
python3-venv python3-virtualenv \
python3-numpy python3-pandas \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
@@ -15,6 +16,9 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -S. -Bbuild -DBUILD_PYTHON=ON -DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
RUN cmake --build build --target all -v

View File

@@ -6,6 +6,9 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -S. -Bbuild -DBUILD_DEPS=ON
RUN cmake --build build --target all -v

View File

@@ -11,9 +11,14 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -version
RUN cmake -S. -Bbuild -DBUILD_DOTNET=ON -DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
RUN cmake -S. -Bbuild -DBUILD_DOTNET=ON \
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF \
-DBUILD_DOTNET_EXAMPLES=OFF
RUN OPENSSL_ENABLE_SHA1_SIGNATURES=1 cmake --build build --target all -v
RUN cmake --build build --target install -v

View File

@@ -9,6 +9,9 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -S. -Bbuild -DBUILD_JAVA=ON -DSKIP_GPG=ON \
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF

View File

@@ -9,6 +9,9 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -S. -Bbuild -DBUILD_PYTHON=ON -DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
RUN cmake --build build --target all -v

View File

@@ -14,6 +14,9 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -S. -Bbuild -DBUILD_DEPS=ON -DBUILD_CXX=OFF -DBUILD_GLOP=ON
RUN cmake --build build --target all -j 4 -v

View File

@@ -6,6 +6,9 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -S. -Bbuild -DBUILD_DEPS=ON
RUN cmake --build build --target all -v

View File

@@ -17,9 +17,14 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -version
RUN cmake -S. -Bbuild -DBUILD_DOTNET=ON -DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
RUN cmake -S. -Bbuild -DBUILD_DOTNET=ON \
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF \
-DBUILD_DOTNET_EXAMPLES=OFF
RUN cmake --build build --target all -v
RUN cmake --build build --target install -v

View File

@@ -10,6 +10,9 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -S. -Bbuild -DBUILD_JAVA=ON -DSKIP_GPG=ON \
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF

View File

@@ -12,6 +12,9 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -S. -Bbuild -DBUILD_PYTHON=ON -DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
RUN cmake --build build --target all -v

View File

@@ -1,6 +1,6 @@
# Create a virtual environment with all tools installed
# ref: https://hub.docker.com/_/rockylinux
FROM rockylinux:9 AS base
# ref: https://hub.docker.com/rockylinux/rockylinux
FROM rockylinux/rockylinux:9 AS base
# Install system build dependencies
ENV PATH=/usr/local/bin:$PATH

View File

@@ -6,6 +6,9 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -S. -Bbuild -DBUILD_DEPS=ON
RUN cmake --build build --target all -v

View File

@@ -14,9 +14,14 @@ WORKDIR /home/project
COPY . .
RUN sed -i 's/\(<SignAssembly>\).*\(<\/SignAssembly>\)/\1false\2/' ortools/dotnet/Google.OrTools*.csproj.in
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -version
RUN cmake -S. -Bbuild -DBUILD_DOTNET=ON -DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
RUN cmake -S. -Bbuild -DBUILD_DOTNET=ON \
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF \
-DBUILD_DOTNET_EXAMPLES=OFF
RUN cmake --build build --target all -v
RUN cmake --build build --target install -v

View File

@@ -11,6 +11,9 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -S. -Bbuild -DBUILD_JAVA=ON -DSKIP_GPG=ON \
-DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF

View File

@@ -12,6 +12,9 @@ FROM env AS devel
WORKDIR /home/project
COPY . .
ARG CMAKE_BUILD_PARALLEL_LEVEL
ENV CMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL:-4}
FROM devel AS build
RUN cmake -S. -Bbuild -DBUILD_PYTHON=ON -DBUILD_CXX_SAMPLES=OFF -DBUILD_CXX_EXAMPLES=OFF
RUN cmake --build build --target all -v

Some files were not shown because too many files have changed in this diff Show More