All of lore.kernel.org
 help / color / mirror / Atom feed
From: Waldemar Brodkorb <wbx@openadk.org>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH v6] autofs: allow to use libtirpc instead of internal C implementation
Date: Fri, 30 Jun 2017 10:52:29 +0200	[thread overview]
Message-ID: <20170630085229.GA9830@waldemar-brodkorb.de> (raw)

uClibc-ng removed 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 <wbx@openadk.org>
---
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                                                                              
v3 -> v4:                                                                                     
  - add patch to use pkg-config to search libtirpc                                            
  - automatically use it when BR2_TOOLCHAIN_HAS_NATIVE_RPC isn't                              
    available                                                                                 
  - tested with glibc/uclibc-ng toolchains                                                    
v4 -> v5:                                                                                     
  - new autofs patch, changes requested by Upstream                                           
  - difference to upstream patch, relative path to pkg.m4 used             
v5 -> v6:
  - new patch, mv aclocal.m4 and remove m4_include suggested by Yann
---
 ...fig-to-search-for-libtirpc-to-fix-cross-c.patch | 957 +++++++++++++++++++++
 package/autofs/Config.in                           |   7 +-
 package/autofs/autofs.mk                           |  10 +-
 3 files changed, 969 insertions(+), 5 deletions(-)
 create mode 100644 package/autofs/0002-use-pkg-config-to-search-for-libtirpc-to-fix-cross-c.patch

