autofs: allow to use libtirpc instead of internal C implementation
PATCH v3 1/1 autofs: allow to use libtirpc instead of internal C implementation
uClibc-ng plans to remove internal RPC implementation as it is ipv4 only and can not be used for most important RPC software rpcbind and nfs-utils.
musl does not implement RPC and GNU C library deprecated the internal implementation a while ago.
It is still possible to use the C library implementation.
---
v1 -> v2:
- Thomas Petazzoni wants to keep legacy C library provided RPC support
v2 -> v3:
- combine with BR2_PACKAGE_LIBTIRPC conditionally, suggested by Baruch Siach
--- package/autofs/0004-libtirpc-via-pkgconfig.patch | 83 ++++++++++++++++++++++++ package/autofs/Config.in | 7 +- package/autofs/autofs.mk | 5 ++ 3 files changed, 91 insertions(+), 4 deletions(-) create mode 100644 package/autofs/0004-libtirpc-via-pkgconfig.patch
package/autofs/0004-libtirpc-via-pkgconfig.patch new file +83 -0
@@ -0,0 +1,83 @@ +Use pkg-config to find libtirpc headers + +Signed-off-by: Waldemar Brodkorb <[email protected]> + +diff -Nur autofs-5.1.2.orig/aclocal.m4 autofs-5.1.2/aclocal.m4 +--- autofs-5.1.2.orig/aclocal.m4 2016-06-15 04:40:44.000000000 +0200 ++++ autofs-5.1.2/aclocal.m4 2017-03-21 20:10:06.441615642 +0100 +@@ -411,11 +411,18 @@ + dnl -------------------------------------------------------------------------- + AC_DEFUN([AF_CHECK_LIBTIRPC], + [ ++ ++AC_PATH_PROGS(PKG_CONFIG, pkg-config, no) ++ + # save current flags + af_check_libtirpc_save_cflags="$CFLAGS" + af_check_libtirpc_save_ldflags="$LDFLAGS" +-CFLAGS="$CFLAGS -I/usr/include/tirpc" +-LDFLAGS="$LDFLAGS -ltirpc" ++ ++TIRPC_LIBS=`$PKG_CONFIG --libs libtirpc` ++TIRPC_FLAGS=`$PKG_CONFIG --cflags libtirpc` ++ ++CFLAGS="$CFLAGS $TIRPC_FLAGS" ++LIBS="$LIBS $TIRPC_LIBS" + + AC_TRY_LINK( + [ #include <rpc/rpc.h> ], +@@ -431,7 +438,8 @@ + if test "$af_have_libtirpc" = "yes"; then + AC_DEFINE(WITH_LIBTIRPC,1, [Define to 1 if you have the libtirpc library installed]) + AC_DEFINE(TIRPC_WORKAROUND,1, [Define to 1 to use the libtirpc tsd usage workaround]) +- TIRPCLIB="-ltirpc" ++ TIRPCINCLUDE=$TIRPC_FLAGS ++ TIRPCLIB=$TIRPC_LIBS + fi + + AC_CHECK_FUNCS([getrpcbyname getservbyname]) +@@ -439,6 +447,7 @@ + # restore flags + CFLAGS="$af_check_libtirpc_save_cflags" + LDFLAGS="$af_check_libtirpc_save_ldflags" ++ + ]) + + AC_DEFUN([AF_WITH_LIBTIRPC], +diff -Nur autofs-5.1.2.orig/configure.in autofs-5.1.2/configure.in +--- autofs-5.1.2.orig/configure.in 2016-06-15 04:40:44.000000000 +0200 ++++ autofs-5.1.2/configure.in 2017-03-20 22:01:57.191254563 +0100 +@@ -126,6 +126,7 @@ + # + AF_WITH_LIBTIRPC() + AC_SUBST(TIRPCLIB) ++AC_SUBST(TIRPCINCLUDE) + + # + # Optional include dmalloc +diff -Nur autofs-5.1.2.orig/Makefile.conf.in autofs-5.1.2/Makefile.conf.in +--- autofs-5.1.2.orig/Makefile.conf.in 2016-06-15 04:40:44.000000000 +0200 ++++ autofs-5.1.2/Makefile.conf.in 2017-03-20 21:59:38.341881802 +0100 +@@ -62,6 +62,7 @@ + + # Use libtirpc if requested and available + TIRPCLIB = @TIRPCLIB@ ++TIRPCINCLUDE = @TIRPCINCLUDE@ + + # Use dmalloc for memory debuging + DMALLOCLIB = @DMALLOCLIB@ +diff -Nur autofs-5.1.2.orig/Makefile.rules autofs-5.1.2/Makefile.rules +--- autofs-5.1.2.orig/Makefile.rules 2016-06-15 04:40:44.000000000 +0200 ++++ autofs-5.1.2/Makefile.rules 2017-03-20 22:03:25.590675167 +0100 +@@ -45,10 +45,8 @@ + CFLAGS += -D_REENTRANT -D_FILE_OFFSET_BITS=64 + LIBS += -lpthread + +-ifdef TIRPCLIB +-CFLAGS += -I/usr/include/tirpc ++CFLAGS += $(TIRPCINCLUDE) + LIBS += $(TIRPCLIB) +-endif + + ifdef DMALLOCLIB + LIBS += $(DMALLOCLIB)
package/autofs/Config.in +3 -4
@@ -2,8 +2,8 @@ config BR2_PACKAGE_AUTOFS bool "autofs" depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL depends on BR2_USE_MMU - depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC depends on !BR2_STATIC_LIBS # dlfcn + select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC help Autofs controls the operation of the automount daemons. The automount daemons automatically mount filesystems when they
@@ -15,7 +15,6 @@ config BR2_PACKAGE_AUTOFS http://www.linuxfromscratch.org/blfs/view/svn/general/autofs.html -comment "autofs needs a toolchain w/ NPTL, RPC, dynamic library" +comment "autofs needs a toolchain w/ NPTL and dynamic library" depends on BR2_USE_MMU - depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS || \ - !BR2_TOOLCHAIN_HAS_NATIVE_RPC + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS
package/autofs/autofs.mk +5 -0
@@ -32,6 +32,11 @@ AUTOFS_CONF_OPTS = \ --with-path="$(BR_PATH)" \ --with-hesiod=no +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +AUTOFS_DEPENDENCIES += libtirpc host-pkgconf +AUTOFS_CONF_OPTS += --with-libtirpc +endif + AUTOFS_MAKE_ENV = DONTSTRIP=1 $(eval $(autotools-package))
Signature · 1 line
2.1.4
PATCH v3 1/1 autofs: allow to use libtirpc instead of internal C implementation
ping?
Waldemar Brodkorb wrote,
Quoted 13 lines
uClibc-ng plans to remove internal RPC implementation as it is ipv4 only and can not be used for most important RPC software rpcbind and nfs-utils.
musl does not implement RPC and GNU C library deprecated the internal implementation a while ago.
It is still possible to use the C library implementation.Signed-off-by Waldemar Brodkorb <[email protected]>---
v1 -> v2:
- Thomas Petazzoni wants to keep legacy C library provided RPC support
v2 -> v3:
- combine withBR2_PACKAGE_LIBTIRPCconditionally, suggested by Baruch Siach
PATCH v3 1/1 autofs: allow to use libtirpc instead of internal C implementation
In reply to Waldemar BrodkorbHello,
Quoted 8 lines · Waldemar Brodkorb
uClibc-ng plans to remove internal RPC implementation as it is ipv4 only and can not be used for most important RPC software rpcbind and nfs-utils.
musl does not implement RPC and GNU C library deprecated the internal implementation a while ago.
It is still possible to use the C library implementation.Signed-off-by Waldemar Brodkorb <[email protected]>
This is almost good, but there are still a few issues. I had fixed most of them locally, but one needs a bit more work.
package/autofs/0004-libtirpc-via-pkgconfig.patch line 3
Quoted 9 lines
package/autofs/0004-libtirpc-via-pkgconfig.patch new file +3
-0@@ -0,0 +1,83 @@ +Use pkg-config to find libtirpc headers + +Signed-off-by: Waldemar Brodkorb <[email protected]>
Please format your patch with Git. The Git repo is available at
https://git.kernel.org/pub/scm/linux/storage/autofs/autofs.git/, create a branch based on the release_5_1_2 tag, and import the three existing patches.
package/autofs/0004-libtirpc-via-pkgconfig.patch line 22
Quoted 10 lines
package/autofs/0004-libtirpc-via-pkgconfig.patch new file +10
-0++AC_PATH_PROGS(PKG_CONFIG, pkg-config, no) ++ + # save current flags + af_check_libtirpc_save_cflags="$CFLAGS" + af_check_libtirpc_save_ldflags="$LDFLAGS" +-CFLAGS="$CFLAGS -I/usr/include/tirpc" +-LDFLAGS="$LDFLAGS -ltirpc" ++ ++TIRPC_LIBS=`$PKG_CONFIG --libs libtirpc` ++TIRPC_FLAGS=`$PKG_CONFIG --cflags libtirpc`
Please PKG_CHECK_MODULES() instead.
package/autofs/autofs.mk AUTOFS_CONF_OPTS = \ · line 36
Quoted 10 lines
package/autofs/autofs.mk +2
-0@@ -32,6 +32,11 @@ AUTOFS_CONF_OPTS = \ --with-path="$(BR_PATH)" \ --with-hesiod=no +ifeq ($(BR2_PACKAGE_LIBTIRPC),y) +AUTOFS_DEPENDENCIES += libtirpc host-pkgconf
Once PKG_CHECK_MODULES is used, host-pkgconf should be an unconditional dependency, because it will be needed for autoreconf to work.
Please also add this new patch to the list of patches that justify the AUTORECONF = YES.
package/autofs/autofs.mk AUTOFS_CONF_OPTS = \ · line 37
Quoted 1 line
package/autofs/autofs.mk +1
-0+AUTOFS_CONF_OPTS += --with-libtirpc
Please add:
elseAUTOFS_CONF_OPTS += --without-libtirpc
Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com
PATCH v3 1/1 autofs: allow to use libtirpc instead of internal C implementation
Hi Thomas,
Thomas Petazzoni wrote,
Quoted 15 lines
Hello,
Quoted 8 lines · Waldemar Brodkorb
uClibc-ng plans to remove internal RPC implementation as it is ipv4 only and can not be used for most important RPC software rpcbind and nfs-utils.
musl does not implement RPC and GNU C library deprecated the internal implementation a while ago.
It is still possible to use the C library implementation.Signed-off-by Waldemar Brodkorb <[email protected]>This is almost good, but there are still a few issues. I had fixed most of them locally, but one needs a bit more work.
Quoted 14 lines
package/autofs/0004-libtirpc-via-pkgconfig.patch line 3
Quoted 9 lines
package/autofs/0004-libtirpc-via-pkgconfig.patch new file +3
-0@@ -0,0 +1,83 @@ +Use pkg-config to find libtirpc headers + +Signed-off-by: Waldemar Brodkorb <[email protected]>Please format your patch with Git. The Git repo is available at
https://git.kernel.org/pub/scm/linux/storage/autofs/autofs.git/, create a branch based on therelease_5_1_2tag, and import the three existing patches.
Okay, I understand this.
Quoted 11 lines
package/autofs/0004-libtirpc-via-pkgconfig.patch line 22
Quoted 10 lines
package/autofs/0004-libtirpc-via-pkgconfig.patch new file +10
-0++AC_PATH_PROGS(PKG_CONFIG, pkg-config, no) ++ + # save current flags + af_check_libtirpc_save_cflags="$CFLAGS" + af_check_libtirpc_save_ldflags="$LDFLAGS" +-CFLAGS="$CFLAGS -I/usr/include/tirpc" +-LDFLAGS="$LDFLAGS -ltirpc" ++ ++TIRPC_LIBS=`$PKG_CONFIG --libs libtirpc` ++TIRPC_FLAGS=`$PKG_CONFIG --cflags libtirpc`
Quoted 1 line
Please
PKG_CHECK_MODULES()instead.
I tried, but failed. Do you have some examples how PKG_CHECK_MODULES() should be used? I am not a autotool expert, so I am unsure how to create a patch which will be accepted by upstream.
best regards
Waldemar
PATCH v3 1/1 autofs: allow to use libtirpc instead of internal C implementation
Hello,
Quoted 5 lines · Waldemar Brodkorb
Quoted 1 line
Please
PKG_CHECK_MODULES()instead.I tried, but failed. Do you have some examples how
PKG_CHECK_MODULES()should be used? I am not a autotool expert, so I am unsure how to create a patch which will be accepted by upstream.
See https://autotools.io/pkgconfig/pkg_check_modules.html, it's a good and simple tutorial on how to use PKG_CHECK_MODULES().
Best regards,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com
PATCH v3 1/1 autofs: allow to use libtirpc instead of internal C implementation
Hi Thomas,
Thomas Petazzoni wrote,
Quoted 11 lines
Hello,
Quoted 5 lines · Waldemar Brodkorb
Quoted 1 line
Please
PKG_CHECK_MODULES()instead.I tried, but failed. Do you have some examples how
PKG_CHECK_MODULES()should be used? I am not a autotool expert, so I am unsure how to create a patch which will be accepted by upstream.See https://autotools.io/pkgconfig/pkg_check_modules.html, it's a good and simple tutorial on how to use
PKG_CHECK_MODULES().
I have seen the tutorial, I thought about a howto with more real life examples. I looked into nfs-utils and linux-pam and tried some stuff, but unfortunately I failed.
I am given up for now.
best regards
Waldemar