commit:     ccfe8f4a8123bf2c64e77879aea1ad475caa2a23
Author:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
AuthorDate: Sun Jul 14 10:42:41 2019 +0000
Commit:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
CommitDate: Sun Jul 14 11:58:18 2019 +0000
URL:        https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=ccfe8f4a

Add --xfsprogs support

Bug: https://bugs.gentoo.org/407999
Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>

 defaults/software.sh                               |   7 ++
 doc/genkernel.8.txt                                |   3 +
 gen_cmdline.sh                                     |   6 ++
 gen_determineargs.sh                               |   1 +
 gen_initramfs.sh                                   |  22 +++++
 gkbuilds/xfsprogs.gkbuild                          |  42 +++++++++
 .../5.0.0/xfsprogs-4.15.0-sharedlibs.patch         | 105 +++++++++++++++++++++
 .../5.0.0/xfsprogs-4.9.0-underlinking.patch        |  11 +++
 8 files changed, 197 insertions(+)

diff --git a/defaults/software.sh b/defaults/software.sh
index 8b0be26..34b38dc 100644
--- a/defaults/software.sh
+++ b/defaults/software.sh
@@ -163,6 +163,13 @@ 
GKPKG_UTIL_LINUX_SRCDIR="${GKPKG_UTIL_LINUX_SRCDIR:-util-linux-${GKPKG_UTIL_LINU
 
GKPKG_UTIL_LINUX_SRCTAR="${GKPKG_UTIL_LINUX_SRCTAR:-${DISTDIR}/util-linux-${GKPKG_UTIL_LINUX_PV}.tar.xz}"
 
GKPKG_UTIL_LINUX_BINPKG="${GKPKG_UTIL_LINUX_BINPKG:-%%CACHE%%/util-linux-${GKPKG_UTIL_LINUX_PV}-%%ARCH%%.tar.xz}"
 
+GKPKG_XFSPROGS_PN="xfsprogs"
+GKPKG_XFSPROGS_PV="${GKPKG_XFSPROGS_PV:-VERSION_XFSPROGS}"
+GKPKG_XFSPROGS_DEPS="util-linux"
+GKPKG_XFSPROGS_SRCTAR="${GKPKG_XFSPROGS_SRCTAR:-${DISTDIR}/xfsprogs-${GKPKG_XFSPROGS_PV}.tar.xz}"
+GKPKG_XFSPROGS_SRCDIR="${GKPKG_XFSPROGS_SRCDIR:-xfsprogs-${GKPKG_XFSPROGS_PV}}"
+GKPKG_XFSPROGS_BINPKG="${GKPKG_XFSPROGS_BINPKG:-%%CACHE%%/xfsprogs-${GKPKG_XFSPROGS_PV}-%%ARCH%%.tar.xz}"
+
 GKPKG_ZLIB_PN="zlib"
 GKPKG_ZLIB_PV="${GKPKG_ZLIB_PV:-VERSION_ZLIB}"
 GKPKG_ZLIB_DEPS=""

diff --git a/doc/genkernel.8.txt b/doc/genkernel.8.txt
index 055610b..68f6f92 100644
--- a/doc/genkernel.8.txt
+++ b/doc/genkernel.8.txt
@@ -302,6 +302,9 @@ INITIALIZATION
 *--*[*no-*]*e2fsprogs*::
     Includes or excludes e2fsprogs.
 
+*--*[*no-*]*xfsprogs*::
+    Includes or excludes xfsprogs.
+
 *--*[*no-*]*zfs*::
     Includes or excludes ZFS support.
 

diff --git a/gen_cmdline.sh b/gen_cmdline.sh
index ec5a5bc..2131f77 100755
--- a/gen_cmdline.sh
+++ b/gen_cmdline.sh
@@ -118,6 +118,8 @@ longusage() {
   echo "       --no-dmraid             Exclude DMRAID support"
   echo "       --e2fsprogs             Include e2fsprogs"
   echo "       --no-e2fsprogs          Exclude e2fsprogs"
+  echo "       --xfsprogs              Include xfsprogs"
+  echo "       --no-xfsprogs           Exclude xfsprogs"
   echo "       --zfs                   Include ZFS support (enabled by default 
if rootfs is ZFS)"
   echo "       --no-zfs                Exclude ZFS support"
   echo "       --btrfs                 Include Btrfs support (enabled by 
default if rootfs is Btrfs)"
@@ -385,6 +387,10 @@ parse_cmdline() {
                        CMD_E2FSPROGS=$(parse_optbool "$*")
                        print_info 2 "CMD_E2FSPROGS: ${CMD_E2FSPROGS}"
                        ;;
+               --xfsprogs|--no-xfsprogs)
+                       CMD_XFSPROGS=$(parse_optbool "$*")
+                       print_info 2 "CMD_XFSPROGS: ${CMD_XFSPROGS}"
+                       ;;
                --zfs|--no-zfs)
                        CMD_ZFS=$(parse_optbool "$*")
                        print_info 2 "CMD_ZFS: ${CMD_ZFS}"

