From be4d7313fdcb850f5922053d3e43258217281078 Mon Sep 17 00:00:00 2001 From: "Andrew J. Hesford" Date: Tue, 10 Jan 2023 10:57:51 -0500 Subject: [PATCH] mkinitcpio-nfs-utils: support NFSv4 roots, fix installation --- .../files/initcpio-hook-net | 13 ++++++- .../files/initcpio-install-net | 2 ++ srcpkgs/mkinitcpio-nfs-utils/template | 35 ++++++++++--------- 3 files changed, 32 insertions(+), 18 deletions(-) diff --git a/srcpkgs/mkinitcpio-nfs-utils/files/initcpio-hook-net b/srcpkgs/mkinitcpio-nfs-utils/files/initcpio-hook-net index 4d1ebb95605e..33382d95b728 100644 --- a/srcpkgs/mkinitcpio-nfs-utils/files/initcpio-hook-net +++ b/srcpkgs/mkinitcpio-nfs-utils/files/initcpio-hook-net @@ -84,7 +84,18 @@ nfs_mount_handler() { launch_interactive_shell msg "Trying to continue (this will most likely fail) ..." fi - nfsmount ${nfs_option:+-o ${nfs_option}} "${nfs_server}:${nfs_path}" "$1" + + # nfsmount avoids problems with lockd for v2 and v3 but does not support v4; + # to support v4 roots, examine mount options for a v4 version spec and use + # the ordinary mount program. v4 doesn't need lockd for file locking anyway. + mount_cmd=nfsmount + case "${nfs_option}" in + nfsvers=4*|*,nfsvers=4*|vers=4*|*,vers=4*) + command -v mount.nfs4 >/dev/null 2>&1 && mount_cmd="mount -t nfs4" + ;; + esac + + ${mount_cmd} ${nfs_option:+-o ${nfs_option}} "${nfs_server}:${nfs_path}" "$1" } # vim: set ft=sh ts=4 sw=4 et: diff --git a/srcpkgs/mkinitcpio-nfs-utils/files/initcpio-install-net b/srcpkgs/mkinitcpio-nfs-utils/files/initcpio-install-net index 79b678949c95..153767add8c5 100644 --- a/srcpkgs/mkinitcpio-nfs-utils/files/initcpio-install-net +++ b/srcpkgs/mkinitcpio-nfs-utils/files/initcpio-install-net @@ -3,9 +3,11 @@ build() { add_checked_modules '/drivers/net/' add_module nfsv3? + add_module nfsv4? add_binary "/usr/lib/initcpio/ipconfig" "/bin/ipconfig" add_binary "/usr/lib/initcpio/nfsmount" "/bin/nfsmount" + command -v mount.nfs4 >/dev/null 2>&1 && add_binary "mount.nfs4" add_runscript } diff --git a/srcpkgs/mkinitcpio-nfs-utils/template b/srcpkgs/mkinitcpio-nfs-utils/template index 7f36e1cf7fdf..75b8565158ac 100644 --- a/srcpkgs/mkinitcpio-nfs-utils/template +++ b/srcpkgs/mkinitcpio-nfs-utils/template @@ -1,7 +1,7 @@ # Template file for 'mkinitcpio-nfs-utils' pkgname=mkinitcpio-nfs-utils version=0.3 -revision=3 +revision=4 build_style=gnu-makefile depends="mkinitcpio" short_desc="Ipconfig and nfsmount tools for NFS root support in mkinitcpio" @@ -11,26 +11,27 @@ homepage="http://www.archlinux.org/" distfiles="https://sources.archlinux.org/other/mkinitcpio/$pkgname-$version.tar.xz" checksum=d290d489844fae100ca7b848b8eef40078124ff373203086bacc07329d1e8939 -case "$XBPS_TARGET_MACHINE" in -*-musl) +if [ "$XBPS_TARGET_LIBC" = "musl" ]; then + # musl doesn't set this CFLAGS="-DSYS_NMLN=65" - # http://osxr.org/glibc/source/sysdeps/unix/sysv/linux/bits/utsname.h?v=glibc-2.15; fixes musl not having set this variable - ;; -esac +fi +post_patch() { + vsed -i '/CC.*-o/s/$/ $(LDFLAGS)/' */Makefile -post_extract() { - sed -i '/CC.*-o/s/$/ $(LDFLAGS)/' */Makefile + # No RPC in musl for now + if [ "$XBPS_TARGET_LIBC" = "musl" ]; then + vsed -i 's|PROGRAMS = ipconfig nfsmount|PROGRAMS = ipconfig|g' Makefile + fi } -pre_configure() { - case "$XBPS_TARGET_MACHINE" in - *-musl) - sed -i 's|PROGRAMS = ipconfig nfsmount|PROGRAMS = ipconfig|g' Makefile - # No RPC in musl for now - ;; - esac -} -post_install() { + +do_install() { + # Makefile installation is broken, just install the two executables directly + vinstall ipconfig/ipconfig 755 usr/lib/initcpio + if [ "$XBPS_TARGET_LIBC" != "musl" ]; then + vinstall nfsmount/nfsmount 755 usr/lib/initcpio + fi + vinstall ${FILESDIR}/initcpio-install-net 644 usr/lib/initcpio/install net vinstall ${FILESDIR}/initcpio-hook-net 644 usr/lib/initcpio/hooks net }