diff options
author | Jean-Pierre De Jesus DIAZ <me@jeandudey.tech> | 2022-06-29 12:51:55 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2022-07-04 12:29:05 +0200 |
commit | bb88505ee8a95e84e23341e24412ad52f44b3375 (patch) | |
tree | b5db9748a9fc95eba16447bcae7af41908aef9cc /gnu | |
parent | e8e7b4cdae251abebf4ae139d02e8369cc90fd01 (diff) | |
download | guix-bb88505ee8a95e84e23341e24412ad52f44b3375.tar guix-bb88505ee8a95e84e23341e24412ad52f44b3375.tar.gz |
gnu: vpnc: Fix cross-compilation.
* gnu/packages/vpn.scm (vpnc): Fix cross-compilation.
[native-inputs]: Add conditional input of `this-package' (vpnc)
to reuse the man page and add `pkg-config'.
[arguments]: Use G-Expressions.
[arguments]: Make use of `make-flags' instead of using substitutions.
[arguments]: Remove unneeded deletion of `configure'.
[arguments]: Use `pkg-config' to search for libgcrypt.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/packages/vpn.scm | 80 |
1 files changed, 62 insertions, 18 deletions
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm index 9b36319aa8..bab205c3e6 100644 --- a/gnu/packages/vpn.scm +++ b/gnu/packages/vpn.scm @@ -21,6 +21,7 @@ ;;; Copyright © 2022 Josselin Poiret <josselin.poiret@protonmail.ch> ;;; Copyright © 2022 Lu hui <luhux76@gmail.com> ;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2022 Jean-Pierre De Jesus DIAZ <me@jeandudey.tech> ;;; ;;; This file is part of GNU Guix. ;;; @@ -479,25 +480,68 @@ file for more details.") (sha256 (base32 "1128860lis89g1s21hqxvap2nq426c9j4bvgghncc1zj0ays7kj6")))) (build-system gnu-build-system) - (inputs (list libgcrypt perl vpnc-scripts)) + (native-inputs (append (list perl pkg-config vpnc-scripts) + (if (%current-target-system) + (list this-package) + '()))) + (inputs (list libgcrypt vpnc-scripts)) (arguments - `(#:tests? #f ; there is no check target - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'use-store-paths - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (vpnc-scripts (assoc-ref inputs "vpnc-scripts"))) - (substitute* "config.c" - (("/etc/vpnc/vpnc-script") - (string-append vpnc-scripts "/etc/vpnc/vpnc-script"))) - (substitute* "Makefile" - (("ETCDIR=.*") - (string-append "ETCDIR=" out "/etc/vpnc\n")) - (("PREFIX=.*") - (string-append "PREFIX=" out "\n"))) - #t))) - (delete 'configure)))) ; no configure script + (list #:tests? #f ;; There is no check target + #:make-flags + #~(list (string-append "CC=" #$(cc-for-target)) + (string-append "ETCDIR=" #$output "/etc/vpnc") + (string-append "PREFIX=" #$output)) + #:phases + #~(modify-phases %standard-phases + (delete 'configure) ;; No configure script. + (add-after 'unpack 'use-store-paths + (lambda* (#:key inputs #:allow-other-keys) + (let ((vpnc-scripts (assoc-ref inputs "vpnc-scripts"))) + (substitute* "config.c" + (("/etc/vpnc/vpnc-script") + (string-append vpnc-scripts + "/etc/vpnc/vpnc-script")))))) + (add-after 'unpack 'patch-Makefile + (lambda* (#:key target #:allow-other-keys) + (let* ((pkg-config #$(pkg-config-for-target)) + (includedir (string-append pkg-config + " --variable=includedir" + " libgcrypt")) + (cflags (string-append pkg-config + " --cflags" + " libgcrypt")) + (libdir (string-append pkg-config + " --variable=libdir" + " libgcrypt")) + (libs (string-append pkg-config + " --libs" + " libgcrypt"))) + (substitute* "Makefile" + (("\\$\\(shell libgcrypt-config --cflags\\)") + (string-append "-I$(shell " includedir ") " + "$(shell " cflags ")")) + (("\\$\\(shell libgcrypt-config --libs\\)") + (string-append + "-L$(shell " libdir ") " + "$(shell " libs ")"))) + ;; When cross-compiling the manpage can't be generated as the + ;; Makefile needs to execute the resulting `vpnc' binary. + (when target + (substitute* "Makefile" + (("all : \\$\\(BINS\\) vpnc\\.8 vpnc-script") + "all : $(BINS) vpnc-script") + (("install -m644 vpnc\\.8.*") "")))))) + (add-after 'unpack 'install-manpage + (lambda* (#:key native-inputs inputs target + #:allow-other-keys) + ;; As the manpage is not generated. Instead install it from + ;; the input vpnc package. + (when target + (let* ((vpnc (assoc-ref native-inputs "vpnc")) + (man (string-append vpnc + "/share/man/man8/vpnc.8.gz")) + (output (string-append #$output "/share/man/man8"))) + (install-file man output)))))))) (synopsis "Client for Cisco VPN concentrators") (description "vpnc is a VPN client compatible with Cisco's EasyVPN equipment. |