diff --git a/package/autofs/0002-use-pkg-config-to-search-for-libtirpc-to-fix-cross-c.patch b/package/autofs/0002-use-pkg-config-to-search-for-libtirpc-to-fix-cross-c.patch
new file mode 100644
index 0000000..af663c5
--- /dev/null
+++ b/package/autofs/0002-use-pkg-config-to-search-for-libtirpc-to-fix-cross-c.patch
@@ -0,0 +1,957 @@
+From ee78fb48444fe96213e9fcab6b579cf3d47136fd Mon Sep 17 00:00:00 2001
+From: Waldemar Brodkorb <wbx@openadk.org>
+Date: Tue, 27 Jun 2017 18:11:56 +0200
+Subject: [PATCH] use pkg-config to search for libtirpc to fix
+ cross-compilation
+
+When trying to cross-compile autofs for example with a buildsystem
+like buildroot, the compilation fails in case the user wants to use
+libtirpc library as RPC implementation. A hard coded include path
+in aclocal.m4 is used. Other opensource software like rpcbind or
+nfs-utils are suing autotools pkgconfig infrastructure to find
+the libtirpc headers and to pass the correct linker flags.
+
+Convert configure.in to use PKG_CHECK_MODULES and remove the
+hand written autoconf macros from aclocal.m4. Move aclocal.m4
+to m4 directory, so that autoconf does not skip global
+directories, otherwise pkg.m4 (pkg-config macros) are not found.
+
+This fixes cross-compilation of autofs and allows to use
+alternative C libraries as uClibc-ng without internal RPC
+support to be used in cross-compiling environments.
+
+Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
+---
+ Makefile.conf.in    |   3 +-
+ Makefile.rules      |   2 +-
+ aclocal.m4          | 449 ----------------------------------------------------
+ configure.in        |  14 +-
+ m4/autofs-macros.m4 | 401 ++++++++++++++++++++++++++++++++++++++++++++++
+ 5 files changed, 416 insertions(+), 453 deletions(-)
+ delete mode 100644 aclocal.m4
+ create mode 100644 m4/autofs-macros.m4
+
+diff --git a/Makefile.conf.in b/Makefile.conf.in
+index 2bc3202..f879e26 100644
+--- a/Makefile.conf.in
++++ b/Makefile.conf.in
+@@ -64,7 +64,8 @@ RPCGEN = @PATH_RPCGEN@
+ RANLIB = @PATH_RANLIB@
+ 
+ # Use libtirpc if requested and available
+-TIRPCLIB = @TIRPCLIB@
++TIRPCLIB = @TIRPC_LIBS@
++TIRPCCFLAGS = @TIRPC_CFLAGS@
+ 
+ # Use dmalloc for memory debuging
+ DMALLOCLIB = @DMALLOCLIB@
+diff --git a/Makefile.rules b/Makefile.rules
+index 7d1af2e..0edf9bf 100644
+--- a/Makefile.rules
++++ b/Makefile.rules
+@@ -46,7 +46,7 @@ CFLAGS += -D_REENTRANT -D_FILE_OFFSET_BITS=64
+ LIBS += -lpthread
+ 
+ ifdef TIRPCLIB
+-CFLAGS += -I/usr/include/tirpc
++CFLAGS += $(TIRPCCFLAGS)
+ LIBS += $(TIRPCLIB)
+ endif
+ 
+diff --git a/aclocal.m4 b/aclocal.m4
+deleted file mode 100644
+index 00811e0..0000000
+--- a/aclocal.m4
++++ /dev/null
+@@ -1,449 +0,0 @@
+-dnl
+-dnl --------------------------------------------------------------------------
+-dnl AF_PATH_INCLUDE:
+-dnl
+-dnl Like AC_PATH_PROGS, but add to the .h file as well
+-dnl --------------------------------------------------------------------------
+-AC_DEFUN(AF_PATH_INCLUDE,
+-[AC_PATH_PROGS($1,$2,$3,$4)
+-if test -n "$$1"; then
+-  AC_DEFINE(HAVE_$1,1,[define if you have $1])
+-  AC_DEFINE_UNQUOTED(PATH_$1, "$$1", [define if you have $1])
+-  HAVE_$1=1
+-else
+-  HAVE_$1=0
+-fi
+-AC_SUBST(HAVE_$1)])
+-
+-dnl --------------------------------------------------------------------------
+-dnl AF_CHECK_PROG:
+-dnl
+-dnl Like AC_CHECK_PROG, but fail configure if not found
+-dnl and only define PATH_<name> variable
+-dnl --------------------------------------------------------------------------
+-AC_DEFUN(AF_CHECK_PROG,
+-[AC_PATH_PROGS($1,$2,$3,$4)
+-if test -n "$$1"; then
+-  AC_DEFINE_UNQUOTED(PATH_$1, "$$1", [define if you have $1])
+-  PATH_$1="$$1"
+-else
+-  AC_MSG_ERROR([required program $1 not found])
+-fi
+-AC_SUBST(PATH_$1)])
+-
+-dnl --------------------------------------------------------------------------
+-dnl AF_CHECK_SSS_LIB:
+-dnl
+-dnl Check if a sss autofs library exists.
+-dnl --------------------------------------------------------------------------
+-AC_DEFUN(AF_CHECK_SSS_LIB,
+-[if test -z "$sssldir"; then
+-  AC_MSG_CHECKING(for sssd autofs library)
+-  for libd in /usr/lib64 /usr/lib; do
+-    if test -z "$sssldir"; then
+-      if test -e "$libd/sssd/modules/$2"; then
+-        sssldir=$libd/sssd/modules
+-      fi
+-    fi
+-  done
+-  if test -n "$sssldir"; then
+-    HAVE_$1=1
+-    AC_MSG_RESULT(yes)
+-  else
+-    HAVE_$1=0
+-    AC_MSG_RESULT(no)
+-  fi
+-fi])
+-
+-dnl --------------------------------------------------------------------------
+-dnl AF_SLOPPY_MOUNT
+-dnl
+-dnl Check to see if mount(8) supports the sloppy (-s) option, and define
+-dnl the cpp variable HAVE_SLOPPY_MOUNT if so.  This requires that MOUNT is
+-dnl already defined by a call to AF_PATH_INCLUDE or AC_PATH_PROGS.
+-dnl --------------------------------------------------------------------------
+-AC_DEFUN(AF_SLOPPY_MOUNT,
+-[if test -n "$MOUNT" ; then
+-  AC_MSG_CHECKING([if mount accepts the -s option])
+-  if "$MOUNT" -s > /dev/null 2>&1 ; then
+-    enable_sloppy_mount=yes
+-    AC_MSG_RESULT(yes)
+-  else
+-    AC_MSG_RESULT(no)
+-  fi
+-fi])
+-
+-
+-dnl --------------------------------------------------------------------------
+-dnl AF_LINUX_PROCFS
+-dnl
+-dnl Check for the Linux /proc filesystem
+-dnl --------------------------------------------------------------------------
+-AC_DEFUN(AF_LINUX_PROCFS,
+-[AC_CACHE_CHECK([for Linux proc filesystem], [ac_cv_linux_procfs],
+-	[ac_cv_linux_procfs=no
+-	 test "x`cat /proc/sys/kernel/ostype 2>&-`" = "xLinux" && ac_cv_linux_procfs=yes])
+- if test $ac_cv_linux_procfs = yes
+- then
+-	AC_DEFINE(HAVE_LINUX_PROCFS, 1,
+-		[Define if you have the Linux /proc filesystem.])
+-fi])
+-
+-dnl --------------------------------------------------------------------------
+-dnl AF_INIT_D
+-dnl
+-dnl Check the location of the init.d directory
+-dnl --------------------------------------------------------------------------
+-AC_DEFUN(AF_INIT_D,
+-[if test -z "$initdir"; then
+-  AC_MSG_CHECKING([location of the init.d directory])
+-  for init_d in /etc/init.d /etc/rc.d/init.d; do
+-    if test -z "$initdir"; then
+-      if test -d "$init_d"; then
+-	initdir="$init_d"
+-	AC_MSG_RESULT($initdir)
+-      fi
+-    fi
+-  done
+-fi])
+-
+-dnl --------------------------------------------------------------------------
+-dnl AF_CONF_D
+-dnl
+-dnl Check the location of the configuration defaults directory
+-dnl --------------------------------------------------------------------------
+-AC_DEFUN(AF_CONF_D,
+-[if test -z "$confdir"; then
+-  for conf_d in /etc/sysconfig /etc/defaults /etc/conf.d /etc/default; do
+-    if test -z "$confdir"; then
+-      if test -d "$conf_d"; then
+-	confdir="$conf_d"
+-      fi
+-    fi
+-  done
+-fi])
+-
+-dnl --------------------------------------------------------------------------
+-dnl AF_MAP_D
+-dnl
+-dnl Check the location of the autofs maps directory
+-dnl --------------------------------------------------------------------------
+-AC_DEFUN(AF_MAP_D,
+-[if test -z "$mapdir"; then
+-  for map_d in /etc/autofs /etc; do
+-    if test -z "$mapdir"; then
+-      if test -d "$map_d"; then
+-	mapdir="$map_d"
+-      fi
+-    fi
+-  done
+-fi])
+-
+-dnl --------------------------------------------------------------------------
+-dnl AF_PID_D
+-dnl
+-dnl Check the location of the pid file directory.
+-dnl --------------------------------------------------------------------------
+-AC_DEFUN(AF_PID_D,
+-[if test -z "$piddir"; then
+-  for pid_d in /run /var/run /tmp; do
+-    if test -z "$piddir"; then
+-      if test -d "$pid_d"; then
+-        piddir="$pid_d"
+-      fi
+-    fi
+-  done
+-fi])
+-
+-dnl --------------------------------------------------------------------------
+-dnl AF_FIFO_D
+-dnl
+-dnl Check the location of the autofs fifos directory
+-dnl --------------------------------------------------------------------------
+-AC_DEFUN(AF_FIFO_D,
+-[if test -z "$fifodir"; then
+-  for fifo_d in /run /var/run /tmp; do
+-    if test -z "$fifodir"; then
+-      if test -d "$fifo_d"; then
+-        fifodir="$fifo_d"
+-      fi
+-    fi
+-  done
+-fi])
+-
+-dnl --------------------------------------------------------------------------
+-dnl AF_FLAG_D
+-dnl
+-dnl Check the location of the autofs flag file directory
+-dnl --------------------------------------------------------------------------
+-AC_DEFUN(AF_FLAG_D,
+-[if test -z "$flagdir"; then
+-  for flag_d in /run /var/run /tmp; do
+-    if test -z "$flagdir"; then
+-      if test -d "$flag_d"; then
+-        flagdir="$flag_d"
+-      fi
+-    fi
+-  done
+-fi])
+-
+-dnl ----------------------------------- ##                   -*- Autoconf -*-
+-dnl Check if --with-dmalloc was given.  ##
+-dnl From Franc,ois Pinard               ##
+-dnl ----------------------------------- ##
+-dnl
+-dnl Copyright (C) 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2005
+-dnl Free Software Foundation, Inc.
+-dnl
+-dnl This file is free software; the Free Software Foundation
+-dnl gives unlimited permission to copy and/or distribute it,
+-dnl with or without modifications, as long as this notice is preserved.
+-
+-dnl serial 3
+-
+-AC_DEFUN([AM_WITH_DMALLOC],
+-[AC_MSG_CHECKING([if malloc debugging is wanted])
+-AC_ARG_WITH(dmalloc,
+-[  --with-dmalloc          use dmalloc, as in
+-			  http://www.dmalloc.com/dmalloc.tar.gz],
+-[if test "$withval" = yes; then
+-  AC_MSG_RESULT(yes)
+-  AC_DEFINE(WITH_DMALLOC,1,
+-	    [Define if using the dmalloc debugging malloc package])
+-  DMALLOCLIB="-ldmallocth"
+-  LDFLAGS="$LDFLAGS -g"
+-else
+-  AC_MSG_RESULT(no)
+-fi], [AC_MSG_RESULT(no)])
+-])
+-
+-dnl --------------------------------------------------------------------------
+-dnl AF_WITH_SYSTEMD
+-dnl
+-dnl Check the location of the systemd unit files directory
+-dnl --------------------------------------------------------------------------
+-AC_DEFUN([AF_WITH_SYSTEMD],
+-[AC_ARG_WITH(systemd,
+-[  --with-systemd@<:@=systemddir@:>@  install systemd unit file.  If 'yes'
+-			  probe the system for unit directory.
+-			  If a path is specified, assume that
+-			  is a valid install path.],
+-[if test "$withval" = yes; then
+-  if test -z "$systemddir"; then
+-    AC_MSG_CHECKING([location of the systemd unit files directory])
+-    for systemd_d in /usr/lib/systemd/system /usr/lib64/systemd/system /lib/systemd/system /lib64/systemd/system; do
+-      if test -z "$systemddir"; then
+-        if test -d "$systemd_d"; then
+-          systemddir="$systemd_d"
+-        fi
+-      fi
+-    done
+-  fi
+-  if test -n "$systemddir"; then
+-    AC_MSG_RESULT($systemddir)
+-  else
+-    AC_MSG_RESULT(not found)
+-  fi
+-else
+- if test "$withval" != no; then
+-  systemddir=$withval
+- fi
+-fi])
+-])
+-
+-dnl --------------------------------------------------------------------------
+-dnl AF_CHECK_LIBXML
+-dnl
+-dnl Check for lib xml
+-dnl --------------------------------------------------------------------------
+-AC_DEFUN([AF_CHECK_LIBXML],
+-[AC_PATH_PROGS(XML_CONFIG, xml2-config, no)
+-AC_MSG_CHECKING(for libxml2)
+-if test "$XML_CONFIG" = "no"
+-then
+-  AC_MSG_RESULT(no)
+-  HAVE_LIBXML=0
+-else
+-  AC_MSG_RESULT(yes)
+-  HAVE_LIBXML=1
+-  XML_LIBS=`$XML_CONFIG --libs`
+-  XML_FLAGS=`$XML_CONFIG --cflags`
+-  XML_VER=`$XML_CONFIG --version`
+-  XML_MAJOR=`echo $XML_VER|cut -d\. -f1`
+-  if test $XML_MAJOR -le 99
+-  then
+-    XML_MINOR=`echo $XML_VER|cut -d\. -f2`
+-    if test $XML_MINOR -le 99
+-    then
+-      XML_REV=`echo $XML_VER|cut -d\. -f3`
+-      if test $XML_REV -le 99; then
+-        AC_DEFINE(LIBXML2_WORKAROUND,1, [Use libxml2 tsd usage workaround])
+-      fi
+-    fi
+-  fi
+-fi])
+-
+-dnl --------------------------------------------------------------------------
+-dnl AF_CHECK_KRB5
+-dnl
+-dnl Check for Kerberos 5
+-dnl --------------------------------------------------------------------------
+-AC_DEFUN([AF_CHECK_KRB5],
+-[AC_PATH_PROGS(KRB5_CONFIG, krb5-config, no)
+-AC_MSG_CHECKING(for Kerberos library)
+-if test "$KRB5_CONFIG" = "no"
+-then
+-  AC_MSG_RESULT(no)
+-  HAVE_KRB5=0
+-else
+-  AC_MSG_RESULT(yes)
+-  HAVE_KRB5=1
+-  KRB5_LIBS=`$KRB5_CONFIG --libs`
+-  KRB5_FLAGS=`$KRB5_CONFIG --cflags`
+-
+-  SAVE_CFLAGS=$CFLAGS
+-  SAVE_LIBS=$LIBS
+-  CFLAGS="$CFLAGS $KRB5_FLAGS"
+-  LIBS="$LIBS $KRB5_LIBS"
+-
+-  AC_CHECK_FUNCS([krb5_principal_get_realm])
+-fi])
+-
+-dnl --------------------------------------------------------------------------
+-dnl AF_CHECK_LIBHESIOD
+-dnl
+-dnl Check for lib hesiod
+-dnl --------------------------------------------------------------------------
+-AC_DEFUN([AF_CHECK_LIBHESIOD],
+-[AC_MSG_CHECKING(for libhesiod)
+-
+-# save current libs
+-af_check_hesiod_save_libs="$LIBS"
+-LIBS="$LIBS -lhesiod -lresolv"
+-
+-AC_TRY_LINK(
+-  [ #include <hesiod.h> ],
+-  [ void *c; hesiod_init(&c); ],
+-  [ HAVE_HESIOD=1
+-    LIBHESIOD="$LIBHESIOD -lhesiod -lresolv"
+-    AC_MSG_RESULT(yes) ],
+-  [ AC_MSG_RESULT(no) ])
+-
+-# restore libs
+-LIBS="$af_check_hesiod_save_libs"
+-])
+-
+-dnl --------------------------------------------------------------------------
+-dnl AF_CHECK_FUNC_LDAP_CREATE_PAGE_CONTROL
+-dnl
+-dnl Check for function ldap_create_page_control
+-dnl --------------------------------------------------------------------------
+-AC_DEFUN([AF_CHECK_FUNC_LDAP_CREATE_PAGE_CONTROL],
+-[AC_MSG_CHECKING(for ldap_create_page_control in -lldap)
+-
+-# save current libs
+-af_check_ldap_create_page_control_save_libs="$LIBS"
+-LIBS="$LIBS -lldap"
+-
+-AC_TRY_LINK(
+-  [ #include <ldap.h> ],
+-  [ LDAP *ld;
+-    ber_int_t ps;
+-    struct berval *c;
+-    int ic, ret;
+-    LDAPControl **clp;
+-    ret = ldap_create_page_control(ld,ps,c,ic,clp); ],
+-  [ af_have_ldap_create_page_control=yes
+-    AC_MSG_RESULT(yes) ],
+-  [ AC_MSG_RESULT(no) ])
+-
+-if test "$af_have_ldap_create_page_control" = "yes"; then
+-  AC_DEFINE(HAVE_LDAP_CREATE_PAGE_CONTROL, 1,
+-        [Define to 1 if you have the `ldap_create_page_control' function.])
+-fi
+-
+-# restore libs
+-LIBS="$af_check_ldap_create_page_control_save_libs"
+-])
+-
+-dnl --------------------------------------------------------------------------
+-dnl AF_CHECK_FUNC_LDAP_PARSE_PAGE_CONTROL
+-dnl
+-dnl Check for function ldap_parse_page_control
+-dnl --------------------------------------------------------------------------
+-AC_DEFUN([AF_CHECK_FUNC_LDAP_PARSE_PAGE_CONTROL],
+-[AC_MSG_CHECKING(for ldap_parse_page_control in -lldap)
+-
+-# save current libs
+-af_check_ldap_parse_page_control_save_libs="$LIBS"
+-LIBS="$LIBS -lldap"
+-
+-AC_TRY_LINK(
+-  [ #include <ldap.h> ],
+-  [ LDAP *ld;
+-    ber_int_t ct;
+-    struct berval *c;
+-    int ret;
+-    LDAPControl **clp;
+-    ret = ldap_parse_page_control(ld,clp,ct,c); ],
+-  [ af_have_ldap_parse_page_control=yes
+-    AC_MSG_RESULT(yes) ],
+-  [ AC_MSG_RESULT(no) ])
+-
+-if test "$af_have_ldap_create_page_control" = "yes"; then
+-  AC_DEFINE(HAVE_LDAP_PARSE_PAGE_CONTROL, 1,
+-        [Define to 1 if you have the `ldap_parse_page_control' function.])
+-fi
+-
+-# restore libs
+-LIBS="$af_check_ldap_parse_page_control_save_libs"
+-])
+-
+-dnl --------------------------------------------------------------------------
+-dnl AF_CHECK_LIBTIRPC
+-dnl
+-dnl Use libtirpc for rpc transport
+-dnl --------------------------------------------------------------------------
+-AC_DEFUN([AF_CHECK_LIBTIRPC],
+-[
+-# save current flags
+-af_check_libtirpc_save_cflags="$CFLAGS"
+-af_check_libtirpc_save_libs="$LIBS"
+-CFLAGS="$CFLAGS -I/usr/include/tirpc"
+-LIBS="$LIBS -ltirpc"
+-
+-AC_TRY_LINK(
+-    [ #include <rpc/rpc.h> ],
+-    [ CLIENT *cl;
+-      struct sockaddr_in addr;
+-      int fd;
+-      unsigned long ul; struct timeval t; unsigned int ui;
+-      cl = clntudp_bufcreate(&addr,ul,ul,t,&fd,ui,ui); ],
+-    [ af_have_libtirpc=yes
+-      AC_MSG_RESULT(yes) ],
+-    [ AC_MSG_RESULT(no) ])
+-
+-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"
+-fi
+-
+-AC_CHECK_FUNCS([getrpcbyname getservbyname])
+-
+-# restore flags
+-CFLAGS="$af_check_libtirpc_save_cflags"
+-LIBS="$af_check_libtirpc_save_libs"
+-])
+-
+-AC_DEFUN([AF_WITH_LIBTIRPC],
+-[AC_MSG_CHECKING([if libtirpc is requested and available])
+-AC_ARG_WITH(libtirpc,
+-[  --with-libtirpc         use libtirpc if available],
+-[if test "$withval" = yes; then
+-  AF_CHECK_LIBTIRPC()
+-else
+-  AC_MSG_RESULT(no)
+-fi], [AC_MSG_RESULT(no)])
+-])
+-
+diff --git a/configure.in b/configure.in
+index 0521252..16653ed 100644
+--- a/configure.in
++++ b/configure.in
+@@ -11,6 +11,7 @@ define([AC_CACHE_LOAD], )dnl
+ define([AC_CACHE_SAVE], )dnl
+ AC_INIT(.autofs-5.1.3)
+ 
++AC_CONFIG_MACRO_DIR([m4])
+ #
+ # autofs installs by default in /usr
+ #
+@@ -124,8 +125,17 @@ AC_SUBST(flagdir)
+ #
+ # Use libtirpc
+ #
+-AF_WITH_LIBTIRPC()
+-AC_SUBST(TIRPCLIB)
++PKG_PROG_PKG_CONFIG()
++AC_ARG_WITH([libtirpc], AS_HELP_STRING([--with-libtirpc], [use libtirpc if available]))
++if test "x$with_libtirpc" = "xyes"; then
++  PKG_CHECK_MODULES([TIRPC],[libtirpc],[
++		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])
++    ])
++  AC_CHECK_FUNCS([getrpcbyname getservbyname])
++fi
+ 
+ #
+ # Optional include dmalloc
+diff --git a/m4/autofs-macros.m4 b/m4/autofs-macros.m4
+new file mode 100644
+index 0000000..31ca602
+--- /dev/null
++++ b/m4/autofs-macros.m4
+@@ -0,0 +1,401 @@
++dnl
++dnl --------------------------------------------------------------------------
++dnl AF_PATH_INCLUDE:
++dnl
++dnl Like AC_PATH_PROGS, but add to the .h file as well
++dnl --------------------------------------------------------------------------
++AC_DEFUN(AF_PATH_INCLUDE,
++[AC_PATH_PROGS($1,$2,$3,$4)
++if test -n "$$1"; then
++  AC_DEFINE(HAVE_$1,1,[define if you have $1])
++  AC_DEFINE_UNQUOTED(PATH_$1, "$$1", [define if you have $1])
++  HAVE_$1=1
++else
++  HAVE_$1=0
++fi
++AC_SUBST(HAVE_$1)])
++
++dnl --------------------------------------------------------------------------
++dnl AF_CHECK_PROG:
++dnl
++dnl Like AC_CHECK_PROG, but fail configure if not found
++dnl and only define PATH_<name> variable
++dnl --------------------------------------------------------------------------
++AC_DEFUN(AF_CHECK_PROG,
++[AC_PATH_PROGS($1,$2,$3,$4)
++if test -n "$$1"; then
++  AC_DEFINE_UNQUOTED(PATH_$1, "$$1", [define if you have $1])
++  PATH_$1="$$1"
++else
++  AC_MSG_ERROR([required program $1 not found])
++fi
++AC_SUBST(PATH_$1)])
++
++dnl --------------------------------------------------------------------------
++dnl AF_CHECK_SSS_LIB:
++dnl
++dnl Check if a sss autofs library exists.
++dnl --------------------------------------------------------------------------
++AC_DEFUN(AF_CHECK_SSS_LIB,
++[if test -z "$sssldir"; then
++  AC_MSG_CHECKING(for sssd autofs library)
++  for libd in /usr/lib64 /usr/lib; do
++    if test -z "$sssldir"; then
++      if test -e "$libd/sssd/modules/$2"; then
++        sssldir=$libd/sssd/modules
++      fi
++    fi
++  done
++  if test -n "$sssldir"; then
++    HAVE_$1=1
++    AC_MSG_RESULT(yes)
++  else
++    HAVE_$1=0
++    AC_MSG_RESULT(no)
++  fi
++fi])
++
++dnl --------------------------------------------------------------------------
++dnl AF_SLOPPY_MOUNT
++dnl
++dnl Check to see if mount(8) supports the sloppy (-s) option, and define
++dnl the cpp variable HAVE_SLOPPY_MOUNT if so.  This requires that MOUNT is
++dnl already defined by a call to AF_PATH_INCLUDE or AC_PATH_PROGS.
++dnl --------------------------------------------------------------------------
++AC_DEFUN(AF_SLOPPY_MOUNT,
++[if test -n "$MOUNT" ; then
++  AC_MSG_CHECKING([if mount accepts the -s option])
++  if "$MOUNT" -s > /dev/null 2>&1 ; then
++    enable_sloppy_mount=yes
++    AC_MSG_RESULT(yes)
++  else
++    AC_MSG_RESULT(no)
++  fi
++fi])
++
++
++dnl --------------------------------------------------------------------------
++dnl AF_LINUX_PROCFS
++dnl
++dnl Check for the Linux /proc filesystem
++dnl --------------------------------------------------------------------------
++AC_DEFUN(AF_LINUX_PROCFS,
++[AC_CACHE_CHECK([for Linux proc filesystem], [ac_cv_linux_procfs],
++	[ac_cv_linux_procfs=no
++	 test "x`cat /proc/sys/kernel/ostype 2>&-`" = "xLinux" && ac_cv_linux_procfs=yes])
++ if test $ac_cv_linux_procfs = yes
++ then
++	AC_DEFINE(HAVE_LINUX_PROCFS, 1,
++		[Define if you have the Linux /proc filesystem.])
++fi])
++
++dnl --------------------------------------------------------------------------
++dnl AF_INIT_D
++dnl
++dnl Check the location of the init.d directory
++dnl --------------------------------------------------------------------------
++AC_DEFUN(AF_INIT_D,
++[if test -z "$initdir"; then
++  AC_MSG_CHECKING([location of the init.d directory])
++  for init_d in /etc/init.d /etc/rc.d/init.d; do
++    if test -z "$initdir"; then
++      if test -d "$init_d"; then
++	initdir="$init_d"
++	AC_MSG_RESULT($initdir)
++      fi
++    fi
++  done
++fi])
++
++dnl --------------------------------------------------------------------------
++dnl AF_CONF_D
++dnl
++dnl Check the location of the configuration defaults directory
++dnl --------------------------------------------------------------------------
++AC_DEFUN(AF_CONF_D,
++[if test -z "$confdir"; then
++  for conf_d in /etc/sysconfig /etc/defaults /etc/conf.d /etc/default; do
++    if test -z "$confdir"; then
++      if test -d "$conf_d"; then
++	confdir="$conf_d"
++      fi
++    fi
++  done
++fi])
++
++dnl --------------------------------------------------------------------------
++dnl AF_MAP_D
++dnl
++dnl Check the location of the autofs maps directory
++dnl --------------------------------------------------------------------------
++AC_DEFUN(AF_MAP_D,
++[if test -z "$mapdir"; then
++  for map_d in /etc/autofs /etc; do
++    if test -z "$mapdir"; then
++      if test -d "$map_d"; then
++	mapdir="$map_d"
++      fi
++    fi
++  done
++fi])
++
++dnl --------------------------------------------------------------------------
++dnl AF_PID_D
++dnl
++dnl Check the location of the pid file directory.
++dnl --------------------------------------------------------------------------
++AC_DEFUN(AF_PID_D,
++[if test -z "$piddir"; then
++  for pid_d in /run /var/run /tmp; do
++    if test -z "$piddir"; then
++      if test -d "$pid_d"; then
++        piddir="$pid_d"
++      fi
++    fi
++  done
++fi])
++
++dnl --------------------------------------------------------------------------
++dnl AF_FIFO_D
++dnl
++dnl Check the location of the autofs fifos directory
++dnl --------------------------------------------------------------------------
++AC_DEFUN(AF_FIFO_D,
++[if test -z "$fifodir"; then
++  for fifo_d in /run /var/run /tmp; do
++    if test -z "$fifodir"; then
++      if test -d "$fifo_d"; then
++        fifodir="$fifo_d"
++      fi
++    fi
++  done
++fi])
++
++dnl --------------------------------------------------------------------------
++dnl AF_FLAG_D
++dnl
++dnl Check the location of the autofs flag file directory
++dnl --------------------------------------------------------------------------
++AC_DEFUN(AF_FLAG_D,
++[if test -z "$flagdir"; then
++  for flag_d in /run /var/run /tmp; do
++    if test -z "$flagdir"; then
++      if test -d "$flag_d"; then
++        flagdir="$flag_d"
++      fi
++    fi
++  done
++fi])
++
++dnl ----------------------------------- ##                   -*- Autoconf -*-
++dnl Check if --with-dmalloc was given.  ##
++dnl From Franc,ois Pinard               ##
++dnl ----------------------------------- ##
++dnl
++dnl Copyright (C) 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2005
++dnl Free Software Foundation, Inc.
++dnl
++dnl This file is free software; the Free Software Foundation
++dnl gives unlimited permission to copy and/or distribute it,
++dnl with or without modifications, as long as this notice is preserved.
++
++dnl serial 3
++
++AC_DEFUN([AM_WITH_DMALLOC],
++[AC_MSG_CHECKING([if malloc debugging is wanted])
++AC_ARG_WITH(dmalloc,
++[  --with-dmalloc          use dmalloc, as in
++			  http://www.dmalloc.com/dmalloc.tar.gz],
++[if test "$withval" = yes; then
++  AC_MSG_RESULT(yes)
++  AC_DEFINE(WITH_DMALLOC,1,
++	    [Define if using the dmalloc debugging malloc package])
++  DMALLOCLIB="-ldmallocth"
++  LDFLAGS="$LDFLAGS -g"
++else
++  AC_MSG_RESULT(no)
++fi], [AC_MSG_RESULT(no)])
++])
++
++dnl --------------------------------------------------------------------------
++dnl AF_WITH_SYSTEMD
++dnl
++dnl Check the location of the systemd unit files directory
++dnl --------------------------------------------------------------------------
++AC_DEFUN([AF_WITH_SYSTEMD],
++[AC_ARG_WITH(systemd,
++[  --with-systemd@<:@=systemddir@:>@  install systemd unit file.  If 'yes'
++			  probe the system for unit directory.
++			  If a path is specified, assume that
++			  is a valid install path.],
++[if test "$withval" = yes; then
++  if test -z "$systemddir"; then
++    AC_MSG_CHECKING([location of the systemd unit files directory])
++    for systemd_d in /usr/lib/systemd/system /usr/lib64/systemd/system /lib/systemd/system /lib64/systemd/system; do
++      if test -z "$systemddir"; then
++        if test -d "$systemd_d"; then
++          systemddir="$systemd_d"
++        fi
++      fi
++    done
++  fi
++  if test -n "$systemddir"; then
++    AC_MSG_RESULT($systemddir)
++  else
++    AC_MSG_RESULT(not found)
++  fi
++else
++ if test "$withval" != no; then
++  systemddir=$withval
++ fi
++fi])
++])
++
++dnl --------------------------------------------------------------------------
++dnl AF_CHECK_LIBXML
++dnl
++dnl Check for lib xml
++dnl --------------------------------------------------------------------------
++AC_DEFUN([AF_CHECK_LIBXML],
++[AC_PATH_PROGS(XML_CONFIG, xml2-config, no)
++AC_MSG_CHECKING(for libxml2)
++if test "$XML_CONFIG" = "no"
++then
++  AC_MSG_RESULT(no)
++  HAVE_LIBXML=0
++else
++  AC_MSG_RESULT(yes)
++  HAVE_LIBXML=1
++  XML_LIBS=`$XML_CONFIG --libs`
++  XML_FLAGS=`$XML_CONFIG --cflags`
++  XML_VER=`$XML_CONFIG --version`
++  XML_MAJOR=`echo $XML_VER|cut -d\. -f1`
++  if test $XML_MAJOR -le 99
++  then
++    XML_MINOR=`echo $XML_VER|cut -d\. -f2`
++    if test $XML_MINOR -le 99
++    then
++      XML_REV=`echo $XML_VER|cut -d\. -f3`
++      if test $XML_REV -le 99; then
++        AC_DEFINE(LIBXML2_WORKAROUND,1, [Use libxml2 tsd usage workaround])
++      fi
++    fi
++  fi
++fi])
++
++dnl --------------------------------------------------------------------------
++dnl AF_CHECK_KRB5
++dnl
++dnl Check for Kerberos 5
++dnl --------------------------------------------------------------------------
++AC_DEFUN([AF_CHECK_KRB5],
++[AC_PATH_PROGS(KRB5_CONFIG, krb5-config, no)
++AC_MSG_CHECKING(for Kerberos library)
++if test "$KRB5_CONFIG" = "no"
++then
++  AC_MSG_RESULT(no)
++  HAVE_KRB5=0
++else
++  AC_MSG_RESULT(yes)
++  HAVE_KRB5=1
++  KRB5_LIBS=`$KRB5_CONFIG --libs`
++  KRB5_FLAGS=`$KRB5_CONFIG --cflags`
++
++  SAVE_CFLAGS=$CFLAGS
++  SAVE_LIBS=$LIBS
++  CFLAGS="$CFLAGS $KRB5_FLAGS"
++  LIBS="$LIBS $KRB5_LIBS"
++
++  AC_CHECK_FUNCS([krb5_principal_get_realm])
++fi])
++
++dnl --------------------------------------------------------------------------
++dnl AF_CHECK_LIBHESIOD
++dnl
++dnl Check for lib hesiod
++dnl --------------------------------------------------------------------------
++AC_DEFUN([AF_CHECK_LIBHESIOD],
++[AC_MSG_CHECKING(for libhesiod)
++
++# save current libs
++af_check_hesiod_save_libs="$LIBS"
++LIBS="$LIBS -lhesiod -lresolv"
++
++AC_TRY_LINK(
++  [ #include <hesiod.h> ],
++  [ void *c; hesiod_init(&c); ],
++  [ HAVE_HESIOD=1
++    LIBHESIOD="$LIBHESIOD -lhesiod -lresolv"
++    AC_MSG_RESULT(yes) ],
++  [ AC_MSG_RESULT(no) ])
++
++# restore libs
++LIBS="$af_check_hesiod_save_libs"
++])
++
++dnl --------------------------------------------------------------------------
++dnl AF_CHECK_FUNC_LDAP_CREATE_PAGE_CONTROL
++dnl
++dnl Check for function ldap_create_page_control
++dnl --------------------------------------------------------------------------
++AC_DEFUN([AF_CHECK_FUNC_LDAP_CREATE_PAGE_CONTROL],
++[AC_MSG_CHECKING(for ldap_create_page_control in -lldap)
++
++# save current libs
++af_check_ldap_create_page_control_save_libs="$LIBS"
++LIBS="$LIBS -lldap"
++
++AC_TRY_LINK(
++  [ #include <ldap.h> ],
++  [ LDAP *ld;
++    ber_int_t ps;
++    struct berval *c;
++    int ic, ret;
++    LDAPControl **clp;
++    ret = ldap_create_page_control(ld,ps,c,ic,clp); ],
++  [ af_have_ldap_create_page_control=yes
++    AC_MSG_RESULT(yes) ],
++  [ AC_MSG_RESULT(no) ])
++
++if test "$af_have_ldap_create_page_control" = "yes"; then
++  AC_DEFINE(HAVE_LDAP_CREATE_PAGE_CONTROL, 1,
++        [Define to 1 if you have the `ldap_create_page_control' function.])
++fi
++
++# restore libs
++LIBS="$af_check_ldap_create_page_control_save_libs"
++])
++
++dnl --------------------------------------------------------------------------
++dnl AF_CHECK_FUNC_LDAP_PARSE_PAGE_CONTROL
++dnl
++dnl Check for function ldap_parse_page_control
++dnl --------------------------------------------------------------------------
++AC_DEFUN([AF_CHECK_FUNC_LDAP_PARSE_PAGE_CONTROL],
++[AC_MSG_CHECKING(for ldap_parse_page_control in -lldap)
++
++# save current libs
++af_check_ldap_parse_page_control_save_libs="$LIBS"
++LIBS="$LIBS -lldap"
++
++AC_TRY_LINK(
++  [ #include <ldap.h> ],
++  [ LDAP *ld;
++    ber_int_t ct;
++    struct berval *c;
++    int ret;
++    LDAPControl **clp;
++    ret = ldap_parse_page_control(ld,clp,ct,c); ],
++  [ af_have_ldap_parse_page_control=yes
++    AC_MSG_RESULT(yes) ],
++  [ AC_MSG_RESULT(no) ])
++
++if test "$af_have_ldap_create_page_control" = "yes"; then
++  AC_DEFINE(HAVE_LDAP_PARSE_PAGE_CONTROL, 1,
++        [Define to 1 if you have the `ldap_parse_page_control' function.])
++fi
++
++# restore libs
++LIBS="$af_check_ldap_parse_page_control_save_libs"
++])
++
+-- 
+2.1.4
+
diff --git a/package/autofs/Config.in b/package/autofs/Config.in
index 8e08357..efb0ec2 100644
--- a/package/autofs/Config.in
+++ b/package/autofs/Config.in
@@ -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
diff --git a/package/autofs/autofs.mk b/package/autofs/autofs.mk
index 148ab1b..eb28306 100644
--- a/package/autofs/autofs.mk
+++ b/package/autofs/autofs.mk
@@ -9,7 +9,8 @@ AUTOFS_SOURCE = autofs-$(AUTOFS_VERSION).tar.xz
 AUTOFS_SITE = $(BR2_KERNEL_MIRROR)/linux/daemons/autofs/v5
 AUTOFS_LICENSE = GPL-2.0+
 AUTOFS_LICENSE_FILES = COPYING COPYRIGHT
-AUTOFS_DEPENDENCIES = host-flex host-bison
+AUTOFS_DEPENDENCIES = host-flex host-bison host-pkgconf
+AUTOFS_AUTORECONF = YES
 
 # autofs looks on the build machine for the path of modprobe, so tell
 # it explicitly where it will be located on the target.
@@ -31,4 +32,11 @@ AUTOFS_CONF_OPTS = \
 
 AUTOFS_MAKE_ENV = DONTSTRIP=1
 
+ifeq ($(BR2_TOOLCHAIN_HAS_NATIVE_RPC),)
+AUTOFS_CONF_OPTS += --with-libtirpc
+AUTOFS_DEPENDENCIES += libtirpc
+else
+AUTOFS_CONF_OPTS += --without-libtirpc
+endif
+
 $(eval $(autotools-package))
-- 
2.1.4

             reply	other threads:[~2017-06-30  8:52 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-30  8:52 Waldemar Brodkorb [this message]
2017-07-01  8:40 ` [Buildroot] [PATCH v6] autofs: allow to use libtirpc instead of internal C implementation Thomas Petazzoni

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170630085229.GA9830@waldemar-brodkorb.de \
    --to=wbx@openadk.org \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.