From da35acf91d9d198c8dc61dc356825c867772eec9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 24 Feb 2016 12:24:30 +0100 Subject: [PATCH] gnu: lsh: lshd now supports X11 forwarding. Reported by myglc2 . * gnu/packages/lsh.scm (lsh)[inputs]: Add XAUTH. [arguments]: Modify 'XAUTH_PROGRAM' macro in 'server_x11.c'. --- gnu/packages/lsh.scm | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/gnu/packages/lsh.scm b/gnu/packages/lsh.scm index 90631e3fe5..3b6487f38c 100644 --- a/gnu/packages/lsh.scm +++ b/gnu/packages/lsh.scm @@ -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"))))))