aws-lambda-builders 1.26.0__tar.gz → 1.28.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/PKG-INFO +3 -1
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/README.md +1 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/__init__.py +1 -1
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/__main__.py +4 -5
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/actions.py +40 -13
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/builder.py +2 -3
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/exceptions.py +0 -1
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/registry.py +0 -1
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/utils.py +31 -22
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/validator.py +2 -2
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflow.py +8 -12
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/__init__.py +6 -5
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/custom_make/actions.py +2 -1
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/custom_make/make.py +0 -1
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/custom_make/workflow.py +5 -5
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/dotnet_clipackage/actions.py +6 -5
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/dotnet_clipackage/dotnetcli_resolver.py +0 -1
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/dotnet_clipackage/workflow.py +1 -2
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/go_modules/actions.py +2 -2
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/go_modules/builder.py +1 -2
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/go_modules/workflow.py +2 -4
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/java/actions.py +1 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/java/utils.py +2 -1
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/java_gradle/actions.py +3 -1
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/java_gradle/gradle_validator.py +1 -2
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/java_gradle/workflow.py +2 -1
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/java_maven/actions.py +3 -2
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/java_maven/workflow.py +3 -3
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/nodejs_npm/actions.py +34 -21
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/nodejs_npm/npm.py +0 -1
- aws_lambda_builders-1.28.0/aws_lambda_builders/workflows/nodejs_npm/workflow.py +213 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/nodejs_npm_esbuild/actions.py +1 -1
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/nodejs_npm_esbuild/esbuild.py +3 -4
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/nodejs_npm_esbuild/workflow.py +10 -9
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/python_pip/DESIGN.md +1 -1
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/python_pip/actions.py +3 -3
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/python_pip/compat.py +0 -1
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/python_pip/packager.py +11 -12
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/python_pip/utils.py +4 -4
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/python_pip/validator.py +2 -1
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/python_pip/workflow.py +2 -4
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/ruby_bundler/actions.py +2 -1
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/ruby_bundler/workflow.py +10 -11
- aws_lambda_builders-1.28.0/aws_lambda_builders/workflows/rust_cargo/DESIGN.md +28 -0
- aws_lambda_builders-1.28.0/aws_lambda_builders/workflows/rust_cargo/__init__.py +5 -0
- aws_lambda_builders-1.28.0/aws_lambda_builders/workflows/rust_cargo/actions.py +146 -0
- aws_lambda_builders-1.28.0/aws_lambda_builders/workflows/rust_cargo/cargo_lambda.py +130 -0
- aws_lambda_builders-1.28.0/aws_lambda_builders/workflows/rust_cargo/exceptions.py +14 -0
- aws_lambda_builders-1.28.0/aws_lambda_builders/workflows/rust_cargo/feature_flag.py +12 -0
- aws_lambda_builders-1.28.0/aws_lambda_builders/workflows/rust_cargo/utils.py +20 -0
- aws_lambda_builders-1.28.0/aws_lambda_builders/workflows/rust_cargo/workflow.py +60 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders.egg-info/PKG-INFO +3 -1
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders.egg-info/SOURCES.txt +8 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders.egg-info/requires.txt +6 -7
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/pyproject.toml +4 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/requirements/dev.txt +6 -7
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/setup.py +1 -0
- aws_lambda_builders-1.26.0/aws_lambda_builders/workflows/nodejs_npm/workflow.py +0 -186
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/LICENSE +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/MANIFEST.in +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/NOTICE +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/architecture.py +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/binary_path.py +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/path_resolver.py +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/custom_make/DESIGN.md +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/custom_make/__init__.py +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/custom_make/exceptions.py +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/custom_make/utils.py +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/custom_make/validator.py +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/dotnet_clipackage/DESIGN.md +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/dotnet_clipackage/__init__.py +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/dotnet_clipackage/dotnetcli.py +1 -1
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/dotnet_clipackage/utils.py +1 -1
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/go_modules/DESIGN.md +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/go_modules/__init__.py +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/go_modules/utils.py +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/go_modules/validator.py +2 -2
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/java/__init__.py +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/java_gradle/DESIGN.md +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/java_gradle/__init__.py +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/java_gradle/gradle.py +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/java_gradle/gradle_resolver.py +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/java_gradle/resources/lambda-build-init.gradle +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/java_maven/DESIGN.md +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/java_maven/__init__.py +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/java_maven/maven.py +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/java_maven/maven_resolver.py +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/java_maven/maven_validator.py +1 -1
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/nodejs_npm/DESIGN.md +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/nodejs_npm/__init__.py +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/nodejs_npm/utils.py +2 -2
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/nodejs_npm_esbuild/DESIGN.md +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/nodejs_npm_esbuild/__init__.py +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/nodejs_npm_esbuild/exceptions.py +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/python_pip/__init__.py +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/python_pip/exceptions.py +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/ruby_bundler/DESIGN.md +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/ruby_bundler/__init__.py +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/ruby_bundler/bundler.py +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/ruby_bundler/utils.py +1 -1
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders.egg-info/dependency_links.txt +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders.egg-info/entry_points.txt +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders.egg-info/top_level.txt +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/requirements/base.txt +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/requirements/python_pip.txt +0 -0
- {aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: aws_lambda_builders
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.28.0
|
|
4
4
|
Summary: Python library to compile, build & package AWS Lambda functions for several runtimes & frameworks.
|
|
5
5
|
Home-page: https://github.com/awslabs/aws-lambda-builders
|
|
6
6
|
Author: Amazon Web Services
|
|
@@ -18,6 +18,7 @@ Classifier: Programming Language :: Python
|
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.7
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.8
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.9
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
21
22
|
Classifier: Topic :: Internet
|
|
22
23
|
Classifier: Topic :: Software Development :: Build Tools
|
|
23
24
|
Classifier: Topic :: Utilities
|
|
@@ -46,6 +47,7 @@ Lambda Builders currently contains the following workflows
|
|
|
46
47
|
* Typescript with esbuild
|
|
47
48
|
* Ruby with Bundler
|
|
48
49
|
* Go with Mod
|
|
50
|
+
* Rust with Cargo
|
|
49
51
|
|
|
50
52
|
In Addition to above workflows, AWS Lambda Builders also supports *Custom Workflows* through a Makefile.
|
|
51
53
|
|
|
@@ -18,6 +18,7 @@ Lambda Builders currently contains the following workflows
|
|
|
18
18
|
* Typescript with esbuild
|
|
19
19
|
* Ruby with Bundler
|
|
20
20
|
* Go with Mod
|
|
21
|
+
* Rust with Cargo
|
|
21
22
|
|
|
22
23
|
In Addition to above workflows, AWS Lambda Builders also supports *Custom Workflows* through a Makefile.
|
|
23
24
|
|
|
@@ -6,16 +6,16 @@ a JSON-RPC interface over stdin/stdout to invoke the builder and get response.
|
|
|
6
6
|
Read the design document for explanation of the JSON-RPC interface
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
|
-
import sys
|
|
10
9
|
import json
|
|
11
|
-
import os
|
|
12
10
|
import logging
|
|
11
|
+
import os
|
|
13
12
|
import re
|
|
13
|
+
import sys
|
|
14
14
|
|
|
15
|
+
from aws_lambda_builders import RPC_PROTOCOL_VERSION as lambda_builders_protocol_version
|
|
15
16
|
from aws_lambda_builders.architecture import X86_64
|
|
16
17
|
from aws_lambda_builders.builder import LambdaBuilder
|
|
17
|
-
from aws_lambda_builders.exceptions import WorkflowNotFoundError, WorkflowUnknownError
|
|
18
|
-
from aws_lambda_builders import RPC_PROTOCOL_VERSION as lambda_builders_protocol_version
|
|
18
|
+
from aws_lambda_builders.exceptions import WorkflowFailedError, WorkflowNotFoundError, WorkflowUnknownError
|
|
19
19
|
|
|
20
20
|
log_level = int(os.environ.get("LAMBDA_BUILDERS_LOG_LEVEL", logging.INFO))
|
|
21
21
|
|
|
@@ -36,7 +36,6 @@ def _error_response(request_id, http_status_code, message):
|
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
def _parse_version(version_string):
|
|
39
|
-
|
|
40
39
|
if VERSION_REGEX.match(version_string):
|
|
41
40
|
return float(version_string)
|
|
42
41
|
else:
|
|
@@ -6,10 +6,10 @@ import logging
|
|
|
6
6
|
import os
|
|
7
7
|
import shutil
|
|
8
8
|
from pathlib import Path
|
|
9
|
-
from typing import Set,
|
|
9
|
+
from typing import Iterator, Set, Tuple, Union
|
|
10
10
|
|
|
11
11
|
from aws_lambda_builders import utils
|
|
12
|
-
from aws_lambda_builders.utils import copytree
|
|
12
|
+
from aws_lambda_builders.utils import copytree, create_symlink_or_copy
|
|
13
13
|
|
|
14
14
|
LOG = logging.getLogger(__name__)
|
|
15
15
|
|
|
@@ -55,7 +55,6 @@ class Purpose(object):
|
|
|
55
55
|
|
|
56
56
|
class _ActionMetaClass(type):
|
|
57
57
|
def __new__(mcs, name, bases, class_dict):
|
|
58
|
-
|
|
59
58
|
cls = type.__new__(mcs, name, bases, class_dict)
|
|
60
59
|
|
|
61
60
|
if cls.__name__ == "BaseAction":
|
|
@@ -100,24 +99,28 @@ class BaseAction(object, metaclass=_ActionMetaClass):
|
|
|
100
99
|
|
|
101
100
|
|
|
102
101
|
class CopySourceAction(BaseAction):
|
|
103
|
-
|
|
104
102
|
NAME = "CopySource"
|
|
105
103
|
|
|
106
104
|
DESCRIPTION = "Copying source code while skipping certain commonly excluded files"
|
|
107
105
|
|
|
108
106
|
PURPOSE = Purpose.COPY_SOURCE
|
|
109
107
|
|
|
110
|
-
def __init__(self, source_dir, dest_dir, excludes=None):
|
|
108
|
+
def __init__(self, source_dir, dest_dir, excludes=None, maintain_symlinks=False):
|
|
111
109
|
self.source_dir = source_dir
|
|
112
110
|
self.dest_dir = dest_dir
|
|
113
111
|
self.excludes = excludes or []
|
|
112
|
+
self.maintain_symlinks = maintain_symlinks
|
|
114
113
|
|
|
115
114
|
def execute(self):
|
|
116
|
-
copytree(
|
|
115
|
+
copytree(
|
|
116
|
+
self.source_dir,
|
|
117
|
+
self.dest_dir,
|
|
118
|
+
ignore=shutil.ignore_patterns(*self.excludes),
|
|
119
|
+
maintain_symlinks=self.maintain_symlinks,
|
|
120
|
+
)
|
|
117
121
|
|
|
118
122
|
|
|
119
123
|
class LinkSourceAction(BaseAction):
|
|
120
|
-
|
|
121
124
|
NAME = "LinkSource"
|
|
122
125
|
|
|
123
126
|
DESCRIPTION = "Linking source code to the target folder"
|
|
@@ -141,32 +144,54 @@ class LinkSourceAction(BaseAction):
|
|
|
141
144
|
utils.create_symlink_or_copy(str(source_path), str(destination_path))
|
|
142
145
|
|
|
143
146
|
|
|
144
|
-
class
|
|
147
|
+
class LinkSinglePathAction(BaseAction):
|
|
148
|
+
NAME = "LinkSource"
|
|
149
|
+
|
|
150
|
+
DESCRIPTION = "Creates symbolic link at destination, pointing to source"
|
|
151
|
+
|
|
152
|
+
PURPOSE = Purpose.LINK_SOURCE
|
|
145
153
|
|
|
154
|
+
def __init__(self, source: Union[str, os.PathLike], dest: Union[str, os.PathLike]):
|
|
155
|
+
self._source = source
|
|
156
|
+
self._dest = dest
|
|
157
|
+
|
|
158
|
+
def execute(self):
|
|
159
|
+
destination_path = Path(self._dest)
|
|
160
|
+
if not destination_path.exists():
|
|
161
|
+
os.makedirs(destination_path.parent, exist_ok=True)
|
|
162
|
+
utils.create_symlink_or_copy(str(self._source), str(destination_path))
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
class CopyDependenciesAction(BaseAction):
|
|
146
166
|
NAME = "CopyDependencies"
|
|
147
167
|
|
|
148
168
|
DESCRIPTION = "Copying dependencies while skipping source file"
|
|
149
169
|
|
|
150
170
|
PURPOSE = Purpose.COPY_DEPENDENCIES
|
|
151
171
|
|
|
152
|
-
def __init__(self, source_dir, artifact_dir, destination_dir):
|
|
172
|
+
def __init__(self, source_dir, artifact_dir, destination_dir, maintain_symlinks=False):
|
|
153
173
|
self.source_dir = source_dir
|
|
154
174
|
self.artifact_dir = artifact_dir
|
|
155
175
|
self.dest_dir = destination_dir
|
|
176
|
+
self.maintain_symlinks = maintain_symlinks
|
|
156
177
|
|
|
157
178
|
def execute(self):
|
|
158
179
|
deps_manager = DependencyManager(self.source_dir, self.artifact_dir, self.dest_dir)
|
|
159
180
|
|
|
160
181
|
for dependencies_source, new_destination in deps_manager.yield_source_dest():
|
|
161
|
-
if os.path.
|
|
162
|
-
|
|
182
|
+
if os.path.islink(dependencies_source) and self.maintain_symlinks:
|
|
183
|
+
os.makedirs(os.path.dirname(new_destination), exist_ok=True)
|
|
184
|
+
linkto = os.readlink(dependencies_source)
|
|
185
|
+
create_symlink_or_copy(linkto, new_destination)
|
|
186
|
+
shutil.copystat(dependencies_source, new_destination, follow_symlinks=False)
|
|
187
|
+
elif os.path.isdir(dependencies_source):
|
|
188
|
+
copytree(dependencies_source, new_destination, maintain_symlinks=self.maintain_symlinks)
|
|
163
189
|
else:
|
|
164
190
|
os.makedirs(os.path.dirname(new_destination), exist_ok=True)
|
|
165
191
|
shutil.copy2(dependencies_source, new_destination)
|
|
166
192
|
|
|
167
193
|
|
|
168
194
|
class MoveDependenciesAction(BaseAction):
|
|
169
|
-
|
|
170
195
|
NAME = "MoveDependencies"
|
|
171
196
|
|
|
172
197
|
DESCRIPTION = "Moving dependencies while skipping source file"
|
|
@@ -214,7 +239,9 @@ class CleanUpAction(BaseAction):
|
|
|
214
239
|
target_path = os.path.join(self.target_dir, name)
|
|
215
240
|
LOG.debug("Clean up action: %s is deleted", str(target_path))
|
|
216
241
|
|
|
217
|
-
if os.path.
|
|
242
|
+
if os.path.islink(target_path):
|
|
243
|
+
os.unlink(target_path)
|
|
244
|
+
elif os.path.isdir(target_path):
|
|
218
245
|
shutil.rmtree(target_path)
|
|
219
246
|
else:
|
|
220
247
|
os.remove(target_path)
|
|
@@ -3,11 +3,11 @@ Entrypoint for the AWS Lambda Builder library
|
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
5
|
import importlib
|
|
6
|
-
import os
|
|
7
6
|
import logging
|
|
7
|
+
import os
|
|
8
8
|
|
|
9
9
|
from aws_lambda_builders.architecture import X86_64
|
|
10
|
-
from aws_lambda_builders.registry import
|
|
10
|
+
from aws_lambda_builders.registry import DEFAULT_REGISTRY, get_workflow
|
|
11
11
|
from aws_lambda_builders.workflow import Capability
|
|
12
12
|
|
|
13
13
|
LOG = logging.getLogger(__name__)
|
|
@@ -21,7 +21,6 @@ class LambdaBuilder(object):
|
|
|
21
21
|
"""
|
|
22
22
|
|
|
23
23
|
def __init__(self, language, dependency_manager, application_framework, supported_workflows=None):
|
|
24
|
-
|
|
25
24
|
"""
|
|
26
25
|
Initialize the builder.
|
|
27
26
|
:type supported_workflows: list
|
|
@@ -2,41 +2,45 @@
|
|
|
2
2
|
Common utilities for the library
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
import logging
|
|
6
|
+
import os
|
|
5
7
|
import shutil
|
|
6
8
|
import sys
|
|
7
|
-
import os
|
|
8
|
-
import logging
|
|
9
9
|
from pathlib import Path
|
|
10
|
-
from typing import Union
|
|
10
|
+
from typing import Callable, List, Optional, Set, Union
|
|
11
11
|
|
|
12
12
|
from aws_lambda_builders.architecture import ARM64
|
|
13
13
|
|
|
14
14
|
LOG = logging.getLogger(__name__)
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
def copytree(
|
|
17
|
+
def copytree(
|
|
18
|
+
source: str,
|
|
19
|
+
destination: str,
|
|
20
|
+
ignore: Optional[Callable[[str, List[str]], Set[str]]] = None,
|
|
21
|
+
include: Optional[Callable[[str], bool]] = None,
|
|
22
|
+
maintain_symlinks: bool = False,
|
|
23
|
+
) -> None:
|
|
18
24
|
"""
|
|
19
25
|
Similar to shutil.copytree except that it removes the limitation that the destination directory should
|
|
20
26
|
be present.
|
|
21
27
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
:type ignore: function
|
|
31
|
-
:param ignore:
|
|
28
|
+
Parameters
|
|
29
|
+
----------
|
|
30
|
+
source : str
|
|
31
|
+
Path to the source folder to copy.
|
|
32
|
+
destination : str
|
|
33
|
+
Path to destination folder.
|
|
34
|
+
ignore : Optional[Callable[[str, List[str]], Set[str]]]
|
|
32
35
|
A function that returns a set of file names to ignore, given a list of available file names. Similar to the
|
|
33
|
-
``ignore`` property of ``shutils.copytree`` method
|
|
34
|
-
|
|
35
|
-
:type include: Callable[[str], bool]
|
|
36
|
-
:param include:
|
|
36
|
+
``ignore`` property of ``shutils.copytree`` method. By default None.
|
|
37
|
+
include : Optional[Callable[[str], bool]]
|
|
37
38
|
A function that will decide whether a file should be copied or skipped it. It accepts file name as parameter
|
|
38
39
|
and return True or False. Returning True will continue copy operation, returning False will skip copy operation
|
|
39
|
-
for that file
|
|
40
|
+
for that file. By default None.
|
|
41
|
+
maintain_symlinks : bool, optional
|
|
42
|
+
If True, symbolic links in the source are represented as symbolic links in the destination.
|
|
43
|
+
If False, the contents are copied over. By default False.
|
|
40
44
|
"""
|
|
41
45
|
|
|
42
46
|
if not os.path.exists(source):
|
|
@@ -74,8 +78,12 @@ def copytree(source, destination, ignore=None, include=None):
|
|
|
74
78
|
LOG.debug("File (%s) doesn't satisfy the include rule, skipping it", name)
|
|
75
79
|
continue
|
|
76
80
|
|
|
77
|
-
if os.path.
|
|
78
|
-
|
|
81
|
+
if os.path.islink(new_source) and maintain_symlinks:
|
|
82
|
+
linkto = os.readlink(new_source)
|
|
83
|
+
create_symlink_or_copy(linkto, new_destination)
|
|
84
|
+
shutil.copystat(new_source, new_destination, follow_symlinks=False)
|
|
85
|
+
elif os.path.isdir(new_source):
|
|
86
|
+
copytree(new_source, new_destination, ignore=ignore, include=include, maintain_symlinks=maintain_symlinks)
|
|
79
87
|
else:
|
|
80
88
|
LOG.debug("Copying source file (%s) to destination (%s)", new_source, new_destination)
|
|
81
89
|
shutil.copy2(new_source, new_destination)
|
|
@@ -193,7 +201,8 @@ def create_symlink_or_copy(source: str, destination: str) -> None:
|
|
|
193
201
|
os.symlink(Path(source).absolute(), Path(destination).absolute())
|
|
194
202
|
except OSError as ex:
|
|
195
203
|
LOG.warning(
|
|
196
|
-
"
|
|
204
|
+
"Symbolic link creation failed, falling back to copying files instead. To optimize speed, "
|
|
205
|
+
"consider enabling the necessary settings or privileges on your system to support symbolic links.",
|
|
197
206
|
exc_info=ex if LOG.isEnabledFor(logging.DEBUG) else None,
|
|
198
207
|
)
|
|
199
208
|
copytree(source, destination)
|
|
@@ -5,8 +5,7 @@ No-op validator that does not validate the runtime_path for a specified language
|
|
|
5
5
|
import logging
|
|
6
6
|
|
|
7
7
|
from aws_lambda_builders.architecture import ARM64, X86_64
|
|
8
|
-
from aws_lambda_builders.exceptions import
|
|
9
|
-
|
|
8
|
+
from aws_lambda_builders.exceptions import UnsupportedArchitectureError, UnsupportedRuntimeError
|
|
10
9
|
|
|
11
10
|
LOG = logging.getLogger(__name__)
|
|
12
11
|
|
|
@@ -18,6 +17,7 @@ SUPPORTED_RUNTIMES = {
|
|
|
18
17
|
"python3.7": [X86_64],
|
|
19
18
|
"python3.8": [ARM64, X86_64],
|
|
20
19
|
"python3.9": [ARM64, X86_64],
|
|
20
|
+
"python3.10": [ARM64, X86_64],
|
|
21
21
|
"ruby2.7": [ARM64, X86_64],
|
|
22
22
|
"java8": [ARM64, X86_64],
|
|
23
23
|
"java11": [ARM64, X86_64],
|
|
@@ -2,26 +2,24 @@
|
|
|
2
2
|
Implementation of a base workflow
|
|
3
3
|
"""
|
|
4
4
|
import functools
|
|
5
|
-
import os
|
|
6
5
|
import logging
|
|
7
|
-
|
|
6
|
+
import os
|
|
8
7
|
from collections import namedtuple
|
|
9
8
|
from enum import Enum
|
|
10
9
|
from typing import Optional
|
|
11
10
|
|
|
11
|
+
from aws_lambda_builders.actions import ActionFailedError
|
|
12
|
+
from aws_lambda_builders.architecture import X86_64
|
|
12
13
|
from aws_lambda_builders.binary_path import BinaryPath
|
|
13
|
-
from aws_lambda_builders.path_resolver import PathResolver
|
|
14
|
-
from aws_lambda_builders.validator import RuntimeValidator
|
|
15
|
-
from aws_lambda_builders.registry import DEFAULT_REGISTRY
|
|
16
14
|
from aws_lambda_builders.exceptions import (
|
|
17
|
-
WorkflowFailedError,
|
|
18
|
-
WorkflowUnknownError,
|
|
19
15
|
MisMatchRuntimeError,
|
|
20
16
|
RuntimeValidatorError,
|
|
17
|
+
WorkflowFailedError,
|
|
18
|
+
WorkflowUnknownError,
|
|
21
19
|
)
|
|
22
|
-
from aws_lambda_builders.
|
|
23
|
-
from aws_lambda_builders.
|
|
24
|
-
|
|
20
|
+
from aws_lambda_builders.path_resolver import PathResolver
|
|
21
|
+
from aws_lambda_builders.registry import DEFAULT_REGISTRY
|
|
22
|
+
from aws_lambda_builders.validator import RuntimeValidator
|
|
25
23
|
|
|
26
24
|
LOG = logging.getLogger(__name__)
|
|
27
25
|
|
|
@@ -34,7 +32,6 @@ Capability = namedtuple("Capability", ["language", "dependency_manager", "applic
|
|
|
34
32
|
|
|
35
33
|
|
|
36
34
|
class BuildMode(object):
|
|
37
|
-
|
|
38
35
|
DEBUG = "debug"
|
|
39
36
|
RELEASE = "release"
|
|
40
37
|
|
|
@@ -378,7 +375,6 @@ class BaseWorkflow(object, metaclass=_WorkflowMetaClass):
|
|
|
378
375
|
|
|
379
376
|
raise WorkflowFailedError(workflow_name=self.NAME, action_name=action.NAME, reason=str(ex))
|
|
380
377
|
except Exception as ex:
|
|
381
|
-
|
|
382
378
|
LOG.debug("%s raised unhandled exception", action_info, exc_info=ex)
|
|
383
379
|
|
|
384
380
|
raise WorkflowUnknownError(workflow_name=self.NAME, action_name=action.NAME, reason=str(ex))
|
{aws_lambda_builders-1.26.0 → aws_lambda_builders-1.28.0}/aws_lambda_builders/workflows/__init__.py
RENAMED
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
Officially supported builder workflows
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
import aws_lambda_builders.workflows.
|
|
6
|
-
import aws_lambda_builders.workflows.
|
|
7
|
-
import aws_lambda_builders.workflows.ruby_bundler
|
|
5
|
+
import aws_lambda_builders.workflows.custom_make
|
|
6
|
+
import aws_lambda_builders.workflows.dotnet_clipackage
|
|
8
7
|
import aws_lambda_builders.workflows.go_modules
|
|
9
8
|
import aws_lambda_builders.workflows.java_gradle
|
|
10
9
|
import aws_lambda_builders.workflows.java_maven
|
|
11
|
-
import aws_lambda_builders.workflows.
|
|
12
|
-
import aws_lambda_builders.workflows.custom_make
|
|
10
|
+
import aws_lambda_builders.workflows.nodejs_npm
|
|
13
11
|
import aws_lambda_builders.workflows.nodejs_npm_esbuild
|
|
12
|
+
import aws_lambda_builders.workflows.python_pip
|
|
13
|
+
import aws_lambda_builders.workflows.ruby_bundler
|
|
14
|
+
import aws_lambda_builders.workflows.rust_cargo
|
|
@@ -5,7 +5,8 @@ Action to build a specific Makefile target
|
|
|
5
5
|
import logging
|
|
6
6
|
from pathlib import Path
|
|
7
7
|
|
|
8
|
-
from aws_lambda_builders.actions import BaseAction, Purpose
|
|
8
|
+
from aws_lambda_builders.actions import ActionFailedError, BaseAction, Purpose
|
|
9
|
+
|
|
9
10
|
from .exceptions import MakeFileNotFoundError
|
|
10
11
|
from .make import MakeExecutionError
|
|
11
12
|
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
"""
|
|
2
2
|
ProvidedMakeWorkflow
|
|
3
3
|
"""
|
|
4
|
-
from aws_lambda_builders.workflows.custom_make.validator import CustomMakeRuntimeValidator
|
|
5
|
-
from aws_lambda_builders.workflow import BaseWorkflow, Capability, BuildInSourceSupport, BuildDirectory
|
|
6
4
|
from aws_lambda_builders.actions import CopySourceAction
|
|
7
5
|
from aws_lambda_builders.path_resolver import PathResolver
|
|
6
|
+
from aws_lambda_builders.workflow import BaseWorkflow, BuildDirectory, BuildInSourceSupport, Capability
|
|
7
|
+
from aws_lambda_builders.workflows.custom_make.validator import CustomMakeRuntimeValidator
|
|
8
|
+
|
|
9
|
+
from ...exceptions import WorkflowFailedError
|
|
8
10
|
from .actions import CustomMakeAction
|
|
9
|
-
from .utils import OSUtils
|
|
10
11
|
from .make import SubProcessMake
|
|
11
|
-
from
|
|
12
|
+
from .utils import OSUtils
|
|
12
13
|
|
|
13
14
|
|
|
14
15
|
class CustomMakeWorkflow(BaseWorkflow):
|
|
@@ -27,7 +28,6 @@ class CustomMakeWorkflow(BaseWorkflow):
|
|
|
27
28
|
BUILD_IN_SOURCE_SUPPORT = BuildInSourceSupport.OPTIONALLY_SUPPORTED
|
|
28
29
|
|
|
29
30
|
def __init__(self, source_dir, artifacts_dir, scratch_dir, manifest_path, runtime=None, osutils=None, **kwargs):
|
|
30
|
-
|
|
31
31
|
super(CustomMakeWorkflow, self).__init__(
|
|
32
32
|
source_dir, artifacts_dir, scratch_dir, manifest_path, runtime=runtime, **kwargs
|
|
33
33
|
)
|
|
@@ -2,15 +2,16 @@
|
|
|
2
2
|
Actions for .NET dependency resolution with CLI Package
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
import threading
|
|
6
|
-
import os
|
|
7
5
|
import logging
|
|
6
|
+
import os
|
|
7
|
+
import threading
|
|
8
8
|
|
|
9
|
-
from aws_lambda_builders.actions import BaseAction, Purpose
|
|
10
|
-
from aws_lambda_builders.workflow import BuildMode
|
|
9
|
+
from aws_lambda_builders.actions import ActionFailedError, BaseAction, Purpose
|
|
11
10
|
from aws_lambda_builders.architecture import ARM64
|
|
12
|
-
from .
|
|
11
|
+
from aws_lambda_builders.workflow import BuildMode
|
|
12
|
+
|
|
13
13
|
from .dotnetcli import DotnetCLIExecutionError
|
|
14
|
+
from .utils import OSUtils
|
|
14
15
|
|
|
15
16
|
LOG = logging.getLogger(__name__)
|
|
16
17
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
.NET Core CLI Package Workflow
|
|
3
3
|
"""
|
|
4
|
-
from aws_lambda_builders.workflow import BaseWorkflow, BuildDirectory,
|
|
4
|
+
from aws_lambda_builders.workflow import BaseWorkflow, BuildDirectory, BuildInSourceSupport, Capability
|
|
5
5
|
|
|
6
6
|
from .actions import GlobalToolInstallAction, RunPackageAction
|
|
7
7
|
from .dotnetcli import SubprocessDotnetCLI
|
|
@@ -23,7 +23,6 @@ class DotnetCliPackageWorkflow(BaseWorkflow):
|
|
|
23
23
|
BUILD_IN_SOURCE_SUPPORT = BuildInSourceSupport.EXCLUSIVELY_SUPPORTED
|
|
24
24
|
|
|
25
25
|
def __init__(self, source_dir, artifacts_dir, scratch_dir, manifest_path, runtime=None, mode=None, **kwargs):
|
|
26
|
-
|
|
27
26
|
super(DotnetCliPackageWorkflow, self).__init__(
|
|
28
27
|
source_dir, artifacts_dir, scratch_dir, manifest_path, runtime=runtime, mode=mode, **kwargs
|
|
29
28
|
)
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
Action to build a Go project using standard Go tooling
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
from aws_lambda_builders.actions import BaseAction, Purpose
|
|
5
|
+
from aws_lambda_builders.actions import ActionFailedError, BaseAction, Purpose
|
|
6
|
+
|
|
6
7
|
from .builder import BuilderError
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
class GoModulesBuildAction(BaseAction):
|
|
10
|
-
|
|
11
11
|
NAME = "Build"
|
|
12
12
|
DESCRIPTION = "Building Go package with Go Modules"
|
|
13
13
|
PURPOSE = Purpose.COMPILE_SOURCE
|
|
@@ -4,9 +4,9 @@ Build a Go project using standard Go tooling
|
|
|
4
4
|
import logging
|
|
5
5
|
from pathlib import Path
|
|
6
6
|
|
|
7
|
-
from aws_lambda_builders.workflow import BuildMode
|
|
8
7
|
from aws_lambda_builders.architecture import X86_64
|
|
9
8
|
from aws_lambda_builders.utils import get_goarch
|
|
9
|
+
from aws_lambda_builders.workflow import BuildMode
|
|
10
10
|
|
|
11
11
|
LOG = logging.getLogger(__name__)
|
|
12
12
|
|
|
@@ -19,7 +19,6 @@ class BuilderError(Exception):
|
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
class GoModulesBuilder(object):
|
|
22
|
-
|
|
23
22
|
LANGUAGE = "go"
|
|
24
23
|
|
|
25
24
|
def __init__(self, osutils, binaries, handler, mode=BuildMode.RELEASE, architecture=X86_64, trim_go_path=False):
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
"""
|
|
2
2
|
Go Modules Workflow
|
|
3
3
|
"""
|
|
4
|
-
from aws_lambda_builders.workflow import BaseWorkflow, BuildDirectory,
|
|
4
|
+
from aws_lambda_builders.workflow import BaseWorkflow, BuildDirectory, BuildInSourceSupport, Capability
|
|
5
5
|
|
|
6
6
|
from .actions import GoModulesBuildAction
|
|
7
7
|
from .builder import GoModulesBuilder
|
|
8
|
-
from .validator import GoRuntimeValidator
|
|
9
8
|
from .utils import OSUtils
|
|
9
|
+
from .validator import GoRuntimeValidator
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
class GoModulesWorkflow(BaseWorkflow):
|
|
13
|
-
|
|
14
13
|
NAME = "GoModulesBuilder"
|
|
15
14
|
|
|
16
15
|
CAPABILITY = Capability(language="go", dependency_manager="modules", application_framework=None)
|
|
@@ -21,7 +20,6 @@ class GoModulesWorkflow(BaseWorkflow):
|
|
|
21
20
|
def __init__(
|
|
22
21
|
self, source_dir, artifacts_dir, scratch_dir, manifest_path, runtime=None, osutils=None, mode=None, **kwargs
|
|
23
22
|
):
|
|
24
|
-
|
|
25
23
|
super(GoModulesWorkflow, self).__init__(
|
|
26
24
|
source_dir, artifacts_dir, scratch_dir, manifest_path, runtime=runtime, **kwargs
|
|
27
25
|
)
|
|
@@ -3,9 +3,11 @@ Actions for the Java Gradle Workflow
|
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
5
|
import os
|
|
6
|
+
|
|
6
7
|
from aws_lambda_builders.actions import ActionFailedError, BaseAction, Purpose
|
|
7
|
-
|
|
8
|
+
|
|
8
9
|
from ..java.utils import jar_file_filter
|
|
10
|
+
from .gradle import GradleExecutionError
|
|
9
11
|
|
|
10
12
|
|
|
11
13
|
class JavaGradleBuildAction(BaseAction):
|
|
@@ -5,9 +5,8 @@ Gradle Binary Validation
|
|
|
5
5
|
import logging
|
|
6
6
|
import re
|
|
7
7
|
|
|
8
|
-
from aws_lambda_builders.workflows.java.utils import OSUtils
|
|
9
8
|
from aws_lambda_builders.validator import RuntimeValidator
|
|
10
|
-
|
|
9
|
+
from aws_lambda_builders.workflows.java.utils import OSUtils
|
|
11
10
|
|
|
12
11
|
LOG = logging.getLogger(__name__)
|
|
13
12
|
|
|
@@ -3,8 +3,9 @@ Java Gradle Workflow
|
|
|
3
3
|
"""
|
|
4
4
|
import hashlib
|
|
5
5
|
import os
|
|
6
|
+
|
|
6
7
|
from aws_lambda_builders.actions import CleanUpAction
|
|
7
|
-
from aws_lambda_builders.workflow import BaseWorkflow, BuildDirectory,
|
|
8
|
+
from aws_lambda_builders.workflow import BaseWorkflow, BuildDirectory, BuildInSourceSupport, Capability
|
|
8
9
|
from aws_lambda_builders.workflows.java.actions import JavaCopyDependenciesAction, JavaMoveDependenciesAction
|
|
9
10
|
from aws_lambda_builders.workflows.java.utils import OSUtils
|
|
10
11
|
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
Actions for the Java Maven Workflow
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
-
import os
|
|
6
5
|
import logging
|
|
6
|
+
import os
|
|
7
7
|
import shutil
|
|
8
8
|
|
|
9
9
|
from aws_lambda_builders.actions import ActionFailedError, BaseAction, Purpose
|
|
10
|
-
|
|
10
|
+
|
|
11
11
|
from ..java.utils import jar_file_filter
|
|
12
|
+
from .maven import MavenExecutionError
|
|
12
13
|
|
|
13
14
|
LOG = logging.getLogger(__name__)
|
|
14
15
|
|