gnu: Add python-clang.

* gnu/packages/llvm.scm (clang-python-bindings): New procedure.
(python-clang-10, python-clang-11, python-clang-12): New variables.
This commit is contained in:
Ludovic Courtès 2021-08-04 16:44:56 +02:00 committed by Ludovic Courtès
parent dd55ad7ff8
commit f44fe1d5bf
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5

@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2016, 2018 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Dennis Mungai <dmngaie@gmail.com>
;;; Copyright © 2016, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
@ -1258,6 +1258,45 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
"This package provides a Python binding to LLVM for use in Numba.")
(license license:bsd-3)))
(define-public (clang-python-bindings clang)
"Return a package for the Python bindings of CLANG."
(package
(inherit clang)
(name "python-clang")
(build-system python-build-system)
(outputs '("out"))
(arguments
'(#:phases (modify-phases %standard-phases
(add-before 'build 'change-directory
(lambda _
(chdir "bindings/python")))
(add-before 'build 'create-setup-py
(lambda _
;; Generate a basic "setup.py", enough so it can be
;; built and installed.
(with-output-to-file "setup.py"
(lambda ()
(display "from setuptools import setup
setup(name=\"clang\", packages=[\"clang\"])\n")))))
(add-before 'build 'set-libclang-file-name
(lambda* (#:key inputs #:allow-other-keys)
;; Record the absolute file name of libclang.so.
(let ((clang (assoc-ref inputs "clang")))
(substitute* "clang/cindex.py"
(("libclang\\.so")
(string-append clang "/lib/libclang.so")))))))))
(inputs `(("clang" ,clang)))
(synopsis "Python bindings to libclang")))
(define-public python-clang-10
(clang-python-bindings clang-10))
(define-public python-clang-11
(clang-python-bindings clang-11))
(define-public python-clang-12
(clang-python-bindings clang-12))
(define-public emacs-clang-format
(package
(inherit clang)