gnu: monero: Update to 0.18.1.2.
[jackhill/guix/guix.git] / gnu / packages / gpodder.scm
CommitLineData
a9f847ad 1;;; GNU Guix --- Functional package management for GNU
fca8ef0d 2;;; Copyright © 2019, 2020, 2021 Pierre Langlois <pierre.langlois@gmx.com>
617b4432 3;;; Copyright © 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
9661eb86 4;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
a9f847ad
PL
5;;;
6;;; This file is part of GNU Guix.
7;;;
8;;; GNU Guix is free software; you can redistribute it and/or modify it
9;;; under the terms of the GNU General Public License as published by
10;;; the Free Software Foundation; either version 3 of the License, or (at
11;;; your option) any later version.
12;;;
13;;; GNU Guix is distributed in the hope that it will be useful, but
14;;; WITHOUT ANY WARRANTY; without even the implied warranty of
15;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16;;; GNU General Public License for more details.
17;;;
18;;; You should have received a copy of the GNU General Public License
19;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
20
21(define-module (gnu packages gpodder)
22 #:use-module (guix download)
de5ea7d9 23 #:use-module (guix git-download)
a9f847ad 24 #:use-module (guix packages)
9661eb86 25 #:use-module (guix utils)
a9f847ad
PL
26 #:use-module ((guix licenses) #:prefix license:)
27 #:use-module (guix build-system cmake)
9661eb86 28 #:use-module (guix build-system gnu)
8f2b7077 29 #:use-module (guix build-system python)
a9f847ad 30 #:use-module (gnu packages)
9661eb86 31 #:use-module (gnu packages autotools)
fca8ef0d 32 #:use-module (gnu packages base)
c4413569 33 #:use-module (gnu packages bash)
8f2b7077 34 #:use-module (gnu packages check)
9661eb86 35 #:use-module (gnu packages curl)
de5ea7d9
PL
36 #:use-module (gnu packages freedesktop)
37 #:use-module (gnu packages glib)
38 #:use-module (gnu packages gtk)
9661eb86
SR
39 #:use-module (gnu packages groff)
40 #:use-module (gnu packages mp3)
a2f8ec94 41 #:use-module (gnu packages music)
a9f847ad 42 #:use-module (gnu packages pkg-config)
de5ea7d9
PL
43 #:use-module (gnu packages python-web)
44 #:use-module (gnu packages python-xyz)
569832df 45 #:use-module (gnu packages qt)
9661eb86
SR
46 #:use-module (gnu packages video)
47 #:use-module (gnu packages xml))
a9f847ad 48
de5ea7d9
PL
49(define-public gpodder
50 (package
51 (name "gpodder")
cd5b5439 52 (version "3.10.21")
de5ea7d9
PL
53 (source
54 (origin
55 (method git-fetch)
56 (uri (git-reference
b0e7b699 57 (url "https://github.com/gpodder/gpodder")
de5ea7d9
PL
58 (commit version)))
59 (sha256
cd5b5439 60 (base32 "0n73jm5ypsj962gpr0dk10lqh83giqsczm63wchyhmrkyf1wgga1"))
6c36daaa 61 (file-name (git-file-name name version))
62 (patches (search-patches "gpodder-disable-updater.patch"))))
de5ea7d9
PL
63 (build-system python-build-system)
64 (native-inputs
8394619b
LC
65 (list intltool
66 python-coverage
67 python-minimock
68 python-pytest
69 python-pytest-cov
70 python-pytest-httpserver
71 which))
de5ea7d9 72 (inputs
8394619b
LC
73 (list bash-minimal
74 gtk+
75 python-pygobject
76 python-pycairo
77 python-requests
78 python-dbus
79 python-html5lib
80 python-mutagen
81 python-mygpoclient
82 python-podcastparser
83 youtube-dl
84 xdg-utils))
de5ea7d9
PL
85 (arguments
86 '(#:phases
87 (modify-phases %standard-phases
88 ;; Avoid needing xdg-utils as a propagated input.
89 (add-after 'unpack 'patch-xdg-open
90 (lambda* (#:key inputs #:allow-other-keys)
91 (let ((xdg-utils (assoc-ref inputs "xdg-utils")))
92 (substitute* "src/gpodder/util.py"
93 (("xdg-open") (string-append xdg-utils "/bin/xdg-open")))
94 #t)))
5ea90287 95 (replace 'check
d68d84ee 96 (lambda* (#:key tests? #:allow-other-keys)
d68d84ee
EF
97 (when tests?
98 (invoke "make" "unittest"))))
7a352f76
PL
99 ;; 'msgmerge' introduces non-determinism by resetting the
100 ;; POT-Creation-Date in .po files.
101 (add-before 'install 'do-not-run-msgmerge
102 (lambda _
103 (substitute* "makefile"
104 (("msgmerge") "true"))
105 #t))
de5ea7d9
PL
106 (add-before 'install 'make-po-files-writable
107 (lambda _
108 (for-each
109 (lambda (f)
110 (chmod f #o664))
e22edabb
EF
111 (find-files "po"))
112 #t))
de5ea7d9
PL
113 (replace 'install
114 (lambda* (#:key outputs #:allow-other-keys)
115 (setenv "PREFIX" (assoc-ref outputs "out"))
e22edabb 116 (invoke "make" "install")))
de5ea7d9
PL
117 (add-after 'install 'wrap-gpodder
118 (lambda* (#:key outputs #:allow-other-keys)
119 (let ((out (assoc-ref outputs "out"))
120 (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
121 (wrap-program (string-append out "/bin/gpodder")
122 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))
123 #t))))))
124 (home-page "https://gpodder.github.io")
125 (synopsis "Simple podcast client")
126 (description "gPodder is a podcatcher, i.e. an application that allows
127podcast feeds (RSS, Atom, Youtube, Soundcloud, Vimeo and XSPF) to be
128subscribed to, checks for new episodes and allows the podcast to be saved
129locally for later listening.")
130 (license license:gpl3+)))
131
a9f847ad
PL
132(define-public libmygpo-qt
133 (package
134 (name "libmygpo-qt")
135 (version "1.1.0")
136 (source (origin
137 (method url-fetch)
138 (uri (string-append "http://stefan.derkits.at/files/"
139 "libmygpo-qt/libmygpo-qt." version ".tar.gz"))
140 (sha256
141 (base32
142 "1kg18qrq2rsswgzhl65r3mlyx7kpqg4wwnbp4yiv6svvmadmlxl2"))
143 (patches (search-patches "libmygpo-qt-fix-qt-5.11.patch"
144 "libmygpo-qt-missing-qt5-modules.patch"))))
145 (build-system cmake-build-system)
146 (native-inputs
8394619b 147 (list pkg-config))
a9f847ad 148 (inputs
ea0a5107 149 `(("qt" ,qtbase-5)))
a9f847ad
PL
150 (arguments
151 `(#:configure-flags '("-DMYGPO_BUILD_TESTS=ON")
152 ;; TODO: Enable tests when https://github.com/gpodder/gpodder/issues/446
153 ;; is fixed.
154 #:tests? #f))
2e7d1c56 155 (home-page "https://gpodder.github.io")
a9f847ad
PL
156 (synopsis "Qt/C++ library wrapping the gpodder web service")
157 (description "@code{libmygpo-qt} is a Qt/C++ library wrapping the
158@url{https://gpodder.net} APIs. It allows applications to discover, manage
159and track podcasts.")
160 (license license:lgpl2.1+)))
8f2b7077 161
b58ab159
PL
162(define-public python-mygpoclient
163 (package
164 (name "python-mygpoclient")
165 (version "1.8")
166 (source
167 (origin
168 (method url-fetch)
169 (uri (pypi-uri "mygpoclient" version))
170 (sha256
171 (base32
172 "1fi5x6k1mngr0iviw2s4n1f3y2x7pwqy5ivkcrjdprzvwr37f0mh"))))
173 (build-system python-build-system)
174 (native-inputs
8394619b 175 (list python-coverage python-minimock python-nose))
b58ab159
PL
176 (arguments
177 `(#:phases
178 (modify-phases %standard-phases
179 (replace 'check
180 (lambda _
181 (invoke "make" "test"))))))
182 (home-page "https://mygpoclient.readthedocs.io")
183 (synopsis "Python library for the gPodder web service")
184 (description "@code{mygpoclient} provides an easy and structured way to
185access the @url{https://gpodder.net} web services. In addition to
186subscription list synchronization and storage, the API supports uploading and
187downloading episode status changes.")
188 (license license:gpl3+)))
189
8f2b7077
PL
190(define-public python-podcastparser
191 (package
192 (name "python-podcastparser")
e48eac3b 193 (version "0.6.6")
8f2b7077
PL
194 (source
195 (origin
196 (method url-fetch)
197 (uri (pypi-uri "podcastparser" version))
198 (sha256
e48eac3b 199 (base32 "0m24r2qhck0win44xfhxajbppkss4ha6am0042s0xyq3408883m3"))))
8f2b7077 200 (native-inputs
8394619b 201 (list python-pytest))
79ef0726
PL
202 (arguments
203 '(#:phases
204 (modify-phases %standard-phases
205 (replace 'check
e48eac3b 206 (lambda _ (invoke "pytest"))))))
8f2b7077
PL
207 (build-system python-build-system)
208 (home-page "http://gpodder.org/podcastparser")
209 (synopsis "Simplified and fast RSS parser Python library")
210 (description "@code{podcastparser} is a library for the gPodder project to
211provide an easy and reliable way of parsing RSS and Atom-based podcast feeds
212in Python.")
213 (license license:isc)))
9661eb86
SR
214
215(define-public castget
216 (package
217 (name "castget")
218 (version "2.0.0")
219 (source
220 (origin
221 (method git-fetch)
222 (uri (git-reference
223 (url "https://github.com/mlj/castget")
224 (commit (string-append "rel_" (string-replace-substring
225 version "." "_")))))
226 (sha256
227 (base32 "1129x64rw587q3sdpa3lrgs0gni5f0siwbvmfz8ya4zkbhgi2ik7"))
228 (file-name (git-file-name name version))))
229 (build-system gnu-build-system)
230 (native-inputs
8394619b
LC
231 (list autoconf automake libtool pkg-config ronn-ng))
232 (inputs (list curl glib id3lib libxml2))
9661eb86
SR
233 (synopsis "Command line podcast downloader")
234 (description
235 "castget is a simple, command-line based RSS enclosure downloader. It is
236primarily intended for automatic, unattended downloading of podcasts. It uses
237libcurl for the download process.")
238 (license license:lgpl2.1+)
239 (home-page "https://castget.johndal.com")))