Patchwork [4/4] gnu: Add psyced.

login
register
mail settings
Submitter ng0
Date Sept. 29, 2016, 10:38 a.m.
Message ID <20160929103810.10273-4-ngillmann@runbox.com>
Download mbox | patch
Permalink /patch/16141/
State New
Headers show

Comments

ng0 - Sept. 29, 2016, 10:38 a.m.
* gnu/packages/psyc.scm (psyced): New variable.
---
 gnu/packages/psyc.scm | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 103 insertions(+)
ng0 - Sept. 29, 2016, 10:44 a.m.
Like in the old patch (I don't know how to pass git sendemail the root
of another thread), this is not a finished patch but I require input on
this. I have to debug by writing the service.

ng0 <ngillmann@runbox.com> writes:

> * 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
>
>
Ricardo Wurmus - Oct. 30, 2016, 5:42 a.m.
ng0 <ngillmann@runbox.com> writes:

> Like in the old patch (I don't know how to pass git sendemail the root
> of another thread), this is not a finished patch but I require input on
> this. I have to debug by writing the service.

You can pass “--in-reply-to=<identifier>” to “git send-email”.

~~ Ricardo
Ricardo Wurmus - Oct. 30, 2016, 5:48 a.m.
ng0 <ngillmann@runbox.com> writes:

> * 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)))

This comment should go above “propagated-inputs”, not “native-inputs”

> +      (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"))

I don’t understand the meaning of this.

> +                      (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)

Most of these are empty.  Since at runtime we cannot write to the store
anyway I wonder why you need them.  This should be handled by a service IMO.

> +
> +                 (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)

(for-each (cut install-file <> doc)
          '("AGENDA.txt" "CHANGESTODO" "COPYLEFT.txt" "LICENSE.txt"))

However, I don’t think we normally copy licenses and TODO files.

> +
> +                 (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)

Same as above.  Use “for-each” here.

> +                 #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")

Could you shorten this?

> +      (description
> +       "psyced is a scalable multi-protocol multi-casting chat,
> messaging

This should start with a capital letter.

> +and social server solution to build decentralized chat networks upon.
> +Powerful, not bloated, not too hard to get into.  It supports the

Please remove the sentence “Powerful, not bloated…”.

> +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))))

GPLv2 only?  No “or later” clause?

Patch

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))))