diff mbox

gnu: Add perl-net-psyc.

Message ID 87inuwu9p1.fsf@we.make.ritual.n0.is
State New
Headers show

Commit Message

non such Aug. 19, 2016, 2:15 p.m. UTC
Net::PSYC binary "psycion" requires perl-curses, which has been packaged
and send for review.

psycion is being bugfixed, it is functional but the server application
it functions with needs to update the internal policies on how to treat
native psyc clients. It's on the todo list and will be fixed
eventually. As psycion is not the only part of Net::PSYC I find it okay
to submit the entire perl-net-psyc now instead of waiting for psyced to
have this policy fixed.

There is psycmp3 which currently depends on MP3::List and the rxaudio
shareware, it will be fixed to function with current free software
equivalents of dependencies. It is deleted in a snippet phase for now
and will be added back when it no longer "recommends non-free
software".

For another binary, I would have to package fam and SGI::FAM, this is
reflected in the most recent commit:
"moving bin/psycfilemonitor to contrib until somebody upgrades it to use
inotify instead of fam". No one uses this binary currently, so it can be
left where it is and will be updated in time.

I created the file gnu/packages/psyc.scm because I am working on more
applications: psyced, libpsyc, psyclpc and future releases. As they all
circle around the psyced.org domain and the protocol PSYC, a dedicated
file is the only logic choice. libpsyc will follow soon after this
(perl-net-psyc) patch.
I am working close with upstream to address issues on different
operating systems. Upstream developers do very rarely release tarballs,
in the case of Net::PSYC this git commit has more bugfixes than the
latest tarball. As soon as the tarball catches up I will consider to
change it, however this is a very small application collection, so a
checkout will not take that much space on distributing servers.

Thanks for reviewing.

Comments

non such Aug. 20, 2016, 9:22 a.m. UTC | #1
ng0 <ng0@we.make.ritual.n0.is> writes:

> Net::PSYC binary "psycion" requires perl-curses, which has been packaged
> and send for review.
>
> psycion is being bugfixed, it is functional but the server application
> it functions with needs to update the internal policies on how to treat
> native psyc clients. It's on the todo list and will be fixed
> eventually. As psycion is not the only part of Net::PSYC I find it okay
> to submit the entire perl-net-psyc now instead of waiting for psyced to
> have this policy fixed.
>
> There is psycmp3 which currently depends on MP3::List and the rxaudio
> shareware, it will be fixed to function with current free software
> equivalents of dependencies. It is deleted in a snippet phase for now
> and will be added back when it no longer "recommends non-free
> software".
>
> For another binary, I would have to package fam and SGI::FAM, this is
> reflected in the most recent commit:
> "moving bin/psycfilemonitor to contrib until somebody upgrades it to use
> inotify instead of fam". No one uses this binary currently, so it can be
> left where it is and will be updated in time.
>
> I created the file gnu/packages/psyc.scm because I am working on more
> applications: psyced, libpsyc, psyclpc and future releases. As they all
> circle around the psyced.org domain and the protocol PSYC, a dedicated
> file is the only logic choice. libpsyc will follow soon after this
> (perl-net-psyc) patch.
> I am working close with upstream to address issues on different
> operating systems. Upstream developers do very rarely release tarballs,
> in the case of Net::PSYC this git commit has more bugfixes than the
> latest tarball. As soon as the tarball catches up I will consider to
> change it, however this is a very small application collection, so a
> checkout will not take that much space on distributing servers.

Corrections appending to this:

"needs to update the internal policies on how to treat native psyc
clients" <- only when the welcome channel has secure set, a default
psyced without any changes does not complain about this.

The plan for the future is to run psycion with localhost psyced and
cadet (gnunet), not via the insecure internet
diff mbox

Patch

From 45e070993ebc28b0fa5f76cc1b1005a56e75238f Mon Sep 17 00:00:00 2001
From: ng0 <ng0@we.make.ritual.n0.is>
Date: Fri, 19 Aug 2016 13:15:01 +0000
Subject: [PATCH] gnu: Add perl-net-psyc.

* gnu/packages/psyc.scm (perl-net-psyc): New variable.
---
 gnu/local.mk          |  1 +
 gnu/packages/psyc.scm | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 99 insertions(+)
 create mode 100644 gnu/packages/psyc.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 15538df..8ad9106 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -287,6 +287,7 @@  GNU_SYSTEM_MODULES =				\
   %D%/packages/pumpio.scm			\
   %D%/packages/pretty-print.scm			\
   %D%/packages/protobuf.scm			\
+  %D%/packages/psyc.scm				\
   %D%/packages/pv.scm				\
   %D%/packages/python.scm			\
   %D%/packages/qemu.scm				\
diff --git a/gnu/packages/psyc.scm b/gnu/packages/psyc.scm
new file mode 100644
index 0000000..c78addf
--- /dev/null
+++ b/gnu/packages/psyc.scm
@@ -0,0 +1,98 @@ 
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages psyc)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system perl)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages perl))
+
+;; Tarball releases are made rarely, in fact the developer team prefers git for
+;; security reasons, this is why we stick to the git checkout which has bugs
+;; fixed needed to build this on Guix.
+(define-public perl-net-psyc
+  (let ((revision "1")
+        (commit "7f1f7a208510e21cec88fe902bd1399d4b022009"))
+    (package
+      (name "perl-net-psyc")
+      (version (string-append "1.0-" revision "." (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "git://git.psyced.org/git/perlpsyc")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32
+                  "1b8gwkii4kdjgza6qzv09mwigibp8d68sxnm2hx4v90p373vaxx1"))
+                ;; psycmp3 currently depends on MP3::List and rxaudio (shareware),
+                ;; we can add it back when this is no longer the case.
+                (snippet '(delete-file "bin/psycmp3"))))
+      (build-system perl-build-system)
+      (inputs
+       `(("perl-curses" ,perl-curses))) ; Dependency for psycion binary
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (delete 'build)
+           ;; There is a Makefile, but the current Makefile is incomplete.
+           ;; This will be fixed at some point.
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (doc (string-append out "/share/doc/perl-net-psyc"))
+                      (libpsyc (string-append out "/lib/psyc/ion"))
+                      (libperl (string-append out "/lib/perl5/site_perl/"
+                                              ,(package-version perl)))
+                      (bin (string-append out "/bin")))
+                 (copy-recursively "lib/perl5" libperl)
+                 (copy-recursively "lib/psycion" libpsyc)
+                 (copy-recursively "bin" bin)
+                 (install-file "cgi/psycpager" (string-append doc "/cgi"))
+                 (copy-recursively "contrib" (string-append doc "/contrib"))
+                 (copy-recursively "hooks" (string-append doc "/hooks"))
+                 (copy-recursively "sdj" (string-append doc "/sdj"))
+                 (install-file "README.txt" doc)
+                 (install-file "TODO.txt" doc)
+                 #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))))))
+      (description
+       "@code{Net::PSYC} with support for TCP, UDP, Event.pm, @code{IO::Select} and
+Gtk2 event loops.  This package includes 12 applications and additional scripts:
+psycion, a @uref{http://about.psyc.eu,PSYC} chat client, remotor, a control console
+for @uref{https://torproject.org,tor} router, and many more.")
+      (synopsis "Perl implementation of PSYC protocol.")
+      (home-page "http://perlpsyc.pages.de")
+      ;;dual licensed: gpl2 and Artistic
+      (license (list license:gpl2 (package-license perl)
+                     ;; contrib/irssi-psyc.pl: Public-Domain
+                     license:public-domain)))))
-- 
2.9.3