unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] gnu: Add perl-net-psyc.
@ 2016-08-19 14:15 ng0
  2016-08-20  9:22 ` ng0
  0 siblings, 1 reply; 3+ messages in thread
From: ng0 @ 2016-08-19 14:15 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 1782 bytes --]

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.


[-- Attachment #2: 0001-gnu-Add-perl-net-psyc.patch --]
[-- Type: text/x-patch, Size: 5902 bytes --]

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


[-- Attachment #3: Type: text/plain, Size: 70 bytes --]


-- 
ng0
For non-prism friendly talk find me on http://www.psyced.org

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] gnu: Add perl-net-psyc.
  2016-08-19 14:15 [PATCH] gnu: Add perl-net-psyc ng0
@ 2016-08-20  9:22 ` ng0
  2016-08-20 16:38   ` ng0
  0 siblings, 1 reply; 3+ messages in thread
From: ng0 @ 2016-08-20  9:22 UTC (permalink / raw)
  To: guix-devel

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
-- 
ng0
For non-prism friendly talk find me on http://www.psyced.org

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] gnu: Add perl-net-psyc.
  2016-08-20  9:22 ` ng0
@ 2016-08-20 16:38   ` ng0
  0 siblings, 0 replies; 3+ messages in thread
From: ng0 @ 2016-08-20 16:38 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 2398 bytes --]

ng0 <ng0@we.make.ritual.n0.is> writes:

> 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

Release version 1.1 of Net::PSYC is out, using the zip archive of it for
now. Patches rebased on master.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-perl-curses.patch --]
[-- Type: text/x-patch, Size: 3397 bytes --]

From 1f86f2a4b47df27e6540e64fb704bbcb4c8c9b53 Mon Sep 17 00:00:00 2001
From: ng0 <ng0@we.make.ritual.n0.is>
Date: Fri, 19 Aug 2016 13:13:42 +0000
Subject: [PATCH 1/2] gnu: Add perl-curses.

* gnu/packages/perl.scm (perl-curses): New variable.
---
 gnu/packages/perl.scm | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)

diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index aef92f4..170eacd 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -30,6 +30,7 @@
 (define-module (gnu packages perl)
   #:use-module (guix licenses)
   #:use-module (gnu packages)
+  #:use-module (gnu packages ncurses)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
@@ -1138,6 +1139,57 @@ contained in Appendix A of FIPS Publication 181, \"Standard for Automated
 Password Generator\".")
     (license (package-license perl))))
 
+(define-public perl-curses
+  (package
+    (name "perl-curses")
+    (version "1.36")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/G/GI/GIRAFFED/"
+                                  "Curses-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0r6xd9wr0c25rr28zixhqipak575zqsfb7r7f2693i9il1dpj554"))))
+    (build-system perl-build-system)
+    (inputs
+     `(("ncurses" ,ncurses)))
+    (arguments
+     `(#:make-maker-flags (list "PANELS" "MENUS") ; FORMS seems faulty.
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'set-curses-ldflags
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "CURSES_LIBTYPE" "ncurses")
+             (setenv "CURSES_CFLAGS"
+                     (string-append "-I" (assoc-ref inputs "ncurses")
+                                    "/include"))
+             (setenv "CURSES_PANEL_CFLAGS"
+                     (string-append "-I" (assoc-ref inputs "ncurses")
+                                    "/include"))
+             (setenv "CURSES_MENU_CFLAGS"
+                     (string-append "-I" (assoc-ref inputs "ncurses")
+                                    "/include"))
+             (setenv "CURSES_FORM_CFLAGS"
+                     (string-append "-I" (assoc-ref inputs "ncurses")
+                                    "/include"))
+             (setenv "CURSES_LDFLAGS"
+                     (string-append "-L" (assoc-ref inputs "ncurses")
+                                    "/lib -lncurses"))
+             (setenv "CURSES_PANEL_LDFLAGS"
+                     (string-append "-L" (assoc-ref inputs "ncurses")
+                                    "/lib -lpanel"))
+             (setenv "CURSES_MENU_LDFLAGS"
+                     (string-append "-L" (assoc-ref inputs "ncurses")
+                                    "/lib -lmenu"))
+             (setenv "CURSES_FORM_LDFLAGS"
+                     (string-append "-L" (assoc-ref inputs "ncurses")
+                                    "/lib -lform")))))))
+    (home-page "http://search.cpan.org/dist/Curses")
+    (synopsis "Terminal screen handling and optimization")
+    (description
+     "@code{Curses} is the interface between Perl and the curses library of your system.")
+    (license (package-license perl))))
+
 (define-public perl-czplib
   (package
     (name "perl-czplib")
-- 
2.9.3


[-- Attachment #3: 0002-gnu-Add-perl-net-psyc.patch --]
[-- Type: text/x-patch, Size: 5464 bytes --]

From ff33e33d302690cf31984c1b14e18560e96d15c9 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 2/2] gnu: Add perl-net-psyc.

* gnu/packages/psyc.scm (perl-net-psyc): New variable.
---
 gnu/local.mk          |  1 +
 gnu/packages/psyc.scm | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 92 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..519581c
--- /dev/null
+++ b/gnu/packages/psyc.scm
@@ -0,0 +1,91 @@
+;;; 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 download)
+  #:use-module (guix build-system perl)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages perl))
+
+(define-public perl-net-psyc
+  (let ((upstream-name "perlpsyc"))
+    (package
+      (name "perl-net-psyc")
+      (version "1.1")
+      (source (origin
+                (method url-fetch)
+                (uri (string-append "http://perl.psyc.eu/"
+                                    upstream-name "-" version ".zip"))
+                (file-name (string-append name "-" version ".zip"))
+                (sha256
+                 (base32
+                  "1lw6807qrbmvzbrjn1rna1dhir2k70xpcjvyjn45y35hav333a42"))
+                ;; psycmp3 currently depends on MP3::List and rxaudio (shareware),
+                ;; we can add it back when this is no longer the case.
+                (snippet '(delete-file "contrib/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)
+           (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


[-- Attachment #4: Type: text/plain, Size: 71 bytes --]



-- 
ng0
For non-prism friendly talk find me on http://www.psyced.org

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2016-08-20 16:38 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-08-19 14:15 [PATCH] gnu: Add perl-net-psyc ng0
2016-08-20  9:22 ` ng0
2016-08-20 16:38   ` ng0

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).