Files
nixpkgs/pkgs/development/python-modules/paddlepaddle/default.nix
T
Sergei Trofimovich 9f2d6c03f5 python3Packages.paddlepaddle: improve src eval error
Before the change eval raised an unrecoverable failure due to missing
attribute dereference:

    nix-repl> python3Packages.paddlepaddle.src
    error:
       … while evaluating the attribute 'paddlepaddle.src'

       error: attribute 'cp311' missing

       at pkgs/development/python-modules/paddlepaddle/default.nix:33:10:

           32|   allHashAndPlatform = import ./binary-hashes.nix;
           33|   hash = allHashAndPlatform."${stdenv.system}"."${cpuOrGpu}"."${pyShortVersion}"
             |          ^
           34|     ; #or (throw "${pname} has no binary-hashes.nix entry for '${stdenv.system}.${cpuOrGpu}.${pyShortVersion}' attribute");
       Did you mean one of cp310 or cp39?

After the change the error is raised via catchable `throw`:

    nix-repl> python3Packages.paddlepaddle.src
    error:
       … while evaluating the attribute 'paddlepaddle.src'
       error: paddlepaddle has no binary-hashes.nix entry for 'x86_64-linux.cpu.cp311' attribute

This allows for slightly easier scan for syntactic errors over
`nixpkgs`.
2024-01-03 17:37:33 +00:00

100 lines
2.6 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{ stdenv
, config
, lib
, buildPythonPackage
, fetchPypi
, python
, pythonOlder
, pythonAtLeast
, openssl_1_1
, zlib
, setuptools
, cudaSupport ? config.cudaSupport or false
, cudaPackages_11 ? {}
, addOpenGLRunpath
# runtime dependencies
, httpx
, numpy
, protobuf
, pillow
, decorator
, astor
, paddle-bfloat
, opt-einsum
}:
let
pname = "paddlepaddle" + lib.optionalString cudaSupport "-gpu";
version = "2.5.0";
format = "wheel";
pyShortVersion = "cp${builtins.replaceStrings ["."] [""] python.pythonVersion}";
cpuOrGpu = if cudaSupport then "gpu" else "cpu";
allHashAndPlatform = import ./binary-hashes.nix;
hash = allHashAndPlatform."${stdenv.system}"."${cpuOrGpu}"."${pyShortVersion}"
or (throw "${pname} has no binary-hashes.nix entry for '${stdenv.system}.${cpuOrGpu}.${pyShortVersion}' attribute");
platform = allHashAndPlatform."${stdenv.system}".platform;
src = fetchPypi ({
inherit version format hash platform;
pname = builtins.replaceStrings [ "-" ] [ "_" ] pname;
dist = pyShortVersion;
python = pyShortVersion;
abi = pyShortVersion;
});
in
buildPythonPackage {
inherit pname version format src;
disabled = pythonOlder "3.9" || pythonAtLeast "3.11";
libraryPath = lib.makeLibraryPath (
# TODO: remove openssl_1_1 and zlib, maybe by building paddlepaddle from
# source as suggested in the following comment:
# https://github.com/NixOS/nixpkgs/pull/243583#issuecomment-1641450848
[ openssl_1_1 zlib ] ++ lib.optionals cudaSupport (with cudaPackages_11; [
cudatoolkit.lib
cudatoolkit.out
cudnn
])
);
postFixup = lib.optionalString stdenv.isLinux ''
function fixRunPath {
p=$(patchelf --print-rpath $1)
patchelf --set-rpath "$p:$libraryPath" $1
${lib.optionalString cudaSupport ''
addOpenGLRunpath $1
''}
}
fixRunPath $out/${python.sitePackages}/paddle/fluid/libpaddle.so
'';
nativeBuildInputs = [
addOpenGLRunpath
];
propagatedBuildInputs = [
setuptools
httpx
numpy
protobuf
pillow
decorator
astor
paddle-bfloat
opt-einsum
];
pythonImportsCheck = [ "paddle" ];
# no tests
doCheck = false;
meta = with lib; {
description = "PArallel Distributed Deep LEarning: Machine Learning Framework from Industrial Practice &";
homepage = "https://github.com/PaddlePaddle/Paddle";
license = licenses.asl20;
maintainers = with maintainers; [ happysalada ];
platforms = [ "x86_64-linux" ] ++ optionals (!cudaSupport) [ "x86_64-darwin" "aarch64-darwin" ];
};
}