RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  [email protected]
  Module: rpm                              Date:   10-May-2017 18:57:56
  Branch: rpm-5_4                          Handle: 2017051016575501

  Modified files:           (Branch: rpm-5_4)
    rpm                     CHANGES INSTALL configure.ac
    rpm/rpmio               librpmio.vers rpmcap.c rpmcap.h rpmrpc.c

  Log:
    - capng: stub in process capabilities support.

  Summary:
    Revision    Changes     Path
    1.3501.2.546+1  -0      rpm/CHANGES
    2.134.2.32  +2  -0      rpm/INSTALL
    2.472.2.168 +1180 -124  rpm/configure.ac
    2.199.2.72  +6  -0      rpm/rpmio/librpmio.vers
    1.1.2.2     +199 -10    rpm/rpmio/rpmcap.c
    1.1.2.2     +22 -0      rpm/rpmio/rpmcap.h
    2.99.2.12   +0  -24     rpm/rpmio/rpmrpc.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.3501.2.545 -r1.3501.2.546 CHANGES
  --- rpm/CHANGES       10 May 2017 16:24:03 -0000      1.3501.2.545
  +++ rpm/CHANGES       10 May 2017 16:57:55 -0000      1.3501.2.546
  @@ -1,4 +1,5 @@
   5.4.17 -> 5.4.18:
  +    - jbj: capng: stub in process capabilities support.
       - jbj: use setproctitle from glibc -lbsd (if possible).
       - jbj: cap: verify RPMTAG_FILECAPS if present and not disabled.
       - jbj: cap: attach RPMTAG_FILECAPS if present and not disabled.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/INSTALL
  ============================================================================
  $ cvs diff -u -r2.134.2.31 -r2.134.2.32 INSTALL
  --- rpm/INSTALL       16 Jan 2017 18:58:06 -0000      2.134.2.31
  +++ rpm/INSTALL       10 May 2017 16:57:56 -0000      2.134.2.32
  @@ -54,6 +54,8 @@
   OSSP uuid       optional  1.6.0   1.6.2   http://www.ossp.org/pkg/lib/uuid/
   XAR         [5] optional  1.5.2   1.5.2   http://code.google.com/p/xar/
   Linux KeyUtils  optional  1.2     1.5.9   
http://people.redhat.com/~dhowells/keyutils/
  +Linux libcap2   optional  2.25    2.25    
https://sites.google.com/site/fullycapable/
  +Linux libcap-ng optional  0.7.8   0.7.8   
http://people.redhat.com/sgrubb/libcap-ng
   System libelf   optional  -       -       e.g. 
