gnu: Add libsigrok.

* gnu/packages/electronics.scm (libsigrok): New variable.

Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
This commit is contained in:
Theodoros Foradis 2017-06-24 00:05:15 +03:00 committed by Danny Milosavljevic
parent 7a19de9c48
commit 1c12be9682
No known key found for this signature in database
GPG key ID: E71A35542C30BAA5

View file

@ -24,9 +24,12 @@ (define-module (gnu packages electronics)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages documentation)
#:use-module (gnu packages glib)
#:use-module (gnu packages graphviz)
#:use-module (gnu packages libftdi)
#:use-module (gnu packages libusb)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages sdcc))
@ -111,3 +114,83 @@ (define-public sigrok-firmware-fx2lafw
(description "Fx2lafw is free firmware for Cypress FX2 chips which makes them usable
as simple logic analyzer and/or oscilloscope hardware.")
(license license:gpl2+)))
(define-public libsigrok
(package
(name "libsigrok")
(version "0.5.0")
(source (origin
(method url-fetch)
(uri (string-append
"http://sigrok.org/download/source/libsigrok/libsigrok-"
version ".tar.gz"))
(sha256
(base32
"197kr5ip98lxn7rv10zs35d1w0j7265s0xvckx0mq2l8kdvqd32c"))))
(outputs '("out" "doc"))
(arguments
`(#:tests? #f ; tests need usb access
#:phases
(modify-phases %standard-phases
(add-before 'configure 'change-udev-group
(lambda _
(let ((file "contrib/z60_libsigrok.rules"))
(substitute* file
(("plugdev") "dialout"))
(rename-file file "contrib/60-libsigrok.rules")
#t)))
(add-after 'build 'build-doc
(lambda _
(zero? (system* "doxygen"))))
(add-after 'install 'install-doc
(lambda* (#:key outputs #:allow-other-keys)
(copy-recursively "doxy/html-api"
(string-append (assoc-ref outputs "doc")
"/share/doc/libsigrok"))
#t))
(add-after 'install-doc 'install-udev-rules
(lambda* (#:key outputs #:allow-other-keys)
(install-file "contrib/60-libsigrok.rules"
(string-append
(assoc-ref outputs "out")
"/lib/udev/rules.d/"))))
(add-after 'install-udev-rules 'install-fw
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((fx2lafw (assoc-ref inputs "sigrok-firmware-fx2lafw"))
(out (assoc-ref outputs "out"))
(dir-suffix "/share/sigrok-firmware/")
(input-dir (string-append fx2lafw dir-suffix))
(output-dir (string-append out dir-suffix)))
(mkdir-p output-dir)
(for-each
(lambda (file)
(install-file file output-dir))
(find-files input-dir ".")))
#t)))))
(native-inputs
`(("check" ,check)
("doxygen" ,doxygen)
("graphviz" ,graphviz)
("sigrok-firmware-fx2lafw" ,sigrok-firmware-fx2lafw)
("pkg-config" ,pkg-config)))
(inputs
`(("python" ,python)
("zlib" ,zlib)))
;; libsigrokcxx.pc lists "glibmm" in Requires
;; libsigrok.pc lists "libserialport", "libusb", "libftdi" and "libzip" in
;; Requires.private and "glib" in Requires
(propagated-inputs
`(("glib" ,glib)
("glibmm" ,glibmm)
("libserialport" ,libserialport)
("libusb" ,libusb)
("libftdi" ,libftdi)
("libzip" ,libzip)))
(build-system gnu-build-system)
(home-page "http://www.sigrok.org/wiki/Libsigrok")
(synopsis "Library which provides the basic hardware access drivers for logic
analyzers")
(description "@code{libsigrok} is a shared library written in C which provides the basic hardware
access drivers for logic analyzers and other supported devices, as well as input/output file
format support.")
(license license:gpl3+)))