From f52df63bce6bbac69edebc163249c3b4d799f924 Mon Sep 17 00:00:00 2001 From: Tommi Virtanen Date: Wed, 13 Jul 2011 12:07:36 -0700 Subject: [PATCH] More careful error checking, avoid need for shell quoting. --- teuthology/task/ceph.py | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/teuthology/task/ceph.py b/teuthology/task/ceph.py index f93177379d..939ed4dcae 100644 --- a/teuthology/task/ceph.py +++ b/teuthology/task/ceph.py @@ -1,9 +1,11 @@ from cStringIO import StringIO import contextlib +import errno import logging import os import shutil +import subprocess import tempfile from teuthology import misc as teuthology @@ -142,14 +144,32 @@ def binaries(ctx, config): try: tmptar = '/tmp/cephpush.%d.tar.gz' % os.getpid() log.info('Installing %s to %s...' % (path, tmpdir)) - os.system(( - 'cd {srcdir} && ' + - 'make install DESTDIR={tmpdir} && ' + - '[ -d {tmpdir}/usr/local ] || ln -s . {tmpdir}/usr/local' - ).format(srcdir=path, tmpdir=tmpdir)) + subprocess.check_call( + args=[ + 'make', + 'install', + 'DESTDIR={tmpdir}'.format(tmpdir=tmpdir), + ], + cwd=path, + ) + try: + os.symlink('.', os.path.join(tmpdir, 'usr', 'local')) + except OSError as e: + if e.errno == errno.EEXIST: + pass + else: + raise log.info('Building ceph binary tarball %s from %s...' % (tmptar, tmpdir)) - os.system(('( cd {tmpdir} && tar czf {tmptar} . )').format(tmpdir=tmpdir, tmptar=tmptar)); + subprocess.check_call( + args=[ + 'tar', + 'czf', + tmptar, + '.', + ], + cwd=tmpdir, + ) finally: shutil.rmtree(tmpdir, ignore_errors=True) log.info('Pushing tarball %s...' % tmptar) -- 2.39.5