Fail hard on LUKS inclusion error (bug #409277), advise about sys-fs/cryptsetup[stati...
authorSebastian Pipping <sebastian@pipping.org>
Thu, 22 Mar 2012 15:07:23 +0000 (16:07 +0100)
committerSebastian Pipping <sebastian@pipping.org>
Thu, 22 Mar 2012 15:15:51 +0000 (16:15 +0100)
ChangeLog
gen_initramfs.sh

index b2529bfabfb14933927574df2069318432388dd4..b6319e45e2615314d6ecdb26c5fdb9a6d626a2f3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,10 @@
 # Distributed under the GPL v2
 # $Id$
 
+  22 Mar 2012; Sebastian Pipping <sping@gentoo.org> gen_initramfs.sh:
+  Fail hard on LUKS inclusion error (bug #409277), advise about
+  sys-fs/cryptsetup[static], drop support for cryptsetup binary from /bin/
+
   22 Mar 2012; Sebastian Pipping <sping@gentoo.org> gen_funcs.sh,
   gen_initramfs.sh:
   Make errors stand out more
index 9a17b3a1ac9ac595d263b704a90bb3a9afffd6a3..419d557ec80b876d23bfce7a7ac60152703a42a0 100755 (executable)
@@ -391,6 +391,10 @@ append_overlay(){
 }
 
 append_luks() {
+       local _luks_error_format="LUKS support cannot be included: %s.  Please emerge sys-fs/cryptsetup[static]."
+       local _luks_source=/sbin/cryptsetup
+       local _luks_dest=/sbin/cryptsetup
+
        if [ -d "${TEMP}/initramfs-luks-temp" ]
        then
                rm -r "${TEMP}/initramfs-luks-temp/"
@@ -402,20 +406,15 @@ append_luks() {
 
        if isTrue ${LUKS}
        then
-               if is_static /bin/cryptsetup
-               then
-                       print_info 1 "Including LUKS support"
-                       cp /bin/cryptsetup ${TEMP}/initramfs-luks-temp/sbin/cryptsetup
-                       chmod +x "${TEMP}/initramfs-luks-temp/sbin/cryptsetup"
-               elif is_static /sbin/cryptsetup
-               then
-                       print_info 1 "Including LUKS support"
-                       cp /sbin/cryptsetup ${TEMP}/initramfs-luks-temp/sbin/cryptsetup
-                       chmod +x "${TEMP}/initramfs-luks-temp/sbin/cryptsetup"
-               else
-                       print_info 1 "LUKS support requires static cryptsetup at /bin/cryptsetup or /sbin/cryptsetup"
-                       print_info 1 "Not including LUKS support"
-               fi
+               [ -x "${_luks_source}" ] \
+                               || gen_die "$(printf "${_luks_error_format}" "no file ${_luks_source}")"
+
+               is_static "${_luks_source}" \
+                               || gen_die "$(printf "${_luks_error_format}" "${_luks_source} not a static binary")"
+
+               print_info 1 "Including LUKS support"
+               cp "${_luks_source}" ${TEMP}/initramfs-luks-temp${_luks_dest}
+               chmod +x "${TEMP}/initramfs-luks-temp${_luks_dest}"
        fi
 
        find . -print | cpio ${CPIO_ARGS} --append -F "${CPIO}" \