gnu: lsh: Move to (gnu packages ssh)

* gnu/packages/lsh.scm: Remove.  Move 'lsh and liboop' to...
* gnu/packages/ssh.scm (liboop, lsh): ... here.  New variables.
* gnu/services/ssh.scm, gnu/services/base.scm: Adjust accordingly.
* gnu/local.mk (GNU_SYSTEM_MODULES): Adjust accordingly.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
David Craven 2016-07-13 18:13:11 +02:00 committed by Ludovic Courtès
parent e538a245f3
commit 2102ae2e30
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
5 changed files with 154 additions and 180 deletions

View file

@ -215,7 +215,6 @@ GNU_SYSTEM_MODULES = \
%D%/packages/llvm.scm \
%D%/packages/lout.scm \
%D%/packages/logging.scm \
%D%/packages/lsh.scm \
%D%/packages/lsof.scm \
%D%/packages/lua.scm \
%D%/packages/lxde.scm \

View file

@ -1,159 +0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;;
;;; 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 lsh)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages m4)
#:use-module (gnu packages linux)
#:use-module (gnu packages nettle)
#:use-module (gnu packages compression)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages readline)
#:use-module (gnu packages gperf)
#:use-module (gnu packages guile)
#:use-module (gnu packages xorg))
(define-public liboop
(package
(name "liboop")
(version "1.0")
(source
(origin
(method url-fetch)
(uri (string-append "http://download.ofb.net/liboop/liboop-"
version ".tar.gz"))
(sha256
(base32
"0z6rlalhvfca64jpvksppc9bdhs7jwhiw4y35g5ibvh91xp3rn1l"))
(patches (search-patches "liboop-mips64-deplibs-fix.patch"))))
(build-system gnu-build-system)
(home-page "http://www.lysator.liu.se/liboop/")
(synopsis "Event loop library")
(description "Liboop is a low-level event loop management library for
POSIX-based operating systems. It supports the development of modular,
multiplexed applications which may respond to events from several sources. It
replaces the \"select() loop\" and allows the registration of event handlers
for file and network I/O, timers and signals. Since processes use these
mechanisms for almost all external communication, liboop can be used as the
basis for almost any application.")
(license license:lgpl2.1+)))
(define-public lsh
(package
(name "lsh")
(version "2.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/lsh/lsh-"
version ".tar.gz"))
(sha256
(base32
"1qqjy9zfzgny0rkb27c8c7dfsylvb6n0ld8h3an2r83pmaqr9gwb"))
(modules '((guix build utils)))
(snippet
'(begin
(substitute* "src/testsuite/functions.sh"
(("localhost")
;; Avoid host name lookups since they don't work in
;; chroot builds.
"127.0.0.1")
(("set -e")
;; Make tests more verbose.
"set -e\nset -x"))
(substitute* (find-files "src/testsuite" "-test$")
(("localhost") "127.0.0.1"))
(substitute* "src/testsuite/login-auth-test"
(("/bin/cat") "cat"))))))
(build-system gnu-build-system)
(native-inputs
`(("m4" ,m4)
("guile" ,guile-2.0)
("gperf" ,gperf)
("psmisc" ,psmisc))) ; for `killall'
(inputs
`(("nettle" ,nettle-2)
("linux-pam" ,linux-pam)
;; 'rl.c' uses the 'CPPFunction' type, which is no longer in
;; Readline 6.3.
("readline" ,readline-6.2)
("liboop" ,liboop)
("zlib" ,zlib)
("gmp" ,gmp)
;; The server (lshd) invokes xauth when X11 forwarding is requested.
;; This adds 24 MiB (or 27%) to the closure of lsh.
("xauth" ,xauth)))
(arguments
'(;; Skip the `configure' test that checks whether /dev/ptmx &
;; co. work as expected, because it relies on impurities (for
;; instance, /dev/pts may be unavailable in chroots.)
#:configure-flags '("lsh_cv_sys_unix98_ptys=yes")
;; FIXME: Tests won't run in a chroot, presumably because
;; /etc/profile is missing, and thus clients get an empty $PATH
;; and nothing works.
#:tests? #f
#:phases
(modify-phases %standard-phases
(add-before 'configure 'pre-configure
(lambda* (#:key inputs #:allow-other-keys)
(let* ((nettle (assoc-ref inputs "nettle"))
(sexp-conv (string-append nettle "/bin/sexp-conv")))
;; Make sure 'lsh' and 'lshd' pick 'sexp-conv' in the right place
;; by default.
(substitute* "src/environ.h.in"
(("^#define PATH_SEXP_CONV.*")
(string-append "#define PATH_SEXP_CONV \""
sexp-conv "\"\n")))
;; Same for the 'lsh-authorize' script.
(substitute* "src/lsh-authorize"
(("=sexp-conv")
(string-append "=" sexp-conv)))
;; Tell lshd where 'xauth' lives. Another option would be to
;; hardcode "/run/current-system/profile/bin/xauth", thereby
;; reducing the closure size, but that wouldn't work on foreign
;; distros.
(with-fluids ((%default-port-encoding "ISO-8859-1"))
(substitute* "src/server_x11.c"
(("define XAUTH_PROGRAM.*")
(string-append "define XAUTH_PROGRAM \""
(assoc-ref inputs "xauth")
"/bin/xauth\"\n")))))
;; Tests rely on $USER being set.
(setenv "USER" "guix"))))))
(home-page "http://www.lysator.liu.se/~nisse/lsh/")
(synopsis "GNU implementation of the Secure Shell (ssh) protocols")
(description
"GNU lsh is a free implementation of the SSH version 2 protocol. It is
used to create a secure line of communication between two computers,
providing shell access to the server system from the client. It provides
both the server daemon and the client application, as well as tools for
manipulating key files.")
(license license:gpl2+)))

