gnu: quassel: Fix build with qt-5.14.
[jackhill/guix/guix.git] / gnu / packages / irc.scm
CommitLineData
980f058d 1;;; GNU Guix --- Functional package management for GNU
27930f85 2;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
e288f007 3;;; Copyright © 2014 Kevin Lemonnier <lemonnierk@ulrar.net>
cc6f4912 4;;; Copyright © 2015, 2017 Ludovic Courtès <ludo@gnu.org>
bee2c1a9 5;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
3c986a7d 6;;; Copyright © 2016 Nikita <nikita@n0.is>
507809be 7;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
70e9d7eb 8;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
7eea3afd 9;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
980f058d
EF
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 irc)
27 #:use-module ((guix licenses) #:prefix license:)
28 #:use-module (guix download)
29 #:use-module (guix packages)
30 #:use-module (guix build-system cmake)
27930f85 31 #:use-module (guix build-system gnu)
6ad13b59 32 #:use-module (guix build-system python)
e288f007 33 #:use-module (gnu packages)
b52bcb24 34 #:use-module (gnu packages admin)
e288f007
EF
35 #:use-module (gnu packages aspell)
36 #:use-module (gnu packages autogen)
37 #:use-module (gnu packages autotools)
38 #:use-module (gnu packages base)
0c69a17e 39 #:use-module (gnu packages backup)
ac257f12 40 #:use-module (gnu packages check)
980f058d 41 #:use-module (gnu packages compression)
e288f007
EF
42 #:use-module (gnu packages curl)
43 #:use-module (gnu packages cyrus-sasl)
0c69a17e 44 #:use-module (gnu packages databases)
e288f007
EF
45 #:use-module (gnu packages file)
46 #:use-module (gnu packages gettext)
27930f85 47 #:use-module (gnu packages glib)
e288f007
EF
48 #:use-module (gnu packages gnupg)
49 #:use-module (gnu packages guile)
50 #:use-module (gnu packages lua)
27930f85 51 #:use-module (gnu packages ncurses)
980f058d
EF
52 #:use-module (gnu packages kde)
53 #:use-module (gnu packages kde-frameworks)
27930f85 54 #:use-module (gnu packages perl)
980f058d 55 #:use-module (gnu packages pkg-config)
e288f007 56 #:use-module (gnu packages python)
cc6f4912 57 #:use-module (gnu packages python-crypto)
44d10b1f 58 #:use-module (gnu packages python-xyz)
0c69a17e 59 #:use-module (gnu packages ruby)
27930f85 60 #:use-module (gnu packages qt)
e288f007 61 #:use-module (gnu packages tcl)
33dc54b0 62 #:use-module (gnu packages time)
6ad13b59 63 #:use-module (gnu packages tls)
6a069618
EF
64 #:use-module (gnu packages web)
65 #:use-module (srfi srfi-1)
66 #:use-module (srfi srfi-26))
980f058d
EF
67
68(define-public quassel
69 (package
70 (name "quassel")
3aeac37e 71 (version "0.13.1")
980f058d
EF
72 (source
73 (origin
74 (method url-fetch)
3aeac37e 75 (uri (string-append "https://quassel-irc.org/pub/quassel-"
980f058d
EF
76 version ".tar.bz2"))
77 (sha256
78 (base32
3aeac37e 79 "0mg8jydc70vlylppzich26q4s40kr78r3ysfyjwisfvlg2byxvs8"))
3a2bb379 80 (patches (search-patches "quassel-qt-514-compat.patch"))
b82c63d0 81 (modules '((guix build utils)))
72dae072 82 ;; We don't want to install the bundled scripts.
b82c63d0
EF
83 (snippet
84 '(begin
85 (delete-file-recursively "data/scripts")
86 (substitute* "data/CMakeLists.txt"
68ddfb2e
EF
87 (("NOT WIN32") "WIN32"))
88 #t))))
980f058d
EF
89 (build-system cmake-build-system)
90 (arguments
91 ;; The three binaries are not mutually exlusive, and are all built
92 ;; by default.
4ad62876
EF
93 '(#:configure-flags '(;;"-DWANT_QTCLIENT=OFF" ; 6.1 MiB
94 ;;"-DWANT_CORE=OFF" ; 3.0 MiB
95 ;;"-DWANT_MONO=OFF" ; 7.6 MiB
b82c63d0 96 "-DWITH_KDE=OFF" ; no to kde integration ...
4ad62876
EF
97 "-DWITH_BUNDLED_ICONS=ON" ; so we install bundled icons
98 "-DWITH_OXYGEN_ICONS=ON" ; also the oxygen ones
99 "-DWITH_WEBENGINE=OFF") ; we don't depend on qtwebengine
b52bcb24
EF
100 #:phases
101 (modify-phases %standard-phases
102 (add-after 'unpack 'patch-inxi-reference
103 (lambda* (#:key inputs #:allow-other-keys)
104 (let ((inxi (string-append (assoc-ref inputs "inxi") "/bin/inxi")))
105 (substitute* "src/common/aliasmanager.cpp"
106 ((" inxi ") (string-append " " inxi " ")))
107 #t))))
980f058d 108 #:tests? #f)) ; no test target
b82c63d0 109 (native-inputs
980f058d 110 `(("extra-cmake-modules" ,extra-cmake-modules)
b82c63d0
EF
111 ("pkg-config" ,pkg-config)
112 ("qttools" ,qttools)))
113 (inputs
b52bcb24
EF
114 `(("inxi" ,inxi-minimal)
115 ("qca" ,qca)
c695fb76 116 ("qtbase" ,qtbase)
4ad62876 117 ("qtmultimedia" ,qtmultimedia)
0b166a75 118 ("qtscript" ,qtscript)
980f058d
EF
119 ("snorenotify" ,snorenotify)
120 ("zlib" ,zlib)))
5b292eac 121 (home-page "https://quassel-irc.org/")
980f058d
EF
122 (synopsis "Distributed IRC client")
123 (description "Quassel is a distributed IRC client, meaning that one or more
124clients can attach to and detach from the central core. It resembles the
125popular combination of screen and a text-based IRC client such as WeeChat or
126irssi, but graphical.")
127 (license (list license:gpl2 license:gpl3)))) ;; dual licensed
27930f85
EF
128
129(define-public irssi
130 (package
131 (name "irssi")
7eea3afd 132 (version "1.2.2")
27930f85 133 (source (origin
c954fe66
KK
134 (method url-fetch)
135 (uri (string-append "https://github.com/irssi/irssi/"
136 "releases/download/" version "/irssi-"
137 version ".tar.xz"))
138 (sha256
139 (base32
7eea3afd 140 "0y3mhnyr7x8ir8dlj83vbnchpfld28vdfni9yhpvls45j460c9v7"))))
27930f85
EF
141 (build-system gnu-build-system)
142 (arguments
143 `(#:phases
a61bd6a5
EF
144 (modify-phases %standard-phases
145 (replace 'configure
146 (lambda* (#:key inputs outputs #:allow-other-keys)
d9d23101 147 (let ((out (assoc-ref outputs "out")))
a61bd6a5 148 (setenv "CONFIG_SHELL" (which "bash"))
19621509
TGR
149 (invoke "./configure"
150 (string-append "--prefix=" out)
151 (string-append "--with-proxy")
152 (string-append "--with-socks")
7eea3afd
OP
153 (string-append "--with-bot")))))
154 (add-before 'check 'set-home
155 (lambda _
156 (setenv "HOME" (getcwd)))))))
27930f85
EF
157 (inputs
158 `(("glib" ,glib)
159 ("ncurses" ,ncurses)
d9d23101 160 ("openssl" ,openssl)
27930f85 161 ("perl" ,perl)))
d9d23101
MB
162 (native-inputs
163 `(("pkg-config" ,pkg-config)))
164 (home-page "https://irssi.org/")
27930f85
EF
165 (synopsis "Terminal-based IRC client")
166 (description
167 "Irssi is a terminal based IRC client for UNIX systems. It also supports
168SILC and ICB protocols via plugins.")
169 (license license:gpl2+)))
e288f007
EF
170
171(define-public weechat
172 (package
173 (name "weechat")
0b7a94cb 174 (version "2.8")
e288f007
EF
175 (source (origin
176 (method url-fetch)
10b91cca 177 (uri (string-append "https://weechat.org/files/src/weechat-"
f87b8e25 178 version ".tar.xz"))
e288f007
EF
179 (sha256
180 (base32
0b7a94cb 181 "1301lrb3xnm9dcw3av82rkqjzqxxwwhrq0p6i37h6fxdxnas4gjm"))))
709a3bb7 182 (build-system cmake-build-system)
00840ee0
TGR
183 (native-inputs
184 `(("gettext" ,gettext-minimal)
185 ("pkg-config" ,pkg-config)
186 ;; For tests.
187 ("cpputest" ,cpputest)))
6634b29f
EF
188 (inputs
189 `(("aspell" ,aspell)
190 ("curl" ,curl)
191 ("gnutls" ,gnutls)
192 ("libgcrypt" ,libgcrypt "out")
193 ("ncurses" ,ncurses)
194 ("zlib" ,zlib)
07c0110e 195
6634b29f 196 ;; Scripting language plug-ins.
0b7a94cb 197 ("guile" ,guile-3.0)
6634b29f
EF
198 ("lua" ,lua-5.1)
199 ("perl" ,perl)
200 ("python" ,python)
201 ("tcl" ,tcl)))
e288f007 202 (arguments
00840ee0 203 `(#:configure-flags
70e9d7eb
TGR
204 (list "-DENABLE_JAVASCRIPT=OFF"
205 "-DENABLE_PHP=OFF"
206 "-DENABLE_RUBY=OFF"
207 "-DENABLE_TESTS=ON") ; ‘make test’ fails otherwise
6a069618
EF
208 ;; Tests hang indefinately on non-Intel platforms.
209 #:tests? ,(if (any (cute string-prefix? <> (or (%current-target-system)
210 (%current-system)))
211 '("i686" "x86_64"))
212 '#t '#f)
00840ee0
TGR
213 #:phases
214 (modify-phases %standard-phases
215 (add-after 'unpack 'disable-failing-tests
216 ;; For reasons best left to the imagination, CppUTest cannot skip
217 ;; more than one single test... Resort to manual patching instead.
218 ;; See <https://cpputest.github.io/manual.html#command_line>.
219 (λ _
220 ;; Don't test plugin support for languages we don't enable.
221 (substitute* "tests/unit/test-plugins.cpp"
222 ((".*\\$\\{plugin.name\\} == (javascript|php|ruby)" all)
223 (string-append "// SKIP" all)))
224 (substitute* "tests/scripts/test-scripts.cpp"
9553a41d 225 ((".*\\{ \"(javascript|php|ruby)\", " all)
00840ee0 226 (string-append "// SKIP" all)))
07c0110e 227 #t)))))
e288f007
EF
228 (synopsis "Extensible chat client")
229 (description "WeeChat (Wee Enhanced Environment for Chat) is an
d65db1d5
TGR
230@dfn{Internet Relay Chat} (IRC) client, which is designed to be light and fast.
231The client uses a curses frontend, and there are remote interfaces for Web,
232Qt, Android, and Emacs.
233
234Everything in WeeChat can be done with the keyboard, though it also supports
235using a mouse. It is customizable and extensible with plugins and scripts.")
10b91cca 236 (home-page "https://www.weechat.org/")
e288f007 237 (license license:gpl3)))
c744f5c0 238
239(define-public ircii
240 (package
241 (name "ircii")
242 (version "20151120")
243 (source (origin
244 (method url-fetch)
245 (uri (string-append "https://ircii.warped.com/"
246 name "-" version ".tar.gz"))
247 (sha256
248 (base32
249 "178dc279f5j894qvp96dzz7c0jpryqlcqw5g0dc9yaxg9kgw1lqm"))))
250 (build-system gnu-build-system)
251 ;; TODO: We should package a small socks4/5 library/server to configure
252 ;; ircii with socks client. `ghc-socks' pulls in lots of haskell, which
253 ;; is too big.
254 (arguments
255 `(#:tests? #f
256 #:configure-flags (list
257 "--enable-ipv6"
258 "--with-emacs-meta-keys"
259 (string-append "--with-openssl="
260 (assoc-ref %build-inputs "openssl")))
261 #:phases
262 (modify-phases %standard-phases
263 (add-after 'unpack 'patch-bsdinstall-absolute-path-bins
264 (lambda* (#:key inputs #:allow-other-keys)
265 (substitute* "bsdinstall"
266 (("/bin/strip") "strip")
267 (("/bin/cp") "cp")
268 (("/bin/chmod") "chmod")
269 (("/etc/chown") "chown")
270 (("/bin/chgrp") "chgrp")
271 (("/bin/mkdir") "mkdir")
272 (("/bin/rm") "rm")
273 (("/bin/mv") "mv")))))))
274 (inputs
275 `(("ncurses" ,ncurses)
276 ("openssl" ,openssl)))
277 (native-inputs
278 `(("pkg-config" ,pkg-config)
279 ("perl" ,perl)))
280 (home-page "http://www.eterna.com.au/ircii/")
281 (synopsis "Terminal-based IRC and ICB client")
282 (description
283 "ircII is a terminal based IRC and ICB client for UNIX systems.")
284 (license license:bsd-3)))
99840fbb 285
286(define-public ii
287 (package
288 (name "ii")
e0dbead5 289 (version "1.8")
99840fbb 290 (source (origin
291 (method url-fetch)
292 (uri (string-append "http://dl.suckless.org/tools/"
293 name "-" version ".tar.gz"))
294 (sha256
295 (base32
e0dbead5 296 "1lk8vjl7i8dcjh4jkg8h8bkapcbs465sy8g9c0chfqsywbmf3ndr"))))
99840fbb 297 (build-system gnu-build-system)
298 (arguments
e0dbead5 299 `(#:tests? #f ; no tests
99840fbb 300 #:make-flags (list (string-append "PREFIX=" %output)
301 "CC=gcc")
302 #:phases
303 (modify-phases %standard-phases
e0dbead5 304 (delete 'configure)))) ; no configure
d035eaa3 305 (home-page "https://tools.suckless.org/ii/")
8f65585b 306 (synopsis "FIFO and file system based IRC client")
99840fbb 307 (description
8f65585b 308 "ii (Irc it) is a minimalist FIFO and file system based IRC client.")
99840fbb 309 (license license:expat)))
e4eb2134 310
311(define-public sic
312 (package
313 (name "sic")
314 (version "1.2")
315 (source (origin
316 (method url-fetch)
317 (uri (string-append "http://dl.suckless.org/tools/"
318 name "-" version ".tar.gz"))
319 (sha256
320 (base32
321 "11aiavxp44yayibc58bvimi8mrxvbw1plbci8cnbl4syk42zj1xc"))))
322 (build-system gnu-build-system)
323 (arguments
324 `(#:tests? #f ; no tests
325 #:make-flags (list "CC=gcc"
326 (string-append "PREFIX=" %output))
327 #:phases
328 (modify-phases %standard-phases
329 (delete 'configure)))) ; no configure
d035eaa3 330 (home-page "https://tools.suckless.org/sic/")
e4eb2134 331 (synopsis "Simple IRC client")
332 (description
333 "sic is a simple IRC client, even more minimalistic than ii.")
334 (license license:expat)))
6ad13b59 335
336(define-public limnoria
337 (package
338 (name "limnoria")
35258a9a 339 (version "2019.11.22")
6ad13b59 340 (source
341 (origin
342 (method url-fetch)
343 (uri (pypi-uri "limnoria" version))
344 (sha256
35258a9a 345 (base32 "0853xk1ps3v6lkmfx50wv56vynnzpl84v66hxnhl8i34zl36kk3c"))))
6ad13b59 346 (build-system python-build-system)
347 (inputs
348 `(("python-pytz" ,python-pytz)
349 ("python-chardet" ,python-chardet)
350 ("python-dateutil" ,python-dateutil)
351 ("python-gnupg" ,python-gnupg)
352 ("python-feedparser" ,python-feedparser)
353 ("python-sqlalchemy" ,python-sqlalchemy)
354 ("python-socksipy-branch" ,python-socksipy-branch)
355 ("python-ecdsa" ,python-ecdsa)))
356 (native-inputs
357 `(("python-mock" ,python-mock)))
358 ;; Despite the existence of a test folder there is no test phase.
359 ;; We need to package https://github.com/ProgVal/irctest and write
360 ;; our own testphase.
361 (arguments
362 `(#:tests? #f))
363 (home-page "https://github.com/ProgVal/Limnoria")
364 (synopsis "Modified version of Supybot (an IRC bot and framework)")
365 (description
366 "Modified version of Supybot with Python 3 and IRCv3 support,
367embedded web server, translations (fr, fi, it, hu, de), and many
368other enhancements and bug fixes.")
369 (license license:bsd-3)))
0c69a17e 370
371(define-public epic5
372 (package
373 (name "epic5")
374 (version "2.0.1")
375 (source (origin
376 (method url-fetch)
377 (uri (string-append "http://ftp.epicsol.org/pub/"
378 "epic/EPIC5-PRODUCTION/"
379 name "-" version ".tar.xz"))
380 (sha256
381 (base32
382 "1ap73d5f4vccxjaaq249zh981z85106vvqmxfm4plvy76b40y9jm"))))
383 (build-system gnu-build-system)
384 (arguments
385 `(#:test-target "test"
386 #:phases
387 (modify-phases %standard-phases
388 (add-after 'unpack 'patch-perl
389 (lambda _
390 (substitute* "regress/crash-irc"
391 (("perl5") (which "perl")))
392 #t))
393 (add-after 'unpack 'patch-bsdinstall
394 ;; If we just remove /bin/ some part of the bsdinstall breaks.
395 ;; Furthermore bsdinstalls has a reference to /etc/chmod here, which
396 ;; means if we leave /etc/ in, install fails.
397 (lambda _
398 (substitute* "bsdinstall"
399 (("/bin/strip") "strip")
400 (("/bin/cp") "cp")
401 (("/bin/chmod") "chmod")
402 (("/bin/chgrp") "chgrp")
403 (("/bin/mkdir") "mkdir")
404 (("/bin/rm") "rm")
405 (("/bin/mv") "mv")
406 (("/etc/") ""))
407 #t))
408 (replace 'configure
409 (lambda* (#:key outputs #:allow-other-keys)
410 ;; The tarball uses a very old version of autconf. It does not
411 ;; understand extra flags like `--enable-fast-install', so
412 ;; we need to invoke it with just what it understands.
413 (let ((out (assoc-ref outputs "out")))
414 ;; 'configure' doesn't understand '--host'.
415 ,@(if (%current-target-system)
416 `((setenv "CHOST" ,(%current-target-system)))
417 '())
418 (setenv "CONFIG_SHELL" (which "bash"))
419 (setenv "SHELL" (which "bash"))
5a13cf3d
TGR
420 (invoke "./configure"
421 (string-append "--prefix=" out)
422 "--with-ipv6" "--with-libarchive"
423 ;; We use libressl because openssl does not come
424 ;; with the lib/libssl.a which is needed for epic5.
425 ;; XXX: No matter which implementation is chosen,
426 ;; epic5 fails to connect to tls ports of roundrobin
427 ;; irc networks. This however is believed to be an
428 ;; protocol issue at epic5 related to ircd.
429 (string-append "--with-ssl="
430 (assoc-ref %build-inputs "libressl"))
431 (string-append "--with-tcl="
432 (assoc-ref %build-inputs "tcl")
433 "/lib/tclConfig.sh"))))))))
0c69a17e 434 (inputs
435 `(("libressl" ,libressl)
436 ("ncurses" ,ncurses)
437 ("libarchive" ,libarchive) ; CHANGELOG: "Support for loading zip files"
438 ("perl" ,perl)
439 ("tcl" ,tcl)
440 ("ruby" ,ruby)))
441 (native-inputs
442 `(("pkg-config" ,pkg-config)))
443 (home-page "http://epicsol.org")
444 (synopsis "Epic5 IRC Client")
445 (description
446 "EPIC is a IRC client that has been under active development for
447over 20 years. It is stable and mature, and offers an excellent ircII
448interface for those who are accustomed to the ircII way of doing things.")
449 (license (list license:bsd-3
450 license:isc
451 license:bsd-4
452 ;; The epic license is equal to the standard three-clause
453 ;; BSD license except that you are not permitted to remove the
454 ;; "Redistribution is permitted" clause of the license if you
455 ;; distribute binaries.
1975ec69 456 (license:non-copyleft "http://epicsol.org/copyright")))))