diff options
author | Frank Ch. Eigler <[email protected]> | 2022-10-31 17:40:01 -0400 |
---|---|---|
committer | Frank Ch. Eigler <[email protected]> | 2024-06-03 11:22:49 -0400 |
commit | d47d93b1049ecfad2f9bb9db30dc630c3d6131ca (patch) | |
tree | f5b2beb0c35c98d0d6d3084ffafe1e6f0371861e /configure.ac | |
parent | f4d79637f994457b915af5d8a52b922453f6e6fe (diff) |
PR29472: debuginfod: add metadata query webapi, C api, client
This patch extends the debuginfod API with a "metadata query"
operation. It allows clients to request an enumeration of file names
known to debuginfod servers, returning a JSON response including the
matching buildids. This lets clients later download debuginfo for a
range of versions of the same named binaries, in case they need to to
prospective work (like systemtap-based live-patching). It also lets
server operators implement prefetch triggering operations for popular
but slow debuginfo slivers like kernel vdso.debug files on fedora.
Implementation requires a modern enough json-c library, namely 0.11,
which dates from 2014. Without that, debuginfod client/server bits
will refuse to build.
% debuginfod-find metadata file /bin/ls
% debuginfod-find metadata glob "/usr/local/bin/c*"
Refactored several functions in debuginfod-client.c, because the
metadata search logic is different for multiple servers (merge all
responses instead of first responder wins).
Documentation and testing are included.
Signed-off-by: Ryan Goldberg <[email protected]>
Signed-off-by: Frank Ch. Eigler <[email protected]>
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/configure.ac b/configure.ac index 5adf7667..836d61ea 100644 --- a/configure.ac +++ b/configure.ac @@ -863,9 +863,6 @@ AS_IF([test "x$enable_libdebuginfod" != "xno"], [ enable_libdebuginfod=yes # presume success PKG_PROG_PKG_CONFIG PKG_CHECK_MODULES([libcurl],[libcurl >= 7.29.0],[],[enable_libdebuginfod=no]) - if test "x$enable_libdebuginfod" = "xno"; then - AC_MSG_ERROR([dependencies not found, use --disable-libdebuginfod to disable or --enable-libdebuginfod=dummy to build a (bootstrap) dummy library.]) - fi else AC_MSG_NOTICE([building (bootstrap) dummy libdebuginfo library]) fi @@ -899,10 +896,8 @@ AS_IF([test "x$enable_debuginfod" != "xno"], [ PKG_CHECK_MODULES([libmicrohttpd],[libmicrohttpd >= 0.9.33],[],[enable_debuginfod=no]) PKG_CHECK_MODULES([oldlibmicrohttpd],[libmicrohttpd < 0.9.51],[old_libmicrohttpd=yes],[old_libmicrohttpd=no]) PKG_CHECK_MODULES([sqlite3],[sqlite3 >= 3.7.17],[],[enable_debuginfod=no]) - PKG_CHECK_MODULES([libarchive],[libarchive >= 3.1.2],[],[enable_debuginfod=no], AC_DEFINE([HAVE_LIBARCHIVE], [0], [Define to 0 if libarchive is not available])) - if test "x$enable_debuginfod" = "xno"; then - AC_MSG_ERROR([dependencies not found, use --disable-debuginfod to disable.]) - fi + PKG_CHECK_MODULES([libarchive],[libarchive >= 3.1.2],[],[enable_debuginfod=no]) + PKG_CHECK_MODULES([jsonc],[json-c >= 0.11],[],[enable_debuginfod=no]) ]) AS_IF([test "x$enable_debuginfod" != "xno"],AC_DEFINE([ENABLE_DEBUGINFOD],[1],[Build debuginfod])) |