aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/packages/ssh.scm136
1 files changed, 63 insertions, 73 deletions
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