commit:     568c8df66fcc3ba14d3f54882ad6c4744113f03c
Author:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
AuthorDate: Sun Jul 14 09:53:01 2019 +0000
Commit:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
CommitDate: Sun Jul 14 11:58:17 2019 +0000
URL:        https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=568c8df6

Rework --btrfs support

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

 defaults/software.sh                       | 21 ++++++++++++++++++++
 gen_initramfs.sh                           | 20 ++++++++++---------
 gkbuilds/btrfs-progs.gkbuild               | 31 ++++++++++++++++++++++++++++++
 gkbuilds/lzo.gkbuild                       | 17 ++++++++++++++++
 gkbuilds/zstd.gkbuild                      | 10 ++++++++++
 patches/btrfs-progs/5.1.1/btrfs-lzo2.patch | 24 +++++++++++++++++++++++
 patches/btrfs-progs/5.1.1/btrfs-m4.patch   | 14 ++++++++++++++
 7 files changed, 128 insertions(+), 9 deletions(-)

diff --git a/defaults/software.sh b/defaults/software.sh
index acf5439..8b0be26 100644
--- a/defaults/software.sh
+++ b/defaults/software.sh
@@ -9,6 +9,13 @@
 # - This file should not override previously defined variables, as their 
values may
 #   originate from user changes to /etc/genkernel.conf .
 
+GKPKG_BTRFS_PROGS_PN="btrfs-progs"
+GKPKG_BTRFS_PROGS_PV="${GKPKG_BTRFS_PROGS_PV:-VERSION_BTRFS_PROGS}"
+GKPKG_BTRFS_PROGS_DEPS="util-linux zlib zstd lzo"
+GKPKG_BTRFS_PROGS_SRCDIR="${GKPKG_BTRFS_PROGS_SRCDIR:-btrfs-progs-v${GKPKG_BTRFS_PROGS_PV}}"
+GKPKG_BTRFS_PROGS_SRCTAR="${GKPKG_BTRFS_PROGS_SRCTAR:-${DISTDIR}/btrfs-progs-v${GKPKG_BTRFS_PROGS_PV}.tar.xz}"
+GKPKG_BTRFS_PROGS_BINPKG="${GKPKG_BTRFS_PROGS_BINPKG:-%%CACHE%%/btrfs-progs-${GKPKG_BTRFS_PROGS_PV}-%%ARCH%%.tar.xz}"
+
 GKPKG_BUSYBOX_PN="busybox"
 GKPKG_BUSYBOX_PV="${GKPKG_BUSYBOX_PV:-VERSION_BUSYBOX}"
 GKPKG_BUSYBOX_DEPS=""
@@ -107,6 +114,13 @@ 
GKPKG_LVM_SRCDIR="${GKPKG_LVM_SRCDIR:-LVM2.${GKPKG_LVM_PV}}"
 GKPKG_LVM_SRCTAR="${GKPKG_LVM_SRCTAR:-${DISTDIR}/LVM2.${GKPKG_LVM_PV}.tgz}"
 
GKPKG_LVM_BINPKG="${GKPKG_LVM_BINPKG:-%%CACHE%%/LVM2.${GKPKG_LVM_PV}-%%ARCH%%.tar.xz}"
 
+GKPKG_LZO_PN="lzo"
+GKPKG_LZO_PV="${GKPKG_LZO_PV:-VERSION_LZO}"
+GKPKG_LZO_DEPS=""
+GKPKG_LZO_SRCDIR="${GKPKG_LZO_SRCDIR:-lzo-${GKPKG_LZO_PV}}"
+GKPKG_LZO_SRCTAR="${GKPKG_LZO_SRCTAR:-${DISTDIR}/lzo-${GKPKG_LZO_PV}.tar.gz}"
+GKPKG_LZO_BINPKG="${GKPKG_LZO_BINPKG:-%%CACHE%%/lzo-${GKPKG_LZO_PV}-%%ARCH%%.tar.xz}"
+
 GKPKG_MDADM_PN="mdadm"
 GKPKG_MDADM_PV="${GKPKG_MDADM_PV:-VERSION_MDADM}"
 GKPKG_MDADM_DEPS=""
