From 6e19b55a552bb6d621b68f3064fe85bba4502ad2 Mon Sep 17 00:00:00 2001 From: Jan Solanti Date: Wed, 18 Oct 2023 00:26:12 +0300 Subject: [PATCH 1/8] pocl: init at 4.0 --- pkgs/development/libraries/pocl/default.nix | 62 +++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 2 files changed, 64 insertions(+) create mode 100644 pkgs/development/libraries/pocl/default.nix diff --git a/pkgs/development/libraries/pocl/default.nix b/pkgs/development/libraries/pocl/default.nix new file mode 100644 index 000000000000..6f4dc022485a --- /dev/null +++ b/pkgs/development/libraries/pocl/default.nix @@ -0,0 +1,62 @@ +{ lib +, stdenv +, fetchFromGitHub +, nix-update-script +, cmake +, pkg-config +, hwloc +, llvmPackages_16 +, lttng-ust +, ocl-icd +, python3 +}: + +let + llvmPackages = llvmPackages_16; + clang = llvmPackages.clangUseLLVM; +in stdenv.mkDerivation (finalAttrs: { + pname = "pocl"; + version = "4.0"; + + src = fetchFromGitHub { + owner = "pocl"; + repo = "pocl"; + rev = "v${finalAttrs.version}"; + sha256 = "sha256-Uo4Np4io1s/NMK+twX36PLBFP0j5j/0NkkBvS2Zv9ng="; + }; + + cmakeFlags = [ + "-DKERNELLIB_HOST_CPU_VARIANTS=distro" + # avoid the runtime linker pulling in a different llvm e.g. from graphics drivers + "-DLLVM_STATIC=ON" + "-DENABLE_POCL_BUILDING=OFF" + "-DPOCL_ICD_ABSOLUTE_PATH=ON" + "-DENABLE_ICD=ON" + "-DCLANG=${clang}/bin/clang" + "-DCLANGXX=${clang}/bin/clang++" + ]; + + nativeBuildInputs = [ + cmake pkg-config + clang + python3 + ]; + + buildInputs = [ + hwloc + llvmPackages.llvm + llvmPackages.libclang + lttng-ust + ocl-icd + ]; + + passthru.updateScript = nix-update-script { }; + + meta = with lib; { + description = "A portable open source (MIT-licensed) implementation of the OpenCL standard"; + homepage = "http://portablecl.org"; + license = licenses.mit; + maintainers = with maintainers; [ jansol ]; + platforms = platforms.linux ++ platforms.darwin; + }; +}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 30fde6924b01..616328d39ff0 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -23647,6 +23647,8 @@ with pkgs; plib = callPackage ../development/libraries/plib { }; + pocl = callPackage ../development/libraries/pocl { }; + poco = callPackage ../development/libraries/poco { }; podofo = callPackage ../development/libraries/podofo { }; From 2c84bd8fbfd6ccc32c648545c6a3b37f0b352fdb Mon Sep 17 00:00:00 2001 From: Lan Tian Date: Wed, 3 Jul 2024 16:35:07 +0300 Subject: [PATCH 2/8] pocl: wrap clang to fix missing libgcc.a and libgcc_s.so --- pkgs/development/libraries/pocl/default.nix | 30 +++++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/pkgs/development/libraries/pocl/default.nix b/pkgs/development/libraries/pocl/default.nix index 6f4dc022485a..bb3fdb5f0f07 100644 --- a/pkgs/development/libraries/pocl/default.nix +++ b/pkgs/development/libraries/pocl/default.nix @@ -9,11 +9,27 @@ , lttng-ust , ocl-icd , python3 +, runCommand +, makeWrapper }: let llvmPackages = llvmPackages_16; clang = llvmPackages.clangUseLLVM; + # Workaround to make sure libclang finds libgcc.a and libgcc_s.so when + # invoked from within libpocl + clangWrapped = runCommand "clang-pocl" { nativeBuildInputs = [ makeWrapper ]; } '' + mkdir -p $out/bin + cp -r ${clang}/bin/* $out/bin/ + LIBGCC_DIR=$(dirname $(find ${stdenv.cc.cc}/lib/ -name libgcc.a)) + for F in ${clang}/bin/ld*; do + BASENAME=$(basename "$F") + rm -f $out/bin/$BASENAME + makeWrapper ${clang}/bin/$BASENAME $out/bin/$BASENAME \ + --add-flags "-L$LIBGCC_DIR" \ + --add-flags "-L${stdenv.cc.cc.lib}/lib" + done + ''; in stdenv.mkDerivation (finalAttrs: { pname = "pocl"; version = "4.0"; @@ -32,13 +48,14 @@ in stdenv.mkDerivation (finalAttrs: { "-DENABLE_POCL_BUILDING=OFF" "-DPOCL_ICD_ABSOLUTE_PATH=ON" "-DENABLE_ICD=ON" - "-DCLANG=${clang}/bin/clang" - "-DCLANGXX=${clang}/bin/clang++" + "-DCLANG=${clangWrapped}/bin/clang" + "-DCLANGXX=${clangWrapped}/bin/clang++" ]; nativeBuildInputs = [ - cmake pkg-config - clang + cmake + pkg-config + clangWrapped python3 ]; @@ -56,7 +73,10 @@ in stdenv.mkDerivation (finalAttrs: { description = "A portable open source (MIT-licensed) implementation of the OpenCL standard"; homepage = "http://portablecl.org"; license = licenses.mit; - maintainers = with maintainers; [ jansol ]; + maintainers = with maintainers; [ + jansol + xddxdd + ]; platforms = platforms.linux ++ platforms.darwin; }; }) From e0771b7e8e5c6b5c8b3d707d9e0f4ae8070152af Mon Sep 17 00:00:00 2001 From: Jan Solanti Date: Wed, 3 Jul 2024 16:37:40 +0300 Subject: [PATCH 3/8] pocl: move to by-name --- .../libraries/pocl/default.nix => by-name/po/pocl/package.nix} | 0 pkgs/top-level/all-packages.nix | 2 -- 2 files changed, 2 deletions(-) rename pkgs/{development/libraries/pocl/default.nix => by-name/po/pocl/package.nix} (100%) diff --git a/pkgs/development/libraries/pocl/default.nix b/pkgs/by-name/po/pocl/package.nix similarity index 100% rename from pkgs/development/libraries/pocl/default.nix rename to pkgs/by-name/po/pocl/package.nix diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 616328d39ff0..30fde6924b01 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -23647,8 +23647,6 @@ with pkgs; plib = callPackage ../development/libraries/plib { }; - pocl = callPackage ../development/libraries/pocl { }; - poco = callPackage ../development/libraries/poco { }; podofo = callPackage ../development/libraries/podofo { }; From 3ba13bf12bbcbcbbdd4321b2c36ca683a5170dce Mon Sep 17 00:00:00 2001 From: Jan Solanti Date: Wed, 3 Jul 2024 16:41:04 +0300 Subject: [PATCH 4/8] pocl: 4.0 -> 6.0 --- pkgs/by-name/po/pocl/package.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/by-name/po/pocl/package.nix b/pkgs/by-name/po/pocl/package.nix index bb3fdb5f0f07..236b051b796d 100644 --- a/pkgs/by-name/po/pocl/package.nix +++ b/pkgs/by-name/po/pocl/package.nix @@ -5,7 +5,7 @@ , cmake , pkg-config , hwloc -, llvmPackages_16 +, llvmPackages_18 , lttng-ust , ocl-icd , python3 @@ -14,7 +14,7 @@ }: let - llvmPackages = llvmPackages_16; + llvmPackages = llvmPackages_18; clang = llvmPackages.clangUseLLVM; # Workaround to make sure libclang finds libgcc.a and libgcc_s.so when # invoked from within libpocl @@ -32,13 +32,13 @@ let ''; in stdenv.mkDerivation (finalAttrs: { pname = "pocl"; - version = "4.0"; + version = "6.0"; src = fetchFromGitHub { owner = "pocl"; repo = "pocl"; rev = "v${finalAttrs.version}"; - sha256 = "sha256-Uo4Np4io1s/NMK+twX36PLBFP0j5j/0NkkBvS2Zv9ng="; + sha256 = "sha256-NHR9yrI6Odb/s/OBnEVifdcLEXvwqzAMZWpGViv2cJg="; }; cmakeFlags = [ From 22867a51e9f99ad88b150fa3472013f3f1d7ecd5 Mon Sep 17 00:00:00 2001 From: Jan Solanti Date: Wed, 3 Jul 2024 16:44:48 +0300 Subject: [PATCH 5/8] pocl: build experimental remote driver This is a small driver and it will only get loaded at runtime if explicitly requested, so building it unconditionally should not cause any trouble. --- pkgs/by-name/po/pocl/package.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/by-name/po/pocl/package.nix b/pkgs/by-name/po/pocl/package.nix index 236b051b796d..196c4981e715 100644 --- a/pkgs/by-name/po/pocl/package.nix +++ b/pkgs/by-name/po/pocl/package.nix @@ -50,6 +50,8 @@ in stdenv.mkDerivation (finalAttrs: { "-DENABLE_ICD=ON" "-DCLANG=${clangWrapped}/bin/clang" "-DCLANGXX=${clangWrapped}/bin/clang++" + "-DENABLE_REMOTE_CLIENT=ON" + "-DENABLE_REMOTE_SERVER=ON" ]; nativeBuildInputs = [ From ba1c8bb0d5009871639a84540c1aa8436df42974 Mon Sep 17 00:00:00 2001 From: Jan Solanti Date: Wed, 3 Jul 2024 17:51:58 +0300 Subject: [PATCH 6/8] pocl: use nixpkgs' default LLVM, enable SPIR-V support --- pkgs/by-name/po/pocl/package.nix | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/po/pocl/package.nix b/pkgs/by-name/po/pocl/package.nix index 196c4981e715..9d9aaf24ef08 100644 --- a/pkgs/by-name/po/pocl/package.nix +++ b/pkgs/by-name/po/pocl/package.nix @@ -5,7 +5,10 @@ , cmake , pkg-config , hwloc -, llvmPackages_18 +, llvmPackages +, libxml2 # required for statically linked llvm +, spirv-llvm-translator +, spirv-tools , lttng-ust , ocl-icd , python3 @@ -14,7 +17,6 @@ }: let - llvmPackages = llvmPackages_18; clang = llvmPackages.clangUseLLVM; # Workaround to make sure libclang finds libgcc.a and libgcc_s.so when # invoked from within libpocl @@ -44,7 +46,7 @@ in stdenv.mkDerivation (finalAttrs: { cmakeFlags = [ "-DKERNELLIB_HOST_CPU_VARIANTS=distro" # avoid the runtime linker pulling in a different llvm e.g. from graphics drivers - "-DLLVM_STATIC=ON" + "-DSTATIC_LLVM=ON" "-DENABLE_POCL_BUILDING=OFF" "-DPOCL_ICD_ABSOLUTE_PATH=ON" "-DENABLE_ICD=ON" @@ -63,10 +65,13 @@ in stdenv.mkDerivation (finalAttrs: { buildInputs = [ hwloc + libxml2 llvmPackages.llvm llvmPackages.libclang lttng-ust ocl-icd + spirv-tools + spirv-llvm-translator ]; passthru.updateScript = nix-update-script { }; From b9b9fbe5aa1967777feeb61ecfa82b648403c135 Mon Sep 17 00:00:00 2001 From: John Titor <50095635+JohnRTitor@users.noreply.github.com> Date: Thu, 4 Jul 2024 00:41:50 +0530 Subject: [PATCH 7/8] pocl: cleanup, add changelog --- pkgs/by-name/po/pocl/package.nix | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pkgs/by-name/po/pocl/package.nix b/pkgs/by-name/po/pocl/package.nix index 9d9aaf24ef08..18d2c7c3a078 100644 --- a/pkgs/by-name/po/pocl/package.nix +++ b/pkgs/by-name/po/pocl/package.nix @@ -40,7 +40,7 @@ in stdenv.mkDerivation (finalAttrs: { owner = "pocl"; repo = "pocl"; rev = "v${finalAttrs.version}"; - sha256 = "sha256-NHR9yrI6Odb/s/OBnEVifdcLEXvwqzAMZWpGViv2cJg="; + hash = "sha256-NHR9yrI6Odb/s/OBnEVifdcLEXvwqzAMZWpGViv2cJg="; }; cmakeFlags = [ @@ -76,14 +76,15 @@ in stdenv.mkDerivation (finalAttrs: { passthru.updateScript = nix-update-script { }; - meta = with lib; { + meta = { description = "A portable open source (MIT-licensed) implementation of the OpenCL standard"; homepage = "http://portablecl.org"; - license = licenses.mit; - maintainers = with maintainers; [ + changelog = "https://github.com/pocl/pocl/releases/tag/v${finalAttrs.version}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ jansol xddxdd ]; - platforms = platforms.linux ++ platforms.darwin; + platforms = lib.platforms.unix; }; }) From 16284101b8e76c392569bdabd8a9974fca5e59c4 Mon Sep 17 00:00:00 2001 From: John Titor <50095635+JohnRTitor@users.noreply.github.com> Date: Thu, 4 Jul 2024 00:42:38 +0530 Subject: [PATCH 8/8] pocl: format with nixfmt-rfc-style --- pkgs/by-name/po/pocl/package.nix | 36 +++++++++++++++++--------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/pkgs/by-name/po/pocl/package.nix b/pkgs/by-name/po/pocl/package.nix index 18d2c7c3a078..d3c58c00e21e 100644 --- a/pkgs/by-name/po/pocl/package.nix +++ b/pkgs/by-name/po/pocl/package.nix @@ -1,19 +1,20 @@ -{ lib -, stdenv -, fetchFromGitHub -, nix-update-script -, cmake -, pkg-config -, hwloc -, llvmPackages -, libxml2 # required for statically linked llvm -, spirv-llvm-translator -, spirv-tools -, lttng-ust -, ocl-icd -, python3 -, runCommand -, makeWrapper +{ + lib, + stdenv, + fetchFromGitHub, + nix-update-script, + cmake, + pkg-config, + hwloc, + llvmPackages, + libxml2, # required for statically linked llvm + spirv-llvm-translator, + spirv-tools, + lttng-ust, + ocl-icd, + python3, + runCommand, + makeWrapper, }: let @@ -32,7 +33,8 @@ let --add-flags "-L${stdenv.cc.cc.lib}/lib" done ''; -in stdenv.mkDerivation (finalAttrs: { +in +stdenv.mkDerivation (finalAttrs: { pname = "pocl"; version = "6.0";