2 Commits

Author SHA1 Message Date
doloro 0188aff399 fix: it builds now
check / build (push) Failing after 15s
check / build (pull_request) Failing after 14s
2026-04-21 23:10:14 +01:00
doloro 34974204db wip: llama-cpp with hexagon 2026-04-21 17:38:09 +01:00
2 changed files with 42 additions and 11 deletions
@@ -0,0 +1,6 @@
{ llama-cpp }:
llama-cpp.override {
hexagonSupport = true;
blasSupport = false;
}
+36 -11
View File
@@ -1,5 +1,6 @@
{ {
lib, lib,
pkgs,
autoAddDriverRunpath, autoAddDriverRunpath,
cmake, cmake,
fetchFromGitHub, fetchFromGitHub,
@@ -35,8 +36,8 @@
llama-cpp, llama-cpp,
shaderc, shaderc,
vulkan-headers, vulkan-headers,
vulkan-loader,
hexagon-sdk, hexagon-sdk,
vulkan-loader,
ninja, ninja,
}: }:
@@ -44,7 +45,14 @@ let
# It's necessary to consistently use backendStdenv when building with CUDA support, # It's necessary to consistently use backendStdenv when building with CUDA support,
# otherwise we get libstdc++ errors downstream. # otherwise we get libstdc++ errors downstream.
# cuda imposes an upper bound on the gcc version # cuda imposes an upper bound on the gcc version
effectiveStdenv = if cudaSupport then cudaPackages.backendStdenv else stdenv; buildPkgs = import pkgs.path {
system = "x86_64-linux"; # builder uses x86_64
};
# hexagon needs a x86 build env
crossPkgs = buildPkgs.pkgsCross.aarch64-multiplatform;
effectiveStdenv = if hexagonSupport then crossPkgs.stdenv else stdenv;
inherit (lib) inherit (lib)
cmakeBool cmakeBool
cmakeFeature cmakeFeature
@@ -72,16 +80,20 @@ let
vulkan-headers vulkan-headers
vulkan-loader vulkan-loader
]; ];
hexagonBuildInputs = [
hexagon-sdk
];
in in
effectiveStdenv.mkDerivation (finalAttrs: { effectiveStdenv.mkDerivation (finalAttrs: {
pname = "llama-cpp"; pname = "llama-cpp";
version = "6981"; version = "8871";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ggml-org"; owner = "ggml-org";
repo = "llama.cpp"; repo = "llama.cpp";
tag = "b${finalAttrs.version}"; tag = "b${finalAttrs.version}";
hash = "sha256-0WtiHDlMeb+m2XcMwkPFY1mtwVTwRJUoxQSwzpiRbts="; hash = "sha256-dSMomkkG3YFwXAcYTym6Z03u8ZAWFFio8jdQJPMJ/yg=";
leaveDotGit = true; leaveDotGit = true;
postFetch = '' postFetch = ''
git -C "$out" rev-parse --short HEAD > $out/COMMIT git -C "$out" rev-parse --short HEAD > $out/COMMIT
@@ -91,8 +103,10 @@ effectiveStdenv.mkDerivation (finalAttrs: {
nativeBuildInputs = [ nativeBuildInputs = [
cmake cmake
pkgs.clang
ninja ninja
pkg-config pkg-config
blas
] ]
++ optionals cudaSupport [ ++ optionals cudaSupport [
cudaPackages.cuda_nvcc cudaPackages.cuda_nvcc
@@ -105,7 +119,10 @@ effectiveStdenv.mkDerivation (finalAttrs: {
++ optionals rocmSupport rocmBuildInputs ++ optionals rocmSupport rocmBuildInputs
++ optionals blasSupport [ blas ] ++ optionals blasSupport [ blas ]
++ optionals vulkanSupport vulkanBuildInputs ++ optionals vulkanSupport vulkanBuildInputs
++ [ curl ]; ++ optionals hexagonSupport hexagonBuildInputs
++ [
curl
];
preConfigure = '' preConfigure = ''
prependToVar cmakeFlags "-DLLAMA_BUILD_COMMIT:STRING=$(cat COMMIT)" prependToVar cmakeFlags "-DLLAMA_BUILD_COMMIT:STRING=$(cat COMMIT)"
@@ -146,9 +163,17 @@ effectiveStdenv.mkDerivation (finalAttrs: {
(cmakeBool "CMAKE_SKIP_BUILD_RPATH" true) (cmakeBool "CMAKE_SKIP_BUILD_RPATH" true)
] ]
++ optionals hexagonSupport [ ++ optionals hexagonSupport [
# (cmakeFeature "CMAKE_TOOLCHAIN_FILE" "${finalAttrs.src}/cmake/arm64-linux-clang.cmake")
(cmakeFeature "CMAKE_C_FLAGS" "-D__ARM_FEATURE_DOTPROD=1")
(cmakeFeature "CMAKE_CXX_FLAGS" "")
(cmakeBool "GGML_OPENMP" false)
(cmakeBool "GGML_LLAMAFILE" false)
(cmakeFeature "GGML_OPENCL" "OFF")
(cmakeFeature "PREBUILT_LIB_DIR" "linux_aarch64")
(cmakeFeature "GGML_HEXAGON_FP32_QUANTIZE_GROUP_SIZE" "128") (cmakeFeature "GGML_HEXAGON_FP32_QUANTIZE_GROUP_SIZE" "128")
(cmakeFeature "HEXAGON_SDK_ROOT" "${hexagon-sdk}/opt/hexagon") (cmakeFeature "HEXAGON_SDK_ROOT" "${hexagon-sdk}/opt")
(cmakeFeature "HEXAGON_TOOLS_ROOT" "${hexagon-sdk}/opt/hexagon/tools/HEXAGON_Tools/19.0.04") (cmakeFeature "HEXAGON_TOOLS_ROOT" "${hexagon-sdk}/opt/tools/HEXAGON_Tools/19.0.04")
(cmakeFeature "LLAMA_OPENSSL" "OFF")
]; ];
# upstream plans on adding targets at the cmakelevel, remove those # upstream plans on adding targets at the cmakelevel, remove those
@@ -190,9 +215,9 @@ effectiveStdenv.mkDerivation (finalAttrs: {
xddxdd xddxdd
]; ];
platforms = lib.platforms.unix; platforms = lib.platforms.unix;
badPlatforms = optionals (cudaSupport || openclSupport) lib.platforms.darwin ( badPlatforms = optionals (cudaSupport || openclSupport) lib.platforms.darwin;
hexagonSupport && !effectiveStdenv.hostPlatform.aarch64-linux broken =
); (metalSupport && !effectiveStdenv.hostPlatform.isDarwin)
broken = metalSupport && !effectiveStdenv.hostPlatform.isDarwin; || (hexagonSupport && !effectiveStdenv.hostPlatform.isAarch64);
}; };
}) })