diff --git a/gen_determineargs.sh b/gen_determineargs.sh
index 7fd39ef..75b7b3b 100755
--- a/gen_determineargs.sh
+++ b/gen_determineargs.sh
@@ -165,6 +165,7 @@ determine_real_args() {
        set_config_with_override BOOL   MDADM                    CMD_MDADM      
              "no"
        set_config_with_override STRING MDADM_CONFIG             
CMD_MDADM_CONFIG
        set_config_with_override BOOL   E2FSPROGS                CMD_E2FSPROGS  
              "no"
+       set_config_with_override BOOL   XFSPROGS                 CMD_XFSPROGS   
              "no"
        set_config_with_override BOOL   ZFS                      CMD_ZFS        
              "$(rootfs_type_is zfs)"
        set_config_with_override BOOL   BTRFS                    CMD_BTRFS      
              "$(rootfs_type_is btrfs)"
        set_config_with_override BOOL   VIRTIO                   CMD_VIRTIO     
              "no"

diff --git a/gen_initramfs.sh b/gen_initramfs.sh
index acb5c65..45bf4fe 100755
--- a/gen_initramfs.sh
+++ b/gen_initramfs.sh
@@ -621,6 +621,27 @@ append_mdadm() {
                || gen_die "Failed to append ${PN} to cpio!"
 }
 
+append_xfsprogs() {
+       local PN=xfsprogs
+       local TDIR="${TEMP}/initramfs-${PN}-temp"
+       if [ -d "${TDIR}" ]
+       then
+               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}'!"
+
+       log_future_cpio_content
+       find . -print | cpio ${CPIO_ARGS} --append -F "${CPIO}" \
+               || gen_die "Failed to append ${PN} to cpio!"
+}
+
 append_zfs() {
        local PN=zfs
        local TDIR="${TEMP}/initramfs-${PN}-temp"
@@ -1462,6 +1483,7 @@ create_initramfs() {
        append_data 'multipath' "${MULTIPATH}"
        append_data 'splash' "${SPLASH}"
        append_data 'unionfs_fuse' "${UNIONFS}"
+       append_data 'xfsprogs' "${XFSPROGS}"
        append_data 'zfs' "${ZFS}"
 
        if isTrue "${ZFS}"

diff --git a/gkbuilds/xfsprogs.gkbuild b/gkbuilds/xfsprogs.gkbuild
new file mode 100644
index 0000000..4456738
--- /dev/null
+++ b/gkbuilds/xfsprogs.gkbuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+src_prepare() {
+       default
+
+       # Force static programs
+       find -name Makefile -exec \
+               sed -i -r -e 's/-static(-libtool-libs)?/-all-static/' {} +
+}
+
+src_configure() {
+       export DEBUG=-DNDEBUG
+       export OPTIMIZER=${CFLAGS}
+       unset PLATFORM # if set in user env, this breaks configure
+
+       local myconf=(
+               --disable-lto #655638
+               --enable-blkid
+               --disable-libicu
+               --disable-gettext
+               --disable-readline
+               --disable-editline
+               --disable-scrub
+       )
+
+       gkconf "${myconf[@]}"
+}
+
+src_compile() {
+       gkmake V=1 headers repair
+}
+
+src_install() {
+       mkdir "${D}"/sbin || die "Failed to create '${D}/sbin'!"
+
+       cp repair/xfs_repair "${D}"/sbin \
+               || die "Failed to copy '${S}/repair/xfs_repair' to 
'${D}/sbin/'!"
+
+       "${STRIP}" --strip-all "${D}"/sbin/xfs_repair \
+               || die "Failed to strip '${D}/sbin/xfs_repair'!"
+}

diff --git a/patches/xfsprogs/5.0.0/xfsprogs-4.15.0-sharedlibs.patch 
b/patches/xfsprogs/5.0.0/xfsprogs-4.15.0-sharedlibs.patch
new file mode 100644
index 0000000..a8911ce
--- /dev/null
+++ b/patches/xfsprogs/5.0.0/xfsprogs-4.15.0-sharedlibs.patch
@@ -0,0 +1,105 @@
+--- xfsprogs-4.15.0/include/buildmacros
++++ xfsprogs-4.15.0/include/buildmacros
+@@ -70,18 +70,9 @@
+ # /usr/lib.
+ ifeq ($(ENABLE_SHARED),yes)
+ INSTALL_LTLIB_DEV = \
+-      cd $(TOPDIR)/$(LIBNAME)/.libs; \
+-      ../$(INSTALL) -m 755 -d $(PKG_LIB_DIR); \
+-      ../$(INSTALL) -m 644 -T old_lib $(LIBNAME).lai $(PKG_LIB_DIR); \
+-      ../$(INSTALL) -m 644 $(LIBNAME).lai $(PKG_LIB_DIR)/$(LIBNAME).la ; \
+-      ../$(INSTALL) -m 755 -d $(PKG_ROOT_LIB_DIR); \
+-      ../$(INSTALL) -T so_base $(LIBNAME).lai $(PKG_ROOT_LIB_DIR); \
+-      if [ "x$(shell readlink -f $(PKG_LIB_DIR))" != \
+-           "x$(shell readlink -f $(PKG_ROOT_LIB_DIR))" ]; then \
+-              ../$(INSTALL) -S $(PKG_LIB_DIR)/$(LIBNAME).a 
$(PKG_ROOT_LIB_DIR)/$(LIBNAME).a; \
+-              ../$(INSTALL) -S $(PKG_LIB_DIR)/$(LIBNAME).la 
$(PKG_ROOT_LIB_DIR)/$(LIBNAME).la; \
+-              ../$(INSTALL) -S $(PKG_ROOT_LIB_DIR)/$(LIBNAME).so 
$(PKG_LIB_DIR)/$(LIBNAME).so; \
+-      fi
++      set -e; cd $(TOPDIR)/$(LIBNAME); \
++      $(INSTALL) -m 755 -d $(PKG_LIB_DIR); \
++      env -uDIST_ROOT $(LTINSTALL) $(TOPDIR)/$(LIBNAME)/$(LIBNAME).la 
$(DIST_ROOT)$(PKG_LIB_DIR)/$(LIBNAME).la
+ else
+ INSTALL_LTLIB_DEV = $(INSTALL_LTLIB_STATIC)
+ endif
+--- xfsprogs-4.15.0/libfrog/Makefile
++++ xfsprogs-4.15.0/libfrog/Makefile
+@@ -34,6 +36,9 @@
+ 
+ include $(BUILDRULES)
+ 
+-install install-dev: default
++install: default
++
++install-dev: default
++      $(INSTALL_LTLIB_DEV)
+ 
+ -include .ltdep
+--- xfsprogs-4.15.0/libhandle/Makefile
++++ xfsprogs-4.15.0/libhandle/Makefile
+@@ -24,7 +24,6 @@
+ include $(BUILDRULES)
+ 
+ install: default
+-      $(INSTALL_LTLIB)
+ 
+ install-dev: default
+       $(INSTALL_LTLIB_DEV)
+--- xfsprogs-4.15.0/libxcmd/Makefile
++++ xfsprogs-4.15.0/libxcmd/Makefile
+@@ -12,6 +12,8 @@
+ 
+ CFILES = command.c input.c help.c quit.c
+ 
++LTLIBS = $(LIBXFS) $(LIBBLKID)
++
+ ifeq ($(ENABLE_READLINE),yes)
+ LCFLAGS += -DENABLE_READLINE
+ LTLIBS += $(LIBREADLINE) $(LIBTERMCAP)
+@@ -26,6 +28,9 @@
+ 
+ include $(BUILDRULES)
+ 
+-install install-dev: default
++install: default
++
++install-dev: default
++      $(INSTALL_LTLIB_DEV)
+ 
+ -include .ltdep
+--- xfsprogs-4.15.0/libxfs/Makefile
++++ xfsprogs-4.15.0/libxfs/Makefile
+@@ -151,6 +151,7 @@
+ 
+ install-dev: install
+       $(INSTALL) -m 644 $(PKGHFILES) $(PKG_INC_DIR)
++      $(INSTALL_LTLIB_DEV)
+ 
+ # We need to install the headers before building the dependencies.  If we
+ # include the .ltdep file, the makefile decides that it needs to build the
+--- xfsprogs-4.15.0/libxlog/Makefile
++++ xfsprogs-4.15.0/libxlog/Makefile
+@@ -19,6 +19,9 @@
+ 
+ include $(BUILDRULES)
+ 
+-install install-dev: default
++install: default
++
++install-dev: default
++      $(INSTALL_LTLIB_DEV)
+ 
+ -include .ltdep
+--- xfsprogs-4.15.0/Makefile
++++ xfsprogs-4.15.0/Makefile
+@@ -92,6 +92,10 @@
+ mkfs: libxcmd
+ spaceman: libxcmd
+ scrub: libhandle libxcmd
++#libxfs: libfrog
++#libfrog-install-dev: libxfs-install-dev
++#libxlog: libxfs
++#libxlog-install-dev: libxfs-install-dev
+ 
+ ifeq ($(HAVE_BUILDDEFS), yes)
+ include $(BUILDRULES)

diff --git a/patches/xfsprogs/5.0.0/xfsprogs-4.9.0-underlinking.patch 
b/patches/xfsprogs/5.0.0/xfsprogs-4.9.0-underlinking.patch
new file mode 100644
index 0000000..55d9efd
--- /dev/null
+++ b/patches/xfsprogs/5.0.0/xfsprogs-4.9.0-underlinking.patch
@@ -0,0 +1,11 @@
+--- a/libxfs/Makefile
++++ b/libxfs/Makefile
+@@ -107,7 +107,7 @@ CFILES = cache.c \
+ 
+ FCFLAGS = -I.
+ 
+-LTLIBS = $(LIBPTHREAD) $(LIBRT)
++LTLIBS = $(LIBFROG) $(LIBPTHREAD) $(LIBRT) $(LIBUUID)
+ 
+ # don't try linking xfs_repair with a debug libxfs.
+ DEBUG = -DNDEBUG

Reply via email to