mirror of
git://sourceware.org/git/libabigail.git
synced 2025-02-22 16:56:57 +00:00
configure,abidb: Make the libarchive python module optional for abidb
Some distributions don't have the libarchive python module packaged. This patch makes that module optional and enables abidb to function without it, as it's only necessary for the support of the '--archive' command line option of the abidb program. * configure.ac: Detect the libarchive python module as an optional dependency for the abidb program. So far, only the git python module remains a hard dependency. * tools/abidb (main): Do not support the '--archive' command line option if the libarchive python module is not present. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
This commit is contained in:
parent
0fb03efa85
commit
784b61f00a
15
configure.ac
15
configure.ac
@ -824,16 +824,27 @@ fi
|
||||
|
||||
dnl abidb checks
|
||||
if test x$PYTHON3_INTERPRETER != xno -a x$ENABLE_ABIDB != xno; then
|
||||
AX_CHECK_PYTHON_MODULES([git libarchive],
|
||||
AX_CHECK_PYTHON_MODULES([git],
|
||||
[$PYTHON],
|
||||
[FOUND_ALL_PYTHON_MODULES=yes],
|
||||
[FOUND_ALL_PYTHON_MODULES=no])
|
||||
|
||||
if test x$FOUND_ALL_PYTHON_MODULES = xno; then
|
||||
AC_MSG_NOTICE([missing python modules: $MISSING_PYTHON_MODULES])
|
||||
AC_MSG_NOTICE([disabling abidb as a result])
|
||||
AC_MSG_WARN([disabling abidb as a result])
|
||||
ENABLE_ABIDB=no
|
||||
else
|
||||
ENABLE_ABIDB=yes
|
||||
dnl search for optional modules, just for autoconf reporting purposes
|
||||
AX_CHECK_PYTHON_MODULES([libarchive],
|
||||
[$PYTHON],
|
||||
[FOUND_ALL_OPTIONAL_PYTHON_MODULES=yes],
|
||||
[FOUND_ALL_OPTIONAL_PYTHON_MODULES=no])
|
||||
if test x$FOUND_ALL_OPTIONAL_PYTHON_MODULES = xno; then
|
||||
AC_MSG_WARN([missing optional python modules for abidb: $MISSING_PYTHON_MODULES])
|
||||
else
|
||||
AC_MSG_NOTICE([found all optional python modules for abidb])
|
||||
fi
|
||||
fi
|
||||
else
|
||||
AC_MSG_NOTICE([disabling abidb])
|
||||
|
31
tools/abidb
31
tools/abidb
@ -23,7 +23,11 @@ import re
|
||||
import ast
|
||||
import os
|
||||
import glob
|
||||
import libarchive
|
||||
try:
|
||||
import libarchive
|
||||
enable_libarchive=True
|
||||
except:
|
||||
enable_libarchive=False
|
||||
|
||||
|
||||
# globals
|
||||
@ -156,9 +160,10 @@ def main() -> list[str]:
|
||||
parser.add_argument('--timeout',type=int,help='limit abidw/abicompat runtime (seconds)',default=0)
|
||||
parser.add_argument('--submit',nargs='*',type=str,default=[],
|
||||
help='submit abidw of given binaries to abidb')
|
||||
parser.add_argument('--archive','-Z',metavar='EXT=CMD',
|
||||
type=str,help='submit binaries from archives with given extension & decoder',
|
||||
default=[],action='append') # like debuginfod(8)
|
||||
if enable_libarchive:
|
||||
parser.add_argument('--archive','-Z',metavar='EXT=CMD',
|
||||
type=str,help='submit binaries from archives with given extension & decoder',
|
||||
default=[],action='append') # like debuginfod(8)
|
||||
parser.add_argument('--sysroot',type=str,help='remove given sysroot prefix from submitted file names',default=None)
|
||||
parser.add_argument('--filter',type=str,help='submit only binaries matching given wildcard',default=r'/lib.*\.so') # sub-version suffixes will be flattened into SONAME
|
||||
# --sysroot=PATH subtract this from SUBMIT paths
|
||||
@ -208,14 +213,15 @@ def main() -> list[str]:
|
||||
logging.info(f'checked out distrobranch {args.distrobranch} files {numfiles}')
|
||||
|
||||
ra = {}
|
||||
for entry in args.archive: # parse / accumulate -Z EXT=CMD bits
|
||||
extcmd = entry.split('=')
|
||||
ext = extcmd[0]
|
||||
if len(extcmd) == 1:
|
||||
cmd = "cat" # default: pass through to libarchive
|
||||
else:
|
||||
cmd = "=".join(extcmd[1:]) # the rest of the command, filling other ='s back in
|
||||
ra["."+ext] = cmd
|
||||
if enable_libarchive:
|
||||
for entry in args.archive: # parse / accumulate -Z EXT=CMD bits
|
||||
extcmd = entry.split('=')
|
||||
ext = extcmd[0]
|
||||
if len(extcmd) == 1:
|
||||
cmd = "cat" # default: pass through to libarchive
|
||||
else:
|
||||
cmd = "=".join(extcmd[1:]) # the rest of the command, filling other ='s back in
|
||||
ra["."+ext] = cmd
|
||||
|
||||
|
||||
def submit_file_generator(args):
|
||||
@ -230,6 +236,7 @@ def main() -> list[str]:
|
||||
ln = submit
|
||||
yield (None, ln, pn) # must be a plain file # XXX or ldconfig-created symlink, ugh
|
||||
else: # an archive!
|
||||
assert enable_libarchive
|
||||
cmd = ra[ext]
|
||||
if (cmd == "cat"): # short-circuit this
|
||||
with libarchive.file_reader(submit) as archive:
|
||||
|
Loading…
Reference in New Issue
Block a user