gnu: Add ejabberd.
* gnu/packages/messaging.scm (ejabberd): New variable. Change-Id: Ia2d5201f02205debfcbf1eebf24761c0c5fceae6 Signed-off-by: Andrew Tropin <andrew@trop.in>master
parent
6158472d8e
commit
a5248a093e
|
@ -43,6 +43,7 @@
|
|||
;;; Copyright © 2024 Carlo Zancanaro <carlo@zancanaro.id.au>
|
||||
;;; Copyright © 2024 Wilko Meyer <w@wmeyer.eu>
|
||||
;;; Copyright © 2024 Ashish SHUKLA <ashish.is@lostca.se>
|
||||
;;; Copyright © 2024 Igor Goryachev <igor@goryachev.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -82,6 +83,8 @@
|
|||
#:use-module (gnu packages docbook)
|
||||
#:use-module (gnu packages documentation)
|
||||
#:use-module (gnu packages enchant)
|
||||
#:use-module (gnu packages erlang)
|
||||
#:use-module (gnu packages erlang-xyz)
|
||||
#:use-module (gnu packages fontutils)
|
||||
#:use-module (gnu packages freedesktop)
|
||||
#:use-module (gnu packages gettext)
|
||||
|
@ -157,6 +160,7 @@
|
|||
#:use-module (guix build-system perl)
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module (guix build-system pyproject)
|
||||
#:use-module (guix build-system rebar)
|
||||
#:use-module (guix build-system qt)
|
||||
#:use-module (guix build-system trivial)
|
||||
#:use-module (guix download)
|
||||
|
@ -3627,4 +3631,135 @@ a text snippet), using @code{libphonenumber}.")
|
|||
"@code{senpai} is an IRC client that works best with bouncers.")
|
||||
(license license:isc)))
|
||||
|
||||
(define-public ejabberd
|
||||
(package
|
||||
(name "ejabberd")
|
||||
(version "24.07")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/processone/ejabberd")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0d5i9skgfjzs2100k0g99sigc2w61480ysz3va6pmb4nx43100g3"))))
|
||||
(build-system rebar-build-system)
|
||||
(native-inputs
|
||||
(list autoconf
|
||||
automake
|
||||
erlang-base64url
|
||||
erlang-cache-tab
|
||||
erlang-eimp
|
||||
erlang-epam
|
||||
erlang-eredis
|
||||
erlang-esip
|
||||
erlang-ezlib
|
||||
erlang-fast-tls
|
||||
erlang-fast-xml
|
||||
erlang-fast-yaml
|
||||
erlang-idna
|
||||
erlang-jiffy
|
||||
erlang-jose
|
||||
erlang-luerl
|
||||
erlang-mqtree
|
||||
erlang-p1-acme
|
||||
erlang-p1-mysql
|
||||
erlang-p1-oauth2
|
||||
erlang-p1-pgsql
|
||||
erlang-p1-utils
|
||||
erlang-pc
|
||||
erlang-pkix
|
||||
erlang-provider-asn1
|
||||
erlang-stringprep
|
||||
erlang-stun
|
||||
erlang-sqlite3
|
||||
erlang-unicode-util-compat
|
||||
erlang-xmpp
|
||||
erlang-yconf))
|
||||
(arguments
|
||||
(list
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'set-environment
|
||||
(lambda _
|
||||
(setenv "HOME" "/tmp")
|
||||
(setenv "CC" "gcc")))
|
||||
(add-after 'unpack 'bootstrap
|
||||
(lambda _
|
||||
(invoke "aclocal" "-I" "m4")
|
||||
(invoke "autoconf" "-f")))
|
||||
(add-after 'bootstrap 'make-various-fixes
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((sh (search-input-file inputs "/bin/sh")))
|
||||
;; Fix shell locations.
|
||||
(substitute* "configure" (("/bin/sh") sh))
|
||||
(substitute* "rebar.config.script"
|
||||
(("sh -c '") (string-append sh " -c '")))
|
||||
;; Do not recompile dependences.
|
||||
(substitute* "rebar.config"
|
||||
(("\\[\\{\"eimp\", \\[\\]\\},") "[]}.\n{nop, ["))
|
||||
;; Do not include source files into release.
|
||||
(substitute* "rebar.config"
|
||||
(("\\{include_src, true\\},") "{include_src, false},"))
|
||||
;; Do not install erl wrapper, we will do it ourselves.
|
||||
(substitute* "rebar.config"
|
||||
(("\\{copy, \"rel/files/erl\",")
|
||||
"%{copy, \"rel/files/erl\","))
|
||||
;; Unpin pinned dependences.
|
||||
(substitute* "rebar.lock"
|
||||
((",1\\}") ",0}"))
|
||||
;; Set proper paths.
|
||||
(substitute* "vars.config.in"
|
||||
(("\\{sysconfdir, \".*\"\\}\\.")
|
||||
"{sysconfdir, \"/etc\"}."))
|
||||
(substitute* "vars.config.in"
|
||||
(("\\{localstatedir, \".*\"\\}\\.")
|
||||
"{sysconfdir, \"/var\"}."))
|
||||
(substitute* "vars.config.in"
|
||||
(("\\{config_dir, \".*\"\\}\\.")
|
||||
"{config_dir, \"/etc/ejabberd\"}."))
|
||||
(substitute* "vars.config.in"
|
||||
(("\\{logs_dir, \".*\"\\}\\.")
|
||||
"{logs_dir, \"/var/log/ejabberd\"}."))
|
||||
(substitute* "vars.config.in"
|
||||
(("\\{spool_dir, \".*\"\\}\\.")
|
||||
"{spool_dir, \"/var/lib/ejabberd\"}.")))))
|
||||
(add-after 'make-various-fixes 'configure
|
||||
(lambda _
|
||||
(invoke "./configure"
|
||||
(string-append "--prefix=" #$output))))
|
||||
(replace 'build
|
||||
(lambda _
|
||||
(invoke "make" "rel")))
|
||||
(replace 'install
|
||||
(lambda _
|
||||
(let ((ejabberd "_build/prod/rel/ejabberd"))
|
||||
(copy-recursively
|
||||
(string-append ejabberd "/conf")
|
||||
(string-append ejabberd "/share/doc/ejabberd-"
|
||||
#$version "/examples"))
|
||||
(for-each
|
||||
(lambda (rmdir)
|
||||
(delete-file-recursively
|
||||
(string-append ejabberd "/" rmdir)))
|
||||
'("conf" "database" "logs"))
|
||||
(delete-file
|
||||
(string-append (string-append ejabberd "/ejabberd-"
|
||||
#$version ".tar.gz")))
|
||||
(let ((erts (car (find-files ejabberd "erts-.*"
|
||||
#:directories? #t))))
|
||||
(delete-file (string-append erts "/bin/erl"))
|
||||
(install-file "rel/files/erl"
|
||||
(string-append erts "/bin")))
|
||||
(chmod (string-append ejabberd
|
||||
"/bin/install_upgrade.escript") #o755)
|
||||
(copy-recursively ejabberd #$output)))))))
|
||||
(synopsis "Robust, Ubiquitous and Massively Scalable Messaging Platform")
|
||||
(description "This package provides Ejabberd -- Robust, Ubiquitous and
|
||||
Massively Scalable Messaging Platform. It supports XMPP, MQTT and SIP
|
||||
protocols.")
|
||||
(home-page "https://www.ejabberd.im")
|
||||
(license license:gpl2+)))
|
||||
|
||||
;;; messaging.scm ends here
|
||||
|
|
Reference in New Issue