@@ -155,3 +169,10 @@ GKPKG_ZLIB_DEPS=""
 GKPKG_ZLIB_SRCDIR="${GKPKG_ZLIB_SRCDIR:-zlib-${GKPKG_ZLIB_PV}}"
 
GKPKG_ZLIB_SRCTAR="${GKPKG_ZLIB_SRCTAR:-${DISTDIR}/zlib-${GKPKG_ZLIB_PV}.tar.gz}"
 
GKPKG_ZLIB_BINPKG="${GKPKG_ZLIB_BINPKG:-%%CACHE%%/zlib-${GKPKG_ZLIB_PV}-%%ARCH%%.tar.xz}"
+
+GKPKG_ZSTD_PN="zstd"
+GKPKG_ZSTD_PV="${GKPKG_ZSTD_PV:-VERSION_ZSTD}"
+GKPKG_ZSTD_DEPS=""
+GKPKG_ZSTD_SRCDIR="${GKPKG_ZSTD_SRCDIR:-zstd-${GKPKG_ZSTD_PV}}"
+GKPKG_ZSTD_SRCTAR="${GKPKG_ZSTD_SRCTAR:-${DISTDIR}/zstd-${GKPKG_ZSTD_PV}.tar.gz}"
+GKPKG_ZSTD_BINPKG="${GKPKG_ZSTD_BINPKG:-%%CACHE%%/zstd-${GKPKG_ZSTD_PV}-%%ARCH%%.tar.xz}"

