diff options
author | Rafael G. Martins <rafael@rafaelmartins.eng.br> | 2016-12-14 00:39:40 +0100 |
---|---|---|
committer | Rafael G. Martins <rafael@rafaelmartins.eng.br> | 2016-12-14 00:39:40 +0100 |
commit | 40bda8a04d397e72763bd74a8e76d7b14845a5a3 (patch) | |
tree | 22c8e1ff31378afa2d2577ec69641efbdd4d1b12 | |
parent | 83e050d5b93ac66832605c7193223720d99cb4a3 (diff) | |
download | blogc-40bda8a04d397e72763bd74a8e76d7b14845a5a3.tar.gz blogc-40bda8a04d397e72763bd74a8e76d7b14845a5a3.tar.bz2 blogc-40bda8a04d397e72763bd74a8e76d7b14845a5a3.zip |
github-lambda: improve handling of busybox symlinks
-rw-r--r-- | src/blogc-github-lambda/lambda_function.py | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/blogc-github-lambda/lambda_function.py b/src/blogc-github-lambda/lambda_function.py index 9320544..ad4614d 100644 --- a/src/blogc-github-lambda/lambda_function.py +++ b/src/blogc-github-lambda/lambda_function.py @@ -22,15 +22,25 @@ import urllib2 import shutil cwd = os.path.dirname(os.path.abspath(__file__)) +bindir = os.path.join(cwd, 'bin') -os.environ['PATH'] = '%s:%s' % (os.path.join(cwd, 'bin'), - os.environ.get('PATH', '')) +os.environ['PATH'] = '%s:%s' % (bindir, os.environ.get('PATH', '')) GITHUB_AUTH = os.environ.get('GITHUB_AUTH') if GITHUB_AUTH is not None and ':' not in GITHUB_AUTH: GITHUB_AUTH = boto3.client('kms').decrypt( CiphertextBlob=base64.b64decode(GITHUB_AUTH))['Plaintext'] +# this is just a safeguard, just in case lambda stops supporting symlinks +# in zip files +for binary in subprocess.check_output([os.path.join(bindir, 'busybox'), + '--list']).split(): + dst = os.path.join(bindir, binary) + if not os.path.islink(dst): + os.symlink('busybox', dst) + else: + break + def get_tarball(repo_name): tarball_url = 'https://api.github.com/repos/%s/tarball/master' % repo_name @@ -144,9 +154,9 @@ def lambda_handler(event, context): repo_name = payload['repository']['name'] repo_full_name = payload['repository']['full_name'] rootdir = get_tarball(repo_full_name) - rv = subprocess.call([os.path.join(cwd, 'bin', 'make'), '-C', rootdir, + rv = subprocess.call([os.path.join(bindir, 'make'), '-C', rootdir, 'OUTPUT_DIR=_build', - 'BLOGC=%s' % os.path.join(cwd, 'bin', 'blogc')], + 'BLOGC=%s' % os.path.join(bindir, 'blogc')], stdout=None if debug else subprocess.PIPE, stderr=None if debug else subprocess.PIPE) if rv != 0: |