projects/guix·blob javascript-team · refs

243 lines · 9.0 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2019, 2020, 2021 Pierre Langlois <[email protected]>
3;;; Copyright © 2020, 2021 Tobias Geerinckx-Rice <[email protected]>
4;;; Copyright © 2021 Stefan Reichör <[email protected]>
5;;; Copyright © 2022 Maxim Cournoyer <[email protected]>
6;;;
7;;; This file is part of GNU Guix.
8;;;
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.
13;;;
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.
18;;;
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/>.
21
22(define-module (gnu packages gpodder)
23 #:use-module (guix download)
24 #:use-module (guix git-download)
25 #:use-module (guix gexp)
26 #:use-module (guix packages)
27 #:use-module (guix utils)
28 #:use-module ((guix licenses) #:prefix license:)
29 #:use-module (guix build-system cmake)
30 #:use-module (guix build-system gnu)
31 #:use-module (guix build-system pyproject)
32 #:use-module (gnu packages)
33 #:use-module (gnu packages autotools)
34 #:use-module (gnu packages base)
35 #:use-module (gnu packages bash)
36 #:use-module (gnu packages check)
37 #:use-module (gnu packages curl)
38 #:use-module (gnu packages freedesktop)
39 #:use-module (gnu packages glib)
40 #:use-module (gnu packages gtk)
41 #:use-module (gnu packages groff)
42 #:use-module (gnu packages mp3)
43 #:use-module (gnu packages music)
44 #:use-module (gnu packages pkg-config)
45 #:use-module (gnu packages python-build)
46 #:use-module (gnu packages python-web)
47 #:use-module (gnu packages python-xyz)
48 #:use-module (gnu packages qt)
49 #:use-module (gnu packages video)
50 #:use-module (gnu packages xml))
51
52(define-public gpodder
53 (package
54 (name "gpodder")
55 (version "3.11.5")
56 (source
57 (origin
58 (method git-fetch)
59 (uri (git-reference
60 (url "https://github.com/gpodder/gpodder")
61 (commit version)))
62 (sha256
63 (base32 "05rs2np8grwl23w7853yrfv04npjj3z5r3a8g9my30ycw4jks68y"))
64 (file-name (git-file-name name version))
65 (patches (search-patches "gpodder-disable-updater.patch"))))
66 (build-system pyproject-build-system)
67 (arguments
68 (list
69 #:phases
70 #~(modify-phases %standard-phases
71 ;; Avoid needing xdg-utils as a propagated input.
72 (add-after 'unpack 'patch-xdg-open
73 (lambda* (#:key inputs #:allow-other-keys)
74 (substitute* "src/gpodder/util.py"
75 (("xdg-open") (search-input-file inputs "bin/xdg-open")))))
76 ;; 'msgmerge' introduces non-determinism by resetting the
77 ;; POT-Creation-Date in .po files.
78 (add-before 'install 'do-not-run-msgmerge
79 (lambda _
80 (substitute* "makefile"
81 (("msgmerge") "true"))))
82 (add-after 'install 'wrap-gpodder
83 (lambda _
84 (let ((gi-typelib-path (getenv "GI_TYPELIB_PATH")))
85 (wrap-program (string-append #$output "/bin/gpodder")
86 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))))))
87 (native-inputs
88 (list intltool
89 python-minimock
90 python-pytest
91 python-pytest-httpserver
92 python-setuptools))
93 (inputs
94 (list bash-minimal
95 eyed3
96 gtk+
97 python-dbus
98 python-ffmpeg-python
99 python-filelock
100 python-html5lib
101 ;; python-kaa-metadata ;not packaged yet in Guix
102 python-mutagen
103 python-mygpoclient
104 python-pillow
105 python-podcastparser
106 python-pycairo
107 python-pygobject
108 python-requests
109 ;; python-soco ;not packaged yet in Guix
110 python-urllib3
111 yt-dlp
112 xdg-utils))
113 (home-page "https://gpodder.github.io")
114 (synopsis "Simple podcast client")
115 (description "gPodder is a podcatcher, i.e. an application that allows
116podcast feeds (RSS, Atom, Youtube, Soundcloud, Vimeo and XSPF) to be
117subscribed to, checks for new episodes and allows the podcast to be saved
118locally for later listening.")
119 (license license:gpl3+)))
120
121(define-public libmygpo-qt
122 (package
123 (name "libmygpo-qt")
124 (version "1.2.0")
125 (source (origin
126 (method url-fetch)
127 (uri (string-append "https://stefan.derkits.at/files/"
128 "libmygpo-qt/libmygpo-qt." version ".tar.gz"))
129 (sha256
130 (base32
131 "1rpallrgfdpvdw2npjizw0gj7lidb8hxs7ak16jkryq2yijpzkjh"))))
132 (build-system cmake-build-system)
133 (native-inputs
134 (list pkg-config))
135 (inputs
136 (list qtbase))
137 (arguments
138 (list #:configure-flags
139 #~(list "-DBUILD_WITH_QT6=ON")
140 #:phases
141 #~(modify-phases %standard-phases
142 (replace 'check
143 (lambda* (#:key tests? #:allow-other-keys)
144 (when tests?
145 ;; TODO: Enable JsonCreatorTest-test when
146 ;; https://github.com/gpodder/gpodder/issues/446 is fixed.
147 (invoke "ctest" "-E" "JsonCreatorTest-test")))))))
148 (home-page "https://gpodder.github.io")
149 (synopsis "Qt/C++ library wrapping the gpodder web service")
150 (description "@code{libmygpo-qt} is a Qt/C++ library wrapping the
151@url{https://gpodder.net} APIs. It allows applications to discover, manage
152and track podcasts.")
153 (license license:lgpl2.1+)))
154
155(define-public libmygpo-qt5
156 (package/inherit libmygpo-qt
157 (name "libmygpo-qt5")
158 (inputs
159 (modify-inputs inputs
160 (replace "qtbase" qtbase-5)))
161 (arguments
162 (substitute-keyword-arguments arguments
163 ((#:configure-flags flags)
164 #~(delete "-DBUILD_WITH_QT6=ON" #$flags))))))
165
166(define-public python-mygpoclient
167 (package
168 (name "python-mygpoclient")
169 (version "1.10")
170 (source
171 (origin
172 (method url-fetch)
173 (uri (pypi-uri "mygpoclient" version))
174 (sha256
175 (base32 "1w28ij4ar42725d7np6f3rxfvm4w2ms5j06ny70qmap26ijsaj52"))))
176 (build-system pyproject-build-system)
177 (arguments
178 (list
179 #:phases
180 #~(modify-phases %standard-phases
181 (replace 'check
182 (lambda* (#:key tests? #:allow-other-keys)
183 (when tests?
184 (invoke "make" "test")))))))
185 (native-inputs (list python-minimock python-pytest python-setuptools))
186 (home-page "https://mygpoclient.readthedocs.io")
187 (synopsis "Python library for the gPodder web service")
188 (description
189 "@code{mygpoclient} provides an easy and structured way to access the
190@url{https://gpodder.net} web services. In addition to subscription list
191synchronization and storage, the API supports uploading and downloading
192episode status changes.")
193 (license license:gpl3)))
194
195(define-public python-podcastparser
196 (package
197 (name "python-podcastparser")
198 (version "0.6.11")
199 (source
200 (origin
201 (method url-fetch)
202 (uri (pypi-uri "podcastparser" version))
203 (sha256
204 (base32 "12bysnajlqmsm1ns8l4j8d2dgwqyyq8jdfsm1vsksv5qj0zndhin"))))
205 (build-system pyproject-build-system)
206 (native-inputs
207 (list python-pytest python-setuptools))
208 (home-page "http://gpodder.org/podcastparser")
209 (synopsis "Simplified and fast RSS parser Python library")
210 (description
211 "@code{podcastparser} is a library for the gPodder project to provide an
212easy and reliable way of parsing RSS and Atom-based podcast feeds in Python.")
213 (license license:isc)))
214
215(define-public castget
216 ;; Since ronn-ng uses a newer ruby-nokogiri, the test suite would fail on a
217 ;; free call with the error: "free(): invalid pointer". Use the latest
218 ;; commit, which is immune to that problem.
219 (let ((revision "1")
220 (commit "e97b179227b4fc7e2e2bc5a373933624c0467daa"))
221 (package
222 (name "castget")
223 (version (git-version "2.0.0" revision commit))
224 (source
225 (origin
226 (method git-fetch)
227 (uri (git-reference
228 (url "https://github.com/mlj/castget")
229 (commit commit)))
230 (sha256
231 (base32 "1dsbmfkchza9bwcsks2iyq5n2sj55pdmh79jpg3hisxpjgqcvpyy"))
232 (file-name (git-file-name name version))))
233 (build-system gnu-build-system)
234 (native-inputs
235 (list autoconf automake libtool pkg-config ronn-ng))
236 (inputs (list curl glib taglib libxml2))
237 (synopsis "Command line podcast downloader")
238 (description
239 "castget is a simple, command-line based RSS enclosure downloader. It is
240primarily intended for automatic, unattended downloading of podcasts. It uses
241libcurl for the download process.")
242 (license license:lgpl2.1+)
243 (home-page "https://castget.johndal.com"))))