commit:     179e5b5c4e6b9869d5a0f0dab21b875ab3a5a0f3
Author:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
AuthorDate: Sun Jul 14 09:25:09 2019 +0000
Commit:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
CommitDate: Sun Jul 14 11:58:15 2019 +0000
URL:        https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=179e5b5c

Rework --dmraid support

Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>

 defaults/software.sh                               | 10 ++-
 gen_cmdline.sh                                     | 12 ---
 gen_compile.sh                                     | 55 ------------
 gen_initramfs.sh                                   | 46 +++++-----
 gkbuilds/dmraid.gkbuild                            | 31 +++++++
 ...h => dmraid-1.0.0_rc16-001-undo-p-rename.patch} |  0
 .../dmraid-1.0.0_rc16-002-return-all-sets.patch    | 11 +++
 ...dmraid-1.0.0_rc16-003-static-build-fixes.patch} | 98 +++++++++++-----------
 ...atch => dmraid-1.0.0_rc16-004-staticlink.patch} |  0
 ...h => dmraid-1.0.0_rc16-005-parallel-make.patch} |  0
 .../dmraid-1.0.0_rc16-return-all-sets.patch        | 11 ---
 11 files changed, 120 insertions(+), 154 deletions(-)

diff --git a/defaults/software.sh b/defaults/software.sh
index 9c6ba70..532c520 100644
--- a/defaults/software.sh
+++ b/defaults/software.sh
@@ -21,10 +21,12 @@ MDADM_DIR="${MDADM_DIR:-mdadm-${MDADM_VER}}"
 MDADM_SRCTAR="${MDADM_SRCTAR:-${DISTDIR}/mdadm-${MDADM_VER}.tar.xz}"
 
MDADM_BINCACHE="${MDADM_BINCACHE:-%%CACHE%%/mdadm-${MDADM_VER}-%%ARCH%%.tar.bz2}"
 
-DMRAID_VER="${DMRAID_VER:-VERSION_DMRAID}"
-DMRAID_DIR="${DMRAID_DIR:-dmraid/${DMRAID_VER}/dmraid}"
-DMRAID_SRCTAR="${DMRAID_SRCTAR:-${DISTDIR}/dmraid-${DMRAID_VER}.tar.bz2}"
-DMRAID_BINCACHE="${DMRAID_BINCACHE:-%%CACHE%%/dmraid-${DMRAID_VER}-%%ARCH%%.tar.bz2}"
+GKPKG_DMRAID_PN="dmraid"
+GKPKG_DMRAID_PV="${GKPKG_DMRAID_PV:-VERSION_DMRAID}"
+GKPKG_DMRAID_DEPS="lvm"
+GKPKG_DMRAID_SRCDIR="${GKPKG_DMRAID_SRCDIR:-dmraid/${GKPKG_DMRAID_PV}/dmraid}"
+GKPKG_DMRAID_SRCTAR="${GKPKG_DMRAID_SRCTAR:-${DISTDIR}/dmraid-${GKPKG_DMRAID_PV}.tar.bz2}"
+GKPKG_DMRAID_BINPKG="${GKPKG_DMRAID_BINPKG:-%%CACHE%%/dmraid-${GKPKG_DMRAID_PV}-%%ARCH%%.tar.xz}"
 
 GKPKG_DROPBEAR_PN="dropbear"
 GKPKG_DROPBEAR_PV="${GKPKG_DROPBEAR_PV:-VERSION_DROPBEAR}"

diff --git a/gen_cmdline.sh b/gen_cmdline.sh
index 0a1b1c8..5a1b481 100755
--- a/gen_cmdline.sh
+++ b/gen_cmdline.sh
@@ -379,18 +379,6 @@ parse_cmdline() {
                        ;;
                --dmraid|--no-dmraid)
                        CMD_DMRAID=$(parse_optbool "$*")
-                       if isTrue "${CMD_DMRAID}" && [ ! -e /usr/sbin/dmraid ]
-                       then
-                               echo 'Error: --dmraid requires sys-fs/dmraid' \
-                                       'to be installed on the host system.'
-                               exit 1
-                       fi
-                       if isTrue "${CMD_DMRAID}" && [ ! -e 
/usr/include/libdevmapper.h ]
-                       then
-                               echo 'Error: --dmraid requires sys-fs/lvm2' \
-                                       'to be installed on the host system.'
-                               exit 1
-                       fi
                        print_info 2 "CMD_DMRAID: ${CMD_DMRAID}"
                        ;;
                --e2fsprogs|--no-e2fsprogs)

