~ruther/guix-local

da35acf91d9d198c8dc61dc356825c867772eec9 — Ludovic Courtès 10 years ago 03b93ed
gnu: lsh: lshd now supports X11 forwarding.

Reported by myglc2 <myglc2@gmail.com>.

* gnu/packages/lsh.scm (lsh)[inputs]: Add XAUTH.
[arguments]: Modify 'XAUTH_PROGRAM' macro in 'server_x11.c'.
1 files changed, 19 insertions(+), 3 deletions(-)

M gnu/packages/lsh.scm
M gnu/packages/lsh.scm => gnu/packages/lsh.scm +19 -3
@@ 29,7 29,8 @@
  #:use-module (gnu packages multiprecision)
  #:use-module (gnu packages readline)
  #:use-module (gnu packages gperf)
  #:use-module (gnu packages guile))
  #:use-module (gnu packages guile)
  #:use-module (gnu packages xorg))

(define-public liboop
  (package


@@ 100,7 101,11 @@ basis for almost any application.")

       ("liboop" ,liboop)
       ("zlib" ,guix:zlib)
       ("gmp" ,gmp)))
       ("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


@@ 128,7 133,18 @@ basis for almost any application.")
               ;; Same for the 'lsh-authorize' script.
               (substitute* "src/lsh-authorize"
                 (("=sexp-conv")
                  (string-append "=" 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"))))))