aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2018-08-17 00:01:47 +0200
committerFlorian Dold <florian.dold@gmail.com>2018-08-17 00:01:47 +0200
commit744f39a476ef16b0efd08f2662b0a72c5cd3e149 (patch)
tree3518b367efa0d9ba8e7f957fefe8e9af18a8c895 /contrib
parentc2957498716e76e7f57ce2d5dfeb6379fd3323d1 (diff)
downloadgnunet-744f39a476ef16b0efd08f2662b0a72c5cd3e149.tar.gz
gnunet-744f39a476ef16b0efd08f2662b0a72c5cd3e149.zip
move misc CI and build system files to contrib/
We can't have one or more files for every build system out there in the root directory, especially if they are not commented/documented.
Diffstat (limited to 'contrib')
-rw-r--r--contrib/Dockerfile102
-rw-r--r--contrib/guix-env.scm46
-rw-r--r--contrib/guix.packages44
-rw-r--r--contrib/guix/README4
-rw-r--r--contrib/guix/gnu/packages/gnunet.scm380
-rw-r--r--contrib/tox.ini4
6 files changed, 580 insertions, 0 deletions
diff --git a/contrib/Dockerfile b/contrib/Dockerfile
new file mode 100644
index 000000000..4fdd91f60
--- /dev/null
+++ b/contrib/Dockerfile
@@ -0,0 +1,102 @@
1FROM ubuntu:18.04
2
3ENV DEBIAN_FRONTEND noninteractive
4
5# Install tools and dependencies
6RUN apt-get update && \
7 apt-get -y install --no-install-recommends \
8 ca-certificates \
9 libsasl2-modules \
10 git \
11 automake \
12 autopoint \
13 autoconf \
14 texinfo \
15 libtool \
16 libltdl-dev \
17 libgpg-error-dev \
18 libidn11-dev \
19 libunistring-dev \
20 libglpk-dev \
21 libbluetooth-dev \
22 libextractor-dev \
23 libmicrohttpd-dev \
24 libgnutls28-dev \
25 libgcrypt20-dev \
26 libpq-dev \
27 libsqlite3-dev && \
28 apt-get clean all && \
29 apt-get -y autoremove && \
30 rm -rf \
31 /var/lib/apt/lists/* \
32 /tmp/*
33
34# Install GNUrl
35ENV GNURL_GIT_URL https://git.taler.net/gnurl.git
36ENV GNURL_GIT_BRANCH gnurl-7.57.0
37
38RUN git clone $GNURL_GIT_URL \
39 --branch $GNURL_GIT_BRANCH \
40 --depth=1 \
41 --quiet && \
42 cd /gnurl && \
43 autoreconf -i && \
44 ./configure \
45 --enable-ipv6 \
46 --with-gnutls \
47 --without-libssh2 \
48 --without-libmetalink \
49 --without-winidn \
50 --without-librtmp \
51 --without-nghttp2 \
52 --without-nss \
53 --without-cyassl \
54 --without-polarssl \
55 --without-ssl \
56 --without-winssl \
57 --without-darwinssl \
58 --disable-sspi \
59 --disable-ntlm-wb \
60 --disable-ldap \
61 --disable-rtsp \
62 --disable-dict \
63 --disable-telnet \
64 --disable-tftp \
65 --disable-pop3 \
66 --disable-imap \
67 --disable-smtp \
68 --disable-gopher \
69 --disable-file \
70 --disable-ftp \
71 --disable-smb && \
72 make install && \
73 cd - && \
74 rm -fr /gnurl
75
76# Install GNUnet
77ENV GNUNET_PREFIX /usr/local/gnunet
78ENV CFLAGS '-g -Wall -O0'
79
80COPY . /gnunet
81
82RUN cd /gnunet && \
83 ./bootstrap && \
84 ./configure \
85 --with-nssdir=/lib \
86 --prefix="$GNUNET_PREFIX" \
87 --enable-logging=verbose && \
88 make -j3 && \
89 make install && \
90 ldconfig && \
91 cd - && \
92 rm -fr /gnunet
93
94# Configure GNUnet
95COPY docker/gnunet.conf /etc/gnunet.conf
96COPY docker/docker-entrypoint.sh /usr/local/bin/docker-entrypoint
97RUN chmod 755 /usr/local/bin/docker-entrypoint
98
99ENV LOCAL_PORT_RANGE='40001 40200'
100ENV PATH "$GNUNET_PREFIX/bin:/usr/local/bin:$PATH"
101
102ENTRYPOINT ["docker-entrypoint"]
diff --git a/contrib/guix-env.scm b/contrib/guix-env.scm
new file mode 100644
index 000000000..e4db64547
--- /dev/null
+++ b/contrib/guix-env.scm
@@ -0,0 +1,46 @@
1;;; This file is part of GNUnet.
2;;; Copyright (C) 2016, 2017, 2018 GNUnet e.V.
3;;;
4;;; GNUnet is free software: you can redistribute it and/or modify it
5;;; under the terms of the GNU Affero General Public License as published
6;;; by the Free Software Foundation, either version 3 of the License,
7;;; or (at your option) any later version.
8;;;
9;;; GNUnet is distributed in the hope that it will be useful, but
10;;; WITHOUT ANY WARRANTY; without even the implied warranty of
11;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12;;; Affero General Public License for more details.
13;;;
14;;; You should have received a copy of the GNU Affero General Public License
15;;; along with this program. If not, see <http://www.gnu.org/licenses/>.
16
17
18;;; GNUnet development environment for Guix
19;;
20;; Depending on whether the search path <gnunet.git>/guix is included or not,
21;; the environment has GNUnet from git or uses the GNU distribution's
22;; (most likely older) GNUnet package.
23;;
24;; You can use the development version of GNUnet by passing an extra parameter
25;; or setting an environment variable:
26;;
27;; --load-path=<gnunet.git>/guix
28;; export GUIX_PACKAGE_PATH=<gnunet.git>/guix
29;;
30;; To spawn an environment with GNUnet's dependencies installed, run:
31;;
32;; guix environment -l guix-env.scm
33;;
34;; To also make GNUnet available in this environment, run:
35;;
36;; guix environment -l guix-env.scm --ad-hoc -l guix-env.scm
37;;
38;; It is recommented to also pass the '--pure' option to guix, to make sure the
39;; environment is not polluted with existing packages.
40;;
41;; The version of the resulting package is the output of 'git describe --tags'.
42
43(use-modules
44 (gnu packages gnunet))
45
46gnunet
diff --git a/contrib/guix.packages b/contrib/guix.packages
new file mode 100644
index 000000000..3b2f6cfcd
--- /dev/null
+++ b/contrib/guix.packages
@@ -0,0 +1,44 @@
1;;; -*- mode: scheme -*-
2;;; Packages required to develop GNUnet with Guix.
3;;; (See guix package --manifest option for more details on this file).
4
5(use-modules (guix profiles)
6 (gnu packages))
7
8
9(define gnunet-dev-packages
10 (list "glpk"
11 "gnurl"
12 "gstreamer"
13 "gst-plugins-base"
14 "gnutls/dane"
15 "libextractor"
16 "libgcrypt"
17 "libidn"
18 "libunistring"
19 "openssl"
20 "opus"
21 "pulseaudio"
22 "sqlite"
23 "mysql"
24 "postgresql"
25 "zlib"
26 "perl"
27 "jansson"
28 "nss"
29 "glib"
30 "gmp"
31 "glib"
32 "glibc-locales"
33 "bluez"
34 "texlive" ; FIXME: minimize
35 "pkg-config"
36 "autoconf"
37 "automake"
38 "gnu-gettext"
39 "which"
40 "texinfo-5"
41 "libtool"))
42
43
44(map specification->package gnunet-dev-packages)
diff --git a/contrib/guix/README b/contrib/guix/README
new file mode 100644
index 000000000..720cee28e
--- /dev/null
+++ b/contrib/guix/README
@@ -0,0 +1,4 @@
1This directory contains Guix package definitions that can be used to override
2the ones found in Guix's GNU distribution.
3
4Guix packagers are encouraged to adopt and adjust these definitions.
diff --git a/contrib/guix/gnu/packages/gnunet.scm b/contrib/guix/gnu/packages/gnunet.scm
new file mode 100644
index 000000000..4f006769d
--- /dev/null
+++ b/contrib/guix/gnu/packages/gnunet.scm
@@ -0,0 +1,380 @@
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
3;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in>
4;;; Copyright © 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
5;;; Copyright © 2015, 2017 Efraim Flashner <efraim@flashner.co.il>
6;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
7;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
8;;; Copyright © 2016, 2017, 2018 Nils Gillmann <ng0@n0.is>
9;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
10;;;
11;;; This file is part of GNU Guix.
12;;;
13;;; GNU Guix is free software; you can redistribute it and/or modify it
14;;; under the terms of the GNU General Public License as published by
15;;; the Free Software Foundation; either version 3 of the License, or (at
16;;; your option) any later version.
17;;;
18;;; GNU Guix is distributed in the hope that it will be useful, but
19;;; WITHOUT ANY WARRANTY; without even the implied warranty of
20;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21;;; GNU General Public License for more details.
22;;;
23;;; You should have received a copy of the GNU General Public License
24;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
25
26(define-module (gnu packages gnunet)
27 #:use-module (gnu packages)
28 #:use-module (gnu packages file)
29 #:use-module (gnu packages base)
30 #:use-module (gnu packages texinfo)
31 #:use-module (gnu packages aidc)
32 #:use-module (gnu packages autotools)
33 #:use-module (gnu packages compression)
34 #:use-module (gnu packages curl)
35 #:use-module (gnu packages gettext)
36 #:use-module (gnu packages glib)
37 #:use-module (gnu packages gnome)
38 #:use-module (gnu packages gnupg)
39 #:use-module (gnu packages gnuzilla)
40 #:use-module (gnu packages groff)
41 #:use-module (gnu packages gtk)
42 #:use-module (gnu packages guile)
43 #:use-module (gnu packages gstreamer)
44 #:use-module (gnu packages libidn)
45 #:use-module (gnu packages linux)
46 #:use-module (gnu packages image)
47 #:use-module (gnu packages libunistring)
48 #:use-module (gnu packages maths)
49 #:use-module (gnu packages multiprecision)
50 #:use-module (gnu packages music)
51 #:use-module (gnu packages ncurses)
52 #:use-module (gnu packages package-management)
53 #:use-module (gnu packages pkg-config)
54 #:use-module (gnu packages perl)
55 #:use-module (gnu packages pulseaudio)
56 #:use-module (gnu packages python)
57 #:use-module (gnu packages databases)
58 #:use-module (gnu packages tls)
59 #:use-module (gnu packages video)
60 #:use-module (gnu packages web)
61 #:use-module (gnu packages xiph)
62 #:use-module (gnu packages backup)
63 #:use-module ((guix licenses) #:prefix license:)
64 #:use-module (guix packages)
65 #:use-module (guix download)
66 #:use-module (guix utils)
67 #:use-module (guix gexp)
68 #:use-module (guix git-download)
69 #:use-module (guix build-system gnu))
70
71
72(define-public libextractor
73 (package
74 (name "libextractor")
75 (version "1.7")
76 (source (origin
77 (method url-fetch)
78 (uri (string-append "mirror://gnu/libextractor/libextractor-"
79 version ".tar.gz"))
80 (sha256
81 (base32
82 "13wf6vj7mkv6gw8h183cnk7m24ir0gyf198pyb2148ng4klgv9p0"))))
83 (build-system gnu-build-system)
84 ;; WARNING: Checks require /dev/shm to be in the build chroot, especially
85 ;; not to be a symbolic link to /run/shm.
86 ;; FIXME:
87 ;; The following dependencies are all optional, but should be
88 ;; available for maximum coverage:
89 ;; * libmagic (file)
90 ;; * librpm (rpm) ; investigate failure
91 ;; * libgif (giflib) ; investigate failure
92 (inputs
93 `(("exiv2" ,exiv2)
94 ("bzip2" ,bzip2)
95 ("flac" ,flac)
96 ("ffmpeg" ,ffmpeg-3.4)
97 ("file" ,file) ;libmagic, for the MIME plug-in
98 ("glib" ,glib)
99 ("gstreamer" ,gstreamer)
100 ("gst-plugins-base" ,gst-plugins-base)
101 ("gtk+" ,gtk+)
102 ("libarchive" ,libarchive)
103 ("libgsf" ,libgsf)
104 ("libjpeg" ,libjpeg)
105 ("libltdl" ,libltdl)
106 ("libmpeg2" ,libmpeg2)
107 ("libmp4v2" ,libmp4v2)
108 ("libsmf" ,libsmf)
109 ("tidy-html" ,tidy-html)
110 ("libogg" ,libogg)
111 ("libtiff" ,libtiff)
112 ("libvorbis" ,libvorbis)
113 ("zlib" ,zlib)))
114 (native-inputs
115 `(("pkg-config" ,pkg-config)))
116 (outputs '("out"
117 "static")) ; 396 KiB .a files
118 (arguments
119 `(#:configure-flags
120 (list (string-append "--with-ltdl="
121 (assoc-ref %build-inputs "libltdl"))
122 (string-append "--with-tidy="
123 (assoc-ref %build-inputs "tidy-html")))
124 #:parallel-tests? #f
125 #:phases
126 (modify-phases %standard-phases
127 (add-after 'install 'move-static-libraries
128 (lambda* (#:key outputs #:allow-other-keys)
129 ;; Move static libraries to the "static" output.
130 (let* ((out (assoc-ref outputs "out"))
131 (lib (string-append out "/lib"))
132 (static (assoc-ref outputs "static"))
133 (slib (string-append static "/lib")))
134 (mkdir-p slib)
135 (for-each (lambda (file)
136 (install-file file slib)
137 (delete-file file))
138 (find-files lib "\\.a$"))
139 #t))))))
140 (synopsis "Library to extract meta-data from media files")
141 (description
142 "GNU libextractor is a library for extracting metadata from files. It
143supports a very large number of file formats, including audio files, document
144files, and archive files. Each file format is implemented as a plugin, so
145new formats can be added easily. The package also contains a command-line
146tool to extract metadata from a file and print the results.")
147 (license license:gpl3+)
148 (home-page "https://www.gnu.org/software/libextractor/")))
149
150(define-public libmicrohttpd
151 (package
152 (name "libmicrohttpd")
153 (version "0.9.59")
154 (source (origin
155 (method url-fetch)
156 (uri (string-append "mirror://gnu/libmicrohttpd/libmicrohttpd-"
157 version ".tar.gz"))
158 (sha256
159 (base32
160 "0g4jgnv43yddr9yxrqg11632rip0lg5c53gmy5wy3c0i1dywv74v"))))
161 (build-system gnu-build-system)
162 (inputs
163 `(("curl" ,curl)
164 ("gnutls" ,gnutls/dane)
165 ("libgcrypt" ,libgcrypt)
166 ("openssl" ,openssl)
167 ("zlib" ,zlib)))
168 (arguments
169 `(#:parallel-tests? #f
170 #:phases (modify-phases %standard-phases
171 (add-before 'check 'add-missing-LDFLAGS
172 (lambda _
173 ;; The two test_upgrade* programs depend on GnuTLS
174 ;; directly but lack -lgnutls; add it.
175 (substitute* "src/microhttpd/Makefile"
176 (("^test_upgrade(.*)LDFLAGS = (.*)$" _ first rest)
177 (string-append "test_upgrade" first
178 "LDFLAGS = -lgnutls " rest)))
179 #t)))))
180 (synopsis "C library implementing an HTTP 1.1 server")
181 (description
182 "GNU libmicrohttpd is a small, embeddable HTTP server implemented as a
183C library. It makes it easy to run an HTTP server as part of another
184application. The library is fully HTTP 1.1 compliant. It can listen on
185multiple ports, supports four different threading models, and supports
186IPv6. It also features security features such as basic and digest
187authentication and support for SSL3 and TLS.")
188 (license license:lgpl2.1+)
189 (home-page "https://www.gnu.org/software/libmicrohttpd/")))
190
191(define-public gnurl
192 (package
193 (name "gnurl")
194 (version "7.61.0")
195 (source (origin
196 (method url-fetch)
197 (uri (string-append "mirror://gnu/gnunet/" name "-" version ".tar.Z"))
198 (sha256
199 (base32
200 "1h03zkd9mp4xb5icirl3bfd64r5x8j9ka1hw9qd0n1ql1w0ilz23"))))
201 (build-system gnu-build-system)
202 (outputs '("out"
203 "doc")) ; 1.5 MiB of man3 pages
204 (inputs `(("gnutls" ,gnutls/dane)
205 ("libidn" ,libidn)
206 ("zlib" ,zlib)))
207 (native-inputs
208 `(("libtool" ,libtool)
209 ("groff" ,groff)
210 ("perl" ,perl)
211 ("pkg-config" ,pkg-config)
212 ("python" ,python-2)))
213 (arguments
214 `(#:configure-flags (list "--disable-ntlm-wb")
215 #:test-target "test"
216 #:parallel-tests? #f
217 #:phases
218 ;; We have to patch runtests.pl in tests/ directory
219 (modify-phases %standard-phases
220 (add-after 'install 'move-man3-pages
221 (lambda* (#:key outputs #:allow-other-keys)
222 ;; Move section 3 man pages to "doc".
223 (let ((out (assoc-ref outputs "out"))
224 (doc (assoc-ref outputs "doc")))
225 (mkdir-p (string-append doc "/share/man"))
226 (rename-file (string-append out "/share/man/man3")
227 (string-append doc "/share/man/man3"))
228 #t)))
229 (replace 'check
230 (lambda _
231 (substitute* "tests/runtests.pl"
232 (("/bin/sh") (which "sh")))
233
234 ;; Make test output more verbose.
235 (invoke "make" "-C" "tests" "test"))))))
236 (synopsis "Microfork of cURL with support for the HTTP/HTTPS/GnuTLS subset of cURL")
237 (description
238 "Gnurl is a microfork of cURL, a command line tool for transferring data
239with URL syntax. While cURL supports many crypto backends, libgnurl only
240supports HTTP, HTTPS and GnuTLS.")
241 (license (license:non-copyleft "file://COPYING"
242 "See COPYING in the distribution."))
243 (home-page "https://gnunet.org/gnurl")))
244
245(define %source-dir (dirname (current-filename)))
246
247(define-public gnunet
248 (package
249 (name "gnunet")
250 (version "0.10.1")
251 (source (local-file (dirname (dirname (dirname %source-dir)))
252 #:recursive? #t))
253 (build-system gnu-build-system)
254 (inputs
255 `(("glpk" ,glpk)
256 ("gnurl" ,gnurl)
257 ("gstreamer" ,gstreamer)
258 ("gst-plugins-base" ,gst-plugins-base)
259 ("gnutls" ,gnutls/dane)
260 ("libextractor" ,libextractor)
261 ("libgcrypt" ,libgcrypt)
262 ("libidn" ,libidn)
263 ("libmicrohttpd" ,libmicrohttpd) ; hostlist, pt, contrib, and more
264 ("libltdl" ,libltdl)
265 ("libunistring" ,libunistring) ; fs and more
266 ("openssl" ,openssl) ; transport, certificate creation, contribs
267 ("opus" ,opus) ; gnunet-conversation
268 ("pulseaudio" ,pulseaudio) ; conversation
269 ("sqlite" ,sqlite) ; sqlite bindings, *store
270 ("zlib" ,zlib)
271 ("perl" ,perl) ; doxygen and more
272 ("jansson" ,jansson) ; identity, taler (external), gnunet-json, gns
273 ("nss" ,nss) ; gns
274 ("gmp" ,gmp) ; util
275 ("bluez" ,bluez) ; gnunet-transport
276 ("glib" ,glib)
277 ("libogg" ,libogg) ; gnunet-conversation
278 ("python-2" ,python-2))) ; tests, gnunet-qr
279 (native-inputs
280 `(("pkg-config" ,pkg-config)
281 ("autoconf" ,autoconf)
282 ("automake" ,automake)
283 ("gnu-gettext" ,gnu-gettext)
284 ("which" ,which)
285 ("texinfo" ,texinfo-5) ; Debian stable: 5.2
286 ("libtool" ,libtool)))
287 (arguments
288 '(#:configure-flags
289 (list (string-append "--with-nssdir=" %output "/lib"))
290 #:parallel-tests? #f
291 ;; test_gnunet_service_arm fails; reported upstream
292 #:tests? #f
293 #:phases
294 (modify-phases %standard-phases
295 (add-after 'unpack 'patch-bin-sh
296 (lambda _
297 (for-each (lambda (f) (chmod f #o755))
298 (find-files "po" ""))
299 #t))
300 ;; swap check and install phases and set paths to installed binaries
301 (add-before 'check 'set-path-for-check
302 (lambda* (#:key outputs #:allow-other-keys)
303 (let ((out (assoc-ref outputs "out")))
304 (setenv "GNUNET_PREFIX" (string-append out "/lib"))
305 (setenv "PATH" (string-append (getenv "PATH") ":" out "/bin")))
306 #t))
307 (add-after 'install 'check
308 (assoc-ref %standard-phases 'check))
309 (delete 'check))))
310 (synopsis "Secure, decentralized, peer-to-peer networking framework")
311 (description
312 "GNUnet is a framework for secure peer-to-peer networking. The
313high-level goal is to provide a strong foundation of free software for a
314global, distributed network that provides security and privacy. GNUnet in
315that sense aims to replace the current internet protocol stack. Along with
316an application for secure publication of files, it has grown to include all
317kinds of basic applications for the foundation of a GNU internet.")
318 (license license:gpl3+)
319 (home-page "https://gnunet.org/")))
320
321(define-public guile-gnunet ;GSoC 2015!
322 (let ((commit "383eac2aab175d8d9ea5315c2f1c8a5055c76a52"))
323 (package
324 (name "guile-gnunet")
325 (version (string-append "0.0." (string-take commit 7)))
326 (source (origin
327 (method git-fetch)
328 (uri (git-reference
329 (url "https://git.savannah.gnu.org/git/guix/gnunet.git/")
330 (commit commit)))
331 (file-name (string-append name "-" version "-checkout"))
332 (sha256
333 (base32
334 "0k6mn28isjlxrnvbnblab3nh2xqx1b7san8k98kc35ap9lq0iz8w"))))
335 (build-system gnu-build-system)
336 (native-inputs `(("pkg-config" ,pkg-config)
337 ("autoconf" ,autoconf-wrapper)
338 ("automake" ,automake)))
339 (inputs `(("guile" ,guile-2.0)
340 ("gnunet" ,gnunet)))
341 (synopsis "Guile bindings for GNUnet services")
342 (description
343 "This package provides Guile bindings to the client libraries of various
344GNUnet services, including the @dfn{identity} and @dfn{file sharing}
345services.")
346 (home-page "https://gnu.org/software/guix")
347 (license license:gpl3+))))
348
349;; FIXME: "gnunet-setup" segfaults under certain conditions and "gnunet-gtk"
350;; does not seem to be fully functional. This has been reported upstream:
351;; http://lists.gnu.org/archive/html/gnunet-developers/2016-02/msg00004.html
352(define-public gnunet-gtk
353 (package (inherit gnunet)
354 (name "gnunet-gtk")
355 (version (package-version gnunet))
356 (source (origin
357 (method url-fetch)
358 (uri (string-append "mirror://gnu/gnunet/gnunet-gtk-"
359 version ".tar.gz"))
360 (sha256
361 (base32
362 "1p38k1s6a2fmcfc9a7cf1zrdycm9h06kqdyand4s3k500nj6mb4g"))))
363 (arguments
364 `(#:configure-flags
365 (list "--with-libunique"
366 "--with-qrencode"
367 (string-append "--with-gnunet="
368 (assoc-ref %build-inputs "gnunet")))))
369 (inputs
370 `(("gnunet" ,gnunet)
371 ("libgcrypt" ,libgcrypt)
372 ("gtk+" ,gtk+)
373 ("libextractor" ,libextractor)
374 ("glade3" ,glade3)
375 ("qrencode" ,qrencode)
376 ("libunique" ,libunique)))
377 (native-inputs
378 `(("pkg-config" ,pkg-config)
379 ("libglade" ,libglade)))
380 (synopsis "Graphical front-end tools for GNUnet")))
diff --git a/contrib/tox.ini b/contrib/tox.ini
new file mode 100644
index 000000000..c91f2de94
--- /dev/null
+++ b/contrib/tox.ini
@@ -0,0 +1,4 @@
1[flake8]
2max-line-length = 160
3exclude = .git
4filename = *.py* \ No newline at end of file