From: Tim Beale Date: Thu, 8 Nov 2018 23:17:40 +0000 (+1300) Subject: mdb_util: Better error message if lmdb-utils not installed X-Git-Tag: tdb-1.3.17~832 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b161b3a89154a9529404f5ee31d8679ddd1c48b0;p=thirdparty%2Fsamba.git mdb_util: Better error message if lmdb-utils not installed mdb_copy() was dutifully checking the PATH for the mdb_copy executable, then, if it didn't find it, blindly proceeding anyway and trying to run a non-existent executable. This resulted in a cryptic error: ERROR(): uncaught exception - [Errno 2] No such file or directory Add in an extra check that we actually find the executable and raise a better human-readable exception if we don't. Signed-off-by: Tim Beale Reviewed-by: Andreas Schneider Reviewed-by: Alexander Bokovoy Autobuild-User(master): Andreas Schneider Autobuild-Date(master): Fri Nov 9 21:07:47 CET 2018 on sn-devel-144 --- diff --git a/python/samba/mdb_util.py b/python/samba/mdb_util.py index 4dbff48b05a..1be16d5bb3d 100644 --- a/python/samba/mdb_util.py +++ b/python/samba/mdb_util.py @@ -19,6 +19,7 @@ import samba import subprocess import os +from samba.netcmd import CommandError def mdb_copy(file1, file2): @@ -26,11 +27,17 @@ def mdb_copy(file1, file2): """ # Find the location of the mdb_copy tool dirs = os.getenv('PATH').split(os.pathsep) + found = False for d in dirs: toolpath = os.path.join(d, "mdb_copy") if os.path.exists(toolpath): + found = True break + if not found: + raise CommandError("mdb_copy not found. " + "You may need to install the lmdb-utils package") + mdb_copy_cmd = [toolpath, "-n", file1, "%s.copy.mdb" % file1] status = subprocess.check_call(mdb_copy_cmd, close_fds=True, shell=False)