1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2015, 2016, 2017 Alex Kost <alezost@gmail.com>
3 ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
4 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
5 ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
7 ;;; This file is part of GNU Guix.
9 ;;; GNU Guix is free software; you can redistribute it and/or modify it
10 ;;; under the terms of the GNU General Public License as published by
11 ;;; the Free Software Foundation; either version 3 of the License, or (at
12 ;;; your option) any later version.
14 ;;; GNU Guix is distributed in the hope that it will be useful, but
15 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
16 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 ;;; GNU General Public License for more details.
19 ;;; You should have received a copy of the GNU General Public License
20 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
22 (define-module (gnu packages lirc)
23 #:use-module (guix packages)
24 #:use-module (guix download)
25 #:use-module (guix git-download)
26 #:use-module (guix build-system gnu)
27 #:use-module (guix build-system python)
28 #:use-module ((guix licenses) #:prefix license:)
29 #:use-module (gnu packages)
30 #:use-module (gnu packages pkg-config)
31 #:use-module (gnu packages libusb)
32 #:use-module (gnu packages linux)
33 #:use-module (gnu packages xml)
34 #:use-module (gnu packages xorg)
35 #:use-module (gnu packages python)
36 #:use-module (gnu packages python-xyz))
44 (uri (string-append "mirror://sourceforge/lirc/LIRC/" version
45 "/lirc-" version ".tar.bz2"))
48 "1whlyifvvc7w04ahq07nnk1h18wc8j7c6wnvlb6mszravxh3qxcb"))
49 (patches (search-patches "lirc-localstatedir.patch"
50 "lirc-reproducible-build.patch"))))
51 (build-system gnu-build-system)
54 '("--localstatedir=/var"
55 ;; "configure" script fails to enable "devinput" driver as it
56 ;; checks for "/dev/input" directory (which is not available),
57 ;; so enable it explicitly.
60 (modify-phases %standard-phases
61 (add-after 'unpack 'disable-kernel-sniffing
63 ;; Correct the faulty assumption that systemd support should be
64 ;; hard-wired when a build host's /proc/version contains "Ubuntu".
65 (substitute* "configure"
66 (("kernelversion=.*") "kernelversion=irrelevant\n"))
68 (add-after 'unpack 'patch-lirc-make-devinput
69 (lambda* (#:key inputs #:allow-other-keys)
70 ;; 'lirc-make-devinput' script assumes that linux headers
71 ;; are placed in "/usr/...".
72 (let ((headers (assoc-ref inputs "linux-headers")))
73 (substitute* "tools/lirc-make-devinput"
74 (("/usr/include") (string-append headers "/include"))))
76 (add-after 'unpack 'patch-doc/Makefile.in
78 ;; Lirc wants to install several images and a useless html page
79 ;; to "$(localstatedir)/lib/lirc/". This makes 'install' phase
80 ;; fail as localstatedir is "/var", so do not install these
81 ;; files there (the same images are installed in
82 ;; "share/doc/lirc/images/" anyway).
83 (substitute* "doc/Makefile.in"
84 (("^vardocs_DATA =.*") "vardocs_DATA =\n")
85 (("^varimage_DATA =.*") "varimage_DATA =\n"))
88 `(("pkg-config" ,pkg-config)
89 ("libxslt" ,libxslt)))
92 ("libusb-compat" ,libusb-compat)
93 ("linux-headers" ,linux-libre-headers)
94 ("alsa-lib" ,alsa-lib)
96 (home-page "https://www.lirc.org/")
97 (synopsis "Linux Infrared Remote Control")
99 "LIRC allows computers to send and receive IR signals of many commonly
100 used remote controls. The most important part of LIRC is the @code{lircd}
101 daemon that decodes IR signals received by the device drivers. The second
102 daemon program @code{lircmd} translates IR signals to mouse movements.
103 The user space applications allow you to control your computer with a remote
104 control: you can send X events to applications, start programs and much more
105 on just one button press.")
106 (license license:gpl2+)))
108 (define-public python-lirc
109 (let ((commit "c28708bbeb6e02d85f13dd7e0b24e8e86abc215b")
113 (version (git-version "1.2.1" revision commit))
118 (url "https://github.com/tompreston/python-lirc")
120 (file-name (git-file-name name version))
123 "13s9zqyfh871ls1aha47rhmk13b4mcyfckcn2sw70bvc26832gk6"))))
124 (build-system python-build-system)
128 `(("python-cython" ,python-cython)))
130 `(#:tests? #f ; the only tests that exist are interactive
132 (modify-phases %standard-phases
133 (add-before 'build 'build-from-cython-files
134 (lambda _ (invoke "make" "py3"))))))
135 (home-page "https://github.com/tompreston/python-lirc")
136 (synopsis "Python bindings for LIRC")
137 (description "@code{lirc} is a Python module which provides LIRC bindings.")
138 (license license:gpl3)
139 (properties `((python2-variant . ,(delay python2-lirc)))))))
141 (define-public python2-lirc
142 (let ((base (package-with-python2 (strip-python2-variant python-lirc))))
146 `(#:tests? #f ; the only tests that exist are human-interactive
148 (modify-phases %standard-phases
149 (add-before 'build 'build-from-cython-files
150 (lambda _ (invoke "make" "py2"))))))
152 `(("python2-cython" ,python2-cython))))))