On Thu, 28 Mar 2024 at 23:34, Alexander Kanavin <[email protected]> wrote: > > Do not add pending patches please. Upstream submission first. > Makes sense. I only hadn't because it's not well documented *how* to submit patches to nfs-utils. I think I got it figured now so I'll submit.
> Even better if you can review already present patches and submit them too. > I'll take a look, but not promises... > Alex > > On Fri 29. Mar 2024 at 2.24, Dan McGregor <[email protected]> wrote: >> >> From: Daniel McGregor <[email protected]> >> >> Add support for the nfsv4 user ID mapping daemon, configured with >> a sensible default, and add a packageconfig for Kerberos support. >> >> This is reasonably tested in production in our environment, but only >> systemd support. There'll be some more work to do to get GSSAPI and >> NFS idmapd support integreated into that. >> >> Signed-off-by: Daniel McGregor <[email protected]> >> --- >> ...01-gssd-use-printf-format-specifiers.patch | 181 ++++++++++++++++++ >> .../0002-Use-nogroup-for-nobody-group.patch | 38 ++++ >> .../0003-find-OE-provided-Kerberos.patch | 42 ++++ >> .../nfs-utils/nfs-utils/clang-warnings.patch | 81 +++++++- >> .../nfs-utils/nfs-utils_2.6.4.bb | 37 +++- >> 5 files changed, 367 insertions(+), 12 deletions(-) >> create mode 100644 >> meta/recipes-connectivity/nfs-utils/nfs-utils/0001-gssd-use-printf-format-specifiers.patch >> create mode 100644 >> meta/recipes-connectivity/nfs-utils/nfs-utils/0002-Use-nogroup-for-nobody-group.patch >> create mode 100644 >> meta/recipes-connectivity/nfs-utils/nfs-utils/0003-find-OE-provided-Kerberos.patch >> >> diff --git >> a/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-gssd-use-printf-format-specifiers.patch >> >> b/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-gssd-use-printf-format-specifiers.patch >> new file mode 100644 >> index 00000000000..ab6517a30ed >> --- /dev/null >> +++ >> b/meta/recipes-connectivity/nfs-utils/nfs-utils/0001-gssd-use-printf-format-specifiers.patch >> @@ -0,0 +1,181 @@ >> +From 094b965b7044e7d102542ac30e95b556ca82654b Mon Sep 17 00:00:00 2001 >> +From: Daniel McGregor <[email protected]> >> +Date: Wed, 29 Nov 2023 07:10:58 -0600 >> +Subject: [PATCH] gssd: use printf format specifiers >> + >> +This function takes a printf format specifier, tell the compiler about >> +that. This adds the ability for GCC to warn about misuses, and prevents >> +Clang from warning on the implementation. >> + >> +Upstream-Status: Pending >> +Signed-off-by: Daniel McGregor <[email protected]> >> +--- >> + utils/gssd/err_util.h | 2 +- >> + utils/gssd/gss_names.c | 4 ++-- >> + utils/gssd/gss_util.c | 2 +- >> + utils/gssd/gssd.c | 4 ++-- >> + utils/gssd/gssd_proc.c | 8 ++++---- >> + utils/gssd/krb5_util.c | 10 +++++----- >> + utils/gssd/svcgssd_proc.c | 8 ++++---- >> + 7 files changed, 19 insertions(+), 19 deletions(-) >> + >> +diff --git a/utils/gssd/err_util.h b/utils/gssd/err_util.h >> +index 6fa9d3d..61f5a31 100644 >> +--- a/utils/gssd/err_util.h >> ++++ b/utils/gssd/err_util.h >> +@@ -32,7 +32,7 @@ >> + #define _ERR_UTIL_H_ >> + >> + void initerr(char *progname, int verbosity, int fg); >> +-void printerr(int priority, char *format, ...); >> ++void printerr(int priority, char *format, ...) __attribute__ ((format >> (printf, 2, 3))); >> + int get_verbosity(void); >> + char * sec2time(int); >> + >> +diff --git a/utils/gssd/gss_names.c b/utils/gssd/gss_names.c >> +index 982b96f..0548c33 100644 >> +--- a/utils/gssd/gss_names.c >> ++++ b/utils/gssd/gss_names.c >> +@@ -65,7 +65,7 @@ get_krb5_hostbased_name(gss_buffer_desc *name, char >> **hostbased_name) >> + if (strchr(name->value, '@') && strchr(name->value, '/')) { >> + if ((sname = calloc(name->length, 1)) == NULL) { >> + printerr(0, "ERROR: get_krb5_hostbased_name failed " >> +- "to allocate %d bytes\n", name->length); >> ++ "to allocate %zd bytes\n", name->length); >> + return -1; >> + } >> + /* read in name and instance and replace '/' with '@' */ >> +@@ -102,7 +102,7 @@ get_hostbased_client_name(gss_name_t client_name, >> gss_OID mech, >> + } >> + if (name.length >= 0xffff) { /* don't overflow */ >> + printerr(0, "ERROR: get_hostbased_client_name: " >> +- "received gss_name is too long (%d bytes)\n", >> ++ "received gss_name is too long (%zd bytes)\n", >> + name.length); >> + goto out_rel_buf; >> + } >> +diff --git a/utils/gssd/gss_util.c b/utils/gssd/gss_util.c >> +index a4b2777..7d41a94 100644 >> +--- a/utils/gssd/gss_util.c >> ++++ b/utils/gssd/gss_util.c >> +@@ -304,7 +304,7 @@ gssd_acquire_cred(char *server_name, const gss_OID oid) >> + target_name, &pbuf, NULL); >> + if (ignore_maj_stat == GSS_S_COMPLETE) { >> + printerr(1, "Unable to obtain credentials for >> '%.*s'\n", >> +- pbuf.length, pbuf.value); >> ++ (int)pbuf.length, (char *)pbuf.value); >> + ignore_maj_stat = >> gss_release_buffer(&ignore_min_stat, >> + &pbuf); >> + } >> +diff --git a/utils/gssd/gssd.c b/utils/gssd/gssd.c >> +index 833d8e0..380116a 100644 >> +--- a/utils/gssd/gssd.c >> ++++ b/utils/gssd/gssd.c >> +@@ -518,9 +518,9 @@ scan_active_thread_list(void) >> + do_error_downcall(info->fd, >> info->uid, -ETIMEDOUT); >> + } else { >> + if (!(info->flags & >> UPCALL_THREAD_WARNED)) { >> +- printerr(0, "watchdog: >> thread id 0x%lx running for %ld seconds\n", >> ++ printerr(0, "watchdog: >> thread id 0x%lx running for %lld seconds\n", >> + info->tid, >> +- now.tv_sec - >> info->timeout.tv_sec + upcall_timeout); >> ++ (long long >> int)(now.tv_sec - info->timeout.tv_sec + upcall_timeout)); >> + info->flags |= >> UPCALL_THREAD_WARNED; >> + } >> + } >> +diff --git a/utils/gssd/gssd_proc.c b/utils/gssd/gssd_proc.c >> +index ae568f1..574eb4b 100644 >> +--- a/utils/gssd/gssd_proc.c >> ++++ b/utils/gssd/gssd_proc.c >> +@@ -168,7 +168,7 @@ do_downcall(int k5_fd, uid_t uid, struct >> authgss_private_data *pd, >> + >> + if (get_verbosity() > 1) >> + printerr(2, "do_downcall(0x%lx): lifetime_rec=%s >> acceptor=%.*s\n", >> +- tid, sec2time(lifetime_rec), acceptor->length, >> acceptor->value); >> ++ tid, sec2time(lifetime_rec), (int)acceptor->length, >> (char *)acceptor->value); >> + buf_size = sizeof(uid) + sizeof(timeout) + sizeof(pd->pd_seq_win) + >> + sizeof(pd->pd_ctx_hndl.length) + pd->pd_ctx_hndl.length + >> + sizeof(context_token->length) + context_token->length + >> +@@ -284,14 +284,14 @@ populate_port(struct sockaddr *sa, const socklen_t >> salen, >> + >> + port = nfs_getport(sa, salen, program, version, protocol); >> + if (!port) { >> +- printerr(0, "ERROR: unable to obtain port for prog %ld " >> +- "vers %ld\n", program, version); >> ++ printerr(0, "ERROR: unable to obtain port for prog %lu " >> ++ "vers %lu\n", (long unsigned int)program, (long >> unsigned int)version); >> + return 0; >> + } >> + >> + set_port: >> + printerr(2, "DEBUG: setting port to %hu for prog %lu vers %lu\n", >> port, >> +- program, version); >> ++ (long unsigned int)program, (long unsigned int)version); >> + >> + switch (sa->sa_family) { >> + case AF_INET: >> +diff --git a/utils/gssd/krb5_util.c b/utils/gssd/krb5_util.c >> +index e3f270e..28f7d84 100644 >> +--- a/utils/gssd/krb5_util.c >> ++++ b/utils/gssd/krb5_util.c >> +@@ -304,9 +304,9 @@ gssd_find_existing_krb5_ccache(uid_t uid, char *dirname, >> + score++; >> + >> + printerr(3, "CC '%s'(%s@%s) passed all checks and" >> +- " has mtime of %u\n", >> ++ " has mtime of %llu\n", >> + buf, princname, realm, >> +- tmp_stat.st_mtime); >> ++ (long long unsigned)tmp_stat.st_mtime); >> + /* >> + * if more than one match is found, return the most >> + * recent (the one with the latest mtime), and >> +@@ -341,10 +341,10 @@ gssd_find_existing_krb5_ccache(uid_t uid, char >> *dirname, >> + } >> + printerr(3, "CC '%s:%s/%s' is our " >> + "current best match " >> +- "with mtime of %u\n", >> +- cctype, dirname, >> ++ "with mtime of %llu\n", >> ++ *cctype, dirname, >> + best_match_dir->d_name, >> +- best_match_stat.st_mtime); >> ++ (long long >> unsigned)best_match_stat.st_mtime); >> + } >> + free(princname); >> + free(realm); >> +diff --git a/utils/gssd/svcgssd_proc.c b/utils/gssd/svcgssd_proc.c >> +index b403143..7fecd1a 100644 >> +--- a/utils/gssd/svcgssd_proc.c >> ++++ b/utils/gssd/svcgssd_proc.c >> +@@ -102,10 +102,10 @@ do_svc_downcall(gss_buffer_desc *out_handle, struct >> svc_cred *cred, >> + qword_addint(&bp, &blen, cred->cr_uid); >> + qword_addint(&bp, &blen, cred->cr_gid); >> + qword_addint(&bp, &blen, cred->cr_ngroups); >> +- printerr(2, "mech: %s, hndl len: %d, ctx len %d, timeout: %d (%d >> from now), " >> ++ printerr(2, "mech: %s, hndl len: %zd, ctx len %zd, timeout: %lld >> (%lld from now), " >> + "clnt: %s, uid: %d, gid: %d, num aux grps: %d:\n", >> + fname, out_handle->length, context_token->length, >> +- endtime, endtime - time(0), >> ++ (long long int)endtime, (long long int)(endtime - time(0)), >> + client_name ? client_name : "<null>", >> + cred->cr_uid, cred->cr_gid, cred->cr_ngroups); >> + for (i=0; i < cred->cr_ngroups; i++) { >> +@@ -232,7 +232,7 @@ get_ids(gss_name_t client_name, gss_OID mech, struct >> svc_cred *cred) >> + } >> + if (name.length >= 0xffff || /* be certain name.length+1 doesn't >> overflow */ >> + !(sname = calloc(name.length + 1, 1))) { >> +- printerr(0, "WARNING: get_ids: error allocating %d bytes " >> ++ printerr(0, "WARNING: get_ids: error allocating %zd bytes " >> + "for sname\n", name.length + 1); >> + gss_release_buffer(&min_stat, &name); >> + goto out; >> +@@ -360,7 +360,7 @@ handle_nullreq(char *cp) { >> + if (in_handle.length != 0) { /* CONTINUE_INIT case */ >> + if (in_handle.length != sizeof(ctx)) { >> + printerr(0, "WARNING: handle_nullreq: " >> +- "input handle has unexpected length >> %d\n", >> ++ "input handle has unexpected length >> %zd\n", >> + in_handle.length); >> + goto out_err; >> + } >> diff --git >> a/meta/recipes-connectivity/nfs-utils/nfs-utils/0002-Use-nogroup-for-nobody-group.patch >> >> b/meta/recipes-connectivity/nfs-utils/nfs-utils/0002-Use-nogroup-for-nobody-group.patch >> new file mode 100644 >> index 00000000000..3c238f851ba >> --- /dev/null >> +++ >> b/meta/recipes-connectivity/nfs-utils/nfs-utils/0002-Use-nogroup-for-nobody-group.patch >> @@ -0,0 +1,38 @@ >> +From 6095b5a9208eac37b73e05f81c090d8183138c6a Mon Sep 17 00:00:00 2001 >> +From: Daniel McGregor <[email protected]> >> +Date: Tue, 6 Jun 2023 16:07:53 -0600 >> +Subject: [PATCH] Use "nogroup" for nobody group >> + >> +Upstream-Status: Inappropriate [oe-core specific, configuration] >> +Signed-off-by: Daniel McGregor <[email protected]> >> +--- >> + support/nfsidmap/idmapd.conf | 2 +- >> + utils/idmapd/idmapd.c | 2 +- >> + 2 files changed, 2 insertions(+), 2 deletions(-) >> + >> +diff --git a/support/nfsidmap/idmapd.conf b/support/nfsidmap/idmapd.conf >> +index 2a2f79a1..e6f3724f 100644 >> +--- a/support/nfsidmap/idmapd.conf >> ++++ b/support/nfsidmap/idmapd.conf >> +@@ -41,7 +41,7 @@ >> + [Mapping] >> + >> + #Nobody-User = nobody >> +-#Nobody-Group = nobody >> ++#Nobody-Group = nogroup >> + >> + [Translation] >> + >> +diff --git a/utils/idmapd/idmapd.c b/utils/idmapd/idmapd.c >> +index cd9a965f..3be805e9 100644 >> +--- a/utils/idmapd/idmapd.c >> ++++ b/utils/idmapd/idmapd.c >> +@@ -89,7 +89,7 @@ >> + #endif >> + >> + #ifndef NFS4NOBODY_GROUP >> +-#define NFS4NOBODY_GROUP "nobody" >> ++#define NFS4NOBODY_GROUP "nogroup" >> + #endif >> + >> + /* From Niels */ >> diff --git >> a/meta/recipes-connectivity/nfs-utils/nfs-utils/0003-find-OE-provided-Kerberos.patch >> >> b/meta/recipes-connectivity/nfs-utils/nfs-utils/0003-find-OE-provided-Kerberos.patch >> new file mode 100644 >> index 00000000000..4f15aaec4ea >> --- /dev/null >> +++ >> b/meta/recipes-connectivity/nfs-utils/nfs-utils/0003-find-OE-provided-Kerberos.patch >> @@ -0,0 +1,42 @@ >> +From f4f4a226bfd71ddc0f53dd54159e3eaa835b18e6 Mon Sep 17 00:00:00 2001 >> +From: Daniel McGregor <[email protected]> >> +Date: Wed, 8 Nov 2023 16:24:20 -0600 >> +Subject: [PATCH] find OE provided Kerberos >> + >> +Upstream-Status: Inappropriate [oe-core specific] >> +Signed-off-by: Daniel McGregor <[email protected]> >> +--- >> + aclocal/kerberos5.m4 | 6 ++++-- >> + 1 file changed, 4 insertions(+), 2 deletions(-) >> + >> +diff --git a/aclocal/kerberos5.m4 b/aclocal/kerberos5.m4 >> +index f96f0fd..ad85fdf 100644 >> +--- a/aclocal/kerberos5.m4 >> ++++ b/aclocal/kerberos5.m4 >> +@@ -22,8 +22,8 @@ AC_DEFUN([AC_KERBEROS_V5],[ >> + dnl This ugly hack brought on by the split installation of >> + dnl MIT Kerberos on Fedora Core 1 >> + K5CONFIG="" >> +- if test -f $dir/bin/krb5-config; then >> +- K5CONFIG=$dir/bin/krb5-config >> ++ if test -f $dir/bin/crossscripts/krb5-config; then >> ++ K5CONFIG=$dir/bin/crossscripts/krb5-config >> + elif test -f "/usr/kerberos/bin/krb5-config"; then >> + K5CONFIG="/usr/kerberos/bin/krb5-config" >> + elif test -f "/usr/lib/mit/bin/krb5-config"; then >> +@@ -72,6 +72,7 @@ AC_DEFUN([AC_KERBEROS_V5],[ >> + AC_MSG_RESULT($KRBDIR) >> + >> + dnl Check if -rpath=$(KRBDIR)/lib is needed >> ++ if false; then >> + echo "The current KRBDIR is $KRBDIR" >> + if test "$KRBDIR/lib" = "/lib" -o "$KRBDIR/lib" = "/usr/lib" \ >> + -o "$KRBDIR/lib" = "//lib" -o "$KRBDIR/lib" = "/usr//lib" ; then >> +@@ -81,6 +82,7 @@ AC_DEFUN([AC_KERBEROS_V5],[ >> + else >> + KRBLDFLAGS="-Wl,-rpath=$KRBDIR/lib" >> + fi >> ++ fi >> + >> + dnl Now check for functions within gssapi library >> + AC_CHECK_LIB($gssapi_lib, gss_krb5_export_lucid_sec_context, >> diff --git >> a/meta/recipes-connectivity/nfs-utils/nfs-utils/clang-warnings.patch >> b/meta/recipes-connectivity/nfs-utils/nfs-utils/clang-warnings.patch >> index fde99b599eb..ff697477b08 100644 >> --- a/meta/recipes-connectivity/nfs-utils/nfs-utils/clang-warnings.patch >> +++ b/meta/recipes-connectivity/nfs-utils/nfs-utils/clang-warnings.patch >> @@ -1,4 +1,4 @@ >> -From 1ab0c326405c6daa06f1a7eb4b0b60bf4e0584c2 Mon Sep 17 00:00:00 2001 >> +From 7d04566b7b8e57114533360cc4b933a74ed6b314 Mon Sep 17 00:00:00 2001 >> From: Khem Raj <[email protected]> >> Date: Tue, 31 Dec 2019 08:15:34 -0800 >> Subject: [PATCH] Detect warning options during configure >> @@ -16,11 +16,14 @@ Upstream-Status: Pending >> Signed-off-by: Khem Raj <[email protected]> >> >> --- >> - support/nfs/xcommon.c | 3 +++ >> - 1 file changed, 3 insertions(+) >> + support/nfs/xcommon.c | 6 ++++++ >> + support/nfs/xlog.c | 6 ++++++ >> + support/nfsidmap/libnfsidmap.c | 3 +++ >> + utils/exportfs/exportfs.c | 3 +++ >> + 4 files changed, 18 insertions(+) >> >> diff --git a/support/nfs/xcommon.c b/support/nfs/xcommon.c >> -index 3989f0b..e080423 100644 >> +index 3989f0bc..ff438c18 100644 >> --- a/support/nfs/xcommon.c >> +++ b/support/nfs/xcommon.c >> @@ -98,7 +98,10 @@ nfs_error (const char *fmt, ...) { >> @@ -34,3 +37,73 @@ index 3989f0b..e080423 100644 >> va_end (args); >> free (fmt2); >> } >> +@@ -132,7 +135,10 @@ die(int err, const char *fmt, ...) { >> + va_list args; >> + >> + va_start(args, fmt); >> ++#pragma GCC diagnostic push >> ++#pragma GCC diagnostic ignored "-Wformat-nonliteral" >> + vfprintf(stderr, fmt, args); >> ++#pragma GCC diagnostic pop >> + fprintf(stderr, "\n"); >> + va_end(args); >> + >> +diff --git a/support/nfs/xlog.c b/support/nfs/xlog.c >> +index fa125cef..dc4c9ea1 100644 >> +--- a/support/nfs/xlog.c >> ++++ b/support/nfs/xlog.c >> +@@ -178,11 +178,16 @@ xlog_backend(int kind, const char *fmt, va_list args) >> + fprintf(stderr, "%s: ", log_name); >> + #endif >> + va_copy(args2, args); >> ++#pragma GCC diagnostic push >> ++#pragma GCC diagnostic ignored "-Wformat-nonliteral" >> + vfprintf(stderr, fmt, args2); >> ++#pragma GCC diagnostic pop >> + fprintf(stderr, "\n"); >> + va_end(args2); >> + } >> + >> ++#pragma GCC diagnostic push >> ++#pragma GCC diagnostic ignored "-Wformat-nonliteral" >> + if (log_syslog) { >> + switch (kind) { >> + case L_FATAL: >> +@@ -203,6 +208,7 @@ xlog_backend(int kind, const char *fmt, va_list args) >> + break; >> + } >> + } >> ++#pragma GCC diagnostic pop >> + >> + if (kind == L_FATAL) >> + exit(1); >> +diff --git a/support/nfsidmap/libnfsidmap.c b/support/nfsidmap/libnfsidmap.c >> +index 0a912e52..95eb64d2 100644 >> +--- a/support/nfsidmap/libnfsidmap.c >> ++++ b/support/nfsidmap/libnfsidmap.c >> +@@ -99,7 +99,10 @@ static void default_logger(const char *fmt, ...) >> + va_list vp; >> + >> + va_start(vp, fmt); >> ++#pragma GCC diagnostic push >> ++#pragma GCC diagnostic ignored "-Wformat-nonliteral" >> + vsyslog(LOG_WARNING, fmt, vp); >> ++#pragma GCC diagnostic pop >> + va_end(vp); >> + } >> + >> +diff --git a/utils/exportfs/exportfs.c b/utils/exportfs/exportfs.c >> +index b03a047b..eac1ff2a 100644 >> +--- a/utils/exportfs/exportfs.c >> ++++ b/utils/exportfs/exportfs.c >> +@@ -646,7 +646,10 @@ dumpopt(char c, char *fmt, ...) >> + >> + va_start(ap, fmt); >> + printf("%c", c); >> ++#pragma GCC diagnostic push >> ++#pragma GCC diagnostic ignored "-Wformat-nonliteral" >> + vprintf(fmt, ap); >> ++#pragma GCC diagnostic pop >> + va_end(ap); >> + return ','; >> + } >> diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils_2.6.4.bb >> b/meta/recipes-connectivity/nfs-utils/nfs-utils_2.6.4.bb >> index 3896fac6ed5..bb65ba33a74 100644 >> --- a/meta/recipes-connectivity/nfs-utils/nfs-utils_2.6.4.bb >> +++ b/meta/recipes-connectivity/nfs-utils/nfs-utils_2.6.4.bb >> @@ -26,6 +26,9 @@ SRC_URI = >> "${KERNELORG_MIRROR}/linux/utils/nfs-utils/${PV}/nfs-utils-${PV}.tar.x >> file://0001-locktest-Makefile.am-Do-not-use-build-flags.patch \ >> file://0001-tools-locktest-Use-intmax_t-to-print-off_t.patch \ >> >> file://0001-reexport.h-Include-unistd.h-to-compile-with-musl.patch \ >> + file://0001-gssd-use-printf-format-specifiers.patch \ >> + file://0002-Use-nogroup-for-nobody-group.patch \ >> + file://0003-find-OE-provided-Kerberos.patch \ >> " >> SRC_URI[sha256sum] = >> "01b3b0fb9c7d0bbabf5114c736542030748c788ec2fd9734744201e9b0a1119d" >> >> @@ -49,10 +52,9 @@ EXTRA_OECONF = "--with-statduser=rpcuser \ >> --enable-mountconfig \ >> --enable-libmount-mount \ >> --enable-uuid \ >> - --disable-gss \ >> - --disable-nfsdcltrack \ >> --disable-sbin-override \ >> --with-statdpath=/var/lib/nfs/statd \ >> + --with-pluginpath=${libdir}/libnfsidmap \ >> --with-rpcgen=${HOSTTOOLS_DIR}/rpcgen \ >> " >> >> @@ -61,13 +63,16 @@ LDFLAGS:append = " -lsqlite3 -levent" >> PACKAGECONFIG ??= "tcp-wrappers \ >> ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6 systemd', d)} \ >> " >> + >> PACKAGECONFIG:remove:libc-musl = "tcp-wrappers" >> +#krb5 is available in meta-oe >> +PACKAGECONFIG[gssapi] = "--with-krb5=${STAGING_EXECPREFIXDIR} --enable-gss >> --enable-svcgss,--disable-gss --disable-svcgss,krb5" >> PACKAGECONFIG[tcp-wrappers] = >> "--with-tcp-wrappers,--without-tcp-wrappers,tcp-wrappers" >> PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6," >> # libdevmapper is available in meta-oe >> PACKAGECONFIG[nfsv41] = >> "--enable-nfsv41,--disable-nfsv41,libdevmapper,libdevmapper" >> # keyutils is available in meta-oe >> -PACKAGECONFIG[nfsv4] = >> "--enable-nfsv4,--disable-nfsv4,keyutils,python3-core" >> +PACKAGECONFIG[nfsv4] = "--enable-nfsv4 --enable-nfsdcltrack,--disable-nfsv4 >> --disable-nfsdcltrack,keyutils,python3-core" >> PACKAGECONFIG[systemd] = >> "--with-systemd=${systemd_unitdir}/system,--without-systemd" >> >> PACKAGES =+ "${PN}-client ${PN}-mount ${PN}-stats ${PN}-rpcctl" >> @@ -76,19 +81,34 @@ CONFFILES:${PN}-client += "${localstatedir}/lib/nfs/etab >> \ >> ${localstatedir}/lib/nfs/rmtab \ >> ${localstatedir}/lib/nfs/xtab \ >> ${localstatedir}/lib/nfs/statd/state \ >> + ${sysconfdir}/idmapd.conf \ >> ${sysconfdir}/nfs.conf \ >> ${sysconfdir}/nfsmount.conf" >> >> FILES:${PN}-client = "${sbindir}/*statd \ >> - ${libdir}/libnfsidmap.so.* \ >> ${sbindir}/rpc.idmapd ${sbindir}/sm-notify \ >> ${sbindir}/showmount ${sbindir}/nfsstat \ >> + ${sbindir}/rpc.gssd \ >> ${sbindir}/nfsconf \ >> + ${libdir}/libnfsidmap.so.* \ >> + ${libdir}/libnfsidmap/*.so \ >> + ${libexecdir}/nfsrahead \ >> ${localstatedir}/lib/nfs \ >> + ${sysconfdir}/idmapd.conf \ >> + ${sysconfdir}/init.d/nfscommon \ >> ${sysconfdir}/nfs.conf \ >> ${sysconfdir}/nfsmount.conf \ >> - ${sysconfdir}/init.d/nfscommon \ >> - ${systemd_system_unitdir}/nfs-statd.service" >> + ${systemd_system_unitdir}/auth-rpcgss-module.service \ >> + ${systemd_system_unitdir}/nfs-client.target \ >> + ${systemd_system_unitdir}/nfs-idmapd.service \ >> + ${systemd_system_unitdir}/nfs-statd.service \ >> + ${systemd_system_unitdir}/nfscommon.service \ >> + ${systemd_system_unitdir}/rpc-gssd.service \ >> + ${systemd_system_unitdir}/rpc-statd-notify.service \ >> + ${systemd_system_unitdir}/rpc-statd.service \ >> + ${systemd_system_unitdir}/rpc_pipefs.target \ >> + ${systemd_system_unitdir}/var-lib-nfs-rpc_pipefs.mount >> \ >> + ${nonarch_libdir}/udev/rules.d/*" >> RDEPENDS:${PN}-client = "${PN}-mount rpcbind" >> >> FILES:${PN}-mount = "${base_sbindir}/*mount.nfs*" >> @@ -104,8 +124,8 @@ FILES:${PN}-staticdev += "${libdir}/libnfsidmap/*.a" >> FILES:${PN} += "${systemd_unitdir} ${libdir}/libnfsidmap/ >> ${nonarch_libdir}/modprobe.d" >> >> do_configure:prepend() { >> - sed -i -e 's,sbindir = /sbin,sbindir = ${base_sbindir},g' \ >> - ${S}/utils/mount/Makefile.am >> + sed -i -e 's,udev_rulesdir = /usr/lib/udev/rules.d/,udev_rulesdir = >> ${nonarch_base_libdir}/udev/rules.d/,g' \ >> + ${S}/systemd/Makefile.am ${S}/tools/nfsrahead/Makefile.am >> } >> >> # Make clean needed because the package comes with >> @@ -122,6 +142,7 @@ do_install:append () { >> install -m 0755 ${WORKDIR}/nfsserver >> ${D}${sysconfdir}/init.d/nfsserver >> install -m 0755 ${WORKDIR}/nfscommon >> ${D}${sysconfdir}/init.d/nfscommon >> >> + install -m 0644 ${S}/support/nfsidmap/idmapd.conf ${D}${sysconfdir} >> install -m 0644 ${S}/nfs.conf ${D}${sysconfdir} >> >> install -d ${D}${systemd_system_unitdir} >> -- >> 2.41.0 >> >> >> >>
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#197852): https://lists.openembedded.org/g/openembedded-core/message/197852 Mute This Topic: https://lists.openembedded.org/mt/105209256/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
