package/nfs-utils: handle pkg-config in the Autotools standard way for nfsrahead

While using the correct PKG_CHECK_MODULES() approach for libmount we
end up having host-nfs-utils needing libmount. But libmount is only
needed by nfsrahead that we don't need in host-nfs-utils. But we need
host-nfs-utils itself(rpcgen tool specifically) to build nfs-utils. To
solve this recursive situation:

1) Update the first patch with the upstreamed one that handles
   libmount using PKG_CHECK_MODULES().

2) Add another patch to allow to disable nfsrahead during building for
   host since this tool is not needed and requires libmount. This way
   the first patch approach can be correctly used.

3) Add --disable-nfsrahead to HOST_NFS_UTILS_CONF_OPTS

4) Remove en/disable-uuid since now it's required by default:
   http://git.linux-nfs.org/?p=steved/nfs-utils.git;a=commitdiff;h=c5528f40f9db5061e06dcf1f9b7fce5185b376c6

Both patches have been committed:
https://git.linux-nfs.org/?p=steved/nfs-utils.git;a=commit;h=627c95b2b853161b359095e7fdf05d3b07d51379
https://git.linux-nfs.org/?p=steved/nfs-utils.git;a=commit;h=844d3ad5376603bc9c205a6084d38a2d25146179

Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
Giulio Benetti 2022-09-20 00:47:40 +02:00 committed by Thomas Petazzoni
parent 4fbd2f6d2c
commit 700fc2d7bd
3 changed files with 97 additions and 19 deletions

View File

