guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 4/4] gnu: Add psyced.


From: ng0
Subject: [PATCH 4/4] gnu: Add psyced.
Date: Thu, 29 Sep 2016 10:38:10 +0000

* gnu/packages/psyc.scm (psyced): New variable.
---
 gnu/packages/psyc.scm | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 103 insertions(+)

diff --git a/gnu/packages/psyc.scm b/gnu/packages/psyc.scm
index 75d861e..cc1da6e 100644
--- a/gnu/packages/psyc.scm
+++ b/gnu/packages/psyc.scm
@@ -223,3 +223,106 @@ multi user virtual environments on the internet.  This 
technology is used for
 MUDs and also the psyced implementation of the Protocol for SYnchronous 
Conferencing (PSYC).  psycLPC is a fork of LDMud with some new features and
 many bug fixes.")
     (license license:gpl2))))
+
+;; XXX: We need a service for this which makes it functional, including
+;; copying initial data around.
+(define-public psyced
+  (let* ((commit "18e72b74ccc4edef58751475d15138fb1300a3b1")
+         (revision "1"))
+    (package
+      (name "psyced")
+      (version (string-append "20160830-" revision "." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "git://git.psyced.org/psyced")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32
+                  "1h2cbb14lvnxyqf9g35h78d796hyhafg3h73jv69z6j2cvhka9r2"))))
+      (build-system gnu-build-system)
+      (inputs
+       `(("perl" ,perl)))
+      ;; psyced needs psyclpc at runtime, specifically you will also not
+      ;; be able to use psyced witout psyclpc.
+      (native-inputs
+       `(("pkg-config" ,pkg-config)))
+      (propagated-inputs
+       `(("psyclpc" ,psyclpc)))
+      (arguments
+       `(#:tests? #f ; No tests
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure) ; No configure
+           (delete 'build) ; no make build needed
+           ;; Much of what install.sh used to do is now handled by psyconf. 
Upstream
+           ;; reference is the Gentoo ebuild in the youbroketheinternet-overlay
+           ;; (https://gnunet.org/git/) where equal ways of installing psyced 
are applied
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (bin (string-append out "/bin")) ;symlink it?
+                      (doc (string-append out "/share/doc"))
+                      ;; sandbox in /opt/psyced/world:
+                      (opt (string-append out "/opt/psyced"))
+                      (var (string-append out "/var/psyced"))
+                      (vard (string-append var "/data"))
+                      (vardpe (string-append vard "/person"))
+                      (vardpl (string-append vard "/place"))
+                      (varcon (string-append var "/config"))
+                      (etcpsy (string-append out "/etc/psyc")) ;symlink to /
+                      (varlp (string-append out "/var/log/psyced")) ;symlink 
to /
+                      (varlpp (string-append varlp "/place"))) ;symlink to /
+                 (mkdir-p bin)
+                 (mkdir-p doc)
+                 (mkdir-p opt)
+                 (mkdir-p var)
+                 (mkdir-p vard)
+                 (mkdir-p vardpe)
+                 (mkdir-p vardpl)
+                 (mkdir-p varcon)
+                 (mkdir-p etcpsy)
+                 (mkdir-p varlp)
+                 (mkdir-p varlpp)
+
+                 (copy-recursively "bin" bin)
+
+                 (install-file "config/psyced.ini" etcpsy)
+
+                 (install-file "AGENDA.txt" doc)
+                 (install-file "CHANGESTODO" doc)
+                 (install-file "COPYLEFT.txt" doc)
+                 (install-file "LICENSE.txt" doc)
+
+                 (copy-recursively "pike" opt)
+                 (copy-recursively "place" opt)
+                 (copy-recursively "run" opt)
+                 (copy-recursively "tor" opt)
+                 (copy-recursively "config" opt)
+                 (copy-recursively "trust" opt)
+                 (copy-recursively "utility" opt)
+                 (copy-recursively "world" opt)
+                 #t)))
+           (add-after 'install 'wrap-programs
+             (lambda* (#:key outputs #:allow-other-keys)
+               ;; Make sure all executables in "bin" find the Perl modules
+               ;; provided by this package at runtime.
+               (let* ((out  (assoc-ref outputs "out"))
+                      (bin  (string-append out "/bin/"))
+                      (path (string-append out "/lib/perl5/site_perl")))
+                 (for-each (lambda (file)
+                             (wrap-program file
+                               `("PERL5LIB" ":" prefix (,path))))
+                           (find-files bin "\\.*$"))
+                 #t))))))
+      (home-page "http://www.psyced.org";)
+      (synopsis "Server for Federated Messaging and Chat over PSYC, IRC, XMPP, 
and more")
+      (description
+       "psyced is a scalable multi-protocol multi-casting chat, messaging
+and social server solution to build decentralized chat networks upon.
+Powerful, not bloated, not too hard to get into.  It supports the
+following protocols and formats: PSYC, XMPP S2S, IRC, TELNET, HTTP, SMTP,
+OAuth, XML, RSS.  It also has limited/experimental code for the following
+things: Clients using XMPP C2S, Java Applets, Status.Net, WAP, NNTP.")
+      (license license:gpl2))))
-- 
2.10.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]