diff --git a/gen_compile.sh b/gen_compile.sh
index 438a251..1c096cb 100755
--- a/gen_compile.sh
+++ b/gen_compile.sh
@@ -572,61 +572,6 @@ compile_mdadm() {
        fi
 }
 
-compile_dmraid() {
-       compile_device_mapper
-
-       if [[ -f "${DMRAID_BINCACHE}" && "${DMRAID_BINCACHE}" -nt 
"${LVM_BINCACHE}" ]]
-       then
-               print_info 1 "$(getIndent 2)dmraid: >> Using cache ..."
-       else
-               [ -f "${DMRAID_SRCTAR}" ] ||
-                       gen_die "Could not find DMRAID source tarball: 
${DMRAID_SRCTAR}! Please place it there, or place another version, changing 
/etc/genkernel.conf as necessary!"
-               cd "${TEMP}"
-               rm -rf ${DMRAID_DIR} > /dev/null
-               /bin/tar -xpf ${DMRAID_SRCTAR} ||
-                       gen_die 'Could not extract DMRAID source tarball!'
-               [ -d "${DMRAID_DIR}" ] ||
-                       gen_die "DMRAID directory ${DMRAID_DIR} is invalid!"
-
-               rm -rf "${TEMP}/lvm" > /dev/null
-               mkdir -p "${TEMP}/lvm"
-               /bin/tar -xpf "${LVM_BINCACHE}" -C "${TEMP}/lvm" ||
-                       gen_die "Could not extract LVM2 binary cache!";
-
-               cd "${DMRAID_DIR}" || gen_die "cannot chdir into 
'${DMRAID_DIR}'"
-               apply_patches dmraid ${DMRAID_VER}
-
-               print_info 1 "$(getIndent 2)dmraid: >> Configuring ..."
-               DEVMAPPEREVENT_CFLAGS="-I${TEMP}/lvm/include" \
-               LIBS="-lm -lrt -lpthread" \
-               ./configure --enable-static_link \
-                       --with-devmapper-prefix="${TEMP}/lvm" \
-                       --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 "/DMRAID_LIBS +=/s|-lselinux||g"
-               ###echo "DMRAIDLIBS += -lselinux -lsepol" >> tools/Makefile
-               mkdir -p "${TEMP}/dmraid"
-               print_info 1 "$(getIndent 2)dmraid: >> Compiling ..."
-               compile_generic '' utils
-               #compile_generic 'install' utils
-               mkdir ${TEMP}/dmraid/sbin
-               install -m 0755 -s tools/dmraid "${TEMP}/dmraid/sbin/dmraid"
-
-               print_info 1 "$(getIndent 2)dmraid: >> Copying to bincache ..."
-               cd "${TEMP}/dmraid" || gen_die "cannot chdir into 
'${TEMP}/dmraid'"
-               /bin/tar -cjf "${DMRAID_BINCACHE}" sbin/dmraid ||
-                       gen_die 'Could not create binary cache'
-
-               cd "${TEMP}"
-               isTrue "${CMD_DEBUGCLEANUP}" && rm -rf "${TEMP}/lvm" > /dev/null
-               isTrue "${CMD_DEBUGCLEANUP}" && rm -rf "${DMRAID_DIR}" dmraid
-               return 0
-       fi
-}
-
 determine_busybox_config_file() {
        print_info 2 "$(get_indent 3)busybox: >> Checking for suitable busybox 
configuration ..."
 

diff --git a/gen_initramfs.sh b/gen_initramfs.sh
index 7b282d2..b15f1bf 100755
--- a/gen_initramfs.sh
+++ b/gen_initramfs.sh
@@ -389,33 +389,33 @@ append_multipath(){
        rm -r "${TEMP}/initramfs-multipath-temp/"
 }
 
-append_dmraid(){
-       if [ -d "${TEMP}/initramfs-dmraid-temp" ]
-       then
-               rm -r "${TEMP}/initramfs-dmraid-temp/"
-       fi
-       print_info 1 "$(getIndent 2)DMRAID: Adding support (compiling 
binaries)..."
-       compile_dmraid
-       mkdir -p "${TEMP}/initramfs-dmraid-temp/"
-       /bin/tar -xpf "${DMRAID_BINCACHE}" -C "${TEMP}/initramfs-dmraid-temp" ||
-               gen_die "Could not extract dmraid binary cache!";
-       [ -x /sbin/dmsetup -a -x /sbin/kpartx ] && copy_binaries \
-               "${TEMP}/initramfs-dmraid-temp/" \
-               /sbin/{kpartx,dmsetup}
-       cd "${TEMP}/initramfs-dmraid-temp/"
-       module_ext=$(modules_kext)
-       RAID456=`find . -type f -name raid456${module_ext}`
-       if [ -n "${RAID456}" ]
+append_dmraid() {
+       local PN=dmraid
+       local TDIR="${TEMP}/initramfs-${PN}-temp"
+       if [ -d "${TDIR}" ]
        then
-               cd "${RAID456/raid456${module_ext}/}"
-               ln -sf raid456.kp $(basename ${RAID456})
-               cd "${TEMP}/initramfs-dmraid-temp/"
+               rm -r "${TDIR}" || gen_die "Failed to clean out existing 
'${TDIR}'!"
        fi
+
+       populate_binpkg ${PN}
+
+       mkdir "${TDIR}" || gen_die "Failed to create '${TDIR}'!"
+
+       unpack "$(get_gkpkg_binpkg "${PN}")" "${TDIR}"
+
+       cd "${TDIR}" || gen_die "Failed to chdir to '${TDIR}'!"
+
+       # Delete unneeded files
+       rm -rf \
+               usr/lib \
+               usr/share \
+               usr/include
+
+       mkdir -p "${TDIR}"/var/lock/dmraid || gen_die "Failed to create 
'${TDIR}/var/lock/dmraid'!"
+
        log_future_cpio_content
        find . -print | cpio ${CPIO_ARGS} --append -F "${CPIO}" \
-                       || gen_die "compressing dmraid cpio"
-       cd "${TEMP}"
-       rm -r "${TEMP}/initramfs-dmraid-temp/"
+               || gen_die "Failed to append dmraid to cpio!"
 }
 
 append_iscsi() {

diff --git a/gkbuilds/dmraid.gkbuild b/gkbuilds/dmraid.gkbuild
new file mode 100644
index 0000000..2c6810c
--- /dev/null
+++ b/gkbuilds/dmraid.gkbuild
@@ -0,0 +1,31 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+src_prepare() {
+       # pkg_check_modules is not in aclocal.m4 by default, and autoreconf 
doesn't add it
+       cat /usr/share/aclocal/pkg.m4 >>"${S}"/aclocal.m4 \
+               || die "Failed to append '/usr/share/aclocal/pkg.m4' to 
'${S}/aclocal.m4'!"
+
+       default
+}
+
+src_configure() {
+       local myconf=(
+               --enable-static_link
+       )
+
+       gkconf "${myconf[@]}"
+}
+
+src_install() {
+       default
+
+       "${STRIP}" --strip-all "${D}"/usr/sbin/dmraid \
+               || die "Failed to strip '${D}/usr/sbin/dmraid'!"
+
+       # For backward compatibility
+       mkdir "${D}"/sbin || die "Failed to create '${D}/sbin'!"
+
+       ln -s ../usr/sbin/dmraid "${D}"/sbin/dmraid \
+               || die "Failed to create symlink '${D}/sbin/dmraid' to 
'${D}/usr/sbin/dmraid'!"
+}

diff --git a/patches/dmraid/1.0.0.rc16-3/dmraid-1.0.0_rc16-undo-p-rename.patch 
b/patches/dmraid/1.0.0.rc16-3/dmraid-1.0.0_rc16-001-undo-p-rename.patch
similarity index 100%
rename from patches/dmraid/1.0.0.rc16-3/dmraid-1.0.0_rc16-undo-p-rename.patch
rename to patches/dmraid/1.0.0.rc16-3/dmraid-1.0.0_rc16-001-undo-p-rename.patch

diff --git 
a/patches/dmraid/1.0.0.rc16-3/dmraid-1.0.0_rc16-002-return-all-sets.patch 
b/patches/dmraid/1.0.0.rc16-3/dmraid-1.0.0_rc16-002-return-all-sets.patch
new file mode 100644
index 0000000..4ac153a
--- /dev/null
+++ b/patches/dmraid/1.0.0.rc16-3/dmraid-1.0.0_rc16-002-return-all-sets.patch
@@ -0,0 +1,11 @@
+--- a/1.0.0.rc16-3/dmraid/lib/metadata/metadata.c
++++ b/1.0.0.rc16-3/dmraid/lib/metadata/metadata.c
+@@ -839,7 +839,7 @@ _discover_partitions(struct lib_context *lc, struct 
list_head *rs_list)
+                */
+               if (T_GROUP(rs)) {
+                       _discover_partitions(lc, &rs->sets);
+-                      return;
++                      continue;
+               }
+ 
+               /*

diff --git 
a/patches/dmraid/1.0.0.rc16-3/dmraid-1.0.0_rc16-static-build-fixes.patch 
b/patches/dmraid/1.0.0.rc16-3/dmraid-1.0.0_rc16-003-static-build-fixes.patch
similarity index 87%
rename from 
patches/dmraid/1.0.0.rc16-3/dmraid-1.0.0_rc16-static-build-fixes.patch
rename to 
patches/dmraid/1.0.0.rc16-3/dmraid-1.0.0_rc16-003-static-build-fixes.patch
index 2988117..3ca491d 100644
--- a/patches/dmraid/1.0.0.rc16-3/dmraid-1.0.0_rc16-static-build-fixes.patch
+++ b/patches/dmraid/1.0.0.rc16-3/dmraid-1.0.0_rc16-003-static-build-fixes.patch
@@ -1,50 +1,6 @@
---- tools/Makefile.in.old      2010-05-31 07:18:31.000000000 -0400
-+++ tools/Makefile.in  2010-12-13 13:15:22.000000000 -0500
-@@ -60,17 +60,23 @@
- ifeq ("@KLIBC@", "no")
-       ifeq ("@STATIC_LINK@", "no")
-               LDFLAGS += -rdynamic
-+              MYLIBOBJ=$(top_builddir)/lib/libdmraid.so
-       else
-               LDFLAGS += -static
-+              MYLIBOBJ=$(top_builddir)/lib/libdmraid.a
-+              DMRAIDLIBS += \
-+                      $(DEVMAPPEREVENT_LIBS) \
-+                      $(DEVMAPPER_LIBS) \
-+                      $(DL_LIBS)
-       endif
- endif
- 
- .PHONY: install_dmraid_tools
- 
--dmraid: $(OBJECTS) $(top_builddir)/lib/libdmraid.a
-+dmraid: $(OBJECTS) $(MYLIBOBJ)
-       $(CC) -o $@ $(OBJECTS) $(LDFLAGS) -L$(top_builddir)/lib $(DMRAIDLIBS) 
$(LIBS)
- 
--dmevent_tool: $(OBJECTS2) $(top_builddir)/lib/libdmraid.a
-+dmevent_tool: $(OBJECTS2) $(MYLIBOBJ)
-       $(CC) -o $@ $(OBJECTS2) $(INCLUDES) $(LDFLAGS) -L$(top_builddir)/lib \
-               $(DMEVENTTOOLLIBS) $(DMRAIDLIBS) $(LIBS)
- 
---- lib/Makefile.in.old        2010-10-27 07:31:46.000000000 -0400
-+++ lib/Makefile.in    2010-12-13 13:04:16.000000000 -0500
-@@ -60,11 +60,11 @@
- USRLIB_RELPATH = $(shell echo $(abspath $(usrlibdir) $(libdir)) | \
-   $(AWK) -f $(top_srcdir)/tools/relpath.awk)
- 
--TARGETS = $(LIB_STATIC)
-+TARGETS = $(LIB_STATIC) $(LIB_SHARED) $(LIB_EVENTS_SHARED)
- 
- ifeq ("@KLIBC@", "no")
-       ifeq ("@STATIC_LINK@", "no")
--              TARGETS += $(LIB_SHARED) $(LIB_EVENTS_SHARED)
-+              TARGETS = $(LIB_SHARED) $(LIB_EVENTS_SHARED)
-       endif
- endif
- 
---- configure.in       2010-05-31 07:18:30.000000000 -0400
-+++ configure.in.new   2010-12-07 13:30:40.000000000 -0500
-@@ -155,6 +155,15 @@
+--- a/1.0.0.rc16-3/dmraid/configure.in
++++ b/1.0.0.rc16-3/dmraid/configure.in
+@@ -155,6 +155,15 @@ AC_ARG_ENABLE(static_link,
      Default is dynamic linking]),
    [STATIC_LINK=$enableval], [STATIC_LINK=no])
  
@@ -60,7 +16,7 @@
  dnl Enables shared libdmraid
  AC_ARG_ENABLE(shared_lib,
    AC_HELP_STRING([--enable-shared_lib], [Use this to generate shared
-@@ -248,23 +257,31 @@
+@@ -248,23 +257,31 @@ AC_ARG_WITH(devmapper-prefix,
        AC_HELP_STRING([--with-devmapper-prefix=PFX],
                [Where is devmapper library installed]),
        [DEVMAPPER_LIBS="-L$withval/lib"
@@ -107,4 +63,48 @@
 +fi
  
  VERSION=$srcdir/tools/VERSION
- DMRAID_LIB_MAJOR=$(cut -d. -f1 $VERSION)
\ No newline at end of file
+ DMRAID_LIB_MAJOR=$(cut -d. -f1 $VERSION)
+--- a/1.0.0.rc16-3/dmraid/lib/Makefile.in
++++ b/1.0.0.rc16-3/dmraid/lib/Makefile.in
+@@ -60,11 +60,11 @@ LIB_EVENTS_SHARED=$(LIB_EVENTS_NAME).so
+ USRLIB_RELPATH = $(shell echo $(abspath $(usrlibdir) $(libdir)) | \
+   $(AWK) -f $(top_srcdir)/tools/relpath.awk)
+ 
+-TARGETS = $(LIB_STATIC)
++TARGETS = $(LIB_STATIC) $(LIB_SHARED) $(LIB_EVENTS_SHARED)
+ 
+ ifeq ("@KLIBC@", "no")
+       ifeq ("@STATIC_LINK@", "no")
+-              TARGETS += $(LIB_SHARED) $(LIB_EVENTS_SHARED)
++              TARGETS = $(LIB_SHARED) $(LIB_EVENTS_SHARED)
+       endif
+ endif
+ 
+--- a/1.0.0.rc16-3/dmraid/tools/Makefile.in
++++ b/1.0.0.rc16-3/dmraid/tools/Makefile.in
+@@ -60,17 +60,23 @@ endif
+ ifeq ("@KLIBC@", "no")
+       ifeq ("@STATIC_LINK@", "no")
+               LDFLAGS += -rdynamic
++              MYLIBOBJ=$(top_builddir)/lib/libdmraid.so
+       else
+               LDFLAGS += -static
++              MYLIBOBJ=$(top_builddir)/lib/libdmraid.a
++              DMRAIDLIBS += \
++                      $(DEVMAPPEREVENT_LIBS) \
++                      $(DEVMAPPER_LIBS) \
++                      $(DL_LIBS)
+       endif
+ endif
+ 
+ .PHONY: install_dmraid_tools
+ 
+-dmraid: $(OBJECTS) $(top_builddir)/lib/libdmraid.a
++dmraid: $(OBJECTS) $(MYLIBOBJ)
+       $(CC) -o $@ $(OBJECTS) $(LDFLAGS) -L$(top_builddir)/lib $(DMRAIDLIBS) 
$(LIBS)
+ 
+-dmevent_tool: $(OBJECTS2) $(top_builddir)/lib/libdmraid.a
++dmevent_tool: $(OBJECTS2) $(MYLIBOBJ)
+       $(CC) -o $@ $(OBJECTS2) $(INCLUDES) $(LDFLAGS) -L$(top_builddir)/lib \
+               $(DMEVENTTOOLLIBS) $(DMRAIDLIBS) $(LIBS)
+ 

diff --git a/patches/dmraid/1.0.0.rc16-3/dmraid-1.0.0.rc16-3-staticlink.patch 
b/patches/dmraid/1.0.0.rc16-3/dmraid-1.0.0_rc16-004-staticlink.patch
similarity index 100%
rename from patches/dmraid/1.0.0.rc16-3/dmraid-1.0.0.rc16-3-staticlink.patch
rename to patches/dmraid/1.0.0.rc16-3/dmraid-1.0.0_rc16-004-staticlink.patch

diff --git a/patches/dmraid/1.0.0.rc16-3/dmraid-1.0.0_rc16-parallel-make.patch 
b/patches/dmraid/1.0.0.rc16-3/dmraid-1.0.0_rc16-005-parallel-make.patch
similarity index 100%
rename from patches/dmraid/1.0.0.rc16-3/dmraid-1.0.0_rc16-parallel-make.patch
rename to patches/dmraid/1.0.0.rc16-3/dmraid-1.0.0_rc16-005-parallel-make.patch

diff --git 
a/patches/dmraid/1.0.0.rc16-3/dmraid-1.0.0_rc16-return-all-sets.patch 
b/patches/dmraid/1.0.0.rc16-3/dmraid-1.0.0_rc16-return-all-sets.patch
deleted file mode 100644
index 1e6c713..0000000
--- a/patches/dmraid/1.0.0.rc16-3/dmraid-1.0.0_rc16-return-all-sets.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/1.0.0.rc16/lib/metadata/metadata.c       2009-11-27 21:57:50.182129589 
-0800
-+++ b/1.0.0.rc16/lib/metadata/metadata.c       2009-11-27 21:57:58.950964293 
-0800
-@@ -839,7 +839,7 @@
-                */
-               if (T_GROUP(rs)) {
-                       _discover_partitions(lc, &rs->sets);
--                      return;
-+                      continue;
-               }
- 
-               /*

Reply via email to