@ -1,31 +1,46 @@
From a69014a1b4e5b8068630abe3109f31eb64b6a076 Mon Sep 17 00:00:00 2001
From d9abb221cea81dee5956bd987c6efa680c03571a Mon Sep 17 00:00:00 2001
From: Giulio Benetti <giulio.benetti@benettiengineering.com>
Date: Wed, 10 Aug 2022 00:10:51 +0200
Date: Wed, 10 Aug 2022 23:38:17 +0200
Subject: [PATCH] nfsrahead: fix linking while static linking
-lmount must preceed -lblkid and to obtain this let's add:
`pkg-config --libs mount`
in place of:
`-lmount`
This ways the library order will always be correct.
-lmount must preceed -lblkid and to obtain this let's add in configure.ac:
PKG_CHECK_MODULES([LIBMOUNT], [mount])
and in tools/nfsrahead/Makefile.am let's substitute explicit `-lmount`
with:
$(LIBMOUNT_LIBS)
This way all the required libraries will be present and in the right order
when static linking.
Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
[Upstream: https://git.linux-nfs.org/?p=steved/nfs-utils.git;a=commit;h=627c95b2b853161b359095e7fdf05d3b07d51379]
---
Pending Upstream:
https://patchwork.kernel.org/project/linux-nfs/patch/20220809223308.1421081-1-giulio.benetti@benettiengineering.com/
---
configure.ac | 3 +++
tools/nfsrahead/Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index f1c46c5c..ff85200b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -273,6 +273,9 @@ AC_LIBCAP
dnl Check for -lxml2
AC_LIBXML2
+dnl Check for -lmount
+PKG_CHECK_MODULES([LIBMOUNT], [mount])
+
# Check whether user wants TCP wrappers support
AC_TCP_WRAPPERS
diff --git a/tools/nfsrahead/Makefile.am b/tools/nfsrahead/Makefile.am
index 845ea0d5..280a2eb4 100644
index 845ea0d5..7e08233a 100644
--- a/tools/nfsrahead/Makefile.am
+++ b/tools/nfsrahead/Makefile.am
@@ -1,6 +1,6 @@
libexec_PROGRAMS = nfsrahead
nfsrahead_SOURCES = main.c
-nfsrahead_LDFLAGS= -lmount
+nfsrahead_LDFLAGS= `pkg-config --libs mount`
+nfsrahead_LDFLAGS= $(LIBMOUNT_LIBS)
nfsrahead_LDADD = ../../support/nfs/libnfsconf.la
man5_MANS = nfsrahead.man

View File

@ -0,0 +1,68 @@
From 9a0002978eb32b78d22f053302e012a4255dc4ef Mon Sep 17 00:00:00 2001
From: Giulio Benetti <giulio.benetti@benettiengineering.com>
Date: Mon, 19 Sep 2022 23:43:28 +0200
Subject: [PATCH] configure.ac: allow to disable nfsrahead tool
This allows to make libmount not mandatory but depending on nfsrahead
since it only requires it. This is useful when cross-compiling because
in that case we need rpcgen only built for host but not nfsrahead that
also require libmount. So this reduces the dependencies for host
building.
Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
[Upstream: https://git.linux-nfs.org/?p=steved/nfs-utils.git;a=commit;h=844d3ad5376603bc9c205a6084d38a2d25146179]
---
configure.ac | 13 ++++++++++---
tools/Makefile.am | 6 +++++-
2 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/configure.ac b/configure.ac
index ff85200b..5d9cbf31 100644
--- a/configure.ac
+++ b/configure.ac
@@ -249,6 +249,16 @@ AC_ARG_ENABLE(nfsdcld,
enable_nfsdcld=$enableval,
enable_nfsdcld="yes")
+AC_ARG_ENABLE(nfsrahead,
+ [AS_HELP_STRING([--disable-nfsrahead],[disable nfsrahead command @<:@default=no@:>@])],
+ enable_nfsrahead=$enableval,
+ enable_nfsrahead="yes")
+ AM_CONDITIONAL(CONFIG_NFSRAHEAD, [test "$enable_nfsrahead" = "yes" ])
+ if test "$enable_nfsrahead" = yes; then
+ dnl Check for -lmount
+ PKG_CHECK_MODULES([LIBMOUNT], [mount])
+ fi
+
AC_ARG_ENABLE(nfsdcltrack,
[AS_HELP_STRING([--disable-nfsdcltrack],[disable NFSv4 clientid tracking programs @<:@default=no@:>@])],
enable_nfsdcltrack=$enableval,
@@ -273,9 +283,6 @@ AC_LIBCAP
dnl Check for -lxml2
AC_LIBXML2
-dnl Check for -lmount
-PKG_CHECK_MODULES([LIBMOUNT], [mount])
-
# Check whether user wants TCP wrappers support
AC_TCP_WRAPPERS
diff --git a/tools/Makefile.am b/tools/Makefile.am
index 40c17c37..48fd0cdf 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -12,6 +12,10 @@ if CONFIG_NFSDCLD
OPTDIRS += nfsdclddb
endif
-SUBDIRS = locktest rpcdebug nlmtest mountstats nfs-iostat rpcctl nfsdclnts nfsrahead $(OPTDIRS)
+if CONFIG_NFSRAHEAD
+OPTDIRS += nfsrahead
+endif
+
+SUBDIRS = locktest rpcdebug nlmtest mountstats nfs-iostat rpcctl nfsdclnts $(OPTDIRS)
MAINTAINERCLEANFILES = Makefile.in
--
2.34.1

View File

@ -34,6 +34,7 @@ HOST_NFS_UTILS_CONF_OPTS = \
--without-tcp-wrappers \
--with-statedir=/run/nfs \
--disable-caps \
--disable-nfsrahead \
--without-systemd \
--with-rpcgen=internal \
--with-tirpcinclude=$(HOST_DIR)/include/tirpc
@ -68,12 +69,6 @@ else
NFS_UTILS_CONF_OPTS += --disable-caps
endif
ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBBLKID),y)
NFS_UTILS_CONF_OPTS += --enable-uuid
else
NFS_UTILS_CONF_OPTS += --disable-uuid
endif
define NFS_UTILS_INSTALL_FIXUP
cd $(TARGET_DIR) && rm -f $(NFS_UTILS_TARGETS_)
touch $(TARGET_DIR)/etc/exports