diff options
Diffstat (limited to 'pkgs/development/python-modules/libclang/default.nix')
-rw-r--r-- | pkgs/development/python-modules/libclang/default.nix | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/pkgs/development/python-modules/libclang/default.nix b/pkgs/development/python-modules/libclang/default.nix new file mode 100644 index 0000000000000..24d0e287ea030 --- /dev/null +++ b/pkgs/development/python-modules/libclang/default.nix @@ -0,0 +1,56 @@ +{ lib +, buildPythonPackage +, llvmPackages +, setuptools +, writeText +}: + +let + libclang = llvmPackages.libclang; + + pyproject_toml = writeText "pyproject.toml" '' + [build-system] + requires = ["setuptools>=42", "wheel"] + build-backend = "setuptools.build_meta" + ''; + + setup_cfg = writeText "setup.cfg" '' + [metadata] + name = clang + version = ${libclang.version} + + [options] + packages = clang + ''; +in buildPythonPackage { + pname = "libclang"; + format = "pyproject"; + + inherit (libclang) version src; + + buildInputs = [ setuptools ]; + + postUnpack = '' + # set source root to python bindings + if [ -e "$sourceRoot/clang/bindings/python" ]; then + # LLVM 13+ puts clang sources in subdirectory instead of plain tarball + sourceRoot="$sourceRoot/clang/bindings/python" + else + sourceRoot="$sourceRoot/bindings/python" + fi + ''; + + postPatch = '' + # link in our own build info to build as a python package + ln -s ${pyproject_toml} ./pyproject.toml + ln -s ${setup_cfg} ./setup.cfg + + # set passed libclang for runtime + echo 'Config.set_library_path("${lib.getLib libclang}/lib")' >>./clang/cindex.py + ''; + + meta = libclang.meta // { + description = "Python bindings for the C language family frontend for LLVM"; + maintainers = with lib.maintainers; [ lilyinstarlight ]; + }; +} |