diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index d0440772467d..09a2d77eebc9 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -18265,6 +18265,12 @@ githubId = 16974598; name = "Mike Playle"; }; + mkannwischer = { + email = "matthias@kannwischer.eu"; + github = "mkannwischer"; + githubId = 3984960; + name = "Matthias Kannwischer"; + }; mkez = { email = "matias+nix@zwinger.fi"; github = "mk3z"; diff --git a/pkgs/by-name/or/or-tools/package.nix b/pkgs/by-name/or/or-tools/package.nix index 90754354a478..eb312fbff8cc 100644 --- a/pkgs/by-name/or/or-tools/package.nix +++ b/pkgs/by-name/or/or-tools/package.nix @@ -137,6 +137,8 @@ stdenv.mkDerivation (finalAttrs: { ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ (lib.cmakeBool "CMAKE_MACOSX_RPATH" false) + (lib.cmakeFeature "CMAKE_INSTALL_NAME_DIR" "${placeholder "out"}/lib") + (lib.cmakeBool "CMAKE_BUILD_WITH_INSTALL_NAME_DIR" true) ]; strictDeps = true; diff --git a/pkgs/by-name/sl/slothy/package.nix b/pkgs/by-name/sl/slothy/package.nix new file mode 100644 index 000000000000..a07c0bb41594 --- /dev/null +++ b/pkgs/by-name/sl/slothy/package.nix @@ -0,0 +1,8 @@ +{ python3Packages }: + +(python3Packages.toPythonApplication python3Packages.slothy).overrideAttrs (old: { + __structuredAttrs = true; + meta = old.meta // { + mainProgram = "slothy-cli"; + }; +}) diff --git a/pkgs/development/python-modules/ortools/default.nix b/pkgs/development/python-modules/ortools/default.nix new file mode 100644 index 000000000000..7a5a3d7169bf --- /dev/null +++ b/pkgs/development/python-modules/ortools/default.nix @@ -0,0 +1,45 @@ +{ + lib, + buildPythonPackage, + lndir, + or-tools, + immutabledict, + numpy, + pandas, + protobuf, +}: + +buildPythonPackage { + pname = "ortools"; + inherit (or-tools) version; + format = "other"; + + src = or-tools.python; + + dontBuild = true; + + nativeBuildInputs = [ lndir ]; + + installPhase = '' + runHook preInstall + mkdir -p $out + lndir -silent $src $out + runHook postInstall + ''; + + propagatedBuildInputs = [ + immutabledict + numpy + pandas + protobuf + ]; + + pythonImportsCheck = [ + "ortools" + "ortools.sat.python.cp_model" + ]; + + meta = or-tools.meta // { + description = "Python bindings for Google's or-tools"; + }; +} diff --git a/pkgs/development/python-modules/slothy/default.nix b/pkgs/development/python-modules/slothy/default.nix new file mode 100644 index 000000000000..f3e9b53ede81 --- /dev/null +++ b/pkgs/development/python-modules/slothy/default.nix @@ -0,0 +1,66 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + gcc, + llvm, + ortools, + sympy, + unicorn, +}: + +buildPythonPackage rec { + pname = "slothy"; + version = "0.2.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "slothy-optimizer"; + repo = "slothy"; + tag = version; + hash = "sha256-1seD/wqAyEcv5HJFO8j53ARd64fddGropA6xk0dq2yk="; + }; + + build-system = [ setuptools ]; + + dependencies = [ + ortools + sympy + unicorn + ]; + + # slothy shells out to `gcc` and the llvm binutils at runtime; extend + # PATH at import time so the library works in a plain withPackages env. + postPatch = '' + substituteInPlace slothy/__init__.py \ + --replace-fail 'from slothy.core.slothy import Slothy' \ + 'import os + os.environ["PATH"] = "${ + lib.makeBinPath [ + gcc + llvm + ] + }" + os.pathsep + os.environ.get("PATH", "") + from slothy.core.slothy import Slothy' + ''; + + pythonRelaxDeps = true; + + pythonImportsCheck = [ "slothy" ]; + + installCheckPhase = '' + runHook preInstallCheck + python3 test.py --silent --tests aarch64_simple0_a55 + runHook postInstallCheck + ''; + + meta = { + description = "Assembly superoptimization via constraint solving"; + homepage = "https://slothy-optimizer.github.io/slothy"; + changelog = "https://github.com/slothy-optimizer/slothy/releases/tag/${version}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ mkannwischer ]; + platforms = lib.platforms.linux ++ lib.platforms.darwin; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index a18a31464372..cbf531436b00 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -12040,7 +12040,9 @@ self: super: with self; { ormsgpack = callPackage ../development/python-modules/ormsgpack { }; - ortools = (toPythonModule (pkgs.or-tools.override { python3 = self.python; })).python; + ortools = callPackage ../development/python-modules/ortools { + or-tools = pkgs.or-tools.override { python3 = self.python; }; + }; oru = callPackage ../development/python-modules/oru { }; @@ -18136,6 +18138,8 @@ self: super: with self; { slob = callPackage ../development/python-modules/slob { }; + slothy = callPackage ../development/python-modules/slothy { }; + slovnet = callPackage ../development/python-modules/slovnet { }; slowapi = callPackage ../development/python-modules/slowapi { };