http://www.mr511.de/software/english.html
   CPUInfo              optional  r143    r143    https://launchpad.net/cpuinfo
   Python          optional  2.7.10  2.7.12  http://python.org
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/configure.ac
  ============================================================================
  $ cvs diff -u -r2.472.2.167 -r2.472.2.168 configure.ac
  --- rpm/configure.ac  8 May 2017 21:17:54 -0000       2.472.2.167
  +++ rpm/configure.ac  10 May 2017 16:57:56 -0000      2.472.2.168
  @@ -1291,9 +1291,9 @@
   
   dnl # standard headers (generic)
   AC_CHECK_HEADERS([dnl
  -    arpa/inet.h err.h fcntl.h float.h getopt.h glob.h grp.h dnl
  +    arpa/inet.h endian.h err.h fcntl.h float.h getopt.h glob.h grp.h dnl
       inttypes.h langinfo.h libgen.h libintl.h limits.h dnl
  -    mach/mach.h malloc.h machine/types.h mcheck.h memory.h dnl
  +    mach/mach.h malloc.h machine/types.h math.h mcheck.h memory.h dnl
       mntent.h mnttab.h netdb.h netinet/in.h netinet/in_systm.h dnl
       paths.h poll.h pwd.h signal.h stdbool.h shadow.h dnl
       stddef.h stdint.h stdlib.h string.h strings.h dnl
  @@ -1380,24 +1380,16 @@
   AC_CHECK_FUNCS(splice tee vmsplice)
   AC_CHECK_FUNCS(sendfile)
   
  -AC_CHECK_HEADERS(sys/memfd.h)
  +AC_CHECK_HEADERS(linux/memfd.h)
   AC_CHECK_FUNCS(memfd_create)
   
  -AC_CHECK_HEADERS(sched.h linux/kcmp.h)
  -AC_CHECK_FUNCS(clone kcmp setns unshare)
  -
  -AC_CHECK_HEADERS(sys/mman.h)
  -AC_CHECK_FUNCS(mincore mprotect mremap msync munmap)
  -AC_CHECK_FUNCS(mlock munlock mlockall)
  +AC_CHECK_HEADERS(sched.h)
  +AC_CHECK_FUNCS(clone setns unshare)
  +AC_CHECK_HEADERS(linux/kcmp.h)
  +AC_CHECK_FUNCS(kcmp)
   
   AC_CHECK_FUNCS(fadvise   posix_fadvise)
   AC_CHECK_FUNCS(fallocate posix_fallocate)
  -AC_CHECK_FUNCS(madvise   posix_madvise)
  -AC_CHECK_FUNCS(memalign  posix_memalign)
  -AC_CHECK_FUNCS(aligned_alloc valloc pvalloc)
  -AC_CHECK_FUNCS(posix_mem_offset)
  -AC_CHECK_FUNCS(posix_typed_mem_open)
  -AC_CHECK_FUNCS(remap_file_pages)
   AC_CHECK_FUNCS(syncfs)
   
   # Find the best function to set timestamps.
  @@ -1434,8 +1426,8 @@
   AC_CHECK_HEADERS(cpuid.h)
   
   dnl # <sys/auxv.h> API
  -AC_CHECK_HEADERS(elf.h sys/procfs.h sys/cdefs.h sys/auxv.h sys/getauxv.h)
  -AC_CHECK_FUNCS(getauxval getauxv)
  +AC_CHECK_HEADERS(elf.h sys/procfs.h sys/cdefs.h sys/auxv.h)
  +AC_CHECK_FUNCS(getauxval)
   
   dnl # <beecrypt/api.h> tries to retrofit an assert(x) macro
   AC_CHECK_HEADERS(assert.h)
  @@ -1645,7 +1637,6 @@
       truncate ftruncate dnl
       getrlimit setrlimit prlimit dnl
       realpath dnl
  -    floor pow sqrt dnl
   dnl
       statvfs fstavfs dnl
   dnl
  @@ -1664,7 +1655,9 @@
       tkill tgkill dnl
       pause dnl
       raise dnl
  -    sigaction sigpending sigreturn sigsuspend sigtimedwait dnl
  +    sigaction sigpending dnl
  +    sigreturn dnl
  +    sigsuspend sigtimedwait dnl
       sigprocmask pthread_sigmask dnl
       sigpause dnl
       sigqueue pthread_sigqueue dnl
  @@ -1672,7 +1665,8 @@
       sigemptyset sigfillset sigaddset sigdelset sigismember dnl
       sigisemptyset sigorset sigandset dnl
       sigset sighold sigrelse sigignore dnl
  -    sigvec sigmask sigblock siggetmask sigsetmask dnl
  +    sigvec dnl
  +    sigmask sigblock siggetmask sigsetmask dnl
   dnl
       socket dnl
   dnl
  @@ -1681,11 +1675,11 @@
       getaddrinfo freeaddrinfo gai_strerror dnl
       getnameinfo dnl
       inet_aton inet_ntoa dnl
  -    inet_pton inet_ntop inet_net_pton dnl
  +    inet_pton inet_ntop dnl
  +    inet_net_pton dnl
       inet_addr inet_network inet_makeaddr inet_lnaof inet_netof dnl
   dnl
       syslog vsyslog openlog closelog setlogmask dnl
  -    getmode setmode strmode dnl
   dnl    setproctitle setproctitle_init dnl
       getrusage getpriority setpriority nice dnl
   dnl
  @@ -1737,9 +1731,29 @@
       time dnl
   ])
   
  -dnl # glibc malloc tracing.
  -AC_CHECK_HEADERS(mcheck.h)
  -AC_CHECK_FUNCS(mtrace muntrace)
  +dnl # glibc malloc info/check/tracing.
  +AC_CHECK_HEADERS(malloc.h)
  +AC_CHECK_FUNCS(malloc calloc realloc free cfree memalign valloc pvalloc)
  +AC_CHECK_FUNCS(mallopt malloc_trim malloc_usable_size malloc_stats)
  +AC_CHECK_MEMBERS([
  +        struct mallinfo.arena,
  +        struct mallinfo.ordblks,
  +        struct mallinfo.smblks,
  +        struct mallinfo.hblks,
  +        struct mallinfo.hblkhd,
  +        struct mallinfo.usmblks,
  +        struct mallinfo.fsmblks,
  +        struct mallinfo.uordblks,
  +        struct mallinfo.fordblks,
  +        struct mallinfo.keepcost],
  +    [   AC_DEFINE(HAVE_STRUCT_MALLINFO, 1, [Define as 1 if you have "struct 
mallinfo" (only glibc?)])
  +    ], [],
  +    [#include <malloc.h>])
  +AC_CHECK_FUNCS(mallinfo)
  +AC_CHECK_FUNCS(malloc_get_state malloc_set_state)
  +AC_CHECK_FUNCS(__default_morecore __malloc_check_init)
  +AC_CHECK_FUNCS(posix_memalign)
  +AC_CHECK_FUNCS(aligned_alloc)
   
   dnl # check for getmntent and alternatives
   AC_CHECK_FUNC(getmntent, AC_DEFINE(HAVE_GETMNTENT, 1, [Define if you have 
the getmntent() function]), [
  @@ -1769,8 +1783,11 @@
     AC_CHECK_HEADERS(bsd/unistd.h)
     # getmode is not in the default libraries.  See if it's in some other.
     for lib in bsd; do
  -    AC_CHECK_LIB(bsd, getmode, [AC_DEFINE(HAVE_SYSLOG)
  -      LIBS="$LIBS -l$lib"; break])
  +    AC_CHECK_LIB(bsd, getmode,
  +      [ AC_DEFINE(HAVE_GETMODE)
  +        AC_DEFINE(HAVE_SETMODE)
  +        AC_DEFINE(HAVE_STRMODE)
  +        LIBS="$LIBS -l$lib"; break])
     done
   fi
   
  @@ -2213,9 +2230,10 @@
   dnl # BeeCrypt
   RPM_CHECK_LIB(
       [BeeCrypt], [beecrypt],
  -    [beecrypt], [mpfprintln], [beecrypt/api.h],
  +    [beecrypt], [mpfprintln], [beecrypt/mp.h],
       [yes,internal:external], [beecrypt:include],
  -    [], [ AC_MSG_ERROR([mandatory BeeCrypt library not found]) ])
  +    [
  +    ], [ AC_MSG_ERROR([mandatory BeeCrypt library not found]) ])
   if test ".$WITH_BEECRYPT" = .no; then
       AC_MSG_ERROR([BEECRYPT is mandatory])
   fi
  @@ -2367,6 +2385,240 @@
         AC_CHECK_LIB([selinux], [rpm_execcon], [
             AC_DEFINE(HAVE_SELINUX_RPM_EXECCON, 1, [Define to 1 if you have 
the rpm_execcon() function.])
         ])
  +        AC_CHECK_FUNCS(avc_add_callback)
  +        AC_CHECK_FUNCS(avc_audit)
  +        AC_CHECK_FUNCS(avc_av_stats)
  +        AC_CHECK_FUNCS(avc_cache_stats)
  +        AC_CHECK_FUNCS(avc_cleanup)
  +        AC_CHECK_FUNCS(avc_compute_create)
  +        AC_CHECK_FUNCS(avc_compute_member)
  +        AC_CHECK_FUNCS(avc_context_to_sid)
  +        AC_CHECK_FUNCS(avc_context_to_sid_raw)
  +        AC_CHECK_FUNCS(avc_destroy)
  +        AC_CHECK_FUNCS(avc_get_initial_sid)
  +        AC_CHECK_FUNCS(avc_has_perm)
  +        AC_CHECK_FUNCS(avc_has_perm_noaudit)
  +        AC_CHECK_FUNCS(avc_init)
  +        AC_CHECK_FUNCS(avc_netlink_acquire_fd)
  +        AC_CHECK_FUNCS(avc_netlink_check_nb)
  +        AC_CHECK_FUNCS(avc_netlink_close)
  +        AC_CHECK_FUNCS(avc_netlink_loop)
  +        AC_CHECK_FUNCS(avc_netlink_open)
  +        AC_CHECK_FUNCS(avc_netlink_release_fd)
  +        AC_CHECK_FUNCS(avc_open)
  +        AC_CHECK_FUNCS(avc_reset)
  +        AC_CHECK_FUNCS(avc_sid_stats)
  +        AC_CHECK_FUNCS(avc_sid_to_context)
  +        AC_CHECK_FUNCS(avc_sid_to_context_raw)
  +        AC_CHECK_FUNCS(checkPasswdAccess)
  +        AC_CHECK_FUNCS(context_free)
  +        AC_CHECK_FUNCS(context_new)
  +        AC_CHECK_FUNCS(context_range_get)
  +        AC_CHECK_FUNCS(context_range_set)
  +        AC_CHECK_FUNCS(context_role_get)
  +        AC_CHECK_FUNCS(context_role_set)
  +        AC_CHECK_FUNCS(context_str)
  +        AC_CHECK_FUNCS(context_type_get)
  +        AC_CHECK_FUNCS(context_type_set)
  +        AC_CHECK_FUNCS(context_user_get)
  +        AC_CHECK_FUNCS(context_user_set)
  +        AC_CHECK_FUNCS(fgetfilecon)
  +        AC_CHECK_FUNCS(fgetfilecon_raw)
  +        AC_CHECK_FUNCS(_fini)
  +        AC_CHECK_FUNCS(fini_selinuxmnt)
  +        AC_CHECK_FUNCS(freecon)
  +        AC_CHECK_FUNCS(freeconary)
  +        AC_CHECK_FUNCS(fsetfilecon)
  +        AC_CHECK_FUNCS(fsetfilecon_raw)
  +        AC_CHECK_FUNCS(getcon)
  +        AC_CHECK_FUNCS(getcon_raw)
  +        AC_CHECK_FUNCS(get_default_context)
  +        AC_CHECK_FUNCS(get_default_context_with_level)
  +        AC_CHECK_FUNCS(get_default_context_with_role)
  +        AC_CHECK_FUNCS(get_default_context_with_rolelevel)
  +        AC_CHECK_FUNCS(get_default_type)
  +        AC_CHECK_FUNCS(getexeccon)
  +        AC_CHECK_FUNCS(getexeccon_raw)
  +        AC_CHECK_FUNCS(getfilecon)
  +        AC_CHECK_FUNCS(getfilecon_raw)
  +        AC_CHECK_FUNCS(getfscreatecon)
  +        AC_CHECK_FUNCS(getfscreatecon_raw)
  +        AC_CHECK_FUNCS(getkeycreatecon)
  +        AC_CHECK_FUNCS(getkeycreatecon_raw)
  +        AC_CHECK_FUNCS(get_ordered_context_list)
  +        AC_CHECK_FUNCS(get_ordered_context_list_with_level)
  +        AC_CHECK_FUNCS(getpeercon)
  +        AC_CHECK_FUNCS(getpeercon_raw)
  +        AC_CHECK_FUNCS(getpidcon)
  +        AC_CHECK_FUNCS(getpidcon_raw)
  +        AC_CHECK_FUNCS(getprevcon)
  +        AC_CHECK_FUNCS(getprevcon_raw)
  +        AC_CHECK_FUNCS(getseuser)
  +        AC_CHECK_FUNCS(getseuserbyname)
  +        AC_CHECK_FUNCS(getsockcreatecon)
  +        AC_CHECK_FUNCS(getsockcreatecon_raw)
  +        AC_CHECK_FUNCS(_init)
  +        AC_CHECK_FUNCS(is_context_customizable)
  +        AC_CHECK_FUNCS(is_selinux_enabled)
  +        AC_CHECK_FUNCS(is_selinux_mls_enabled)
  +        AC_CHECK_FUNCS(lgetfilecon)
  +        AC_CHECK_FUNCS(lgetfilecon_raw)
  +        AC_CHECK_FUNCS(lsetfilecon)
  +        AC_CHECK_FUNCS(lsetfilecon_raw)
  +        AC_CHECK_FUNCS(manual_user_enter_context)
  +        AC_CHECK_FUNCS(map_class)
  +        AC_CHECK_FUNCS(map_decision)
  +        AC_CHECK_FUNCS(map_perm)
  +        AC_CHECK_FUNCS(matchmediacon)
  +        AC_CHECK_FUNCS(matchpathcon)
  +        AC_CHECK_FUNCS(matchpathcon_checkmatches)
  +        AC_CHECK_FUNCS(matchpathcon_filespec_add)
  +        AC_CHECK_FUNCS(matchpathcon_filespec_destroy)
  +        AC_CHECK_FUNCS(matchpathcon_filespec_eval)
  +        AC_CHECK_FUNCS(matchpathcon_fini)
  +        AC_CHECK_FUNCS(matchpathcon_index)
  +        AC_CHECK_FUNCS(matchpathcon_init)
  +        AC_CHECK_FUNCS(matchpathcon_init_prefix)
  +        AC_CHECK_FUNCS(mode_to_security_class)
  +        AC_CHECK_FUNCS(print_access_vector)
  +        AC_CHECK_FUNCS(query_user_context)
  +        AC_CHECK_FUNCS(realpath_not_final)
  +        AC_CHECK_FUNCS(security_av_perm_to_string)
  +        AC_CHECK_FUNCS(security_av_string)
  +        AC_CHECK_FUNCS(security_canonicalize_context)
  +        AC_CHECK_FUNCS(security_canonicalize_context_raw)
  +        AC_CHECK_FUNCS(security_check_context)
  +        AC_CHECK_FUNCS(security_check_context_raw)
  +        AC_CHECK_FUNCS(security_class_to_string)
  +        AC_CHECK_FUNCS(security_commit_booleans)
  +        AC_CHECK_FUNCS(security_compute_av)
  +        AC_CHECK_FUNCS(security_compute_av_flags)
  +        AC_CHECK_FUNCS(security_compute_av_flags_raw)
  +        AC_CHECK_FUNCS(security_compute_av_raw)
  +        AC_CHECK_FUNCS(security_compute_create)
  +        AC_CHECK_FUNCS(security_compute_create_name)
  +        AC_CHECK_FUNCS(security_compute_create_name_raw)
  +        AC_CHECK_FUNCS(security_compute_create_raw)
  +        AC_CHECK_FUNCS(security_compute_member)
  +        AC_CHECK_FUNCS(security_compute_member_raw)
  +        AC_CHECK_FUNCS(security_compute_relabel)
  +        AC_CHECK_FUNCS(security_compute_relabel_raw)
  +        AC_CHECK_FUNCS(security_compute_user)
  +        AC_CHECK_FUNCS(security_compute_user_raw)
  +        AC_CHECK_FUNCS(security_deny_unknown)
  +        AC_CHECK_FUNCS(security_disable)
  +        AC_CHECK_FUNCS(security_get_boolean_active)
  +        AC_CHECK_FUNCS(security_get_boolean_names)
  +        AC_CHECK_FUNCS(security_get_boolean_pending)
  +        AC_CHECK_FUNCS(security_getenforce)
  +        AC_CHECK_FUNCS(security_get_initial_context)
  +        AC_CHECK_FUNCS(security_get_initial_context_raw)
  +        AC_CHECK_FUNCS(security_load_booleans)
  +        AC_CHECK_FUNCS(security_load_policy)
  +        AC_CHECK_FUNCS(security_policyvers)
  +        AC_CHECK_FUNCS(security_set_boolean)
  +        AC_CHECK_FUNCS(security_set_boolean_list)
  +        AC_CHECK_FUNCS(security_setenforce)
  +        AC_CHECK_FUNCS(selabel_close)
  +        AC_CHECK_FUNCS(selabel_cmp)
  +        AC_CHECK_FUNCS(selabel_digest)
  +        AC_CHECK_FUNCS(selabel_lookup)
  +        AC_CHECK_FUNCS(selabel_lookup_best_match)
  +        AC_CHECK_FUNCS(selabel_lookup_best_match_raw)
  +        AC_CHECK_FUNCS(selabel_lookup_raw)
  +        AC_CHECK_FUNCS(selabel_open)
  +        AC_CHECK_FUNCS(selabel_partial_match)
  +        AC_CHECK_FUNCS(selabel_stats)
  +        AC_CHECK_FUNCS(selabel_subs_init)
  +        AC_CHECK_FUNCS(selinux_binary_policy_path)
  +        AC_CHECK_FUNCS(selinux_booleans_path)
  +        AC_CHECK_FUNCS(selinux_booleans_subs_path)
  +        AC_CHECK_FUNCS(selinux_boolean_sub)
  +        AC_CHECK_FUNCS(selinux_check_access)
  +        AC_CHECK_FUNCS(selinux_check_passwd_access)
  +        AC_CHECK_FUNCS(selinux_check_securetty_context)
  +        AC_CHECK_FUNCS(selinux_colors_path)
  +        AC_CHECK_FUNCS(selinux_contexts_path)
  +        AC_CHECK_FUNCS(selinux_current_policy_path)
  +        AC_CHECK_FUNCS(selinux_customizable_types_path)
  +        AC_CHECK_FUNCS(selinux_default_context_path)
  +        AC_CHECK_FUNCS(selinux_default_type_path)
  +        AC_CHECK_FUNCS(selinux_failsafe_context_path)
  +        AC_CHECK_FUNCS(selinux_file_context_cmp)
  +        AC_CHECK_FUNCS(selinux_file_context_homedir_path)
  +        AC_CHECK_FUNCS(selinux_file_context_local_path)
  +        AC_CHECK_FUNCS(selinux_file_context_path)
  +        AC_CHECK_FUNCS(selinux_file_context_subs_dist_path)
  +        AC_CHECK_FUNCS(selinux_file_context_subs_path)
  +        AC_CHECK_FUNCS(selinux_file_context_verify)
  +        AC_CHECK_FUNCS(selinuxfs_exists)
  +        AC_CHECK_FUNCS(selinux_get_callback)
  +        AC_CHECK_FUNCS(selinux_getenforcemode)
  +        AC_CHECK_FUNCS(selinux_getpolicytype)
  +        AC_CHECK_FUNCS(selinux_homedir_context_path)
  +        AC_CHECK_FUNCS(selinux_init_load_policy)
  +        AC_CHECK_FUNCS(selinux_lsetfilecon_default)
  +        AC_CHECK_FUNCS(selinux_lxc_contexts_path)
  +        AC_CHECK_FUNCS(selinux_media_context_path)
  +        AC_CHECK_FUNCS(selinux_mkload_policy)
  +        AC_CHECK_FUNCS(selinux_netfilter_context_path)
  +        AC_CHECK_FUNCS(selinux_openrc_contexts_path)
  +        AC_CHECK_FUNCS(selinux_openssh_contexts_path)
  +        AC_CHECK_FUNCS(selinux_path)
  +        AC_CHECK_FUNCS(selinux_policy_root)
  +        AC_CHECK_FUNCS(selinux_raw_context_to_color)
  +        AC_CHECK_FUNCS(selinux_raw_to_trans_context)
  +        AC_CHECK_FUNCS(selinux_removable_context_path)
  +        AC_CHECK_FUNCS(selinux_reset_config)
  +        AC_CHECK_FUNCS(selinux_restorecon)
  +        AC_CHECK_FUNCS(selinux_restorecon_default_handle)
  +        AC_CHECK_FUNCS(selinux_restorecon_set_exclude_list)
  +        AC_CHECK_FUNCS(selinux_restorecon_set_sehandle)
  +        AC_CHECK_FUNCS(selinux_securetty_types_path)
  +        AC_CHECK_FUNCS(selinux_sepgsql_context_path)
  +        AC_CHECK_FUNCS(selinux_set_callback)
  +        AC_CHECK_FUNCS(selinux_set_mapping)
  +        AC_CHECK_FUNCS(selinux_set_policy_root)
  +        AC_CHECK_FUNCS(selinux_snapperd_contexts_path)
  +        AC_CHECK_FUNCS(selinux_status_close)
  +        AC_CHECK_FUNCS(selinux_status_deny_unknown)
  +        AC_CHECK_FUNCS(selinux_status_getenforce)
  +        AC_CHECK_FUNCS(selinux_status_open)
  +        AC_CHECK_FUNCS(selinux_status_policyload)
  +        AC_CHECK_FUNCS(selinux_status_updated)
  +        AC_CHECK_FUNCS(selinux_systemd_contexts_path)
  +        AC_CHECK_FUNCS(selinux_translations_path)
  +        AC_CHECK_FUNCS(selinux_trans_to_raw_context)
  +        AC_CHECK_FUNCS(selinux_user_contexts_path)
  +        AC_CHECK_FUNCS(selinux_usersconf_path)
  +        AC_CHECK_FUNCS(selinux_users_path)
  +        AC_CHECK_FUNCS(selinux_virtual_domain_context_path)
  +        AC_CHECK_FUNCS(selinux_virtual_image_context_path)
  +        AC_CHECK_FUNCS(selinux_x_context_path)
  +        AC_CHECK_FUNCS(setcon)
  +        AC_CHECK_FUNCS(setcon_raw)
  +        AC_CHECK_FUNCS(setexeccon)
  +        AC_CHECK_FUNCS(setexeccon_raw)
  +        AC_CHECK_FUNCS(setexecfilecon)
  +        AC_CHECK_FUNCS(setfilecon)
  +        AC_CHECK_FUNCS(setfilecon_raw)
  +        AC_CHECK_FUNCS(setfscreatecon)
  +        AC_CHECK_FUNCS(setfscreatecon_raw)
  +        AC_CHECK_FUNCS(setkeycreatecon)
  +        AC_CHECK_FUNCS(setkeycreatecon_raw)
  +        AC_CHECK_FUNCS(set_matchpathcon_canoncon)
  +        AC_CHECK_FUNCS(set_matchpathcon_flags)
  +        AC_CHECK_FUNCS(set_matchpathcon_invalidcon)
  +        AC_CHECK_FUNCS(set_matchpathcon_printf)
  +        AC_CHECK_FUNCS(set_selinuxmnt)
  +        AC_CHECK_FUNCS(setsockcreatecon)
  +        AC_CHECK_FUNCS(setsockcreatecon_raw)
  +        AC_CHECK_FUNCS(sidget)
  +        AC_CHECK_FUNCS(sidput)
  +        AC_CHECK_FUNCS(string_to_av_perm)
  +        AC_CHECK_FUNCS(string_to_security_class)
  +        AC_CHECK_FUNCS(unmap_class)
  +        AC_CHECK_FUNCS(unmap_perm)
       ], [])
   
   dnl # Libsepol
  @@ -2375,6 +2627,221 @@
       [sepol], [sepol_policydb_create], [sepol/sepol.h],
       [no,external:none], [],
       [ AC_DEFINE(WITH_SEPOL, 1, [Define if building with Libsepol])
  +        AC_CHECK_FUNCS(cil_add_file)
  +        AC_CHECK_FUNCS(cil_build_policydb)
  +        AC_CHECK_FUNCS(cil_build_policydb)
  +        AC_CHECK_FUNCS(cil_compile)
  +        AC_CHECK_FUNCS(cil_compile)
  +        AC_CHECK_FUNCS(cil_db_destroy)
  +        AC_CHECK_FUNCS(cil_db_init)
  +        AC_CHECK_FUNCS(cil_filecons_to_string)
  +        AC_CHECK_FUNCS(cil_filecons_to_string)
  +        AC_CHECK_FUNCS(cil_selinuxusers_to_string)
  +        AC_CHECK_FUNCS(cil_selinuxusers_to_string)
  +        AC_CHECK_FUNCS(cil_set_disable_dontaudit)
  +        AC_CHECK_FUNCS(cil_set_disable_neverallow)
  +        AC_CHECK_FUNCS(cil_set_handle_unknown)
  +        AC_CHECK_FUNCS(cil_set_log_handler)
  +        AC_CHECK_FUNCS(cil_set_log_level)
  +        AC_CHECK_FUNCS(cil_set_mls)
  +        AC_CHECK_FUNCS(cil_set_policy_version)
  +        AC_CHECK_FUNCS(cil_set_preserve_tunables)
  +        AC_CHECK_FUNCS(cil_set_target_platform)
  +        AC_CHECK_FUNCS(cil_userprefixes_to_string)
  +        AC_CHECK_FUNCS(cil_userprefixes_to_string)
  +        AC_CHECK_FUNCS(expand_module_avrules)
  +        AC_CHECK_FUNCS(sepol_bool_clone)
  +        AC_CHECK_FUNCS(sepol_bool_compare)
  +        AC_CHECK_FUNCS(sepol_bool_compare2)
  +        AC_CHECK_FUNCS(sepol_bool_count)
  +        AC_CHECK_FUNCS(sepol_bool_create)
  +        AC_CHECK_FUNCS(sepol_bool_exists)
  +        AC_CHECK_FUNCS(sepol_bool_free)
  +        AC_CHECK_FUNCS(sepol_bool_get_name)
  +        AC_CHECK_FUNCS(sepol_bool_get_value)
  +        AC_CHECK_FUNCS(sepol_bool_iterate)
  +        AC_CHECK_FUNCS(sepol_bool_key_create)
  +        AC_CHECK_FUNCS(sepol_bool_key_extract)
  +        AC_CHECK_FUNCS(sepol_bool_key_free)
  +        AC_CHECK_FUNCS(sepol_bool_key_unpack)
  +        AC_CHECK_FUNCS(sepol_bool_query)
  +        AC_CHECK_FUNCS(sepol_bool_set)
  +        AC_CHECK_FUNCS(sepol_bool_set_name)
  +        AC_CHECK_FUNCS(sepol_bool_set_value)
  +        AC_CHECK_FUNCS(sepol_check_context)
  +        AC_CHECK_FUNCS(sepol_context_check)
  +        AC_CHECK_FUNCS(sepol_context_clone)
  +        AC_CHECK_FUNCS(sepol_context_create)
  +        AC_CHECK_FUNCS(sepol_context_free)
  +        AC_CHECK_FUNCS(sepol_context_from_string)
  +        AC_CHECK_FUNCS(sepol_context_get_mls)
  +        AC_CHECK_FUNCS(sepol_context_get_role)
  +        AC_CHECK_FUNCS(sepol_context_get_type)
  +        AC_CHECK_FUNCS(sepol_context_get_user)
  +        AC_CHECK_FUNCS(sepol_context_set_mls)
  +        AC_CHECK_FUNCS(sepol_context_set_role)
  +        AC_CHECK_FUNCS(sepol_context_set_type)
  +        AC_CHECK_FUNCS(sepol_context_set_user)
  +        AC_CHECK_FUNCS(sepol_context_to_string)
  +        AC_CHECK_FUNCS(sepol_debug)
  +        AC_CHECK_FUNCS(sepol_expand_module)
  +        AC_CHECK_FUNCS(sepol_genbools)
  +        AC_CHECK_FUNCS(sepol_genbools_array)
  +        AC_CHECK_FUNCS(sepol_genusers)
  +        AC_CHECK_FUNCS(sepol_get_disable_dontaudit)
  +        AC_CHECK_FUNCS(sepol_get_preserve_tunables)
  +        AC_CHECK_FUNCS(sepol_handle_create)
  +        AC_CHECK_FUNCS(sepol_handle_destroy)
  +        AC_CHECK_FUNCS(sepol_iface_clone)
  +        AC_CHECK_FUNCS(sepol_iface_compare)
  +        AC_CHECK_FUNCS(sepol_iface_compare2)
  +        AC_CHECK_FUNCS(sepol_iface_count)
  +        AC_CHECK_FUNCS(sepol_iface_create)
  +        AC_CHECK_FUNCS(sepol_iface_exists)
  +        AC_CHECK_FUNCS(sepol_iface_free)
  +        AC_CHECK_FUNCS(sepol_iface_get_ifcon)
  +        AC_CHECK_FUNCS(sepol_iface_get_msgcon)
  +        AC_CHECK_FUNCS(sepol_iface_get_name)
  +        AC_CHECK_FUNCS(sepol_iface_iterate)
  +        AC_CHECK_FUNCS(sepol_iface_key_create)
  +        AC_CHECK_FUNCS(sepol_iface_key_extract)
  +        AC_CHECK_FUNCS(sepol_iface_key_free)
  +        AC_CHECK_FUNCS(sepol_iface_key_unpack)
  +        AC_CHECK_FUNCS(sepol_iface_modify)
  +        AC_CHECK_FUNCS(sepol_iface_query)
  +        AC_CHECK_FUNCS(sepol_iface_set_ifcon)
  +        AC_CHECK_FUNCS(sepol_iface_set_msgcon)
  +        AC_CHECK_FUNCS(sepol_iface_set_name)
  +        AC_CHECK_FUNCS(sepol_link_modules)
  +        AC_CHECK_FUNCS(sepol_link_packages)
  +        AC_CHECK_FUNCS(sepol_mls_check)
  +        AC_CHECK_FUNCS(sepol_mls_contains)
  +        AC_CHECK_FUNCS(sepol_module_package_create)
  +        AC_CHECK_FUNCS(sepol_module_package_free)
  +        AC_CHECK_FUNCS(sepol_module_package_get_file_contexts)
  +        AC_CHECK_FUNCS(sepol_module_package_get_file_contexts_len)
  +        AC_CHECK_FUNCS(sepol_module_package_get_netfilter_contexts)
  +        AC_CHECK_FUNCS(sepol_module_package_get_netfilter_contexts_len)
  +        AC_CHECK_FUNCS(sepol_module_package_get_policy)
  +        AC_CHECK_FUNCS(sepol_module_package_get_seusers)
  +        AC_CHECK_FUNCS(sepol_module_package_get_seusers_len)
  +        AC_CHECK_FUNCS(sepol_module_package_get_user_extra)
  +        AC_CHECK_FUNCS(sepol_module_package_get_user_extra_len)
  +        AC_CHECK_FUNCS(sepol_module_package_info)
  +        AC_CHECK_FUNCS(sepol_module_package_read)
  +        AC_CHECK_FUNCS(sepol_module_package_set_file_contexts)
  +        AC_CHECK_FUNCS(sepol_module_package_set_netfilter_contexts)
  +        AC_CHECK_FUNCS(sepol_module_package_set_seusers)
  +        AC_CHECK_FUNCS(sepol_module_package_set_user_extra)
  +        AC_CHECK_FUNCS(sepol_module_package_to_cil)
  +        AC_CHECK_FUNCS(sepol_module_package_write)
  +        AC_CHECK_FUNCS(sepol_module_policydb_to_cil)
  +        AC_CHECK_FUNCS(sepol_msg_get_channel)
  +        AC_CHECK_FUNCS(sepol_msg_get_fname)
  +        AC_CHECK_FUNCS(sepol_msg_get_level)
  +        AC_CHECK_FUNCS(sepol_msg_set_callback)
  +        AC_CHECK_FUNCS(sepol_node_clone)
  +        AC_CHECK_FUNCS(sepol_node_compare)
  +        AC_CHECK_FUNCS(sepol_node_compare2)
  +        AC_CHECK_FUNCS(sepol_node_count)
  +        AC_CHECK_FUNCS(sepol_node_create)
  +        AC_CHECK_FUNCS(sepol_node_exists)
  +        AC_CHECK_FUNCS(sepol_node_free)
  +        AC_CHECK_FUNCS(sepol_node_get_addr)
  +        AC_CHECK_FUNCS(sepol_node_get_addr_bytes)
  +        AC_CHECK_FUNCS(sepol_node_get_con)
  +        AC_CHECK_FUNCS(sepol_node_get_mask)
  +        AC_CHECK_FUNCS(sepol_node_get_mask_bytes)
  +        AC_CHECK_FUNCS(sepol_node_get_proto)
  +        AC_CHECK_FUNCS(sepol_node_get_proto_str)
  +        AC_CHECK_FUNCS(sepol_node_iterate)
  +        AC_CHECK_FUNCS(sepol_node_key_create)
  +        AC_CHECK_FUNCS(sepol_node_key_extract)
  +        AC_CHECK_FUNCS(sepol_node_key_free)
  +        AC_CHECK_FUNCS(sepol_node_key_unpack)
  +        AC_CHECK_FUNCS(sepol_node_modify)
  +        AC_CHECK_FUNCS(sepol_node_query)
  +        AC_CHECK_FUNCS(sepol_node_set_addr)
  +        AC_CHECK_FUNCS(sepol_node_set_addr_bytes)
  +        AC_CHECK_FUNCS(sepol_node_set_con)
  +        AC_CHECK_FUNCS(sepol_node_set_mask)
  +        AC_CHECK_FUNCS(sepol_node_set_mask_bytes)
  +        AC_CHECK_FUNCS(sepol_node_set_proto)
  +        AC_CHECK_FUNCS(sepol_policydb_compat_net)
  +        AC_CHECK_FUNCS(sepol_policydb_create)
  +        AC_CHECK_FUNCS(sepol_policydb_free)
  +        AC_CHECK_FUNCS(sepol_policydb_from_image)
  +        AC_CHECK_FUNCS(sepol_policydb_mls_enabled)
  +        AC_CHECK_FUNCS(sepol_policydb_read)
  +        AC_CHECK_FUNCS(sepol_policydb_set_handle_unknown)
  +        AC_CHECK_FUNCS(sepol_policydb_set_target_platform)
  +        AC_CHECK_FUNCS(sepol_policydb_set_typevers)
  +        AC_CHECK_FUNCS(sepol_policydb_set_vers)
  +        AC_CHECK_FUNCS(sepol_policydb_to_image)
  +        AC_CHECK_FUNCS(sepol_policydb_write)
  +        AC_CHECK_FUNCS(sepol_policy_file_create)
  +        AC_CHECK_FUNCS(sepol_policy_file_free)
  +        AC_CHECK_FUNCS(sepol_policy_file_get_len)
  +        AC_CHECK_FUNCS(sepol_policy_file_set_fp)
  +        AC_CHECK_FUNCS(sepol_policy_file_set_handle)
  +        AC_CHECK_FUNCS(sepol_policy_file_set_mem)
  +        AC_CHECK_FUNCS(sepol_policy_kern_vers_max)
  +        AC_CHECK_FUNCS(sepol_policy_kern_vers_min)
  +        AC_CHECK_FUNCS(sepol_port_clone)
  +        AC_CHECK_FUNCS(sepol_port_compare)
  +        AC_CHECK_FUNCS(sepol_port_compare2)
  +        AC_CHECK_FUNCS(sepol_port_count)
  +        AC_CHECK_FUNCS(sepol_port_create)
  +        AC_CHECK_FUNCS(sepol_port_exists)
  +        AC_CHECK_FUNCS(sepol_port_free)
  +        AC_CHECK_FUNCS(sepol_port_get_con)
  +        AC_CHECK_FUNCS(sepol_port_get_high)
  +        AC_CHECK_FUNCS(sepol_port_get_low)
  +        AC_CHECK_FUNCS(sepol_port_get_proto)
  +        AC_CHECK_FUNCS(sepol_port_get_proto_str)
  +        AC_CHECK_FUNCS(sepol_port_iterate)
  +        AC_CHECK_FUNCS(sepol_port_key_create)
  +        AC_CHECK_FUNCS(sepol_port_key_extract)
  +        AC_CHECK_FUNCS(sepol_port_key_free)
  +        AC_CHECK_FUNCS(sepol_port_key_unpack)
  +        AC_CHECK_FUNCS(sepol_port_modify)
  +        AC_CHECK_FUNCS(sepol_port_query)
  +        AC_CHECK_FUNCS(sepol_port_set_con)
  +        AC_CHECK_FUNCS(sepol_port_set_port)
  +        AC_CHECK_FUNCS(sepol_port_set_proto)
  +        AC_CHECK_FUNCS(sepol_port_set_range)
  +        AC_CHECK_FUNCS(sepol_ppfile_to_module_package)
  +        AC_CHECK_FUNCS(sepol_set_delusers)
  +        AC_CHECK_FUNCS(sepol_set_disable_dontaudit)
  +        AC_CHECK_FUNCS(sepol_set_expand_consume_base)
  +        AC_CHECK_FUNCS(sepol_set_policydb_from_file)
  +        AC_CHECK_FUNCS(sepol_set_preserve_tunables)
  +        AC_CHECK_FUNCS(sepol_user_add_role)
  +        AC_CHECK_FUNCS(sepol_user_clone)
  +        AC_CHECK_FUNCS(sepol_user_compare)
  +        AC_CHECK_FUNCS(sepol_user_compare2)
  +        AC_CHECK_FUNCS(sepol_user_count)
  +        AC_CHECK_FUNCS(sepol_user_create)
  +        AC_CHECK_FUNCS(sepol_user_del_role)
  +        AC_CHECK_FUNCS(sepol_user_exists)
  +        AC_CHECK_FUNCS(sepol_user_free)
  +        AC_CHECK_FUNCS(sepol_user_get_mlslevel)
  +        AC_CHECK_FUNCS(sepol_user_get_mlsrange)
  +        AC_CHECK_FUNCS(sepol_user_get_name)
  +        AC_CHECK_FUNCS(sepol_user_get_num_roles)
  +        AC_CHECK_FUNCS(sepol_user_get_roles)
  +        AC_CHECK_FUNCS(sepol_user_has_role)
  +        AC_CHECK_FUNCS(sepol_user_iterate)
  +        AC_CHECK_FUNCS(sepol_user_key_create)
  +        AC_CHECK_FUNCS(sepol_user_key_extract)
  +        AC_CHECK_FUNCS(sepol_user_key_free)
  +        AC_CHECK_FUNCS(sepol_user_key_unpack)
  +        AC_CHECK_FUNCS(sepol_user_modify)
  +        AC_CHECK_FUNCS(sepol_user_query)
  +        AC_CHECK_FUNCS(sepol_user_set_mlslevel)
  +        AC_CHECK_FUNCS(sepol_user_set_mlsrange)
  +        AC_CHECK_FUNCS(sepol_user_set_name)
  +        AC_CHECK_FUNCS(sepol_user_set_roles)
       ], [])
   
   dnl # Libsemanage
  @@ -2385,6 +2852,295 @@
       [no,external:none], [],
       [ AC_DEFINE(WITH_SEMANAGE, 1, [Define if building with Libsemanage])
         WITH_SEMANAGE_SEMODULE="semodule spooktool"
  +        AC_CHECK_FUNCS(semanage_access_check)
  +        AC_CHECK_FUNCS(semanage_begin_transaction)
  +        AC_CHECK_FUNCS(semanage_bool_clone)
  +        AC_CHECK_FUNCS(semanage_bool_compare)
  +        AC_CHECK_FUNCS(semanage_bool_compare2)
  +        AC_CHECK_FUNCS(semanage_bool_count)
  +        AC_CHECK_FUNCS(semanage_bool_count_active)
  +        AC_CHECK_FUNCS(semanage_bool_count_local)
  +        AC_CHECK_FUNCS(semanage_bool_create)
  +        AC_CHECK_FUNCS(semanage_bool_del_local)
  +        AC_CHECK_FUNCS(semanage_bool_exists)
  +        AC_CHECK_FUNCS(semanage_bool_exists_active)
  +        AC_CHECK_FUNCS(semanage_bool_exists_local)
  +        AC_CHECK_FUNCS(semanage_bool_free)
  +        AC_CHECK_FUNCS(semanage_bool_get_name)
  +        AC_CHECK_FUNCS(semanage_bool_get_value)
  +        AC_CHECK_FUNCS(semanage_bool_iterate)
  +        AC_CHECK_FUNCS(semanage_bool_iterate_active)
  +        AC_CHECK_FUNCS(semanage_bool_iterate_local)
  +        AC_CHECK_FUNCS(semanage_bool_key_create)
  +        AC_CHECK_FUNCS(semanage_bool_key_extract)
  +        AC_CHECK_FUNCS(semanage_bool_key_free)
  +        AC_CHECK_FUNCS(semanage_bool_list)
  +        AC_CHECK_FUNCS(semanage_bool_list_active)
  +        AC_CHECK_FUNCS(semanage_bool_list_local)
  +        AC_CHECK_FUNCS(semanage_bool_modify_local)
  +        AC_CHECK_FUNCS(semanage_bool_query)
  +        AC_CHECK_FUNCS(semanage_bool_query_active)
  +        AC_CHECK_FUNCS(semanage_bool_query_local)
  +        AC_CHECK_FUNCS(semanage_bool_set_active)
  +        AC_CHECK_FUNCS(semanage_bool_set_name)
  +        AC_CHECK_FUNCS(semanage_bool_set_value)
  +        AC_CHECK_FUNCS(semanage_commit)
  +        AC_CHECK_FUNCS(semanage_connect)
  +        AC_CHECK_FUNCS(semanage_context_clone)
  +        AC_CHECK_FUNCS(semanage_context_create)
  +        AC_CHECK_FUNCS(semanage_context_free)
  +        AC_CHECK_FUNCS(semanage_context_from_string)
  +        AC_CHECK_FUNCS(semanage_context_get_mls)
  +        AC_CHECK_FUNCS(semanage_context_get_role)
  +        AC_CHECK_FUNCS(semanage_context_get_type)
  +        AC_CHECK_FUNCS(semanage_context_get_user)
  +        AC_CHECK_FUNCS(semanage_context_set_mls)
  +        AC_CHECK_FUNCS(semanage_context_set_role)
  +        AC_CHECK_FUNCS(semanage_context_set_type)
  +        AC_CHECK_FUNCS(semanage_context_set_user)
  +        AC_CHECK_FUNCS(semanage_context_to_string)
  +        AC_CHECK_FUNCS(semanage_disconnect)
  +        AC_CHECK_FUNCS(semanage_fcontext_clone)
  +        AC_CHECK_FUNCS(semanage_fcontext_compare)
  +        AC_CHECK_FUNCS(semanage_fcontext_compare2)
  +        AC_CHECK_FUNCS(semanage_fcontext_count)
  +        AC_CHECK_FUNCS(semanage_fcontext_count_local)
  +        AC_CHECK_FUNCS(semanage_fcontext_create)
  +        AC_CHECK_FUNCS(semanage_fcontext_del_local)
  +        AC_CHECK_FUNCS(semanage_fcontext_exists)
  +        AC_CHECK_FUNCS(semanage_fcontext_exists_local)
  +        AC_CHECK_FUNCS(semanage_fcontext_free)
  +        AC_CHECK_FUNCS(semanage_fcontext_get_con)
  +        AC_CHECK_FUNCS(semanage_fcontext_get_expr)
  +        AC_CHECK_FUNCS(semanage_fcontext_get_type)
  +        AC_CHECK_FUNCS(semanage_fcontext_get_type_str)
  +        AC_CHECK_FUNCS(semanage_fcontext_iterate)
  +        AC_CHECK_FUNCS(semanage_fcontext_iterate_local)
  +        AC_CHECK_FUNCS(semanage_fcontext_key_create)
  +        AC_CHECK_FUNCS(semanage_fcontext_key_extract)
  +        AC_CHECK_FUNCS(semanage_fcontext_key_free)
  +        AC_CHECK_FUNCS(semanage_fcontext_list)
  +        AC_CHECK_FUNCS(semanage_fcontext_list_local)
  +        AC_CHECK_FUNCS(semanage_fcontext_modify_local)
  +        AC_CHECK_FUNCS(semanage_fcontext_query)
  +        AC_CHECK_FUNCS(semanage_fcontext_query_local)
  +        AC_CHECK_FUNCS(semanage_fcontext_set_con)
  +        AC_CHECK_FUNCS(semanage_fcontext_set_expr)
  +        AC_CHECK_FUNCS(semanage_fcontext_set_type)
  +        AC_CHECK_FUNCS(semanage_get_default_priority)
  +        AC_CHECK_FUNCS(semanage_get_disable_dontaudit)
  +        AC_CHECK_FUNCS(semanage_get_hll_compiler_path)
  +        AC_CHECK_FUNCS(semanage_get_ignore_module_cache)
  +        AC_CHECK_FUNCS(semanage_get_preserve_tunables)
  +        AC_CHECK_FUNCS(semanage_handle_create)
  +        AC_CHECK_FUNCS(semanage_handle_destroy)
  +        AC_CHECK_FUNCS(semanage_iface_clone)
  +        AC_CHECK_FUNCS(semanage_iface_compare)
  +        AC_CHECK_FUNCS(semanage_iface_compare2)
  +        AC_CHECK_FUNCS(semanage_iface_count)
  +        AC_CHECK_FUNCS(semanage_iface_count_local)
  +        AC_CHECK_FUNCS(semanage_iface_create)
  +        AC_CHECK_FUNCS(semanage_iface_del_local)
  +        AC_CHECK_FUNCS(semanage_iface_exists)
  +        AC_CHECK_FUNCS(semanage_iface_exists_local)
  +        AC_CHECK_FUNCS(semanage_iface_free)
  +        AC_CHECK_FUNCS(semanage_iface_get_ifcon)
  +        AC_CHECK_FUNCS(semanage_iface_get_msgcon)
  +        AC_CHECK_FUNCS(semanage_iface_get_name)
  +        AC_CHECK_FUNCS(semanage_iface_iterate)
  +        AC_CHECK_FUNCS(semanage_iface_iterate_local)
  +        AC_CHECK_FUNCS(semanage_iface_key_create)
  +        AC_CHECK_FUNCS(semanage_iface_key_extract)
  +        AC_CHECK_FUNCS(semanage_iface_key_free)
  +        AC_CHECK_FUNCS(semanage_iface_list)
  +        AC_CHECK_FUNCS(semanage_iface_list_local)
  +        AC_CHECK_FUNCS(semanage_iface_modify_local)
  +        AC_CHECK_FUNCS(semanage_iface_query)
  +        AC_CHECK_FUNCS(semanage_iface_query_local)
  +        AC_CHECK_FUNCS(semanage_iface_set_ifcon)
  +        AC_CHECK_FUNCS(semanage_iface_set_msgcon)
  +        AC_CHECK_FUNCS(semanage_iface_set_name)
  +        AC_CHECK_FUNCS(semanage_is_connected)
  +        AC_CHECK_FUNCS(semanage_is_managed)
  +        AC_CHECK_FUNCS(semanage_mls_enabled)
  +        AC_CHECK_FUNCS(semanage_module_disable)
  +        AC_CHECK_FUNCS(semanage_module_enable)
  +        AC_CHECK_FUNCS(semanage_module_extract)
  +        AC_CHECK_FUNCS(semanage_module_get_enabled)
  +        AC_CHECK_FUNCS(semanage_module_get_enabled)
  +        AC_CHECK_FUNCS(semanage_module_get_module_info)
  +        AC_CHECK_FUNCS(semanage_module_get_name)
  +        AC_CHECK_FUNCS(semanage_module_get_version)
  +        AC_CHECK_FUNCS(semanage_module_info_create)
  +        AC_CHECK_FUNCS(semanage_module_info_datum_destroy)
  +        AC_CHECK_FUNCS(semanage_module_info_destroy)
  +        AC_CHECK_FUNCS(semanage_module_info_get_enabled)
  +        AC_CHECK_FUNCS(semanage_module_info_get_lang_ext)
  +        AC_CHECK_FUNCS(semanage_module_info_get_name)
  +        AC_CHECK_FUNCS(semanage_module_info_get_priority)
  +        AC_CHECK_FUNCS(semanage_module_info_set_enabled)
  +        AC_CHECK_FUNCS(semanage_module_info_set_lang_ext)
  +        AC_CHECK_FUNCS(semanage_module_info_set_name)
  +        AC_CHECK_FUNCS(semanage_module_info_set_priority)
  +        AC_CHECK_FUNCS(semanage_module_install)
  +        AC_CHECK_FUNCS(semanage_module_install)
  +        AC_CHECK_FUNCS(semanage_module_install_base)
  +        AC_CHECK_FUNCS(semanage_module_install_base_file)
  +        AC_CHECK_FUNCS(semanage_module_install_file)
  +        AC_CHECK_FUNCS(semanage_module_install_info)
  +        AC_CHECK_FUNCS(semanage_module_key_create)
  +        AC_CHECK_FUNCS(semanage_module_key_destroy)
  +        AC_CHECK_FUNCS(semanage_module_key_get_name)
  +        AC_CHECK_FUNCS(semanage_module_key_get_priority)
  +        AC_CHECK_FUNCS(semanage_module_key_set_name)
  +        AC_CHECK_FUNCS(semanage_module_key_set_priority)
  +        AC_CHECK_FUNCS(semanage_module_list)
  +        AC_CHECK_FUNCS(semanage_module_list_all)
  +        AC_CHECK_FUNCS(semanage_module_list_nth)
  +        AC_CHECK_FUNCS(semanage_module_remove)
  +        AC_CHECK_FUNCS(semanage_module_remove_key)
  +        AC_CHECK_FUNCS(semanage_module_set_enabled)
  +        AC_CHECK_FUNCS(semanage_module_upgrade)
  +        AC_CHECK_FUNCS(semanage_module_upgrade_file)
  +        AC_CHECK_FUNCS(semanage_msg_get_channel)
  +        AC_CHECK_FUNCS(semanage_msg_get_fname)
  +        AC_CHECK_FUNCS(semanage_msg_get_level)
  +        AC_CHECK_FUNCS(semanage_msg_set_callback)
  +        AC_CHECK_FUNCS(semanage_node_clone)
  +        AC_CHECK_FUNCS(semanage_node_compare)
  +        AC_CHECK_FUNCS(semanage_node_compare2)
  +        AC_CHECK_FUNCS(semanage_node_count)
  +        AC_CHECK_FUNCS(semanage_node_count_local)
  +        AC_CHECK_FUNCS(semanage_node_create)
  +        AC_CHECK_FUNCS(semanage_node_del_local)
  +        AC_CHECK_FUNCS(semanage_node_exists)
  +        AC_CHECK_FUNCS(semanage_node_exists_local)
  +        AC_CHECK_FUNCS(semanage_node_free)
  +        AC_CHECK_FUNCS(semanage_node_get_addr)
  +        AC_CHECK_FUNCS(semanage_node_get_addr_bytes)
  +        AC_CHECK_FUNCS(semanage_node_get_con)
  +        AC_CHECK_FUNCS(semanage_node_get_mask)
  +        AC_CHECK_FUNCS(semanage_node_get_mask_bytes)
  +        AC_CHECK_FUNCS(semanage_node_get_proto)
  +        AC_CHECK_FUNCS(semanage_node_get_proto_str)
  +        AC_CHECK_FUNCS(semanage_node_iterate)
  +        AC_CHECK_FUNCS(semanage_node_iterate_local)
  +        AC_CHECK_FUNCS(semanage_node_key_create)
  +        AC_CHECK_FUNCS(semanage_node_key_extract)
  +        AC_CHECK_FUNCS(semanage_node_key_free)
  +        AC_CHECK_FUNCS(semanage_node_list)
  +        AC_CHECK_FUNCS(semanage_node_list_local)
  +        AC_CHECK_FUNCS(semanage_node_modify_local)
  +        AC_CHECK_FUNCS(semanage_node_query)
  +        AC_CHECK_FUNCS(semanage_node_query_local)
  +        AC_CHECK_FUNCS(semanage_node_set_addr)
  +        AC_CHECK_FUNCS(semanage_node_set_addr_bytes)
  +        AC_CHECK_FUNCS(semanage_node_set_con)
  +        AC_CHECK_FUNCS(semanage_node_set_mask)
  +        AC_CHECK_FUNCS(semanage_node_set_mask_bytes)
  +        AC_CHECK_FUNCS(semanage_node_set_proto)
  +        AC_CHECK_FUNCS(semanage_port_clone)
  +        AC_CHECK_FUNCS(semanage_port_compare)
  +        AC_CHECK_FUNCS(semanage_port_compare2)
  +        AC_CHECK_FUNCS(semanage_port_count)
  +        AC_CHECK_FUNCS(semanage_port_count_local)
  +        AC_CHECK_FUNCS(semanage_port_create)
  +        AC_CHECK_FUNCS(semanage_port_del_local)
  +        AC_CHECK_FUNCS(semanage_port_exists)
  +        AC_CHECK_FUNCS(semanage_port_exists_local)
  +        AC_CHECK_FUNCS(semanage_port_free)
  +        AC_CHECK_FUNCS(semanage_port_get_con)
  +        AC_CHECK_FUNCS(semanage_port_get_high)
  +        AC_CHECK_FUNCS(semanage_port_get_low)
  +        AC_CHECK_FUNCS(semanage_port_get_proto)
  +        AC_CHECK_FUNCS(semanage_port_get_proto_str)
  +        AC_CHECK_FUNCS(semanage_port_iterate)
  +        AC_CHECK_FUNCS(semanage_port_iterate_local)
  +        AC_CHECK_FUNCS(semanage_port_key_create)
  +        AC_CHECK_FUNCS(semanage_port_key_extract)
  +        AC_CHECK_FUNCS(semanage_port_key_free)
  +        AC_CHECK_FUNCS(semanage_port_list)
  +        AC_CHECK_FUNCS(semanage_port_list_local)
  +        AC_CHECK_FUNCS(semanage_port_modify_local)
  +        AC_CHECK_FUNCS(semanage_port_query)
  +        AC_CHECK_FUNCS(semanage_port_query_local)
  +        AC_CHECK_FUNCS(semanage_port_set_con)
  +        AC_CHECK_FUNCS(semanage_port_set_port)
  +        AC_CHECK_FUNCS(semanage_port_set_proto)
  +        AC_CHECK_FUNCS(semanage_port_set_range)
  +        AC_CHECK_FUNCS(semanage_reload_policy)
  +        AC_CHECK_FUNCS(semanage_root)
  +        AC_CHECK_FUNCS(semanage_select_store)
  +        AC_CHECK_FUNCS(semanage_set_check_contexts)
  +        AC_CHECK_FUNCS(semanage_set_create_store)
  +        AC_CHECK_FUNCS(semanage_set_default_priority)
  +        AC_CHECK_FUNCS(semanage_set_disable_dontaudit)
  +        AC_CHECK_FUNCS(semanage_set_ignore_module_cache)
  +        AC_CHECK_FUNCS(semanage_set_preserve_tunables)
  +        AC_CHECK_FUNCS(semanage_set_rebuild)
  +        AC_CHECK_FUNCS(semanage_set_reload)
  +        AC_CHECK_FUNCS(semanage_set_root)
  +        AC_CHECK_FUNCS(semanage_set_store_root)
  +        AC_CHECK_FUNCS(semanage_seuser_clone)
  +        AC_CHECK_FUNCS(semanage_seuser_compare)
  +        AC_CHECK_FUNCS(semanage_seuser_compare2)
  +        AC_CHECK_FUNCS(semanage_seuser_count)
  +        AC_CHECK_FUNCS(semanage_seuser_count_local)
  +        AC_CHECK_FUNCS(semanage_seuser_create)
  +        AC_CHECK_FUNCS(semanage_seuser_del_local)
  +        AC_CHECK_FUNCS(semanage_seuser_exists)
  +        AC_CHECK_FUNCS(semanage_seuser_exists_local)
  +        AC_CHECK_FUNCS(semanage_seuser_free)
  +        AC_CHECK_FUNCS(semanage_seuser_get_mlsrange)
  +        AC_CHECK_FUNCS(semanage_seuser_get_name)
  +        AC_CHECK_FUNCS(semanage_seuser_get_sename)
  +        AC_CHECK_FUNCS(semanage_seuser_iterate)
  +        AC_CHECK_FUNCS(semanage_seuser_iterate_local)
  +        AC_CHECK_FUNCS(semanage_seuser_key_create)
  +        AC_CHECK_FUNCS(semanage_seuser_key_extract)
  +        AC_CHECK_FUNCS(semanage_seuser_key_free)
  +        AC_CHECK_FUNCS(semanage_seuser_list)
  +        AC_CHECK_FUNCS(semanage_seuser_list_local)
  +        AC_CHECK_FUNCS(semanage_seuser_modify_local)
  +        AC_CHECK_FUNCS(semanage_seuser_query)
  +        AC_CHECK_FUNCS(semanage_seuser_query_local)
  +        AC_CHECK_FUNCS(semanage_seuser_set_mlsrange)
  +        AC_CHECK_FUNCS(semanage_seuser_set_name)
  +        AC_CHECK_FUNCS(semanage_seuser_set_sename)
  +        AC_CHECK_FUNCS(semanage_user_add_role)
  +        AC_CHECK_FUNCS(semanage_user_clone)
  +        AC_CHECK_FUNCS(semanage_user_compare)
  +        AC_CHECK_FUNCS(semanage_user_compare2)
  +        AC_CHECK_FUNCS(semanage_user_count)
  +        AC_CHECK_FUNCS(semanage_user_count_local)
  +        AC_CHECK_FUNCS(semanage_user_create)
  +        AC_CHECK_FUNCS(semanage_user_del_local)
  +        AC_CHECK_FUNCS(semanage_user_del_role)
  +        AC_CHECK_FUNCS(semanage_user_exists)
  +        AC_CHECK_FUNCS(semanage_user_exists_local)
  +        AC_CHECK_FUNCS(semanage_user_free)
  +        AC_CHECK_FUNCS(semanage_user_get_mlslevel)
  +        AC_CHECK_FUNCS(semanage_user_get_mlsrange)
  +        AC_CHECK_FUNCS(semanage_user_get_name)
  +        AC_CHECK_FUNCS(semanage_user_get_num_roles)
  +        AC_CHECK_FUNCS(semanage_user_get_prefix)
  +        AC_CHECK_FUNCS(semanage_user_get_roles)
  +        AC_CHECK_FUNCS(semanage_user_has_role)
  +        AC_CHECK_FUNCS(semanage_user_iterate)
  +        AC_CHECK_FUNCS(semanage_user_iterate_local)
  +        AC_CHECK_FUNCS(semanage_user_key_create)
  +        AC_CHECK_FUNCS(semanage_user_key_extract)
  +        AC_CHECK_FUNCS(semanage_user_key_free)
  +        AC_CHECK_FUNCS(semanage_user_list)
  +        AC_CHECK_FUNCS(semanage_user_list_local)
  +        AC_CHECK_FUNCS(semanage_user_modify_local)
  +        AC_CHECK_FUNCS(semanage_user_query)
  +        AC_CHECK_FUNCS(semanage_user_query_local)
  +        AC_CHECK_FUNCS(semanage_user_set_mlslevel)
  +        AC_CHECK_FUNCS(semanage_user_set_mlsrange)
  +        AC_CHECK_FUNCS(semanage_user_set_name)
  +        AC_CHECK_FUNCS(semanage_user_set_prefix)
  +        AC_CHECK_FUNCS(semanage_user_set_roles)
       ], [])
   AC_SUBST(WITH_SEMANAGE_SEMODULE)
   
  @@ -3029,11 +3785,10 @@
   dnl # Glibc AIO
   OLIBS="$LIBS"
   RPM_CHECK_LIB(
  -    [AIO], [aio],
  +    [Glibc AIO], [aio],
       [rt], [aio_init], [aio.h],
       [no,external:none], [],
  -    [
  -     $(echo "$OLIBS" | grep -- ' -lrt' > /dev/null) && LIBS="$OLIBS"
  +    [   $(echo "$OLIBS" | grep -- ' -lrt' > /dev/null) && LIBS="$OLIBS"
           AC_CHECK_FUNC(aio_cancel)
           AC_CHECK_FUNC(aio_error)
           AC_CHECK_FUNC(aio_fsync)
  @@ -3045,30 +3800,185 @@
           AC_CHECK_FUNC(lio_listio)
       ], [])
   
  -dnl # Glibc CLOCK
  +dnl # Glibc ARGZ
   OLIBS="$LIBS"
   RPM_CHECK_LIB(
  -    [CLOCK], [clock],
  -    [rt], [clock_gettime], [time.h],
  +    [ARGZ], [argz],
  +    [c], [argz_create], [argz.h],
       [no,external:none], [],
  -    [
  -     $(echo "$OLIBS" | grep -- ' -lrt' > /dev/null) && LIBS="$OLIBS"
  +    [   LIBS="$OLIBS"
  +        AC_CHECK_FUNCS(argz_add)
  +        AC_CHECK_FUNCS(argz_add_sep)
  +        AC_CHECK_FUNCS(argz_append)
  +        AC_CHECK_FUNCS(argz_count)
  +        AC_CHECK_FUNCS(argz_create)
  +        AC_CHECK_FUNCS(argz_create_sep)
  +        AC_CHECK_FUNCS(argz_delete)
  +        AC_CHECK_FUNCS(argz_extract)
  +        AC_CHECK_FUNCS(argz_insert)
  +        AC_CHECK_FUNCS(argz_next)
  +        AC_CHECK_FUNCS(argz_replace)
  +        AC_CHECK_FUNCS(argz_stringify)
  +
  +        AC_CHECK_HEADERS(envz.h)
  +        AC_CHECK_FUNCS(envz_add)
  +        AC_CHECK_FUNCS(envz_entry)
  +        AC_CHECK_FUNCS(envz_get)
  +        AC_CHECK_FUNCS(envz_merge)
  +        AC_CHECK_FUNCS(envz_remove)
  +        AC_CHECK_FUNCS(envz_strip)
  +    ], [])
  +
  +dnl # Glibc BSD
  +OLIBS="$LIBS"
  +RPM_CHECK_LIB(
  +    [Glibc BSD], [bsd],
  +    [bsd], [setproctitle_init], [bsd/unistd.h],
  +    [yes,external:none], [],
  +    [   $(echo "$OLIBS" | grep -- ' -lbsd' > /dev/null) && LIBS="$OLIBS"
  +
  +        AC_CHECK_HEADERS(bsd/bsd.h)
  +        AC_CHECK_HEADERS(bsd/bitstring.h)
  +        AC_CHECK_HEADERS(bsd/netinet/ip_icmp.h)
  +        AC_CHECK_HEADERS(bsd/sys/bitstring.h)
  +        AC_CHECK_HEADERS(bsd/sys/cdefs.h)
  +        AC_CHECK_HEADERS(bsd/sys/endian.h)
  +        AC_CHECK_HEADERS(bsd/sys/poll.h)
  +        AC_CHECK_HEADERS(bsd/sys/queue.h)
  +        AC_CHECK_HEADERS(bsd/sys/tree.h)
  +
  +        AC_CHECK_HEADERS(bsd/err.h)
  +        AC_CHECK_FUNCS(errc)
  +        AC_CHECK_FUNCS(vwarnc)
  +        AC_CHECK_FUNCS(warnc)
  +        AC_CHECK_FUNCS(verrc)
  +
  +        AC_CHECK_HEADERS(bsd/getopt.h)
  +        AC_CHECK_HEADERS(bsd/unistd.h)
  +        AC_CHECK_FUNCS(bsd_getopt)
  +        AC_CHECK_FUNCS(closefrom)
  +        AC_CHECK_FUNCS(getmode)                      dnl used in 
tools/rpmmtree.c
  +        AC_CHECK_FUNCS(getpeereid)
  +        AC_CHECK_FUNCS(setmode)                      dnl used in 
tools/rpmmtree.c
  +        AC_CHECK_FUNCS(setproctitle)         dnl used in misc/setproctitle.c
  +        AC_CHECK_FUNCS(setproctitle_init)    dnl used in rpmqv.c
  +
  +        AC_CHECK_HEADERS(bsd/libutil.h)
  +        AC_CHECK_FUNCS(expand_number)
  +        AC_CHECK_FUNCS(flopen)
  +        AC_CHECK_FUNCS(fparseln)
  +        AC_CHECK_FUNCS(humanize_number)
  +        AC_CHECK_FUNCS(pidfile_close)
  +        AC_CHECK_FUNCS(pidfile_open)
  +        AC_CHECK_FUNCS(pidfile_remove)
  +        AC_CHECK_FUNCS(pidfile_write)
  +
  +        AC_CHECK_HEADERS(bsd/md5.h)
  +        AC_CHECK_FUNCS(MD5Data)
  +        AC_CHECK_FUNCS(MD5End)
  +        AC_CHECK_FUNCS(MD5File)
  +        AC_CHECK_FUNCS(MD5FileChunk)
  +        AC_CHECK_FUNCS(MD5Final)
  +        AC_CHECK_FUNCS(MD5Init)
  +        AC_CHECK_FUNCS(MD5Pad)
  +        AC_CHECK_FUNCS(MD5Transform)
  +        AC_CHECK_FUNCS(MD5Update)
  +
  +        AC_CHECK_HEADERS(bsd/nlist.h)
  +        AC_CHECK_FUNCS(nlist)
  +
  +        AC_CHECK_HEADERS(bsd/readpassphrase.h)
  +        AC_CHECK_FUNCS(readpassphrase)
  +
  +        AC_CHECK_HEADERS(bsd/stdio.h)
  +        AC_CHECK_FUNCS(fgetln) dnl XXX deprecated
  +        AC_CHECK_FUNCS(fmtcheck)
  +        AC_CHECK_FUNCS(funopen)
  +        AC_CHECK_FUNCS(fpurge)
  +
  +        AC_CHECK_HEADERS(bsd/stdlib.h)
  +        AC_CHECK_FUNCS(arc4random)
  +        AC_CHECK_FUNCS(arc4random_addrandom)
  +        AC_CHECK_FUNCS(arc4random_buf)
  +        AC_CHECK_FUNCS(arc4random_stir)
  +        AC_CHECK_FUNCS(arc4random_uniform)
  +        AC_CHECK_FUNCS(dehumanize_number)
  +        AC_CHECK_FUNCS(getbsize)
  +        AC_CHECK_FUNCS(getprogname)
  +        AC_CHECK_FUNCS(heapsort)
  +        AC_CHECK_FUNCS(mergesort)
  +        AC_CHECK_FUNCS(radixsort)
  +        AC_CHECK_FUNCS(reallocarray)
  +        AC_CHECK_FUNCS(reallocf)
  +        AC_CHECK_FUNCS(setprogname)
  +        AC_CHECK_FUNCS(sradixsort)
  +        AC_CHECK_FUNCS(strtonum)
  +
  +        AC_CHECK_HEADERS(bsd/string.h)
  +        AC_CHECK_FUNCS(explicit_bzero)
  +        AC_CHECK_FUNCS(strlcat)
  +        AC_CHECK_FUNCS(strlcpy)
  +        AC_CHECK_FUNCS(strmode)              dnl used in tools/rpmfind.c
  +        AC_CHECK_FUNCS(strnstr)
  +
  +        AC_CHECK_HEADERS(bsd/stringlist.h)
  +        AC_CHECK_FUNCS(sl_add)
  +        AC_CHECK_FUNCS(sl_find)
  +        AC_CHECK_FUNCS(sl_free)
  +        AC_CHECK_FUNCS(sl_init)
  +
  +        AC_CHECK_HEADERS(bsd/timeconv.h)
  +        AC_CHECK_FUNCS(_int_to_time)
  +        AC_CHECK_FUNCS(_long_to_time)
  +        AC_CHECK_FUNCS(_time32_to_time)
  +        AC_CHECK_FUNCS(_time64_to_time)
  +        AC_CHECK_FUNCS(_time_to_int)
  +        AC_CHECK_FUNCS(_time_to_long)
  +        AC_CHECK_FUNCS(_time_to_time32)
  +        AC_CHECK_FUNCS(_time_to_time64)
  +
  +        AC_CHECK_HEADERS(bsd/vis.h)
  +        AC_CHECK_FUNCS(strnunvis)
  +        AC_CHECK_FUNCS(strnvis)              dnl used in tools/rpmmtree.c
  +        AC_CHECK_FUNCS(strunvis)     dnl used in tools/rpmmtree.c
  +        AC_CHECK_FUNCS(strunvisx)
  +        AC_CHECK_FUNCS(strvis)               dnl used in tools/rpmmtree.c
  +        AC_CHECK_FUNCS(strvisx)              dnl used in tools/rpmmtree.c
  +        AC_CHECK_FUNCS(unvis)                dnl used in tools/rpmmtree.c
  +        AC_CHECK_FUNCS(vis)          dnl used in tools/rpmmtree.c
  +
  +        AC_CHECK_HEADERS(bsd/wchar.h)
  +        AC_CHECK_FUNCS(fgetwln)
  +        AC_CHECK_FUNCS(wcslcat)
  +        AC_CHECK_FUNCS(wcslcpy)
  +
  +        AC_CHECK_FUNCS(__fdnlist)
  +        AC_CHECK_FUNCS(inet_net_pton)
  +
  +    ], [])
  +
  +dnl # POSIX CLOCK
  +OLIBS="$LIBS"
  +RPM_CHECK_LIB(
  +    [POSIX CLOCK], [clock],
  +    [rt], [clock_gettime], [time.h],
  +    [yes,external:none], [],
  +    [   $(echo "$OLIBS" | grep -- ' -lrt' > /dev/null) && LIBS="$OLIBS"
           AC_CHECK_FUNCS(clock_adjtime)
           AC_CHECK_FUNCS(clock_getcpuclockid)
           AC_CHECK_FUNCS(clock_getres)
  -        AC_CHECK_FUNCS(clock_gettime)
  +        AC_CHECK_FUNCS(clock_gettime)        dnl used in build/files.c 
lib/rpmts.c
           AC_CHECK_FUNCS(clock_nanosleep)
           AC_CHECK_FUNCS(clock_settime)
       ], [])
   
  -dnl # Glibc EPOLL
  +dnl # Linux EPOLL
   OLIBS="$LIBS"
   RPM_CHECK_LIB(
  -    [EPOLL], [epoll],
  +    [Linux EPOLL], [epoll],
       [c], [epoll_create], [sys/epoll.h],
       [no,external:none], [],
  -    [
  -        LIBS="$OLIBS"
  +    [   LIBS="$OLIBS"
           AC_CHECK_FUNCS(epoll_create)
           AC_CHECK_FUNCS(epoll_create1)
           AC_CHECK_FUNCS(epoll_ctl)
  @@ -3076,67 +3986,94 @@
           AC_CHECK_FUNCS(epoll_pwait)
       ], [])
   
  -dnl # Glibc EVENTFD
  +dnl # Linux EVENTFD
   OLIBS="$LIBS"
   RPM_CHECK_LIB(
  -    [EVENTFD], [eventfd],
  +    [Linux EVENTFD], [eventfd],
       [c], [eventfd], [sys/eventfd.h],
       [no,external:none], [],
  -    [
  -        LIBS="$OLIBS"
  +    [   LIBS="$OLIBS"
           AC_CHECK_FUNCS(eventfd)
           AC_CHECK_FUNCS(eventfd_read)
           AC_CHECK_FUNCS(eventfd_write)
       ], [])
   
  -dnl # Glibc FANOTIFY
  +dnl # Linux FANOTIFY
   OLIBS="$LIBS"
   RPM_CHECK_LIB(
  -    [FANOTIFY], [fanotify],
  +    [Linux FANOTIFY], [fanotify],
       [c], [fanotify_init], [sys/fanotify.h],
       [no,external:none], [],
  -    [
  -        LIBS="$OLIBS"
  +    [   LIBS="$OLIBS"
           AC_CHECK_FUNCS(fanotify_init)
           AC_CHECK_FUNCS(fanotify_mark)
       ], [])
   
  -dnl # Glibc INOTIFY
  +dnl # Linux INOTIFY
   OLIBS="$LIBS"
   RPM_CHECK_LIB(
  -    [INOTIFY], [inotify],
  +    [Linux INOTIFY], [inotify],
       [c], [inotify_init], [sys/inotify.h],
       [no,external:none], [],
  -    [
  -        LIBS="$OLIBS"
  +    [   LIBS="$OLIBS"
           AC_CHECK_FUNCS(inotify_init)
           AC_CHECK_FUNCS(inotify_init1)
           AC_CHECK_FUNCS(inotify_add_watch)
           AC_CHECK_FUNCS(inotify_rm_watch)
       ], [])
   
  -dnl # Glibc IPC
  +dnl # SysV IPC
   OLIBS="$LIBS"
   RPM_CHECK_LIB(
  -    [IPC], [ipc],
  +    [SysV IPC], [ipc],
       [c], [ftok], [sys/ipc.h],
       [yes,external:none], [],
  -    [
  -        LIBS="$OLIBS"
  -        AC_CHECK_FUNCS(ftok)
  +    [   LIBS="$OLIBS"
  +        AC_CHECK_FUNCS(ftok)         dnl used in rpmdb/db3.c
       ], [])
   
  -dnl # Glibc MOUNT
  +dnl # MATH
   OLIBS="$LIBS"
   RPM_CHECK_LIB(
  -    [MOUNT], [mount],
  -    [c], [mount], [sys/mount.h],
  -    [no,external:none], [],
  -    [
  -        LIBS="$OLIBS"
  -        AC_CHECK_FUNCS(mount)
  -        AC_CHECK_FUNCS(umount)
  -        AC_CHECK_FUNCS(umount2)
  +    [MATH], [math],
  +    [m], [sqrt], [math.h],
  +    [yes,external:none], [],
  +    [   $(echo "$OLIBS" | grep -- ' -lm' > /dev/null) && LIBS="$OLIBS"
  +        AC_CHECK_FUNCS(acos)         dnl used in rpmio/rpmsql.c
  +        AC_CHECK_FUNCS(acosh)                dnl used in rpmio/rpmsql.c
  +        AC_CHECK_FUNCS(asin)         dnl used in rpmio/rpmsql.c
  +        AC_CHECK_FUNCS(asinh)                dnl used in rpmio/rpmsql.c
  +        AC_CHECK_FUNCS(atan)         dnl used in rpmio/rpmsql.c
  +        AC_CHECK_FUNCS(atan2)                dnl used in rpmio/rpmsql.c
  +        AC_CHECK_FUNCS(atanh)                dnl used in rpmio/rpmsql.c
  +        AC_CHECK_FUNCS(ceil)         dnl used in rpmio/rpmsql.c
  +        AC_CHECK_FUNCS(cos)          dnl used in rpmio/rpmsql.c
  +        AC_CHECK_FUNCS(cosh)         dnl used in rpmio/rpmsql.c
  +        AC_CHECK_FUNCS(exp)          dnl used in rpmio/rpmsql.c
  +        AC_CHECK_FUNCS(floor)                dnl used in rpmio/rpmsql.c
  +        AC_CHECK_FUNCS(log)          dnl used in rpmio/rpmsql.c
  +        AC_CHECK_FUNCS(log10)                dnl used in rpmio/rpmsql.c
  +        AC_CHECK_FUNCS(pow)          dnl used in rpmio/rpmsql.c
  +        AC_CHECK_FUNCS(sin)          dnl used in rpmio/rpmsql.c
  +        AC_CHECK_FUNCS(sinh)         dnl used in rpmio/rpmsql.c
  +        AC_CHECK_FUNCS(sqrt)
  +        AC_CHECK_FUNCS(tan)          dnl used in rpmio/rpmsql.c
  +        AC_CHECK_FUNCS(tanh)         dnl used in rpmio/rpmsql.c
  +    ], [])
  +
  +dnl # Glibc MCHECK
  +OLIBS="$LIBS"
  +RPM_CHECK_LIB(
  +    [Glibc MEMCHECK], [mcheck],
  +    [c], [mcheck], [mcheck.h],
  +    [yes,external:none], [],
  +    [   LIBS="$OLIBS"
  +        AC_CHECK_FUNCS(mcheck)               dnl used in rpmqv.c
  +        AC_CHECK_FUNCS(mcheck_pedantic)
  +        AC_CHECK_FUNCS(mcheck_check_all)
  +        AC_CHECK_FUNCS(mprobe)
  +        AC_CHECK_FUNCS(mtrace)
  +        AC_CHECK_FUNCS(muntrace)
       ], [])
   
   dnl # POSIX Message Queues
  @@ -3145,8 +4082,7 @@
       [POSIX Message Queues], [mq],
       [rt], [mq_open], [mqueue.h],
       [no,external:none], [],
  -    [
  -     $(echo "$OLIBS" | grep -- ' -lrt' > /dev/null) && LIBS="$OLIBS"
  +    [   $(echo "$OLIBS" | grep -- ' -lrt' > /dev/null) && LIBS="$OLIBS"
           AC_CHECK_FUNCS(mq_close)
           AC_CHECK_FUNCS(mq_getattr)
           AC_CHECK_FUNCS(mq_notify)
  @@ -3159,45 +4095,90 @@
           AC_CHECK_FUNCS(mq_unlink)
       ], [])
   
  -dnl # Glibc PERSONALITY
  +dnl # MOUNT
  +OLIBS="$LIBS"
  +RPM_CHECK_LIB(
  +    [MOUNT], [mount],
  +    [c], [mount], [sys/mount.h],
  +    [yes,external:none], [],
  +    [   LIBS="$OLIBS"
  +        AC_CHECK_FUNCS(mount)                dnl used in rpmio/mount.c
  +        AC_CHECK_FUNCS(umount)
  +        AC_CHECK_FUNCS(umount2)
  +    ], [])
  +
  +dnl # Glibc OBSTACK
   OLIBS="$LIBS"
   RPM_CHECK_LIB(
  -    [PERSONALITY], [personality],
  +    [Glibc OBSTACK], [obstack],
  +    [c], [_obstack_allocated_p], [obstack.h],
  +    [no,external:none], [],
  +    [   LIBS="$OLIBS"
  +        AC_CHECK_FUNCS(__obstack_printf_chk)
  +        AC_CHECK_FUNCS(__obstack_vprintf_chk)
  +        AC_CHECK_FUNCS(_obstack_allocated_p)
  +        AC_CHECK_FUNCS(_obstack_begin)
  +        AC_CHECK_FUNCS(_obstack_begin_1)
  +        AC_CHECK_FUNCS(_obstack_free)
  +        AC_CHECK_FUNCS(_obstack_memory_used)
  +        AC_CHECK_FUNCS(_obstack_newchunk)
  +        AC_CHECK_FUNCS(obstack_free)
  +        AC_CHECK_FUNCS(obstack_printf)
  +        AC_CHECK_FUNCS(obstack_vprintf)
  +    ], [])
  +
  +dnl # Linux PERSONALITY
  +OLIBS="$LIBS"
  +RPM_CHECK_LIB(
  +    [Linux PERSONALITY], [personality],
       [c], [personality], [sys/personality.h],
       [no,external:none], [],
  -    [
  -        LIBS="$OLIBS"
  +    [   LIBS="$OLIBS"
           AC_CHECK_FUNCS(personality)
       ], [])
   
  -dnl # Glibc PRCTL
  +dnl # Linux PRCTL
   OLIBS="$LIBS"
   RPM_CHECK_LIB(
  -    [PRCTL], [prctl],
  +    [Linux PRCTL], [prctl],
       [c], [prctl], [sys/prctl.h],
  +    [yes,external:none], [],
  +    [   LIBS="$OLIBS"
  +        AC_CHECK_FUNCS(prctl)                dnl used in misc/setproctitle.c
  +    ], [])
  +
  +dnl # Glibc PRINTF
  +OLIBS="$LIBS"
  +RPM_CHECK_LIB(
  +    [Glibc PRINTF], [printf],
  +    [c], [register_printf_specifier], [printf.h],
       [no,external:none], [],
  -    [
  -        LIBS="$OLIBS"
  -        AC_CHECK_FUNCS(prctl)
  +    [   LIBS="$OLIBS"
  +        AC_CHECK_HEADERS(printf.h)
  +        AC_CHECK_FUNCS(parse_printf_format)
  +        AC_CHECK_FUNCS(printf_size)
  +        AC_CHECK_FUNCS(printf_size_info)
  +        AC_CHECK_FUNCS(register_printf_specifier)
  +        AC_CHECK_FUNCS(register_printf_modifier)
  +        AC_CHECK_FUNCS(register_printf_type)
       ], [])
   
   dnl # POSIX Scheduler
   OLIBS="$LIBS"
   RPM_CHECK_LIB(
  -    [SCHED], [sched],
  +    [POSIX SCHED], [sched],
       [c], [sched_yield], [sched.h],
  -    [no,external:none], [],
  -    [
  -        LIBS="$OLIBS"
  +    [yes,external:none], [],
  +    [   LIBS="$OLIBS"
           AC_CHECK_FUNCS(sched_getaffinity)
           AC_CHECK_FUNCS(sched_setaffinity)
           AC_CHECK_FUNCS(sched_getparam)
           AC_CHECK_FUNCS(sched_setparam)
           AC_CHECK_FUNCS(sched_getscheduler)
           AC_CHECK_FUNCS(sched_setscheduler)
  -        AC_CHECK_FUNCS(sched_getattr)
  -        AC_CHECK_FUNCS(sched_setattr)
  -        AC_CHECK_FUNCS(sched_getcpu)
  +        AC_CHECK_FUNCS(sched_getattr)        dnl needs wrapping
  +        AC_CHECK_FUNCS(sched_setattr)        dnl needs wrapping
  +        AC_CHECK_FUNCS(sched_getcpu) dnl used in rpmio/macro.c
           AC_CHECK_FUNCS(sched_get_priority_max)
           AC_CHECK_FUNCS(sched_get_priority_min)
           AC_CHECK_FUNCS(sched_rr_get_interval)
  @@ -3210,8 +4191,7 @@
       [SEARCH], [search],
       [c], [insque], [search.h],
       [no,external:none], [],
  -    [
  -        LIBS="$OLIBS"
  +    [   LIBS="$OLIBS"
           AC_CHECK_FUNCS(insque)
           AC_CHECK_FUNCS(remque)
           AC_CHECK_FUNCS(hcreate)
  @@ -3235,8 +4215,7 @@
       [POSIX Semaphores], [sem],
       [pthread c], [sem_init], [semaphore.h],
       [no,external:none], [],
  -    [
  -        LIBS="$OLIBS"
  +    [   LIBS="$OLIBS"
           AC_CHECK_FUNCS(sem_close)
           AC_CHECK_FUNCS(sem_destroy)
           AC_CHECK_FUNCS(sem_getvalue)
  @@ -3247,44 +4226,52 @@
           AC_CHECK_FUNCS(sem_wait)
       ], [])
   
  -dnl # Glibc SHM
  +dnl # POSIX SHM (and mmap et al)
   OLIBS="$LIBS"
   RPM_CHECK_LIB(
  -    [SHM], [shm],
  +    [POSIX SHM], [shm],
       [rt], [shm_open], [sys/mman.h],
  -    [no,external:none], [],
  -    [
  -     $(echo "$OLIBS" | grep -- ' -lrt' > /dev/null) && LIBS="$OLIBS"
  +    [yes,external:none], [],
  +    [   $(echo "$OLIBS" | grep -- ' -lrt' > /dev/null) && LIBS="$OLIBS"
  +        AC_CHECK_FUNCS(madvise)
  +        AC_CHECK_FUNCS(mincore)
  +        AC_CHECK_FUNCS(mlock)
  +        AC_CHECK_FUNCS(mlockall)
  +        AC_CHECK_FUNCS(mprotect)
  +        AC_CHECK_FUNCS(mremap)
  +        AC_CHECK_FUNCS(msync)
  +        AC_CHECK_FUNCS(munmap)
  +        AC_CHECK_FUNCS(munlock)
  +        AC_CHECK_FUNCS(munlockall)
  +        AC_CHECK_FUNCS(posix_madvise)
  +        AC_CHECK_FUNCS(posix_mem_offset)
  +        AC_CHECK_FUNCS(posix_typed_mem_open)
  +        AC_CHECK_FUNCS(remap_file_pages)
           AC_CHECK_FUNCS(shm_open)
           AC_CHECK_FUNCS(shm_unlink)
       ], [])
   
  -dnl # Glibc TIMER
  +dnl # POSIX TIMER
   OLIBS="$LIBS"
   RPM_CHECK_LIB(
  -    [TIMER], [timer],
  +    [POSIX TIMER], [timer],
       [rt], [timer_create], [time.h],
       [no,external:none], [],
  -    [
  -     $(echo "$OLIBS" | grep -- ' -lrt' > /dev/null) && LIBS="$OLIBS"
  +    [   $(echo "$OLIBS" | grep -- ' -lrt' > /dev/null) && LIBS="$OLIBS"
           AC_CHECK_FUNCS(timer_create)
           AC_CHECK_FUNCS(timer_delete)
           AC_CHECK_FUNCS(timer_gettime)
           AC_CHECK_FUNCS(timer_getoverrun)
           AC_CHECK_FUNCS(timer_settime)
  -        AC_CHECK_FUNCS(timerfd_create)
  -        AC_CHECK_FUNCS(timerfd_gettime)
  -        AC_CHECK_FUNCS(timerfd_settime)
       ], [])
   
  -dnl # Glibc TIMERFD
  +dnl # Linux TIMERFD
   OLIBS="$LIBS"
   RPM_CHECK_LIB(
  -    [TIMERFD], [timerfd],
  +    [Linux TIMERFD], [timerfd],
       [rt], [timerfd_create], [sys/timerfd.h],
       [no,external:none], [],
  -    [
  -     $(echo "$OLIBS" | grep -- ' -lrt' > /dev/null) && LIBS="$OLIBS"
  +    [   $(echo "$OLIBS" | grep -- ' -lrt' > /dev/null) && LIBS="$OLIBS"
           AC_CHECK_FUNCS(timerfd_create)
           AC_CHECK_FUNCS(timerfd_gettime)
           AC_CHECK_FUNCS(timerfd_settime)
  @@ -3296,8 +4283,7 @@
       [XATTR], [xattr],
       [c], [getxattr], [sys/xattr.h],
       [yes,external:none], [],
  -    [
  -        LIBS="$OLIBS"
  +    [   LIBS="$OLIBS"
           AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr)
           AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
           AC_CHECK_FUNCS(listxattr llistxattr flistxattr)
  @@ -3305,6 +4291,7 @@
       ], [])
   
   dnl # FIXME: AutoFu tests for <sys/acl.h> and -lacl are needed w/o --with-xar
  +dnl # ATTR
   RPM_CHECK_LIB(
       [ATTR], [attr],
       [attr], [attr_get], [attr/attributes.h],
  @@ -3323,7 +4310,6 @@
       [cap], [cap_init], [sys/capability.h],
       [no,external:none], [],
       [
  -        AC_CHECK_HEADERS(linux/securebits.h)
           AC_CHECK_FUNCS(cap_dup cap_free cap_init)
           AC_CHECK_FUNCS(cap_get_flag cap_set_flag cap_clear cap_clear_flag)
           AC_CHECK_FUNCS(cap_get_fd cap_get_file cap_set_fd cap_set_file)
  @@ -3340,8 +4326,9 @@
       [cap-ng], [capng_clear], [cap-ng.h],
       [no,external:none], [],
       [
  +        AC_CHECK_HEADERS(linux/securebits.h)
           AC_CHECK_FUNCS(capng_clear capng_fill capng_setpid)
  -        AC_CHECK_FUNCS(capng_get_caps_process capng_update capng_updateev)
  +        AC_CHECK_FUNCS(capng_get_caps_process capng_update capng_updatev)
           AC_CHECK_FUNCS(capng_apply capng_lock capng_change_id)
           AC_CHECK_FUNCS(capng_get_caps_fd capng_apply_caps_fd)
           AC_CHECK_FUNCS(capng_have_capabilities capng_have_capability)
  @@ -3350,24 +4337,93 @@
           AC_CHECK_FUNCS(capng_save_state capng_restore_state)
       ], [])
   
  +dnl # Linux libseccomp
  +RPM_CHECK_LIB(
  +    [Linux libseccomp], [seccomp],
  +    [seccomp], [seccomp_init], [seccomp.h],
  +    [no,external:none], [],
  +    [
  +        AC_CHECK_HEADERS(linux/audit.h)
  +        AC_CHECK_FUNCS(seccomp_arch_add)
  +        AC_CHECK_FUNCS(seccomp_arch_exist)
  +        AC_CHECK_FUNCS(seccomp_arch_native)
  +        AC_CHECK_FUNCS(seccomp_arch_remove)
  +        AC_CHECK_FUNCS(seccomp_arch_resolve_name)
  +        AC_CHECK_FUNCS(seccomp_attr_get)
  +        AC_CHECK_FUNCS(seccomp_attr_set)
  +        AC_CHECK_FUNCS(seccomp_export_bpf)
  +        AC_CHECK_FUNCS(seccomp_export_pfc)
  +        AC_CHECK_FUNCS(seccomp_init)
  +        AC_CHECK_FUNCS(seccomp_load)
  +        AC_CHECK_FUNCS(seccomp_merge)
  +        AC_CHECK_FUNCS(seccomp_release)
  +        AC_CHECK_FUNCS(seccomp_reset)
  +        AC_CHECK_FUNCS(seccomp_rule_add)
  +        AC_CHECK_FUNCS(seccomp_rule_add_array)
  +        AC_CHECK_FUNCS(seccomp_rule_add_exact)
  +        AC_CHECK_FUNCS(seccomp_rule_add_exact_array)
  +        AC_CHECK_FUNCS(seccomp_syscall_priority)
  +        AC_CHECK_FUNCS(seccomp_syscall_resolve_name)
  +        AC_CHECK_FUNCS(seccomp_syscall_resolve_name_arch)
  +        AC_CHECK_FUNCS(seccomp_syscall_resolve_name_rewrite)
  +        AC_CHECK_FUNCS(seccomp_syscall_resolve_num_arch)
  +        AC_CHECK_FUNCS(seccomp_version)
  +    ], [])
   
  -dnl # ACL API
  +dnl # ACL
   RPM_CHECK_LIB(
       [ACL], [acl],
  -    [acl], [acl_free], [acl/libacl.h],
  +    [acl], [acl_init], [acl/libacl.h],
       [no,external:none], [],
       [
  -        AC_CHECK_FUNCS(acl_t acl_init acl_t acl_dup acl_free acl_valid)
  -        AC_CHECK_FUNCS(acl_copy_entry acl_create_entry)
  -        AC_CHECK_FUNCS(acl_delete_entry acl_get_entry)
  -        AC_CHECK_FUNCS(acl_add_perm acl_calc_mask acl_clear_perms)
  -        AC_CHECK_FUNCS(acl_delete_perm acl_get_permset acl_set_permset)
  -        AC_CHECK_FUNCS(acl_get_qualifier acl_get_tag_type)
  -        AC_CHECK_FUNCS(acl_set_qualifier acl_set_tag_type)
  -        AC_CHECK_FUNCS(acl_copy_ext acl_copy_int acl_from_text)
  -        AC_CHECK_FUNCS(acl_size acl_to_text)
  -        AC_CHECK_FUNCS(acl_delete_def_file acl_get_fd acl_get_file)
  -        AC_CHECK_FUNCS(acl_set_fd acl_set_file)
  +        AC_CHECK_HEADERS(sys/acl.h)
  +        AC_CHECK_FUNCS(acl_add_perm)
  +        AC_CHECK_FUNCS(acl_calc_mask)
  +        AC_CHECK_FUNCS(acl_check)
  +        AC_CHECK_FUNCS(acl_clear_perms)
  +        AC_CHECK_FUNCS(acl_cmp)
  +        AC_CHECK_FUNCS(acl_copy_entry)
  +        AC_CHECK_FUNCS(acl_copy_ext)
  +        AC_CHECK_FUNCS(acl_copy_int)
  +        AC_CHECK_FUNCS(acl_create_entry)
  +        AC_CHECK_FUNCS(acl_delete_def_file)
  +        AC_CHECK_FUNCS(acl_delete_entry)
  +        AC_CHECK_FUNCS(acl_delete_perm)
  +        AC_CHECK_FUNCS(acl_dup)
  +        AC_CHECK_FUNCS(acl_entries)
  +        AC_CHECK_FUNCS(acl_equiv_mode)
  +        AC_CHECK_FUNCS(acl_error)
  +        AC_CHECK_FUNCS(acl_extended_fd)
  +        AC_CHECK_FUNCS(__acl_extended_file)
  +        AC_CHECK_FUNCS(acl_extended_file)
  +        AC_CHECK_FUNCS(acl_extended_file_nofollow)
  +        AC_CHECK_FUNCS(acl_free)
  +        AC_CHECK_FUNCS(acl_from_mode)
  +        AC_CHECK_FUNCS(acl_from_text)
  +        AC_CHECK_FUNCS(__acl_from_xattr)
  +        AC_CHECK_FUNCS(acl_get_entry)
  +        AC_CHECK_FUNCS(acl_get_fd)
  +        AC_CHECK_FUNCS(acl_get_file)
  +        AC_CHECK_FUNCS(acl_get_perm)
  +        AC_CHECK_FUNCS(acl_get_permset)
  +        AC_CHECK_FUNCS(acl_get_qualifier)
  +        AC_CHECK_FUNCS(acl_get_tag_type)
  +        AC_CHECK_FUNCS(acl_init)
  +        AC_CHECK_FUNCS(acl_set_fd)
  +        AC_CHECK_FUNCS(acl_set_file)
  +        AC_CHECK_FUNCS(acl_set_permset)
  +        AC_CHECK_FUNCS(acl_set_qualifier)
  +        AC_CHECK_FUNCS(acl_set_tag_type)
  +        AC_CHECK_FUNCS(acl_size)
  +        AC_CHECK_FUNCS(acl_to_any_text)
  +        AC_CHECK_FUNCS(acl_to_text)
  +        AC_CHECK_FUNCS(__acl_to_xattr)
  +        AC_CHECK_FUNCS(acl_valid)
  +        AC_CHECK_FUNCS(high_water_alloc)
  +        AC_CHECK_FUNCS(next_line)
  +        AC_CHECK_FUNCS(perm_copy_fd)
  +        AC_CHECK_FUNCS(perm_copy_file)
  +        AC_CHECK_FUNCS(walk_tree)
       ], [])
   
   dnl # XAR
  @@ -3436,10 +4492,10 @@
           AC_CHECK_FUNCS(keyctl_instantiate_iov)
           AC_CHECK_FUNCS(keyctl_invalidate)
           AC_CHECK_FUNCS(keyctl_get_persistent)
  -        AC_CHECK_FUNCS(keyctl_dh_compute)
           AC_CHECK_FUNCS(keyctl_describe_alloc)
           AC_CHECK_FUNCS(keyctl_read_alloc)
           AC_CHECK_FUNCS(keyctl_get_security_alloc)
  +        AC_CHECK_FUNCS(keyctl_dh_compute)
           AC_CHECK_FUNCS(keyctl_dh_compute_alloc)
           AC_CHECK_FUNCS(recursive_key_scan)
           AC_CHECK_FUNCS(recursive_session_key_scan)
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/librpmio.vers
  ============================================================================
  $ cvs diff -u -r2.199.2.71 -r2.199.2.72 librpmio.vers
  --- rpm/rpmio/librpmio.vers   4 May 2017 20:57:43 -0000       2.199.2.71
  +++ rpm/rpmio/librpmio.vers   10 May 2017 16:57:56 -0000      2.199.2.72
  @@ -349,6 +349,7 @@
       pgpSubTypeTbl;
       pgpSymkeyTbl;
       pgpTagTbl;
  +    Prctl;
       print_expand_trace;
       print_macro_trace;
       __progname;
  @@ -411,10 +412,15 @@
       rpmbfParams;
       rpmbfUnion;
       _rpmcap_debug;
  +    rpmcapDrop;
  +    rpmcapDump;
       rpmcapGetFD;
       rpmcapGetFN;
  +    rpmcapGetP;
       rpmcapSetFD;
       rpmcapSetFN;
  +    rpmcapSetP;
  +    rpmcapTest;
       rpmcapValidate;
       rpmcapVerifyFD;
       rpmcapVerifyFN;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmcap.c
  ============================================================================
  $ cvs diff -u -r1.1.2.1 -r1.1.2.2 rpmcap.c
  --- rpm/rpmio/rpmcap.c        4 May 2017 20:55:39 -0000       1.1.2.1
  +++ rpm/rpmio/rpmcap.c        10 May 2017 16:57:56 -0000      1.1.2.2
  @@ -10,13 +10,31 @@
   #endif
   
   #if defined(HAVE_SYS_CAPABILITY_H)
  -#include <sys/capability.h>
  +# include <sys/capability.h>
   #endif
  +#if defined(WITH_CAPNG) && defined(HAVE_CAP_NG_H)
  +#include <cap-ng.h>
  +#endif
  +
  +#if defined(HAVE_SYS_PRCTL_H)
  +# include <sys/prctl.h>
  +#endif
  +#if defined(HAVE_SYS_SYSCALL_H)
  +# include <sys/syscall.h>
  +#endif
  +#if defined(HAVE_LINUX_SECUREBITS_H)
  +#include <linux/securebits.h>
  +#endif
  +
  +#include <rpmlog.h>
  +#include <rpmmacro.h>
  +#include <argv.h>
  +
   #include <rpmcap.h>
   
   #include "debug.h"
   
  -int _rpmcap_debug = 0;
  +int _rpmcap_debug = -1;
   
   /* Retrofit cap_compare() if not available. */
   #if defined(WITH_CAP) && !defined(HAVE_CAP_COMPARE)
  @@ -39,7 +57,7 @@
       }
       return rc;
   }
  -#endif
  +#endif       /* WITH_CAP */
   
   char * rpmcapValidate(const char *s)
   {
  @@ -53,7 +71,7 @@
        cap_free(fcaps);
       } else
        text = xstrdup("");
  -#endif
  +#endif       /* WITH_CAP */
   if (_rpmcap_debug)
   fprintf(stderr, "<-- %s(%s) text %s\n", __FUNCTION__, s, text);
       return text;
  @@ -70,7 +88,7 @@
        cap_free(t);
        cap_free(fcaps);
       }
  -#endif
  +#endif       /* WITH_CAP */
   if (_rpmcap_debug)
   fprintf(stderr, "<-- %s(%d) text %s\n", __FUNCTION__, fdno, text);
       return text;
  @@ -87,7 +105,7 @@
        cap_free(t);
        cap_free(fcaps);
       }
  -#endif
  +#endif       /* WITH_CAP */
   if (_rpmcap_debug)
   fprintf(stderr, "<-- %s(%s) text %s\n", __FUNCTION__, fn, text);
       return text;
  @@ -108,7 +126,7 @@
   exit:
       if (fcaps)
           cap_free(fcaps);
  -#endif
  +#endif       /* WITH_CAP */
   if (_rpmcap_debug)
   fprintf(stderr, "<-- %s(%d,%s) rc %d\n", __FUNCTION__, fdno, s, rc);
       return rc;
  @@ -129,7 +147,7 @@
   exit:
       if (fcaps)
           cap_free(fcaps);
  -#endif
  +#endif       /* WITH_CAP */
   if (_rpmcap_debug)
   fprintf(stderr, "<-- %s(%s,%s) rc %d\n", __FUNCTION__, fn, s, rc);
       return rc;
  @@ -154,7 +172,7 @@
   
       cap_free(fcap);
       cap_free(cap);
  -#endif
  +#endif       /* WITH_CAP */
   if (_rpmcap_debug)
   fprintf(stderr, "<-- %s(%d,%s) rc %d\n", __FUNCTION__, fdno, s, rc);
       return rc;
  @@ -179,8 +197,179 @@
   
       cap_free(fcap);
       cap_free(cap);
  -#endif
  +#endif       /* WITH_CAP */
   if (_rpmcap_debug)
   fprintf(stderr, "<-- %s(%s,%s) rc %d\n", __FUNCTION__, fn, s, rc);
       return rc;
   }
  +
  +char * rpmcapGetP(pid_t pid)
  +{
  +    char * text = NULL;
  +#if defined(WITH_CAP)
  +    cap_t pcaps = (pid > 0 ? cap_get_pid(pid) : cap_get_proc());
  +    if (pcaps) {
  +     char *t = cap_to_text(pcaps, NULL);
  +     text = xstrdup(t);
  +     cap_free(t);
  +     cap_free(pcaps);
  +    }
  +#endif       /* WITH_CAP */
  +if (_rpmcap_debug)
  +fprintf(stderr, "<-- %s(%d) text %s\n", __FUNCTION__, pid, text);
  +    return text;
  +}
  +
  +int rpmcapSetP(pid_t pid, const char *s)
  +{
  +    int rc = -1;             /* assume failure */
  +#if defined(WITH_CAP)
  +    cap_t pcaps = NULL;
  +    if (pid <= 0)            /* XXX use capsetp() ? */
  +     goto exit;
  +    if (s && *s != '\0') {
  +        pcaps = cap_from_text(s);
  +     if (pcaps == NULL
  +         || cap_set_proc(pcaps) != 0)
  +         goto exit;
  +    }
  +    rc = 0;
  +exit:
  +    if (pcaps)
  +        cap_free(pcaps);
  +#endif       /* WITH_CAP */
  +if (_rpmcap_debug)
  +fprintf(stderr, "<-- %s(%d,%s) rc %d\n", __FUNCTION__, pid, s, rc);
  +    return rc;
  +}
  +
  +int Prctl(int option, unsigned long arg2, unsigned long arg3,
  +                 unsigned long arg4, unsigned long arg5)
  +{
  +    int rc = -2;
  +#if defined(HAVE_PRCTL)
  +    rc = prctl(option, arg2, arg3, arg4, arg5);
  +#elif defined(__linux__) && defined(SYS_prctl)
  +    rc = syscall(SYS_prctl, option, arg2, arg3, arg4, arg5);
  +#else
  +#error No prctl(2) avaliable.
  +    errno = ENOSYS;
  +#endif
  +    if (rc < 0)
  +     rpmlog(RPMLOG_ERR, _("%s(%d,%lu,%lu,%lu,%lu) failed: %m\n"),
  +             __FUNCTION__, option, arg2, arg3, arg4, arg5);
  +if (_rpmio_debug)
  +fprintf(stderr, _("<-- %s(%d,%lu,%lu,%lu,%lu) rc %d\n"), __FUNCTION__, 
option, arg2, arg3, arg4, arg5, rc);
  +    return rc;
  +}
  +
  +int rpmcapDump(const char * msg)
  +{
  +    int rc = -1;
  +#if defined(WITH_CAPNG)
  +    if (msg)
  +     printf("--- %s\n", msg);
  +
  +    if (capng_get_caps_process())
  +     goto exit;
  +
  +    uid_t uid, euid, suid;
  +    gid_t gid, egid, sgid;  
  +    getresuid(&uid, &euid, &suid);  
  +    getresgid(&gid, &egid, &sgid);
  +    printf("User  credentials uid:%d euid:%d suid:%d\n", uid, euid, suid);
  +    printf("Group credentials gid:%d egid:%d sgid:%d\n", gid, egid, sgid);
  +    if (uid != euid || gid != egid)
  +     printf("Note: app has mismatching credentials!!\n");
  +
  +    if (capng_have_capabilities(CAPNG_SELECT_CAPS) == CAPNG_NONE)
  +     printf("Current capabilities: none\n");
  +    else
  +     capng_print_caps_numeric(CAPNG_PRINT_STDOUT, CAPNG_SELECT_BOTH);
  +
  +#ifdef PR_SET_SECUREBITS
  +    const char *ncomma = "";
  +
  +    printf("securebits flags: ");
  +    rc = prctl(PR_GET_SECUREBITS, 1 << SECURE_NOROOT);
  +    if (rc & (1 << SECURE_NOROOT)) {
  +     printf("%sNOROOT", ncomma);
  +     ncomma = ", ";
  +    }
  +    rc = prctl(PR_GET_SECUREBITS, 1 << SECURE_NOROOT_LOCKED);
  +    if (rc & (1 << SECURE_NOROOT_LOCKED)) {
  +     printf("%sNOROOT_LOCKED", ncomma);
  +     ncomma = ", ";
  +    }
  +    rc = prctl(PR_GET_SECUREBITS, 1 << SECURE_NO_SETUID_FIXUP);
  +    if (rc & (1 << SECURE_NO_SETUID_FIXUP)) {
  +     printf("%sNO_SETUID_FIXUP", ncomma);
  +     ncomma = ", ";
  +    }
  +    rc = prctl(PR_GET_SECUREBITS, 1 << SECURE_NO_SETUID_FIXUP_LOCKED);
  +    if (rc & (1 << SECURE_NO_SETUID_FIXUP_LOCKED)) {
  +     printf("%sNO_SETUID_FIXUP_LOCKED", ncomma);
  +     ncomma = ", ";
  +    }
  +    if (*ncomma != ',')
  +     printf("none");
  +    printf("\n");
  +#endif
  +    rc = 0;
  +exit:
  +    fflush(stdout);
  +#endif       /* WITH_CAPNG */
  +    return rc;
  +}
  +
  +int rpmcapTest(const char * s)
  +{
  +    int rc = -1;
  +#if defined(WITH_CAP)
  +    cap_value_t pcap = 0;
  +    if (cap_from_name(s, &pcap) != -1)
  +     rc = cap_get_bound(pcap);
  +#endif       /* WITH_CAP */
  +#if defined(WITH_CAPNG)
  +    const char *name = s;
  +    if (!strncasecmp(name, "CAP_", sizeof("CAP_")-1))
  +     name += sizeof("CAP_")-1;
  +    int cap = capng_name_to_capability(name);
  +    if (cap >= 0) {
  +     rpmcapDump("rpmcapTest");
  +    }
  +#endif       /* WITH_CAPNG */
  +if (_rpmcap_debug)
  +fprintf(stderr, "<-- %s(%s) rc %d\n", __FUNCTION__, s, rc);
  +    return rc;
  +}
  +
  +int rpmcapDrop(const char * s)
  +{
  +    int rc = -1;
  +#if defined(WITH_CAP_XXX)
  +    cap_value_t pcap = 0;
  +    if (cap_from_name(s, &pcap) != -1)
  +     rc = cap_drop_bound(pcap);
  +#endif       /* WITH_CAP */
  +#if defined(WITH_CAPNG)
  +    const char *name = s;
  +    if (!strncasecmp(name, "CAP_", sizeof("CAP_")-1))
  +     name += sizeof("CAP_")-1;
  +    int cap = capng_name_to_capability(name);
  +    if (cap >= 0) {
  +     
  +     rpmcapDump("rpmcapDrop before");
  +
  +     capng_clear(CAPNG_SELECT_BOTH);
  +     capng_type_t type = CAPNG_EFFECTIVE|CAPNG_PERMITTED;
  +     rc = capng_update(CAPNG_DROP, type, cap);
  +     rc = capng_apply(CAPNG_SELECT_BOTH);
  +
  +     rpmcapDump("rpmcapDrop  after");
  +    }
  +#endif       /* WITH_CAP */
  +if (_rpmcap_debug)
  +fprintf(stderr, "<-- %s(%s) rc %d\n", __FUNCTION__, s, rc);
  +    return rc;
  +}
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmcap.h
  ============================================================================
  $ cvs diff -u -r1.1.2.1 -r1.1.2.2 rpmcap.h
  --- rpm/rpmio/rpmcap.h        4 May 2017 20:55:39 -0000       1.1.2.1
  +++ rpm/rpmio/rpmcap.h        10 May 2017 16:57:56 -0000      1.1.2.2
  @@ -67,6 +67,28 @@
    */
   int rpmcapVerifyFN(const char *fn, const char *s);
   
  +/**
  + * Get process capabity from pid.
  + * @param pid        process id
  + * @return   capability string (malloc'd)
  + */
  +char * rpmcapGetP(pid_t pid);
  +
  +/**
  + * Set process capabity on pid.
  + * @param pid        process id
  + * @param s  capability string
  + * @return   0 on success
  + */
  +int rpmcapSetP(pid_t pid, const char * s);
  +
  +int rpmcapDump(const char * msg);
  +int rpmcapTest(const char *s);
  +int rpmcapDrop(const char *s);
  +
  +int Prctl(int option, unsigned long arg2, unsigned long arg3,
  +                 unsigned long arg4, unsigned long arg5);
  +
   #ifdef __cplusplus
   }
   #endif
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmrpc.c
  ============================================================================
  $ cvs diff -u -r2.99.2.11 -r2.99.2.12 rpmrpc.c
  --- rpm/rpmio/rpmrpc.c        3 May 2017 15:03:53 -0000       2.99.2.11
  +++ rpm/rpmio/rpmrpc.c        10 May 2017 16:57:56 -0000      2.99.2.12
  @@ -1807,30 +1807,6 @@
       return rc;
   }
   
  -#if defined(HAVE_SYS_PRCTL_H)
  -#include <sys/prctl.h>
  -#endif
  -int Prctl(int option, unsigned long arg2, unsigned long arg3,
  -                 unsigned long arg4, unsigned long arg5);
  -int Prctl(int option, unsigned long arg2, unsigned long arg3,
  -                 unsigned long arg4, unsigned long arg5)
  -{
  -    int rc = -2;
  -#if defined(HAVE_PRCTL)
  -    rc = prctl(option, arg2, arg3, arg4, arg5);
  -#elif defined(__linux__) && defined(SYS_prctl)
  -    rc = syscall(SYS_prctl, option, arg2, arg3, arg4, arg5);
  -#else
  -    errno = ENOSYS;
  -#endif
  -    if (rc < 0)
  -     rpmlog(RPMLOG_ERR, _("%s(%d,%lu,%lu,%lu,%lu) failed: %m\n"),
  -             __FUNCTION__, option, arg2, arg3, arg4, arg5);
  -if (_rpmio_debug)
  -fprintf(stderr, _("<-- %s(%d,%lu,%lu,%lu,%lu) rc %d\n"), __FUNCTION__, 
option, arg2, arg3, arg4, arg5, rc);
  -    return rc;
  -}
  -
   int Chown(const char * path, uid_t owner, gid_t group)
   {
       int rc = -2;
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                [email protected]

Reply via email to