diff --git a/packages/default.nix b/packages/default.nix index 8a70ae18..9ec4111c 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -87,7 +87,7 @@ inputs: rec sockpp = inputs.pkgs.callPackage ./sockpp.nix { src = inputs.topInputs.sockpp; }; git-lfs-transfer = inputs.pkgs.callPackage ./git-lfs-transfer.nix { src = inputs.topInputs.git-lfs-transfer; hash = inputs.topInputs.self.src.git-lfs-transfer; }; - py4vasp = inputs.pkgs.callPackage ./py4vasp.nix { src = inputs.topInputs.py4vasp; }; + py4vasp = inputs.pkgs.callPackage ./py4vasp { src = inputs.topInputs.py4vasp; }; pocketfft = inputs.pkgs.callPackage ./pocketfft.nix { src = inputs.topInputs.pocketfft; }; spectroscopy = inputs.pkgs.callPackage ./spectroscopy.nix { src = inputs.topInputs.spectroscopy; }; mirism = inputs.pkgs.callPackage ./mirism { inherit biu; stdenv = inputs.pkgs.clang18Stdenv; }; diff --git a/packages/py4vasp.nix b/packages/py4vasp.nix deleted file mode 100644 index d2dbc0ab..00000000 --- a/packages/py4vasp.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ src, poetry2nix, runCommand }: -let - package = poetry2nix.mkPoetryApplication { projectDir = src; }; - python = package.python.withPackages (p: [ package p.mdtraj ]); -in runCommand "py4vasp" {} "mkdir -p $out/bin; ln -s ${python}/bin/python $out/bin/py4vasp" diff --git a/packages/py4vasp/default.nix b/packages/py4vasp/default.nix new file mode 100644 index 00000000..95f7dbab --- /dev/null +++ b/packages/py4vasp/default.nix @@ -0,0 +1,10 @@ +{ src, poetry2nix, runCommand }: +let + package = poetry2nix.mkPoetryApplication + { + projectDir = src; + overrides = poetry2nix.overrides.withDefaults (final: prev: + { numpy = prev.numpy.overridePythonAttrs { patches = prev.patches or [] ++ [ ./numpy.patch ]; }; }); + }; + python = package.python.withPackages (p: [ package p.mdtraj ]); +in runCommand "py4vasp" {} "mkdir -p $out/bin; ln -s ${python}/bin/python $out/bin/py4vasp" diff --git a/packages/py4vasp/numpy.patch b/packages/py4vasp/numpy.patch new file mode 100644 index 00000000..1d5defd5 --- /dev/null +++ b/packages/py4vasp/numpy.patch @@ -0,0 +1,70 @@ +From f391623a00aff45f510bf815ddfb1817ae833059 Mon Sep 17 00:00:00 2001 +From: Katie Rust +Date: Mon, 16 Sep 2024 13:04:22 -0500 +Subject: [PATCH] BUG: Stub out `get_build_msvc_version` if + `distutils.msvccompiler` cannot be imported (fixes #27405) + +--- + numpy/distutils/mingw32ccompiler.py | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/numpy/distutils/mingw32ccompiler.py b/numpy/distutils/mingw32ccompiler.py +index 39905a784088..2599a9e9a807 100644 +--- a/numpy/distutils/mingw32ccompiler.py ++++ b/numpy/distutils/mingw32ccompiler.py +@@ -24,7 +24,13 @@ + + import distutils.cygwinccompiler + from distutils.unixccompiler import UnixCCompiler +-from distutils.msvccompiler import get_build_version as get_build_msvc_version ++ ++try: ++ from distutils.msvccompiler import get_build_version as get_build_msvc_version ++except ImportError: ++ def get_build_msvc_version(): ++ return None ++ + from distutils.errors import UnknownFileError + from numpy.distutils.misc_util import (msvc_runtime_library, + msvc_runtime_version, +diff --git a/numpy/distutils/msvccompiler.py b/numpy/distutils/msvccompiler.py +index 2b93221baa..d1fae7b6ca 100644 +--- a/numpy/distutils/msvccompiler.py ++++ b/numpy/distutils/msvccompiler.py +@@ -1,5 +1,4 @@ + import os +-from distutils.msvccompiler import MSVCCompiler as _MSVCCompiler + + from .system_info import platform_bits + +@@ -36,27 +35,12 @@ def _merge(old, new): + return ';'.join([old, new]) + + +-class MSVCCompiler(_MSVCCompiler): ++class MSVCCompiler: + def __init__(self, verbose=0, dry_run=0, force=0): +- _MSVCCompiler.__init__(self, verbose, dry_run, force) ++ pass + + def initialize(self): +- # The 'lib' and 'include' variables may be overwritten +- # by MSVCCompiler.initialize, so save them for later merge. +- environ_lib = os.getenv('lib', '') +- environ_include = os.getenv('include', '') +- _MSVCCompiler.initialize(self) +- +- # Merge current and previous values of 'lib' and 'include' +- os.environ['lib'] = _merge(environ_lib, os.environ['lib']) +- os.environ['include'] = _merge(environ_include, os.environ['include']) +- +- # msvc9 building for 32 bits requires SSE2 to work around a +- # compiler bug. +- if platform_bits == 32: +- self.compile_options += ['/arch:SSE2'] +- self.compile_options_debug += ['/arch:SSE2'] +- ++ pass + + def lib_opts_if_msvc(build_cmd): + """ Add flags if we are using MSVC compiler