Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

or-tools: 9.7 -> 9.9 #327509

Draft
wants to merge 3 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 17 additions & 27 deletions pkgs/development/libraries/science/math/or-tools/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
, eigen
, ensureNewerSourcesForZipFilesHook
, fetchFromGitHub
, substituteAll
, fetchpatch
, glpk
, lib
, pkg-config
Expand All @@ -19,46 +19,40 @@
, 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.9";

src = fetchFromGitHub {
owner = "google";
repo = "or-tools";
rev = "v${version}";
hash = "sha256-eHukf6TbY2dx7iEf8WfwfWsjDEubPtRO02ju0kHtASo=";
hash = "sha256-Ip2mKl+MuzOPaF1a2FTubqT0tA4gzDnD8dR7dLaHHo8=";
};

patches = [
(substituteAll {
src = ./offline.patch;
pybind11_protobuf = "../../pybind11_protobuf";
(fetchpatch {
name = "0001-Allow-to-use-pybind11-system-packages.patch";
url = "https://build.opensuse.org/public/source/science/google-or-tools/0001-Allow-to-use-pybind11-system-packages.patch?rev=18";
hash = "sha256-+hFgZt9G0EMpMMXA/qnHjOdk6+eIlgV6T0qu36s4Z/Y=";
})
(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=18";
hash = "sha256-vAjxUW1SjHRG2mpyjHjrAkyoix1BnGCxzvFDMzRp3Bk=";
})
];

# 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
'';

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"
Expand Down Expand Up @@ -92,6 +86,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
Expand All @@ -104,20 +100,14 @@ stdenv.mkDerivation rec {
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;

Expand All @@ -143,7 +133,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;
};
Expand Down
16 changes: 0 additions & 16 deletions pkgs/development/libraries/science/math/or-tools/offline.patch

This file was deleted.

60 changes: 60 additions & 0 deletions pkgs/development/python-modules/pybind11-abseil/default.nix
Original file line number Diff line number Diff line change
@@ -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 ];
};
}
76 changes: 76 additions & 0 deletions pkgs/development/python-modules/pybind11-protobuf/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
fetchpatch,
cmake,
abseil-cpp_202301,
protobuf_23,
pybind11,
}:

buildPythonPackage {
pname = "pybind11-protobuf";
version = "0-unstable-2024-01-04";
pyproject = false;

src = fetchFromGitHub {
owner = "pybind";
repo = "pybind11_protobuf";
rev = "3b11990a99dea5101799e61d98a82c4737d240cc";
hash = "sha256-saeBxffAbDoHI/YvLatSubpdch9vb5DAfp/Bz3MC8ps=";
};

patches = [
(fetchpatch {
name = "0001-Make-protobuf-python_api-fully-optional.patch";
url = "https://build.opensuse.org/public/source/openSUSE:Factory/pybind11_protobuf/0001-Make-protobuf-python_api-fully-optional.patch?rev=1";
hash = "sha256-gUeM/7R2kC5DaGKtot9AyG9CyCUHZt5s88dfEtj4b5E=";
})
(fetchpatch {
name = "0002-Add-ENABLE_PYPROTO_API-option-to-CMake-build-clean-u.patch";
url = "https://build.opensuse.org/public/source/openSUSE:Factory/pybind11_protobuf/0002-Add-ENABLE_PYPROTO_API-option-to-CMake-build-clean-u.patch?rev=1";
hash = "sha256-2Wh8XxVXD/RBmkVP4XTJt8gCWrn/zII9h2Cjo6n6dI0=";
})
(fetchpatch {
name = "0003-Make-the-pybind11_-_proto_caster-libraries-STATIC.patch";
url = "https://build.opensuse.org/public/source/openSUSE:Factory/pybind11_protobuf/0003-Make-the-pybind11_-_proto_caster-libraries-STATIC.patch?rev=1";
hash = "sha256-4sa3TD9qjEjHFhxZa/87fiWLJhehNYY2xc3i0jeSHeA=";
})
(fetchpatch {
name = "0004-Fix-handling-of-external-dependencies-allow-forcing-.patch";
url = "https://build.opensuse.org/public/source/openSUSE:Factory/pybind11_protobuf/0004-Fix-handling-of-external-dependencies-allow-forcing-.patch?rev=1";
hash = "sha256-ifqOVU/Lzed+B+8rL6u12TjopA3iYPYDW05QV6W9SAQ=";
})
(fetchpatch {
name = "0005-Build-and-run-the-test-cases.patch";
url = "https://build.opensuse.org/public/source/openSUSE:Factory/pybind11_protobuf/0005-Build-and-run-the-test-cases.patch?rev=1";
hash = "sha256-xTiTGS6AsXCJBcyno7IfQd7P7wH51XoeMCEiT6OcUUY=";
})
(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=1";
hash = "sha256-2gJgQGFMB7ihftv4vKEe+ES0wofwaCSzsQm3cAAzXrg=";
})
(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=1";
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 ];
};
}
8 changes: 4 additions & 4 deletions pkgs/top-level/all-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -37725,12 +37725,12 @@ with pkgs;
inherit (darwin) DarwinTools;
stdenv = if stdenv.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_25;
# 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_202401.override {
static = true;
cxxStandard = "20";
cxxStandard = "17";
};
};

Expand Down
4 changes: 4 additions & 0 deletions pkgs/top-level/python-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -10893,6 +10893,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 { };

pybindgen = callPackage ../development/python-modules/pybindgen { };

pyblackbird = callPackage ../development/python-modules/pyblackbird { };
Expand Down