diff mbox

[4/4] gnu: Add psyced.

Message ID 20161004083429.3409-5-ngillmann@runbox.com
State New
Headers show

Commit Message

ng0 Oct. 4, 2016, 8:34 a.m. UTC
* gnu/packages/psyc.scm (psyced): New variable.
---
 gnu/packages/psyc.scm | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 103 insertions(+)

Comments

Efraim Flashner Oct. 26, 2016, 11:37 a.m. UTC | #1
On Tue, Oct 04, 2016 at 08:34:29AM +0000, ng0 wrote:
> * 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 2a2ddc1..e929866 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)
> +

I don't see any files being installed into %out/var/*, is psyced
supposed to be able to write to these directories at runtime?

> +                 (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
> 
>
non such Oct. 28, 2016, 10:04 a.m. UTC | #2
Efraim Flashner <efraim@flashner.co.il> writes:

> On Tue, Oct 04, 2016 at 08:34:29AM +0000, ng0 wrote:
>> * 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 2a2ddc1..e929866 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)
>> +
>
> I don't see any files being installed into %out/var/*, is psyced
> supposed to be able to write to these directories at runtime?

My idea was to create a directory structure as a first try to get
psyced to work. It requires some symlinks at runtime. I have some
notes, but those are mostly copy and paste from chatlogs between
lynX and myself. No files are installed into var but later
folders are symlinked into it. Because it must be /var and not
%out/var I will populate this at first-use of service.
This is, like I mentioned before, not a finished package.

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

It also lists only the gp2, so it must be an old version of the
package. I'll send in a new one soon.

>> -- 
>> 2.10.0
>> 
>>
diff mbox

Patch

diff --git a/gnu/packages/psyc.scm b/gnu/packages/psyc.scm
index 2a2ddc1..e929866 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))))