From 519bd3ba2763cd0785111e7677a9d0ca48ebd968 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Mon, 17 Jun 2024 14:33:07 +0200 Subject: [PATCH 1/3] openvino: 2024.1.0 -> 2024.2.0 https://github.com/openvinotoolkit/openvino/compare/refs/tags/2024.1.0...2024.2.0 --- pkgs/development/libraries/openvino/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/openvino/default.nix b/pkgs/development/libraries/openvino/default.nix index 280c1b7ef934..2e36cf208fb8 100644 --- a/pkgs/development/libraries/openvino/default.nix +++ b/pkgs/development/libraries/openvino/default.nix @@ -54,14 +54,14 @@ in stdenv.mkDerivation rec { pname = "openvino"; - version = "2024.1.0"; + version = "2024.2.0"; src = fetchFromGitHub { owner = "openvinotoolkit"; repo = "openvino"; rev = "refs/tags/${version}"; fetchSubmodules = true; - hash = "sha256-OOSxXpLjmhOgKvrSO6SmY7xLhJSzGXT8w/Y4FnfwTqU="; + hash = "sha256-HiKKvmqgbwW625An+Su0EOHqVrP18yvG2aOzrS0jWr4="; }; outputs = [ From 04a04bf44a322d134f984d400b12355708250a01 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Mon, 17 Jun 2024 16:12:24 +0200 Subject: [PATCH 2/3] tbb_2021_5: init --- pkgs/development/libraries/tbb/2021_5.nix | 71 +++++++++++++++++++ .../libraries/tbb/gcc13-fixes-2021.5.0.patch | 13 ++++ pkgs/top-level/all-packages.nix | 1 + 3 files changed, 85 insertions(+) create mode 100644 pkgs/development/libraries/tbb/2021_5.nix create mode 100644 pkgs/development/libraries/tbb/gcc13-fixes-2021.5.0.patch diff --git a/pkgs/development/libraries/tbb/2021_5.nix b/pkgs/development/libraries/tbb/2021_5.nix new file mode 100644 index 000000000000..3bfa9278106d --- /dev/null +++ b/pkgs/development/libraries/tbb/2021_5.nix @@ -0,0 +1,71 @@ +{ lib +, stdenv +, fetchFromGitHub +, fetchpatch +, cmake +}: + +stdenv.mkDerivation rec { + pname = "tbb"; + version = "2021.5.0"; + + outputs = [ "out" "dev" ]; + + src = fetchFromGitHub { + owner = "oneapi-src"; + repo = "oneTBB"; + rev = "v${version}"; + hash = "sha256-TJ/oSSMvgtKuz7PVyIoFEbBW6EZz7t2wr/kP093HF/w="; + }; + + nativeBuildInputs = [ + cmake + ]; + + patches = [ + # port of https://github.com/oneapi-src/oneTBB/pull/1031 + ./gcc13-fixes-2021.5.0.patch + + (fetchpatch { + # Fix "field used uninitialized" on modern gcc versions (https://github.com/oneapi-src/oneTBB/pull/958) + url = "https://github.com/oneapi-src/oneTBB/commit/3003ec07740703e6aed12b028af20f4b0f16adae.patch"; + hash = "sha256-l4+9IxIEdRX/q8JyDY9CPKWzSLatpIVSiNjmIM7ilj0="; + }) + ]; + + # Disable failing test on musl + # test/conformance/conformance_resumable_tasks.cpp:37:24: error: ‘suspend’ is not a member of ‘tbb::v1::task’; did you mean ‘tbb::detail::r1::suspend’? + postPatch = lib.optionalString stdenv.hostPlatform.isMusl '' + substituteInPlace test/CMakeLists.txt \ + --replace-fail 'conformance_resumable_tasks' "" + ''; + + # Fix build with modern gcc + # In member function 'void std::__atomic_base<_IntTp>::store(__int_type, std::memory_order) [with _ITp = bool]', + NIX_CFLAGS_COMPILE = lib.optionals stdenv.cc.isGNU [ "-Wno-error=array-bounds" "-Wno-error=stringop-overflow" "-Wno-address" ] ++ + # error: variable 'val' set but not used + lib.optionals stdenv.cc.isClang [ "-Wno-error=unused-but-set-variable" ] ++ + # Workaround for gcc-12 ICE when using -O3 + # https://gcc.gnu.org/PR108854 + lib.optionals (stdenv.cc.isGNU && stdenv.isx86_32) [ "-O2" ]; + + # Fix undefined reference errors with version script under LLVM. + NIX_LDFLAGS = lib.optionalString (stdenv.cc.bintools.isLLVM && lib.versionAtLeast stdenv.cc.bintools.version "17") "--undefined-version"; + + + meta = with lib; { + description = "Intel Thread Building Blocks C++ Library"; + homepage = "http://threadingbuildingblocks.org/"; + license = licenses.asl20; + longDescription = '' + Intel Threading Building Blocks offers a rich and complete approach to + expressing parallelism in a C++ program. It is a library that helps you + take advantage of multi-core processor performance without having to be a + threading expert. Intel TBB is not just a threads-replacement library. It + represents a higher-level, task-based parallelism that abstracts platform + details and threading mechanisms for scalability and performance. + ''; + platforms = platforms.unix; + maintainers = with maintainers; [ thoughtpolice tmarkus ]; + }; +} diff --git a/pkgs/development/libraries/tbb/gcc13-fixes-2021.5.0.patch b/pkgs/development/libraries/tbb/gcc13-fixes-2021.5.0.patch new file mode 100644 index 000000000000..28b5a0e695f7 --- /dev/null +++ b/pkgs/development/libraries/tbb/gcc13-fixes-2021.5.0.patch @@ -0,0 +1,13 @@ +diff --git a/test/common/utils_assert.h b/test/common/utils_assert.h +index 33bc8ab4..a3d21baf 100644 +--- a/test/common/utils_assert.h ++++ b/test/common/utils_assert.h +@@ -20,6 +20,8 @@ + #include "config.h" + #include "utils_report.h" + ++#include ++ + #define REPORT_FATAL_ERROR REPORT + + namespace utils { diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 676f30a31b52..f47544b67481 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16866,6 +16866,7 @@ with pkgs; swiPrologWithGui = swiProlog.override { withGui = true; }; tbb_2020_3 = callPackage ../development/libraries/tbb/2020_3.nix { }; + tbb_2021_5 = callPackage ../development/libraries/tbb/2021_5.nix { } ; tbb_2021_11 = callPackage ../development/libraries/tbb { }; # many packages still fail with latest version tbb = tbb_2020_3; From e91df802987b7c83a0462ff7e997b88ed34782a3 Mon Sep 17 00:00:00 2001 From: Matt Leon Date: Sun, 11 Feb 2024 16:02:10 -0500 Subject: [PATCH 3/3] openvino: fix aarch64 build This package was previously marked broken on aarch64. Adding scons as a native build input, blocking scons's build hooks, and removing x86-specific build options (for intel processors) seems to have fixed the build. I noticed a build error when not using the cmake build dir, so I also removed that option. Scons requires an override for python3, so that it doesn't leak the default python interpreter into the build, which means the native cpython library would always be built against the default version. Co-Authored-By: Martin Weinelt --- .../libraries/openvino/default.nix | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/pkgs/development/libraries/openvino/default.nix b/pkgs/development/libraries/openvino/default.nix index 2e36cf208fb8..14ad6c166e55 100644 --- a/pkgs/development/libraries/openvino/default.nix +++ b/pkgs/development/libraries/openvino/default.nix @@ -5,6 +5,7 @@ , cudaSupport ? opencv.cudaSupport or false # build +, scons , addOpenGLRunpath , autoPatchelfHook , cmake @@ -25,7 +26,7 @@ , protobuf , pugixml , snappy -, tbb +, tbb_2021_5 , cudaPackages }: @@ -36,6 +37,9 @@ let stdenv = gcc12Stdenv; + # prevent scons from leaking in the default python version + scons' = scons.override { python3 = python3Packages.python; }; + tbbbind_version = "2_5"; tbbbind = fetchurl { url = "https://storage.openvinotoolkit.org/dependencies/thirdparty/linux/tbbbind_${tbbbind_version}_static_lin_v4.tgz"; @@ -78,6 +82,7 @@ stdenv.mkDerivation rec { patchelf pkg-config python + scons' shellcheck ] ++ lib.optionals cudaSupport [ cudaPackages.cuda_nvcc @@ -91,7 +96,9 @@ stdenv.mkDerivation rec { popd ''; - dontUseCmakeBuildDir = true; + dontUseSconsCheck = true; + dontUseSconsBuild = true; + dontUseSconsInstall = true; cmakeFlags = [ "-Wno-dev" @@ -109,7 +116,7 @@ stdenv.mkDerivation rec { (cmakeBool "ENABLE_SAMPLES" false) # features - (cmakeBool "ENABLE_INTEL_CPU" true) + (cmakeBool "ENABLE_INTEL_CPU" stdenv.isx86_64) (cmakeBool "ENABLE_JS" false) (cmakeBool "ENABLE_LTO" true) (cmakeBool "ENABLE_ONEDNN_FOR_GPU" false) @@ -125,8 +132,6 @@ stdenv.mkDerivation rec { (cmakeBool "ENABLE_SYSTEM_TBB" true) ]; - env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isAarch64 "-Wno-narrowing"; - autoPatchelfIgnoreMissingDeps = [ "libngraph_backend.so" ]; @@ -140,7 +145,7 @@ stdenv.mkDerivation rec { opencv.cxxdev pugixml snappy - tbb + tbb_2021_5 ] ++ lib.optionals cudaSupport [ cudaPackages.cuda_cudart ]; @@ -172,8 +177,7 @@ stdenv.mkDerivation rec { homepage = "https://docs.openvinotoolkit.org/"; license = with licenses; [ asl20 ]; platforms = platforms.all; - broken = (stdenv.isLinux && stdenv.isAarch64) # requires scons, then fails with *** Source directory cannot be under variant directory. - || stdenv.isDarwin; # Cannot find macos sdk + broken = stdenv.isDarwin; # Cannot find macos sdk maintainers = with maintainers; [ tfmoraes ]; }; }