View file

@ -1,4 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
@ -20,27 +21,34 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages ssh)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages compression)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages groff)
#:use-module (gnu packages elf)
#:use-module (gnu packages guile)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages autotools)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages perl)
#:use-module (gnu packages ncurses)
#:autoload (gnu packages protobuf) (protobuf)
#:autoload (gnu packages boost) (boost)
#:use-module (gnu packages base)
#:use-module (gnu packages tls)
#:use-module (gnu packages)
#:use-module (guix packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:autoload (gnu packages boost) (boost)
#:use-module (gnu packages compression)
#:use-module (gnu packages elf)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages gperf)
#:use-module (gnu packages groff)
#:use-module (gnu packages guile)
#:use-module (gnu packages linux)
#:use-module (gnu packages m4)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages nettle)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:autoload (gnu packages protobuf) (protobuf)
#:use-module (gnu packages readline)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages tls)
#:use-module (gnu packages xorg)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system cmake))
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages))
(define-public libssh
(package
@ -355,3 +363,129 @@ (define-public dropbear
particularly useful for embedded systems, such as wireless routers.")
(home-page "https://matt.ucc.asn.au/dropbear/dropbear.html")
(license (license:x11-style "" "See file LICENSE."))))
(define-public liboop
(package
(name "liboop")
(version "1.0")
(source
(origin
(method url-fetch)
(uri (string-append "http://download.ofb.net/liboop/liboop-"
version ".tar.gz"))
(sha256
(base32
"0z6rlalhvfca64jpvksppc9bdhs7jwhiw4y35g5ibvh91xp3rn1l"))
(patches (search-patches "liboop-mips64-deplibs-fix.patch"))))
(build-system gnu-build-system)
(home-page "http://www.lysator.liu.se/liboop/")
(synopsis "Event loop library")
(description "Liboop is a low-level event loop management library for
POSIX-based operating systems. It supports the development of modular,
multiplexed applications which may respond to events from several sources. It
replaces the \"select() loop\" and allows the registration of event handlers
for file and network I/O, timers and signals. Since processes use these
mechanisms for almost all external communication, liboop can be used as the
basis for almost any application.")
(license license:lgpl2.1+)))
(define-public lsh
(package
(name "lsh")
(version "2.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/lsh/lsh-"
version ".tar.gz"))
(sha256
(base32
"1qqjy9zfzgny0rkb27c8c7dfsylvb6n0ld8h3an2r83pmaqr9gwb"))
(modules '((guix build utils)))
(snippet
'(begin
(substitute* "src/testsuite/functions.sh"
(("localhost")
;; Avoid host name lookups since they don't work in
;; chroot builds.
"127.0.0.1")
(("set -e")
;; Make tests more verbose.
"set -e\nset -x"))
(substitute* (find-files "src/testsuite" "-test$")
(("localhost") "127.0.0.1"))
(substitute* "src/testsuite/login-auth-test"
(("/bin/cat") "cat"))))))
(build-system gnu-build-system)
(native-inputs
`(("m4" ,m4)
("guile" ,guile-2.0)
("gperf" ,gperf)
("psmisc" ,psmisc))) ; for `killall'
(inputs
`(("nettle" ,nettle-2)
("linux-pam" ,linux-pam)
;; 'rl.c' uses the 'CPPFunction' type, which is no longer in
;; Readline 6.3.
("readline" ,readline-6.2)
("liboop" ,liboop)
("zlib" ,zlib)
("gmp" ,gmp)
;; The server (lshd) invokes xauth when X11 forwarding is requested.
;; This adds 24 MiB (or 27%) to the closure of lsh.
("xauth" ,xauth)))
(arguments
'(;; Skip the `configure' test that checks whether /dev/ptmx &
;; co. work as expected, because it relies on impurities (for
;; instance, /dev/pts may be unavailable in chroots.)
#:configure-flags '("lsh_cv_sys_unix98_ptys=yes")
;; FIXME: Tests won't run in a chroot, presumably because
;; /etc/profile is missing, and thus clients get an empty $PATH
;; and nothing works.
#:tests? #f
#:phases
(modify-phases %standard-phases
(add-before 'configure 'pre-configure
(lambda* (#:key inputs #:allow-other-keys)
(let* ((nettle (assoc-ref inputs "nettle"))
(sexp-conv (string-append nettle "/bin/sexp-conv")))
;; Make sure 'lsh' and 'lshd' pick 'sexp-conv' in the right place
;; by default.
(substitute* "src/environ.h.in"
(("^#define PATH_SEXP_CONV.*")
(string-append "#define PATH_SEXP_CONV \""
sexp-conv "\"\n")))
;; Same for the 'lsh-authorize' script.
(substitute* "src/lsh-authorize"
(("=sexp-conv")
(string-append "=" sexp-conv)))
;; Tell lshd where 'xauth' lives. Another option would be to
;; hardcode "/run/current-system/profile/bin/xauth", thereby
;; reducing the closure size, but that wouldn't work on foreign
;; distros.
(with-fluids ((%default-port-encoding "ISO-8859-1"))
(substitute* "src/server_x11.c"
(("define XAUTH_PROGRAM.*")
(string-append "define XAUTH_PROGRAM \""
(assoc-ref inputs "xauth")
"/bin/xauth\"\n")))))
;; Tests rely on $USER being set.
(setenv "USER" "guix"))))))
(home-page "http://www.lysator.liu.se/~nisse/lsh/")
(synopsis "GNU implementation of the Secure Shell (ssh) protocols")
(description
"GNU lsh is a free implementation of the SSH version 2 protocol. It is
used to create a secure line of communication between two computers,
providing shell access to the server system from the client. It provides
both the server daemon and the client application, as well as tools for
manipulating key files.")
(license license:gpl2+)))

View file

@ -36,7 +36,7 @@ (define-module (gnu services base)
#:use-module ((gnu packages base)
#:select (canonical-package glibc))
#:use-module (gnu packages package-management)
#:use-module (gnu packages lsh)
#:use-module (gnu packages ssh)
#:use-module (gnu packages lsof)
#:use-module ((gnu build file-systems)
#:select (mount-flags->bit-mask))

View file

@ -22,7 +22,7 @@ (define-module (gnu services ssh)
#:use-module (gnu services)
#:use-module (gnu services shepherd)
#:use-module (gnu system pam)
#:use-module (gnu packages lsh)
#:use-module (gnu packages ssh)
#:use-module (srfi srfi-26)
#:export (lsh-service))