diff options
author | Leo Famulari <leo@famulari.name> | 2016-11-25 11:20:21 -0500 |
---|---|---|
committer | Leo Famulari <leo@famulari.name> | 2016-11-25 11:20:21 -0500 |
commit | de32aa74b4f7762e887e80047804c42d495ab841 (patch) | |
tree | bc37856ba9036563aa9ca7809ea3e8cefcb670e9 /gnu/packages/cryptsetup.scm | |
parent | d46491779e18cf614caeeb1b4becbd9171c64416 (diff) | |
parent | d66cbd1adc799b08e66cd912822c6220499b4876 (diff) | |
download | guix-patches-de32aa74b4f7762e887e80047804c42d495ab841.tar guix-patches-de32aa74b4f7762e887e80047804c42d495ab841.tar.gz |
Merge branch 'master' into python-build-system
Diffstat (limited to 'gnu/packages/cryptsetup.scm')
-rw-r--r-- | gnu/packages/cryptsetup.scm | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/gnu/packages/cryptsetup.scm b/gnu/packages/cryptsetup.scm index 183c568fd9..da58facffb 100644 --- a/gnu/packages/cryptsetup.scm +++ b/gnu/packages/cryptsetup.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> +;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -58,3 +59,67 @@ setup information in the partition header, enabling the users to transport or migrate their data seamlessly.") (license license:gpl2) (home-page "https://gitlab.com/cryptsetup/cryptsetup"))) + +(define (static-library library) + "Return a variant of package LIBRARY that provides static libraries ('.a' +files). This assumes LIBRARY uses Libtool." + (package + (inherit library) + (name (string-append (package-name library) "-static")) + (arguments + (substitute-keyword-arguments (package-arguments library) + ((#:configure-flags flags ''()) + `(append '("--disable-shared" "--enable-static") + ,flags)))))) + +(define-public cryptsetup-static + ;; Stripped-down statically-linked 'cryptsetup' command for use in initrds. + (package + (inherit cryptsetup) + (name "cryptsetup-static") + (arguments + '(#:configure-flags '("--disable-shared" + "--enable-static-cryptsetup" + + ;; 'libdevmapper.a' pulls in libpthread and libudev. + "LIBS=-ludev -pthread") + + #:allowed-references () ;this should be self-contained + + #:modules ((ice-9 ftw) + (ice-9 match) + (guix build utils) + (guix build gnu-build-system)) + + #:phases (modify-phases %standard-phases + (add-after 'install 'remove-cruft + (lambda* (#:key outputs #:allow-other-keys) + ;; Remove everything except the 'cryptsetup' command and + ;; its friend. + (let ((out (assoc-ref outputs "out"))) + (with-directory-excursion out + (let ((dirs (scandir "." + (match-lambda + ((or "." "..") #f) + (_ #t))))) + (for-each delete-file-recursively + (delete "sbin" dirs)) + (for-each (lambda (file) + (rename-file (string-append file + ".static") + file) + (remove-store-references file)) + '("sbin/cryptsetup" "sbin/veritysetup")) + #t)))))))) + (inputs + (let ((libgcrypt-static + (package + (inherit (static-library libgcrypt)) + (propagated-inputs + `(("libgpg-error-host" ,(static-library libgpg-error))))))) + `(("libgcrypt" ,libgcrypt-static) + ("lvm2" ,lvm2-static) + ("util-linux" ,util-linux "static") + ("util-linux" ,util-linux) + ("popt" ,popt)))) + (synopsis "Hard disk encryption tool (statically linked)"))) |