From d30181d974bad639f90a222d31791880caf0b090 Mon Sep 17 00:00:00 2001 From: Tom Westerhout <14264576+twesterhout@users.noreply.github.com> Date: Tue, 15 Oct 2024 12:41:40 +0200 Subject: [PATCH 1/3] halide: format using nixfmt --- pkgs/development/compilers/halide/default.nix | 112 ++++++++++-------- 1 file changed, 60 insertions(+), 52 deletions(-) diff --git a/pkgs/development/compilers/halide/default.nix b/pkgs/development/compilers/halide/default.nix index d34ee3af9163..7540666b2e17 100644 --- a/pkgs/development/compilers/halide/default.nix +++ b/pkgs/development/compilers/halide/default.nix @@ -1,17 +1,18 @@ -{ stdenv -, llvmPackages -, lib -, fetchFromGitHub -, cmake -, libffi -, libpng -, libjpeg -, mesa -, libGL -, eigen -, openblas -, blas -, lapack +{ + stdenv, + llvmPackages, + lib, + fetchFromGitHub, + cmake, + libffi, + libpng, + libjpeg, + mesa, + libGL, + eigen, + openblas, + blas, + lapack, }: assert blas.implementation == "openblas" && lapack.implementation == "openblas"; @@ -27,29 +28,30 @@ stdenv.mkDerivation rec { sha256 = "sha256-lJQrXkJgBmGb/QMSxwuPkkHOSgEDowLWzIolp1km2Y8="; }; - postPatch = '' - # See https://github.com/halide/Halide/issues/7785 - substituteInPlace 'src/runtime/HalideRuntime.h' \ - --replace '#if defined(__x86_64__) || defined(__i386__) || defined(__arm__) || defined(__aarch64__) - #define HALIDE_CPP_COMPILER_HAS_FLOAT16' \ - '#if defined(__x86_64__) || defined(__i386__) - #define HALIDE_CPP_COMPILER_HAS_FLOAT16' - '' - # Note: on x86_64-darwin, clang fails to find AvailabilityVersions.h, so we remove it. - # Halide uses AvailabilityVersions.h and TargetConditionals.h to determine whether - # ::aligned_alloc is available. For us, it isn't. - + lib.optionalString (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) '' - substituteInPlace 'src/runtime/HalideBuffer.h' \ - --replace '#ifdef __APPLE__ - #include - #include - #endif' \ - ' ' \ - --replace 'TARGET_OS_OSX && (__MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_15)' \ - '1' \ - --replace 'TARGET_OS_IPHONE && (__IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_14_0)' \ - '0' - ''; + postPatch = + '' + # See https://github.com/halide/Halide/issues/7785 + substituteInPlace 'src/runtime/HalideRuntime.h' \ + --replace '#if defined(__x86_64__) || defined(__i386__) || defined(__arm__) || defined(__aarch64__) + #define HALIDE_CPP_COMPILER_HAS_FLOAT16' \ + '#if defined(__x86_64__) || defined(__i386__) + #define HALIDE_CPP_COMPILER_HAS_FLOAT16' + '' + # Note: on x86_64-darwin, clang fails to find AvailabilityVersions.h, so we remove it. + # Halide uses AvailabilityVersions.h and TargetConditionals.h to determine whether + # ::aligned_alloc is available. For us, it isn't. + + lib.optionalString (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) '' + substituteInPlace 'src/runtime/HalideBuffer.h' \ + --replace '#ifdef __APPLE__ + #include + #include + #endif' \ + ' ' \ + --replace 'TARGET_OS_OSX && (__MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_15)' \ + '1' \ + --replace 'TARGET_OS_IPHONE && (__IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_14_0)' \ + '0' + ''; cmakeFlags = [ "-DWARNINGS_AS_ERRORS=OFF" @@ -74,20 +76,22 @@ stdenv.mkDerivation rec { # Note: only openblas and not atlas part of this Nix expression # see pkgs/development/libraries/science/math/liblapack/3.5.0.nix # to get a hint howto setup atlas instead of openblas - buildInputs = [ - llvmPackages.llvm - llvmPackages.lld - llvmPackages.openmp - llvmPackages.libclang - libffi - libpng - libjpeg - eigen - openblas - ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ - mesa - libGL - ]; + buildInputs = + [ + llvmPackages.llvm + llvmPackages.lld + llvmPackages.openmp + llvmPackages.libclang + libffi + libpng + libjpeg + eigen + openblas + ] + ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ + mesa + libGL + ]; nativeBuildInputs = [ cmake ]; @@ -96,6 +100,10 @@ stdenv.mkDerivation rec { homepage = "https://halide-lang.org"; license = licenses.mit; platforms = platforms.all; - maintainers = with maintainers; [ ck3d atila twesterhout ]; + maintainers = with maintainers; [ + ck3d + atila + twesterhout + ]; }; } From 19c1507d6db6b9a4ffd38bf2852df6afd8796c5b Mon Sep 17 00:00:00 2001 From: Tom Westerhout <14264576+twesterhout@users.noreply.github.com> Date: Tue, 15 Oct 2024 12:59:40 +0200 Subject: [PATCH 2/3] halide: 16.0.0 -> 18.0.0 --- pkgs/development/compilers/halide/default.nix | 29 ++++++++++++++----- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/pkgs/development/compilers/halide/default.nix b/pkgs/development/compilers/halide/default.nix index 7540666b2e17..905ed2a43d33 100644 --- a/pkgs/development/compilers/halide/default.nix +++ b/pkgs/development/compilers/halide/default.nix @@ -4,6 +4,7 @@ lib, fetchFromGitHub, cmake, + flatbuffers, libffi, libpng, libjpeg, @@ -19,13 +20,13 @@ assert blas.implementation == "openblas" && lapack.implementation == "openblas"; stdenv.mkDerivation rec { pname = "halide"; - version = "16.0.0"; + version = "18.0.0"; src = fetchFromGitHub { owner = "halide"; repo = "Halide"; rev = "v${version}"; - sha256 = "sha256-lJQrXkJgBmGb/QMSxwuPkkHOSgEDowLWzIolp1km2Y8="; + hash = "sha256-BPalUh9EgdCqVaWC1HoreyyRcPQc4QMIYnLrRoNDDCI="; }; postPatch = @@ -63,15 +64,27 @@ stdenv.mkDerivation rec { # v16 release (See https://github.com/halide/Halide/commit/09c5d1d19ec8e6280ccbc01a8a12decfb27226ba) # These tests also fail to compile on Darwin because of some missing command line options... "-DWITH_TEST_FUZZ=OFF" + # Disable FetchContent for flatbuffers and use the version from nixpkgs instead + "-DFLATBUFFERS_USE_FETCHCONTENT=OFF" ]; doCheck = true; - # Note: disable mullapudi2016_fibonacci because it requires too much - # parallelism for remote builders - preCheck = '' - checkFlagsArray+=("ARGS=-E 'mullapudi2016_fibonacci'") - ''; + preCheck = + let + disabledTests = lib.strings.concatStringsSep "|" [ + # Requires too much parallelism for remote builders. + "mullapudi2016_fibonacci" + # Take too long---we don't want to run these in CI. + "adams2019_test_apps_autoscheduler" + "anderson2021_test_apps_autoscheduler" + "correctness_cross_compilation" + "correctness_simd_op_check_hvx" + ]; + in + '' + checkFlagsArray+=("ARGS=-E '${disabledTests}'") + ''; # Note: only openblas and not atlas part of this Nix expression # see pkgs/development/libraries/science/math/liblapack/3.5.0.nix @@ -93,7 +106,7 @@ stdenv.mkDerivation rec { libGL ]; - nativeBuildInputs = [ cmake ]; + nativeBuildInputs = [ cmake flatbuffers ]; meta = with lib; { description = "C++ based language for image processing and computational photography"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 489fe0a38e1a..78f00230bb3a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -8387,7 +8387,7 @@ with pkgs; halibut = callPackage ../tools/typesetting/halibut { }; halide = callPackage ../development/compilers/halide { - llvmPackages = llvmPackages_16; + llvmPackages = llvmPackages_18; }; hareThirdParty = recurseIntoAttrs (callPackage ./hare-third-party.nix { }); From a90f538e38bcb322b9a2b90ff0c43156d61b97ab Mon Sep 17 00:00:00 2001 From: Tom Westerhout <14264576+twesterhout@users.noreply.github.com> Date: Tue, 15 Oct 2024 13:08:53 +0200 Subject: [PATCH 3/3] python3Packages.halide: init at 18.0.0 --- pkgs/development/compilers/halide/default.nix | 26 +++++++++++++++++-- pkgs/top-level/python-packages.nix | 2 ++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/pkgs/development/compilers/halide/default.nix b/pkgs/development/compilers/halide/default.nix index 905ed2a43d33..19d24f47da47 100644 --- a/pkgs/development/compilers/halide/default.nix +++ b/pkgs/development/compilers/halide/default.nix @@ -14,6 +14,8 @@ openblas, blas, lapack, + pythonSupport ? false, + python3Packages ? null, }: assert blas.implementation == "openblas" && lapack.implementation == "openblas"; @@ -56,7 +58,7 @@ stdenv.mkDerivation rec { cmakeFlags = [ "-DWARNINGS_AS_ERRORS=OFF" - "-DWITH_PYTHON_BINDINGS=OFF" + "-DWITH_PYTHON_BINDINGS=${if pythonSupport then "ON" else "OFF"}" "-DTARGET_WEBASSEMBLY=OFF" # Disable performance tests since they may fail on busy machines "-DWITH_TEST_PERFORMANCE=OFF" @@ -66,6 +68,7 @@ stdenv.mkDerivation rec { "-DWITH_TEST_FUZZ=OFF" # Disable FetchContent for flatbuffers and use the version from nixpkgs instead "-DFLATBUFFERS_USE_FETCHCONTENT=OFF" + "-DPYBIND11_USE_FETCHCONTENT=OFF" ]; doCheck = true; @@ -86,6 +89,12 @@ stdenv.mkDerivation rec { checkFlagsArray+=("ARGS=-E '${disabledTests}'") ''; + postInstall = lib.optionalString pythonSupport '' + mkdir -p $out/${builtins.dirOf python3Packages.python.sitePackages} + mv -v $out/lib/python3/site-packages $out/${python3Packages.python.sitePackages} + rmdir $out/lib/python3/ + ''; + # Note: only openblas and not atlas part of this Nix expression # see pkgs/development/libraries/science/math/liblapack/3.5.0.nix # to get a hint howto setup atlas instead of openblas @@ -106,7 +115,20 @@ stdenv.mkDerivation rec { libGL ]; - nativeBuildInputs = [ cmake flatbuffers ]; + nativeBuildInputs = + [ + cmake + flatbuffers + ] + ++ lib.optionals pythonSupport [ + python3Packages.python + python3Packages.pybind11 + ]; + + propagatedBuildInputs = lib.optionals pythonSupport [ + python3Packages.numpy + python3Packages.imageio + ]; meta = with lib; { description = "C++ based language for image processing and computational photography"; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index c026d04370f7..43ec8628e1bf 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -5562,6 +5562,8 @@ self: super: with self; { hakuin = callPackage ../development/python-modules/hakuin { }; + halide = toPythonModule (pkgs.halide.override { pythonSupport = true; python3Packages = self; }); + halo = callPackage ../development/python-modules/halo { }; halohome = callPackage ../development/python-modules/halohome { };