From b56fe521de9b8238839546f84abaebcada623d44 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Sun, 16 Jul 2023 02:00:03 +0200 Subject: gnu: openssh: Use G-expressions. * gnu/packages/ssh.scm (openssh)[arguments]: Rewrite as G-expressions. --- gnu/packages/ssh.scm | 136 ++++++++++++++++++++++++--------------------------- 1 file changed, 63 insertions(+), 73 deletions(-) (limited to 'gnu/packages/ssh.scm') diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index fba1fc1734..81fbfd87a1 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -209,6 +209,69 @@ a server that supports the SSH-2 protocol.") (base32 "1s3nqv57r3l7avsdkzwd575dvxra8h19xpqczl0z3cvcgwabw3i0")))) (build-system gnu-build-system) + (arguments + (list + #:test-target "tests" + ;; Otherwise, the test scripts try to use a nonexistent directory and fail. + #:make-flags + #~(list "REGRESSTMP=\"$${BUILDDIR}/regress\"") + #:configure-flags + #~(append + (list "--sysconfdir=/etc/ssh" + ;; Default value of 'PATH' used by sshd. + "--with-default-path=/run/current-system/profile/bin" + ;; configure needs to find krb5-config. + (string-append "--with-kerberos5=" + #$(this-package-input "mit-krb5") + "/bin") + ;; libedit is needed for sftp completion. + "--with-libedit") + ;; Enable PAM support in sshd. + (if #$(target-hurd?) + '() + (list "--with-pam" + ;; Support creation and use of ecdsa-sk, ed25519-sk keys. + "--with-security-key-builtin")) + ;; "make install" runs "install -s" by default, which doesn't work for + ;; cross-compiled binaries because it invokes 'strip' instead of + ;; 'TRIPLET-strip'. Work around this. + (if #$(%current-target-system) + (list "--disable-strip") + '())) + #:phases + #~(modify-phases %standard-phases + (add-after 'configure 'reset-/var/empty + (lambda _ + (substitute* "Makefile" + (("PRIVSEP_PATH=/var/empty") + (string-append "PRIVSEP_PATH=" #$output "/var/empty"))))) + (add-after 'configure 'set-store-location + (lambda _ + (substitute* "misc.c" + (("@STORE_DIRECTORY@") + (string-append "\"" (%store-directory) "\""))))) + (add-before 'check 'patch-tests + (lambda _ + (substitute* "regress/test-exec.sh" + (("/bin/sh") (which "sh"))) + + ;; Remove 't-exec' regress target which requires user 'sshd'. + (substitute* (list "Makefile" + "regress/Makefile") + (("^(tests:.*) t-exec(.*)" all pre post) + (string-append pre post))))) + (replace 'install + (lambda* (#:key (make-flags '()) #:allow-other-keys) + ;; Install without host keys and system configuration files. This + ;; will install /var/empty to the store, which is needed by the + ;; system openssh-service-type. + (apply invoke "make" "install-nosysconf" make-flags) + (with-directory-excursion "contrib" + (chmod "ssh-copy-id" #o555) + (install-file "ssh-copy-id" + (string-append #$output "/bin/")) + (install-file "ssh-copy-id.1" + (string-append #$output "/share/man/man1/")))))))) (native-inputs (list groff pkg-config)) (inputs (cons* libedit @@ -220,79 +283,6 @@ a server that supports the SSH-2 protocol.") '() (list linux-pam libfido2)))) ; fails to build on GNU/Hurd - (arguments - `(#:test-target "tests" - ;; Otherwise, the test scripts try to use a nonexistent directory and - ;; fail. - #:make-flags '("REGRESSTMP=\"$${BUILDDIR}/regress\"") - #:configure-flags `("--sysconfdir=/etc/ssh" - - ;; Default value of 'PATH' used by sshd. - "--with-default-path=/run/current-system/profile/bin" - - ;; configure needs to find krb5-config. - ,(string-append "--with-kerberos5=" - (assoc-ref %build-inputs "mit-krb5") - "/bin") - - ;; libedit is needed for sftp completion. - "--with-libedit" - - ;; Enable PAM support in sshd. - ,,@(if (target-hurd?) - '() - '("--with-pam" - - ;; Support creation and use of ecdsa-sk, - ;; ed25519-sk keys. - "--with-security-key-builtin")) - - - - ;; "make install" runs "install -s" by default, - ;; which doesn't work for cross-compiled binaries - ;; because it invokes 'strip' instead of - ;; 'TRIPLET-strip'. Work around this. - ,,@(if (%current-target-system) - '("--disable-strip") - '())) - - #:phases - (modify-phases %standard-phases - (add-after 'configure 'reset-/var/empty - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (substitute* "Makefile" - (("PRIVSEP_PATH=/var/empty") - (string-append "PRIVSEP_PATH=" out "/var/empty")))))) - (add-after 'configure 'set-store-location - (lambda* _ - (substitute* "misc.c" - (("@STORE_DIRECTORY@") - (string-append "\"" (%store-directory) "\""))))) - (add-before 'check 'patch-tests - (lambda _ - (substitute* "regress/test-exec.sh" - (("/bin/sh") (which "sh"))) - - ;; Remove 't-exec' regress target which requires user 'sshd'. - (substitute* (list "Makefile" - "regress/Makefile") - (("^(tests:.*) t-exec(.*)" all pre post) - (string-append pre post))))) - (replace 'install - (lambda* (#:key outputs (make-flags '()) #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - ;; Install without host keys and system configuration files. - ;; This will install /var/empty to the store, which is needed - ;; by the system openssh-service-type. - (apply invoke "make" "install-nosysconf" make-flags) - (with-directory-excursion "contrib" - (chmod "ssh-copy-id" #o555) - (install-file "ssh-copy-id" - (string-append out "/bin/")) - (install-file "ssh-copy-id.1" - (string-append out "/share/man/man1/"))))))))) (synopsis "Client and server for the secure shell (ssh) protocol") (description "The SSH2 protocol implemented in OpenSSH is standardised by the -- cgit v1.2.3