projects/guix·blob python-team · refs

385 lines · 14.7 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013, 2014, 2015 Andreas Enge <[email protected]>
3;;; Copyright © 2014 Sree Harsha Totakura <[email protected]>
4;;; Copyright © 2015, 2017, 2018, 2019, 2020 Ludovic Courtès <[email protected]>
5;;; Copyright © 2015, 2017, 2019-2021, 2023 Efraim Flashner <[email protected]>
6;;; Copyright © 2016 Ricardo Wurmus <[email protected]>
7;;; Copyright © 2016 Mark H Weaver <[email protected]>
8;;; Copyright © 2016, 2017, 2018, 2019, 2020 Nikita <[email protected]>
9;;; Copyright © 2016–2020, 2022 Tobias Geerinckx-Rice <[email protected]>
10;;; Copyright © 2018 Alex Vong <[email protected]>
11;;; Copyright © 2019 Brett Gilio <[email protected]>
12;;; Copyright © 2020 Tanguy Le Carrour <[email protected]>
13;;; Copyright © 2020 Michael Rohleder <[email protected]>
14;;; Copyright © 2022 Maxime Devos <[email protected]>
15;;; Copyright © 2023 Adam Faiz <[email protected]>
16;;; Copyright © 2023, 2024, 2026 Maxim Cournoyer <[email protected]>
17;;;
18;;; This file is part of GNU Guix.
19;;;
20;;; GNU Guix is free software; you can redistribute it and/or modify it
21;;; under the terms of the GNU General Public License as published by
22;;; the Free Software Foundation; either version 3 of the License, or (at
23;;; your option) any later version.
24;;;
25;;; GNU Guix is distributed in the hope that it will be useful, but
26;;; WITHOUT ANY WARRANTY; without even the implied warranty of
27;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28;;; GNU General Public License for more details.
29;;;
30;;; You should have received a copy of the GNU General Public License
31;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
32
33(define-module (gnu packages gnunet)
34 #:use-module (gnu packages)
35 #:use-module (gnu packages apparmor)
36 #:use-module (gnu packages base)
37 #:use-module (gnu packages file)
38 #:use-module (gnu packages aidc)
39 #:use-module (gnu packages autotools)
40 #:use-module (gnu packages check)
41 #:use-module (gnu packages compression)
42 #:use-module (gnu packages crypto)
43 #:use-module (gnu packages curl)
44 #:use-module (gnu packages databases)
45 #:use-module (gnu packages gettext)
46 #:use-module (gnu packages glib)
47 #:use-module (gnu packages gnome)
48 #:use-module (gnu packages gnupg)
49 #:use-module (gnu packages groff)
50 #:use-module (gnu packages gtk)
51 #:use-module (gnu packages guile)
52 #:use-module (gnu packages guile-xyz)
53 #:use-module (gnu packages gstreamer)
54 #:use-module (gnu packages libidn)
55 #:use-module (gnu packages linux)
56 #:use-module (gnu packages image)
57 #:use-module (gnu packages libunistring)
58 #:use-module (gnu packages maths)
59 #:use-module (gnu packages multiprecision)
60 #:use-module (gnu packages music)
61 #:use-module (gnu packages ncurses)
62 #:use-module (gnu packages nss)
63 #:use-module (gnu packages package-management)
64 #:use-module (gnu packages pkg-config)
65 #:use-module (gnu packages perl)
66 #:use-module (gnu packages pulseaudio)
67 #:use-module (gnu packages python)
68 #:use-module (gnu packages sphinx)
69 #:use-module (gnu packages sqlite)
70 #:use-module (gnu packages texinfo)
71 #:use-module (gnu packages text-editors)
72 #:use-module (gnu packages tls)
73 #:use-module (gnu packages upnp)
74 #:use-module (gnu packages video)
75 #:use-module (gnu packages vim)
76 #:use-module (gnu packages xorg)
77 #:use-module (gnu packages web)
78 #:use-module (gnu packages xiph)
79 #:use-module (gnu packages backup)
80 #:use-module (guix gexp)
81 #:use-module ((guix licenses) #:prefix license:)
82 #:use-module (guix packages)
83 #:use-module (guix deprecation)
84 #:use-module (guix download)
85 #:use-module (guix git-download)
86 #:use-module (guix build-system gnu)
87 #:use-module (guix build-system meson))
88
89(define-public libextractor
90 (package
91 (name "libextractor")
92 (version "1.19")
93 (source (origin
94 (method url-fetch)
95 (uri (string-append "mirror://gnu/libextractor/libextractor-"
96 version ".tar.gz"))
97 (sha256
98 (base32
99 "0017xx1czl626fq326xikkp16x322vid95096vlqmj11vg5k6nrd"))))
100 (build-system gnu-build-system)
101 (outputs '("out"
102 "plugin-applefile"
103 "plugin-archive"
104 "plugin-deb"
105 "plugin-dvi"
106 "plugin-exiv2"
107 "plugin-flac"
108 "plugin-gif"
109 "plugin-gstreamer"
110 "plugin-html"
111 "plugin-jpeg"
112 "plugin-midi"
113 "plugin-mime"
114 "plugin-mpeg" ;more than halves closure size
115 "plugin-msoffice"
116 "plugin-odf"
117 "plugin-ogg"
118 "plugin-ole2"
119 "plugin-qt"
120 "plugin-ps"
121 "plugin-rpm"
122 "plugin-thumbnailgtk"
123 "plugin-tiff"
124 "plugin-wav"
125 "plugin-zip"))
126 (arguments
127 (list
128 #:modules (append '((srfi srfi-26))
129 %default-gnu-modules)
130 #:configure-flags
131 #~(list (string-append "--with-ltdl="
132 #$(this-package-input "libltdl"))
133 "--disable-static")
134 #:phases
135 #~(modify-phases %standard-phases
136 (add-after 'install 'delete-libtool-libraries
137 (lambda _
138 ;; The libtool libraries (.la) files retain
139 ;; references and are not necessary.
140 (for-each delete-file
141 (find-files #$output "\\.la$"))))
142 (add-after 'install 'move-plugins
143 (lambda* (#:key outputs #:allow-other-keys)
144 (let* ((plugin-outputs (filter (cut string-prefix? "plugin-" <>)
145 (map car outputs)))
146 (plugins (map (cut string-drop <> 7)
147 plugin-outputs)))
148 (for-each
149 (lambda (x)
150 (let* ((fmt "lib/libextractor/libextractor_~a.so")
151 (src (search-input-file
152 outputs (format #f fmt x)))
153 (dst (assoc-ref outputs (format #f "plugin-~a" x))))
154 (install-file src (string-append dst "/lib/libexetractor"))
155 (delete-file src)))
156 plugins)))))))
157 (native-inputs
158 (list pkg-config))
159 (inputs
160 (list bzip2
161 exiv2-0.27
162 file ;libmagic, for the MIME plug-in
163 flac
164 gdk-pixbuf
165 giflib
166 glib
167 gst-plugins-base
168 gstreamer
169 libapparmor
170 libarchive
171 libgsf
172 libjpeg-turbo
173 libltdl
174 libmp4v2
175 libmpeg2
176 libogg
177 libsmf
178 libtiff
179 libvorbis
180 rpm
181 tidy-html
182 zlib))
183 (synopsis "Library to extract meta-data from media files")
184 (description
185 "GNU libextractor is a library for extracting metadata from files. It
186supports a very large number of file formats, including audio files, document
187files, and archive files. Each file format is implemented as a plugin, so
188new formats can be added easily. The package also contains a command-line
189tool to extract metadata from a file and print the results.")
190 (license license:gpl3+)
191 (home-page "https://www.gnu.org/software/libextractor/")))
192
193(define-public libmicrohttpd
194 (package
195 (name "libmicrohttpd")
196 (version "1.0.10")
197 (source (origin
198 (method url-fetch)
199 (uri (string-append "mirror://gnu/libmicrohttpd/libmicrohttpd-"
200 version ".tar.gz"))
201 (sha256
202 (base32
203 "11bnaw6h70fhsli9i8vlcb2svv2wfscpaxny6fd64zfvfppyigq4"))))
204 (build-system gnu-build-system)
205 (arguments
206 (list #:configure-flags
207 #~(list "--disable-static")))
208 (native-inputs
209 (list pkg-config))
210 (inputs
211 (list curl libgcrypt openssl zlib))
212 (propagated-inputs
213 ;; Required by Requires.private
214 (list gnutls/dane))
215 (synopsis "C library implementing an HTTP 1.1 server")
216 (description
217 "GNU libmicrohttpd is a small, embeddable HTTP server implemented as a
218C library. It makes it easy to run an HTTP server as part of another
219application. The library is fully HTTP 1.1 compliant. It can listen on
220multiple ports, supports four different threading models, and supports
221IPv6. It also features security features such as basic and digest
222authentication and support for SSL3 and TLS.")
223 (license license:lgpl2.1+)
224 (home-page "https://www.gnu.org/software/libmicrohttpd/")))
225
226(define-public gnunet
227 (package
228 (name "gnunet")
229 (version "0.28.0")
230 (source
231 (origin
232 (method git-fetch)
233 (uri (git-reference
234 (url "https://git.gnunet.org/gnunet.git")
235 (commit (string-append "v" version))
236 ;; The build system expects a gnunet-handbook submodule
237 ;; containing pre-built documentation.
238 ;; TODO: Build it separately.
239 (recursive? #t)))
240 (file-name (git-file-name name version))
241 (sha256
242 (base32
243 "02vswv02cwqkysypj1nammh109in9qi2aflsrh883ls7w4w07svq"))))
244 (build-system meson-build-system)
245 (inputs
246 (list bluez
247 glpk
248 gnutls/dane
249 gstreamer
250 libextractor
251 libjpeg-turbo
252 libltdl
253 libogg
254 libsodium
255 libunistring
256 opus
257 postgresql
258 pulseaudio
259 zbar))
260 (native-inputs
261 (list curl
262 gettext-minimal
263 openssl
264 pkg-config
265 python
266 python-sphinx
267 python-sphinx-rtd-theme
268 which
269 xxd))
270 (propagated-inputs
271 ;; These are in Requires.private of gnunetutil.pc, and are necessary for
272 ;; propagating required headers.
273 (list curl
274 jansson
275 libgcrypt
276 libidn2
277 libmicrohttpd
278 libsodium
279 sqlite
280 zlib))
281 (arguments
282 (list
283 ;; Only running util tests until the p2p tests stop being flaky.
284 ;; See <https://bugs.gnunet.org/view.php?id=10430#c25964>.
285 #:test-options #~(list "--suite=util")
286 #:phases
287 #~(modify-phases %standard-phases
288 (add-after 'unpack 'disable-network-tests
289 (lambda _
290 (substitute* "src/cli/gns/meson.build"
291 (("'test_gns_box_sbox',") "")
292 (("'test_dns2gns',") ""))))
293 (add-before 'check 'set-env-var-for-tests
294 (lambda _
295 (setenv "LANG" "en_US.UTF-8")))
296 ;; Swap 'check and 'install phases and add installed binaries to $PATH.
297 (add-before 'check 'set-path-for-check
298 (lambda _
299 (setenv "GNUNET_PREFIX" (string-append #$output "/lib"))
300 (setenv "PATH" (string-append (getenv "PATH") ":"
301 #$output "/bin"))))
302 (delete 'check)
303 (add-after 'install 'check
304 (assoc-ref %standard-phases 'check)))))
305 (synopsis "Secure, decentralized, peer-to-peer networking framework")
306 (description
307 "GNUnet is a framework for secure peer-to-peer networking. The
308high-level goal is to provide a strong foundation of free software for a
309global, distributed network that provides security and privacy. GNUnet in
310that sense aims to replace the current internet protocol stack. Along with
311an application for secure publication of files, it has grown to include all
312kinds of basic applications for the foundation of a GNU internet.
313
314For reliable NAT traversal, also install the @var{miniupnpc} package.")
315 (license license:agpl3+)
316 (home-page "https://www.gnunet.org/en/")))
317
318(define-public gnunet-scheme
319 (package
320 (name "gnunet-scheme")
321 (version "0.3")
322 (source (origin
323 (method git-fetch)
324 (uri (git-reference
325 (url "https://git.gnunet.org/git/gnunet-scheme.git")
326 ;; Go three commits beyond the v0.3 tag, as these three
327 ;; commits work-around
328 ;; <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=49623>.
329 (commit "f5dc44e66373c29f1c84ea89d8080939a8dfbfd2")))
330 (file-name (git-file-name name version))
331 (sha256
332 (base32
333 "0kvqbqijfyp3fhsqjyzwd7b3cm5khwv557wq196mv6rx47aaivgd"))
334 (modules '((guix build utils)))
335 (snippet
336 ;; Unbundle dependencies. TODO: build-aux/test-driver.scm
337 ;; is bundled too, but it's not yet automatically copied by
338 ;; autoreconf -i.
339 #~(delete-file "build-aux/config.rpath"))))
340 (build-system gnu-build-system)
341 (arguments
342 (list #:phases
343 #~(modify-phases %standard-phases
344 ;; For reproducibility, do not insert real timestamps in the PDF.
345 (add-after 'unpack 'reproducible-timestamp
346 (lambda _
347 (substitute* "Makefile.am"
348 (("\\$\\(TEXMACS_CONVERT\\)")
349 "faketime -m -f '1970-01-01 00:00:00' $(TEXMACS_CONVERT)")))))))
350 (inputs (list guile-3.0)) ;for pkg-config
351 (propagated-inputs (list guile-bytestructures guile-gcrypt guile-pfds
352 guile-fibers))
353 (native-inputs (list guile-3.0 ;as a compiler
354 ;; for cross-compilation, the guile inputs need to be
355 ;; native-inputs as well.
356 guile-bytestructures
357 guile-gcrypt
358 guile-pfds
359 guile-fibers
360 libfaketime
361 automake
362 autoconf
363 pkg-config
364 texmacs
365 xvfb-run ;for documentation
366 guile-quickcheck)) ;for tests
367 (synopsis "Guile implementation of GNUnet client libraries")
368 (description
369 "This package provides Guile modules for connecting to various GNUnet
370services. It also has infrastructure for writing new GNUnet services and
371connecting to them and can be used from multi-threaded environments. It is
372not to be confused with @code{guile-gnunet} -- @code{guile-gnunet} supports a
373different set of services.
374
375The following services are supported:
376
377@itemize
378@item NSE (network size estimation)
379@item DHT (distributed hash table)
380@item CADET (secure end-to-end communication between arbitrary peers)
381@end itemize")
382 ;; Most code is licensed as AGPL and a few modules are licensed as LGPL
383 ;; or GPL. Documentation is licensed as GFDL.
384 (license (list license:agpl3+ license:gpl3+ license:fdl1.3+ license:lgpl3+))
385 (home-page "https://git.gnunet.org/gnunet-scheme.git")))