or-tools: 9.7 -> 9.11 (#327509)
This commit is contained in:
@@ -7,8 +7,9 @@
|
||||
eigen,
|
||||
ensureNewerSourcesForZipFilesHook,
|
||||
fetchFromGitHub,
|
||||
replaceVars,
|
||||
fetchpatch,
|
||||
glpk,
|
||||
highs,
|
||||
lib,
|
||||
pkg-config,
|
||||
protobuf,
|
||||
@@ -20,45 +21,54 @@
|
||||
zlib,
|
||||
}:
|
||||
|
||||
let
|
||||
pybind11_protobuf = fetchFromGitHub {
|
||||
owner = "pybind";
|
||||
repo = "pybind11_protobuf";
|
||||
rev = "b713501f1da56d9b76c42f89efd00b97c26c9eac";
|
||||
hash = "sha256-f6pzRWextH+7lm1xzyhx98wCIWH3lbhn59gSCcjsBVw=";
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "or-tools";
|
||||
version = "9.7";
|
||||
version = "9.11";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "google";
|
||||
repo = "or-tools";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-eHukf6TbY2dx7iEf8WfwfWsjDEubPtRO02ju0kHtASo=";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-aRhUAs9Otvra7VPJvrf0fhDCGpYhOw1//BC4dFJ7/xI=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
(replaceVars ./offline.patch {
|
||||
pybind11_protobuf = "../../pybind11_protobuf";
|
||||
(fetchpatch {
|
||||
name = "0001-Do-not-try-to-copy-pybind11_abseil-status-extension-.patch";
|
||||
url = "https://build.opensuse.org/public/source/science/google-or-tools/0001-Do-not-try-to-copy-pybind11_abseil-status-extension-.patch?rev=19";
|
||||
hash = "sha256-QHQ9E3mhTznJVKB+nP/9jct3uz+SPcOZ7w5tjOQ8iuk=";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "0001-Revert-python-Fix-python-install-on-windows-breaks-L.patch";
|
||||
url = "https://build.opensuse.org/public/source/science/google-or-tools/0001-Revert-python-Fix-python-install-on-windows-breaks-L.patch?rev=19";
|
||||
hash = "sha256-BNB3KlgjpWcZtb9e68Jkc/4xC4K0c+Iisw0eS6ltYXE=";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "0001-Fix-up-broken-CMake-rules-for-bundled-pybind-stuff.patch";
|
||||
url = "https://build.opensuse.org/public/source/science/google-or-tools/0001-Fix-up-broken-CMake-rules-for-bundled-pybind-stuff.patch?rev=19";
|
||||
hash = "sha256-r38ZbRkEW1ZvJb0Uf56c0+HcnfouZZJeEYlIK7quSjQ=";
|
||||
})
|
||||
];
|
||||
|
||||
# or-tools normally attempts to build Protobuf for the build platform when
|
||||
# cross-compiling. Instead, just tell it where to find protoc.
|
||||
postPatch = ''
|
||||
echo "set(PROTOC_PRG $(type -p protoc))" > cmake/host.cmake
|
||||
|
||||
cp -R ${pybind11_protobuf} pybind11_protobuf
|
||||
chmod -R u+w pybind11_protobuf
|
||||
'';
|
||||
postPatch =
|
||||
''
|
||||
echo "set(PROTOC_PRG $(type -p protoc))" > cmake/host.cmake
|
||||
''
|
||||
# Patches from OpenSUSE:
|
||||
# https://build.opensuse.org/projects/science/packages/google-or-tools/files/google-or-tools.spec?expand=1
|
||||
+ ''
|
||||
sed -i -e '/CMAKE_DEPENDENT_OPTION(INSTALL_DOC/ s/BUILD_CXX AND BUILD_DOC/BUILD_CXX/' CMakeLists.txt
|
||||
find . -iname \*CMakeLists.txt -exec sed -i -e 's/pybind11_native_proto_caster/pybind11_protobuf::pybind11_native_proto_caster/' '{}' \;
|
||||
sed -i -e 's/TARGET pybind11_native_proto_caster/TARGET pybind11_protobuf::pybind11_native_proto_caster/' cmake/check_deps.cmake
|
||||
sed -i -e "/protobuf/ { s/.*,/'protobuf >= 5.26',/ }" ortools/python/setup.py.in
|
||||
'';
|
||||
|
||||
cmakeFlags = [
|
||||
"-DBUILD_DEPS=OFF"
|
||||
"-DBUILD_PYTHON=ON"
|
||||
"-DBUILD_pybind11=OFF"
|
||||
"-DBUILD_pybind11_protobuf=ON"
|
||||
"-DCMAKE_INSTALL_BINDIR=bin"
|
||||
"-DCMAKE_INSTALL_INCLUDEDIR=include"
|
||||
"-DCMAKE_INSTALL_LIBDIR=lib"
|
||||
@@ -95,6 +105,8 @@ stdenv.mkDerivation rec {
|
||||
glpk
|
||||
python.pkgs.absl-py
|
||||
python.pkgs.pybind11
|
||||
python.pkgs.pybind11-abseil
|
||||
python.pkgs.pybind11-protobuf
|
||||
python.pkgs.pytest
|
||||
python.pkgs.scipy
|
||||
python.pkgs.setuptools
|
||||
@@ -104,23 +116,18 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
propagatedBuildInputs = [
|
||||
abseil-cpp
|
||||
highs
|
||||
protobuf
|
||||
(python.pkgs.protobuf4.override { protobuf = protobuf; })
|
||||
(python.pkgs.protobuf.override { protobuf = protobuf; })
|
||||
python.pkgs.numpy
|
||||
python.pkgs.pandas
|
||||
python.pkgs.immutabledict
|
||||
];
|
||||
nativeCheckInputs = [
|
||||
python.pkgs.matplotlib
|
||||
python.pkgs.pandas
|
||||
python.pkgs.virtualenv
|
||||
];
|
||||
|
||||
env.NIX_CFLAGS_COMPILE = toString [
|
||||
# fatal error: 'python/google/protobuf/proto_api.h' file not found
|
||||
"-I${protobuf.src}"
|
||||
# fatal error: 'pybind11_protobuf/native_proto_caster.h' file not found
|
||||
"-I${pybind11_protobuf}"
|
||||
];
|
||||
|
||||
# some tests fail on linux and hang on darwin
|
||||
doCheck = false;
|
||||
|
||||
@@ -149,7 +156,7 @@ stdenv.mkDerivation rec {
|
||||
description = ''
|
||||
Google's software suite for combinatorial optimization.
|
||||
'';
|
||||
mainProgram = "fzn-ortools";
|
||||
mainProgram = "fzn-cp-sat";
|
||||
maintainers = with maintainers; [ andersk ];
|
||||
platforms = with platforms; linux ++ darwin;
|
||||
};
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
diff --git a/cmake/dependencies/CMakeLists.txt b/cmake/dependencies/CMakeLists.txt
|
||||
index af3a28c113..ba92c3c55e 100644
|
||||
--- a/cmake/dependencies/CMakeLists.txt
|
||||
+++ b/cmake/dependencies/CMakeLists.txt
|
||||
@@ -177,9 +177,8 @@ if(BUILD_PYTHON AND BUILD_pybind11_protobuf)
|
||||
list(APPEND CMAKE_MESSAGE_INDENT " ")
|
||||
FetchContent_Declare(
|
||||
pybind11_protobuf
|
||||
- GIT_REPOSITORY "https://github.com/pybind/pybind11_protobuf.git"
|
||||
- GIT_TAG "main"
|
||||
- PATCH_COMMAND git apply --ignore-whitespace "${CMAKE_CURRENT_LIST_DIR}/../../patches/pybind11_protobuf.patch"
|
||||
+ SOURCE_DIR @pybind11_protobuf@
|
||||
+ PATCH_COMMAND patch -p1 < "${CMAKE_CURRENT_LIST_DIR}/../../patches/pybind11_protobuf.patch"
|
||||
)
|
||||
FetchContent_MakeAvailable(pybind11_protobuf)
|
||||
list(POP_BACK CMAKE_MESSAGE_INDENT)
|
||||
@@ -0,0 +1,60 @@
|
||||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
fetchpatch,
|
||||
cmake,
|
||||
abseil-cpp,
|
||||
pybind11,
|
||||
python,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "pybind11-abseil";
|
||||
version = "202402.0";
|
||||
pyproject = false;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pybind";
|
||||
repo = "pybind11_abseil";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-hFVuGzEFqAEm2p2RmfhFtLB6qOqNuVNcwcLh8dIWi0k=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
(fetchpatch {
|
||||
name = "pybind11_abseil.patch";
|
||||
url = "https://build.opensuse.org/public/source/openSUSE:Factory/pybind11-abseil/pybind11_abseil.patch?rev=2";
|
||||
hash = "sha256-zwxCIhYMvexdSUmKM22OMBMEo0NRDgMtSVMDySFCn6U=";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "use-system-packages-if-possible.patch";
|
||||
url = "https://build.opensuse.org/public/source/openSUSE:Factory/pybind11-abseil/use-system-packages-if-possible.patch?rev=2";
|
||||
hash = "sha256-CLHOSni2ej6ICtvMtBoCIpR9CNPPibwIS+hYbOCAwBE=";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "0001-Install-headers-and-CMake-development-files.patch";
|
||||
url = "https://build.opensuse.org/public/source/openSUSE:Factory/pybind11-abseil/0001-Install-headers-and-CMake-development-files.patch?rev=2";
|
||||
hash = "sha256-TU9AzvF83aROY4gwys2ITOcdtjEm4x2IbhX4cHNWp0M=";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
buildInputs = [
|
||||
abseil-cpp
|
||||
pybind11
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
(lib.cmakeFeature "CMAKE_INSTALL_PYDIR" "${placeholder "out"}/${python.sitePackages}")
|
||||
(lib.cmakeFeature "Python_EXECUTABLE" python.interpreter)
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "Pybind11 bindings for the Abseil C++ Common Libraries";
|
||||
homepage = "https://github.com/pybind/pybind11_abseil";
|
||||
license = lib.licenses.bsd3;
|
||||
maintainers = with lib.maintainers; [ wegank ];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
fetchpatch,
|
||||
cmake,
|
||||
abseil-cpp_202301,
|
||||
protobuf_23,
|
||||
pybind11,
|
||||
}:
|
||||
|
||||
buildPythonPackage {
|
||||
pname = "pybind11-protobuf";
|
||||
version = "0-unstable-2024-11-01";
|
||||
pyproject = false;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pybind";
|
||||
repo = "pybind11_protobuf";
|
||||
rev = "90b1a5b9de768340069c15b603d467c21cac5e0b";
|
||||
hash = "sha256-3OuwRP9MhxmcfeDx+p74Fz6iLqi9FXbR3t3BtafesKk=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
(fetchpatch {
|
||||
name = "0006-Add-install-target-for-CMake-builds.patch";
|
||||
url = "https://build.opensuse.org/public/source/openSUSE:Factory/pybind11_protobuf/0006-Add-install-target-for-CMake-builds.patch?rev=2";
|
||||
hash = "sha256-tjaOr6f+JCRft0SWd0Zfte7FEOYOP7RrW0Vjz34rX6I=";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "0007-CMake-Use-Python-Module.patch";
|
||||
url = "https://build.opensuse.org/public/source/openSUSE:Factory/pybind11_protobuf/0007-CMake-Use-Python-Module.patch?rev=2";
|
||||
hash = "sha256-A1dhfh31FMBHBdCfoYmQrInZvO/DeuVMUL57PpUHYfA=";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
buildInputs = [
|
||||
abseil-cpp_202301
|
||||
protobuf_23
|
||||
pybind11
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "Pybind11 bindings for Google's Protocol Buffers";
|
||||
homepage = "https://github.com/pybind/pybind11_protobuf";
|
||||
license = lib.licenses.bsd3;
|
||||
maintainers = with lib.maintainers; [ wegank ];
|
||||
};
|
||||
}
|
||||
@@ -16801,14 +16801,15 @@ with pkgs;
|
||||
|
||||
or-tools = callPackage ../development/libraries/science/math/or-tools {
|
||||
inherit (darwin) DarwinTools;
|
||||
stdenv = if stdenv.hostPlatform.isDarwin then overrideSDK stdenv "11.0" else stdenv;
|
||||
python = python3;
|
||||
protobuf = protobuf_23;
|
||||
# or-tools builds with -std=c++20, so abseil-cpp must
|
||||
protobuf = protobuf_26.override {
|
||||
abseil-cpp = abseil-cpp_202407;
|
||||
};
|
||||
# or-tools builds with -std=c++17, so abseil-cpp must
|
||||
# also be built that way
|
||||
abseil-cpp = abseil-cpp_202301.override {
|
||||
abseil-cpp = abseil-cpp_202407.override {
|
||||
static = true;
|
||||
cxxStandard = "20";
|
||||
cxxStandard = "17";
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -11752,6 +11752,10 @@ self: super: with self; {
|
||||
|
||||
pybind11 = callPackage ../development/python-modules/pybind11 { };
|
||||
|
||||
pybind11-abseil = callPackage ../development/python-modules/pybind11-abseil { };
|
||||
|
||||
pybind11-protobuf = callPackage ../development/python-modules/pybind11-protobuf { };
|
||||
|
||||
pybind11-stubgen = callPackage ../development/python-modules/pybind11-stubgen { };
|
||||
|
||||
pybindgen = callPackage ../development/python-modules/pybindgen { };
|
||||
|
||||
Reference in New Issue
Block a user