From 265363f79df5a545dc47547dbee76972b387e9b7 Mon Sep 17 00:00:00 2001 From: "Robin H. Johnson" Date: Tue, 14 Feb 2012 08:31:46 +0000 Subject: [PATCH] Fix dmraid building with LVM/device-mapper dmraid is entirely broken if you try to use the system static LVM/device-mapper. Instead, always build our own LVM2 for the initramfs, using DESTDIR for cleaner install. Dead code paths for old LVM2 build not removed yet until more users have tested. Signed-off-by: Robin H. Johnson --- ChangeLog | 7 +++++++ gen_compile.sh | 39 +++++++++++++++++++++------------------ gen_initramfs.sh | 5 +++-- 3 files changed, 31 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index 41db029..e5c391b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,13 @@ # Distributed under the GPL v2 # $Id$ + 14 Feb 2012; Robin H. Johnson gen_compile.sh, + gen_initramfs.sh: + dmraid is entirely broken if you try to use the system static + LVM/device-mapper. Instead start always building LVM2 for the initramfs, + using DESTDIR for cleaner install. Dead code paths for old LVM2 build not + removed yet until more users have tested. + 12 Feb 2012; Robin H. Johnson gen_compile.sh: More UTILS_CROSS_COMPILE prefix on strip calls. diff --git a/gen_compile.sh b/gen_compile.sh index bc93be8..646e0ef 100755 --- a/gen_compile.sh +++ b/gen_compile.sh @@ -406,7 +406,7 @@ compile_busybox() { /bin/tar -jxpf ${BUSYBOX_SRCTAR} || gen_die 'Could not extract busybox source tarball!' [ -d "${BUSYBOX_DIR}" ] || - gen_die 'Busybox directory ${BUSYBOX_DIR} is invalid!' + gen_die "Busybox directory ${BUSYBOX_DIR} is invalid!" cp "${BUSYBOX_CONFIG}" "${BUSYBOX_DIR}/.config" cp "${BUSYBOX_CONFIG}" "${BUSYBOX_DIR}/.config.gk_orig" cd "${BUSYBOX_DIR}" @@ -441,19 +441,20 @@ compile_lvm() { /bin/tar -zxpf ${LVM_SRCTAR} || gen_die 'Could not extract LVM source tarball!' [ -d "${LVM_DIR}" ] || - gen_die 'LVM directory ${LVM_DIR} is invalid!' + gen_die "LVM directory ${LVM_DIR} is invalid!" cd "${LVM_DIR}" apply_patches lvm ${LVM_VER} print_info 1 'lvm: >> Configuring...' CFLAGS="-fPIC" \ - ./configure --enable-static_link --prefix=${TEMP}/lvm \ + ./configure --enable-static_link --prefix=/ \ --with-lvm1=internal --with-clvmd=none --with-cluster=none \ --disable-readline --disable-selinux --with-mirrors=internal \ - --with-snapshots=internal --with-pool=internal >> ${LOGFILE} 2>&1 || \ + --with-snapshots=internal --with-pool=internal \ + >> ${LOGFILE} 2>&1 || \ gen_die 'Configure of lvm failed!' print_info 1 'lvm: >> Compiling...' - compile_generic '' utils - compile_generic 'install' utils + compile_generic '' utils + compile_generic "install DESTDIR=${TEMP}/lvm/" utils cd "${TEMP}/lvm" print_info 1 ' >> Copying to bincache...' @@ -462,11 +463,11 @@ compile_lvm() { # See bug 382555 ${UTILS_CROSS_COMPILE}strip "sbin/dmsetup.static" || gen_die 'Could not strip dmsetup.static' - /bin/tar -cjf "${LVM_BINCACHE}" sbin/lvm.static sbin/dmsetup.static || + /bin/tar -cjf "${LVM_BINCACHE}" . || gen_die 'Could not create binary cache' cd "${TEMP}" - rm -rf "${TEMP}/device-mapper" > /dev/null + rm -rf "${TEMP}/lvm" > /dev/null rm -rf "${LVM_DIR}" lvm fi } @@ -483,7 +484,7 @@ compile_mdadm() { /bin/tar -jxpf "${MDADM_SRCTAR}" || gen_die 'Could not extract MDADM source tarball!' [ -d "${MDADM_DIR}" ] || - gen_die 'MDADM directory ${MDADM_DIR} is invalid!' + gen_die "MDADM directory ${MDADM_DIR} is invalid!" cd "${MDADM_DIR}" apply_patches mdadm ${MDADM_VER} @@ -521,24 +522,26 @@ compile_dmraid() { /bin/tar -jxpf ${DMRAID_SRCTAR} || gen_die 'Could not extract DMRAID source tarball!' [ -d "${DMRAID_DIR}" ] || - gen_die 'DMRAID directory ${DMRAID_DIR} is invalid!' - rm -rf "${TEMP}/device-mapper" > /dev/null - /bin/tar -jxpf "${DEVICE_MAPPER_BINCACHE}" -C "${TEMP}" || - gen_die "Could not extract device-mapper binary cache!"; + gen_die "DMRAID directory ${DMRAID_DIR} is invalid!" + rm -rf "${TEMP}/lvm" > /dev/null + mkdir -p "${TEMP}/lvm" + /bin/tar -jxpf "${LVM_BINCACHE}" -C "${TEMP}/lvm" || + gen_die "Could not extract LVM2 binary cache!"; cd "${DMRAID_DIR}" apply_patches dmraid ${DMRAID_VER} print_info 1 'dmraid: >> Configuring...' - LDFLAGS="-L${TEMP}/device-mapper/lib" \ - CFLAGS="-I${TEMP}/device-mapper/include" \ - CPPFLAGS="-I${TEMP}/device-mapper/include" \ + LDFLAGS="-L${TEMP}/lvm/lib" \ + CFLAGS="-I${TEMP}/lvm/include" \ + CPPFLAGS="-I${TEMP}/lvm/include" \ + LIBS="-ldevmapper" \ ./configure --enable-static_link --prefix=${TEMP}/dmraid >> ${LOGFILE} 2>&1 || gen_die 'Configure of dmraid failed!' # We dont necessarily have selinux installed yet... look into # selinux global support in the future. - sed -i tools/Makefile -e "s|DMRAIDLIBS += -lselinux||g" + sed -i tools/Makefile -e "/DMRAID_LIBS +=/s|-lselinux||g" ###echo "DMRAIDLIBS += -lselinux -lsepol" >> tools/Makefile mkdir -p "${TEMP}/dmraid" print_info 1 'dmraid: >> Compiling...' @@ -553,7 +556,7 @@ compile_dmraid() { gen_die 'Could not create binary cache' cd "${TEMP}" - rm -rf "${TEMP}/device-mapper" > /dev/null + rm -rf "${TEMP}/lvm" > /dev/null rm -rf "${DMRAID_DIR}" dmraid fi } diff --git a/gen_initramfs.sh b/gen_initramfs.sh index 5704173..9a17b3a 100755 --- a/gen_initramfs.sh +++ b/gen_initramfs.sh @@ -235,7 +235,7 @@ append_lvm(){ cd ${TEMP} mkdir -p "${TEMP}/initramfs-lvm-temp/bin/" mkdir -p "${TEMP}/initramfs-lvm-temp/etc/lvm/" - if [ -e '/sbin/lvm.static' ] + if false && [ -e '/sbin/lvm.static' ] then print_info 1 ' LVM: Adding support (using local static binary /sbin/lvm.static)...' cp /sbin/lvm.static "${TEMP}/initramfs-lvm-temp/bin/lvm" || @@ -245,7 +245,7 @@ append_lvm(){ then cp /sbin/dmsetup.static "${TEMP}/initramfs-lvm-temp/bin/dmsetup" fi - elif [ -e '/sbin/lvm' ] && LC_ALL="C" ldd /sbin/lvm|grep -q 'not a dynamic executable' + elif false && [ -e '/sbin/lvm' ] && LC_ALL="C" ldd /sbin/lvm|grep -q 'not a dynamic executable' then print_info 1 ' LVM: Adding support (using local static binary /sbin/lvm)...' cp /sbin/lvm "${TEMP}/initramfs-lvm-temp/bin/lvm" || @@ -265,6 +265,7 @@ append_lvm(){ # See bug 382555 mv ${TEMP}/initramfs-lvm-temp/sbin/dmsetup.static ${TEMP}/initramfs-lvm-temp/bin/dmsetup || gen_die 'LVM error: Could not move dmsetup.static to dmsetup!' + rm -rf ${TEMP}/initramfs-lvm-temp/{lib,share,man,include,sbin/{lvm,dmsetup}} fi if [ -x /sbin/lvm ] then -- 2.26.2