From e12e1b6a5ccb681f97991e14481dac2f8bb0d7e6 Mon Sep 17 00:00:00 2001 From: Marcus Hoffmann Date: Tue, 5 Dec 2017 21:31:55 +0100 Subject: [PATCH] build: better logging output on rsync failures Save rsync error output and combine that with the command invocation into an FDroidException which can be logged to the wiki. This additionally sets -q for rsync to only print errors. --- fdroidserver/build.py | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/fdroidserver/build.py b/fdroidserver/build.py index 2bacd555..b1b74464 100644 --- a/fdroidserver/build.py +++ b/fdroidserver/build.py @@ -100,18 +100,22 @@ def build_server(app, build, vcs, build_dir, output_dir, log_dir, force): # Helper to copy the contents of a directory to the server... def send_dir(path): logging.debug("rsyncing " + path + " to " + ftp.getcwd()) - subprocess.check_call(['rsync', '-rple', - 'ssh -o StrictHostKeyChecking=no' + - ' -o UserKnownHostsFile=/dev/null' + - ' -o LogLevel=FATAL' + - ' -o IdentitiesOnly=yes' + - ' -o PasswordAuthentication=no' + - ' -p ' + str(sshinfo['port']) + - ' -i ' + sshinfo['idfile'], - path, - sshinfo['user'] + - "@" + sshinfo['hostname'] + - ":" + ftp.getcwd()]) + try: + subprocess.check_output(['rsync', '-rplqe', + 'ssh -o StrictHostKeyChecking=no' + + ' -o UserKnownHostsFile=/dev/null' + + ' -o LogLevel=FATAL' + + ' -o IdentitiesOnly=yes' + + ' -o PasswordAuthentication=no' + + ' -p ' + str(sshinfo['port']) + + ' -i ' + sshinfo['idfile'], + path, + sshinfo['user'] + + "@" + sshinfo['hostname'] + + ":" + ftp.getcwd()], + stderr=subprocess.STDOUT) + except subprocess.CalledProcessError as e: + raise FDroidException(str(e), e.output.decode()) logging.info("Preparing server for build...") serverpath = os.path.abspath(os.path.dirname(__file__))