gnu: Add libsigrok.

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

Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
master
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
1 changed files with 83 additions and 0 deletions

View File

@ -24,9 +24,12 @@
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages check) #:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages documentation) #:use-module (gnu packages documentation)
#:use-module (gnu packages glib) #:use-module (gnu packages glib)
#:use-module (gnu packages graphviz) #: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 pkg-config)
#:use-module (gnu packages python) #:use-module (gnu packages python)
#:use-module (gnu packages sdcc)) #:use-module (gnu packages sdcc))
@ -111,3 +114,83 @@ to take care of the OS-specific details when writing software that uses serial p
(description "Fx2lafw is free firmware for Cypress FX2 chips which makes them usable (description "Fx2lafw is free firmware for Cypress FX2 chips which makes them usable
as simple logic analyzer and/or oscilloscope hardware.") as simple logic analyzer and/or oscilloscope hardware.")
(license license:gpl2+))) (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+)))