diff --git a/gen_initramfs.sh b/gen_initramfs.sh
index aace8c9..2d178bb 100755
--- a/gen_initramfs.sh
+++ b/gen_initramfs.sh
@@ -589,22 +589,24 @@ append_zfs(){
 }
 
 append_btrfs() {
-       if [ -d "${TEMP}/initramfs-btrfs-temp" ]
+       local PN=btrfs-progs
+       local TDIR="${TEMP}/initramfs-${PN}-temp"
+       if [ -d "${TDIR}" ]
        then
-               rm -r "${TEMP}/initramfs-btrfs-temp"
+               rm -r "${TDIR}" || gen_die "Failed to clean out existing 
'${TDIR}'!"
        fi
 
-       mkdir -p "${TEMP}/initramfs-btrfs-temp"
+       populate_binpkg ${PN}
 
-       # Copy binaries
-       copy_binaries "${TEMP}/initramfs-btrfs-temp" /sbin/btrfs
+       mkdir "${TDIR}" || gen_die "Failed to create '${TDIR}'!"
+
+       unpack "$(get_gkpkg_binpkg "${PN}")" "${TDIR}"
+
+       cd "${TDIR}" || gen_die "Failed to chdir to '${TDIR}'!"
 
-       cd "${TEMP}/initramfs-btrfs-temp/"
        log_future_cpio_content
        find . -print | cpio ${CPIO_ARGS} --append -F "${CPIO}" \
-                       || gen_die "compressing btrfs cpio"
-       cd "${TEMP}"
-       rm -rf "${TEMP}/initramfs-btrfs-temp" > /dev/null
+               || gen_die "Failed to append ${PN} to cpio!"
 }
 
 append_libgcc_s() {

diff --git a/gkbuilds/btrfs-progs.gkbuild b/gkbuilds/btrfs-progs.gkbuild
new file mode 100644
index 0000000..9c85b91
--- /dev/null
+++ b/gkbuilds/btrfs-progs.gkbuild
@@ -0,0 +1,31 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+src_configure() {
+       local myconf=(
+               --bindir="/sbin"
+               --disable-shared
+               --disable-convert
+               --disable-python
+               --disable-documentation
+       )
+
+       gkconf "${myconf[@]}"
+}
+
+src_compile() {
+       gkmake V=1 static
+}
+
+src_install() {
+       mkdir "${D}"/sbin || die "Failed to create '${D}/sbin'!"
+
+       cp -a btrfs.static "${D}"/sbin/btrfs \
+               || die "Failed to copy '${S}/btrfs.static' to 
'${D}/sbin/btrfs'!"
+
+       "${STRIP}" --strip-all "${D}"/sbin/btrfs \
+               || die "Failed to strip '${D}/sbin/btrfs'!"
+
+       ln -s btrfs "${D}"/sbin/btrfsck \
+               || die "Failed to create symlink '${D}/sbin/btrfsck' to 
'${D}/sbin/btrfs'!"
+}

diff --git a/gkbuilds/lzo.gkbuild b/gkbuilds/lzo.gkbuild
new file mode 100644
index 0000000..e0c365c
--- /dev/null
+++ b/gkbuilds/lzo.gkbuild
@@ -0,0 +1,17 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+src_configure() {
+       local myopts=(
+               --enable-shared
+               --enable-static
+       )
+
+       gkconf "${myopts[@]}"
+}
+
+src_install() {
+       default
+
+       rm -rf "${D}"/usr/share
+}

diff --git a/gkbuilds/zstd.gkbuild b/gkbuilds/zstd.gkbuild
new file mode 100644
index 0000000..15f3452
--- /dev/null
+++ b/gkbuilds/zstd.gkbuild
@@ -0,0 +1,10 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+src_compile() {
+       gkmake -C lib V=1 PREFIX=/usr libzstd libzstd.a libzstd.pc
+}
+
+src_install() {
+       gkmake -C lib V=1 PREFIX=/usr DESTDIR="${D}" install
+}

diff --git a/patches/btrfs-progs/5.1.1/btrfs-lzo2.patch 
b/patches/btrfs-progs/5.1.1/btrfs-lzo2.patch
new file mode 100644
index 0000000..67b31f7
--- /dev/null
+++ b/patches/btrfs-progs/5.1.1/btrfs-lzo2.patch
@@ -0,0 +1,24 @@
+diff --git a/configure.ac b/configure.ac
+index cf792eb..3ca0806 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -256,17 +256,8 @@ if ${PKG_CONFIG} udev --atleast-version 190; then
+ fi
+ AC_SUBST(UDEVDIR)
+ 
+-dnl lzo library does not provide pkg-config, let use classic way
+-AC_CHECK_LIB([lzo2], [lzo_version], [
+-      LZO2_LIBS="-llzo2"
+-      LZO2_CFLAGS=""
+-      LZO2_LIBS_STATIC="-llzo2"],[
+-      AC_MSG_ERROR([cannot find lzo2 library])
+-])
+-AC_SUBST([LZO2_LIBS])
+-AC_SUBST([LZO2_LIBS_STATIC])
+-AC_SUBST([LZO2_CFLAGS])
+-
++PKG_CHECK_MODULES(LZO2, [lzo2])
++PKG_STATIC(LZO2_LIBS_STATIC, [lzo2])
+ 
+ dnl library stuff
+ AC_SUBST([LIBBTRFS_MAJOR])

diff --git a/patches/btrfs-progs/5.1.1/btrfs-m4.patch 
b/patches/btrfs-progs/5.1.1/btrfs-m4.patch
new file mode 100644
index 0000000..831ff99
--- /dev/null
+++ b/patches/btrfs-progs/5.1.1/btrfs-m4.patch
@@ -0,0 +1,14 @@
+Fixes
+
+./configure: line 4077: BTRFS_DETECT_CSTD: command not found
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -18,6 +18,7 @@ AC_SUBST([CFLAGS])
+ AC_PREREQ([2.60])
+ 
+ AC_CONFIG_AUX_DIR([config])
++AC_CONFIG_MACRO_DIR([m4])
+ dnl AC_USE_SYSTEM_EXTENSIONS must be called before any macros that run
+ dnl the compiler (like AC_PROG_LIBTOOL) to avoid autoconf errors.
+ AC_USE_SYSTEM_EXTENSIONS

Reply via email to