diff options
Diffstat (limited to 'src/blogc-github-lambda/lambda_function.py')
-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: |