Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
aws-sam-cli-bot committed Apr 29, 2024
2 parents 45d8ced + 86e572a commit 008bf08
Show file tree
Hide file tree
Showing 8 changed files with 69 additions and 16 deletions.
2 changes: 1 addition & 1 deletion aws_lambda_builders/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@
# Changing version will trigger a new release!
# Please make the version change as the last step of your development.

__version__ = "1.48.0"
__version__ = "1.49.0"
RPC_PROTOCOL_VERSION = "0.3"
2 changes: 2 additions & 0 deletions aws_lambda_builders/builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ def build(
scratch_dir,
manifest_path,
runtime=None,
unpatched_runtime=None,
optimizations=None,
options=None,
executable_search_paths=None,
Expand Down Expand Up @@ -154,6 +155,7 @@ def build(
scratch_dir,
manifest_path,
runtime=runtime,
unpatched_runtime=unpatched_runtime,
optimizations=optimizations,
options=options,
executable_search_paths=executable_search_paths,
Expand Down
2 changes: 2 additions & 0 deletions aws_lambda_builders/workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,7 @@ def __init__(
is_building_layer=False,
experimental_flags=None,
build_in_source=None,
unpatched_runtime=None,
):
# pylint: disable-msg=too-many-locals
"""
Expand Down Expand Up @@ -263,6 +264,7 @@ def __init__(
self.combine_dependencies = combine_dependencies
self.architecture = architecture
self.is_building_layer = is_building_layer
self.unpatched_runtime = unpatched_runtime
self.experimental_flags = experimental_flags if experimental_flags else []

# this represents where the build/install happens, not the final output directory (that's the artifacts_dir)
Expand Down
14 changes: 12 additions & 2 deletions aws_lambda_builders/workflows/rust_cargo/actions.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ def __init__(
binaries,
mode,
subprocess_cargo_lambda,
runtime=None,
architecture=X86_64,
handler=None,
flags=None,
Expand Down Expand Up @@ -68,18 +69,27 @@ def __init__(
self._flags = flags
self._architecture = architecture
self._subprocess_cargo_lambda = subprocess_cargo_lambda
self._runtime = runtime

def build_command(self):
cmd = [self._binaries["cargo"].binary_path, "lambda", "build"]
if self._mode != BuildMode.DEBUG:
cmd.append("--release")
if self._architecture == ARM64:
# Provided.al2 runtime only has GLIB_2.26 and cargo lambda builds with a higher version by default
if self._runtime == "provided.al2":
if self._architecture == ARM64:
# We cant use the --arm shortcut because then the incorrect version of GLIBC is used
cmd.append("--target")
cmd.append("aarch64-unknown-linux-gnu.2.26")
if self._architecture == X86_64:
cmd.append("--target")
cmd.append("x86_64-unknown-linux-gnu.2.26")
elif self._architecture == ARM64:
cmd.append("--arm64")
if self._handler:
cmd.extend(["--bin", self._handler])
if self._flags:
cmd.extend(self._flags)

return cmd

def execute(self):
Expand Down
13 changes: 12 additions & 1 deletion aws_lambda_builders/workflows/rust_cargo/workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,17 @@ class RustCargoLambdaWorkflow(BaseWorkflow):

SUPPORTED_MANIFESTS = ["Cargo.toml"]

def __init__(self, source_dir, artifacts_dir, scratch_dir, manifest_path, runtime=None, mode=None, **kwargs):
def __init__(
self,
source_dir,
artifacts_dir,
scratch_dir,
manifest_path,
runtime=None,
unpatched_runtime=None,
mode=None,
**kwargs,
):
super(RustCargoLambdaWorkflow, self).__init__(
source_dir, artifacts_dir, scratch_dir, manifest_path, runtime=runtime, **kwargs
)
Expand All @@ -43,6 +53,7 @@ def __init__(self, source_dir, artifacts_dir, scratch_dir, manifest_path, runtim
self.binaries,
mode,
subprocess_cargo_lambda,
unpatched_runtime,
self.architecture,
handler,
flags,
Expand Down
4 changes: 2 additions & 2 deletions requirements/dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ parameterized==0.9.0
pyelftools~=0.31 # Used to verify the generated Go binary architecture in integration tests (utils.py)

# formatter
black==24.3.0
ruff==0.3.4
black==24.4.0
ruff==0.4.1
1 change: 1 addition & 0 deletions tests/unit/test_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,7 @@ def test_with_mocks(
"manifest_path",
architecture="arm64",
runtime="runtime",
unpatched_runtime=None,
optimizations="optimizations",
options="options",
executable_search_paths="executable_search_paths",
Expand Down
47 changes: 37 additions & 10 deletions tests/unit/workflows/rust_cargo/test_actions.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from unittest import TestCase
from unittest.mock import patch
from parameterized import parameterized
import io
import logging
import os
Expand Down Expand Up @@ -43,9 +44,35 @@ def which(cmd, executable_search_paths):
proc = SubprocessCargoLambda(which=which, osutils=self.osutils)
self.subprocess_cargo_lambda = proc

@parameterized.expand(
[
("provided.al2", "x86_64", "x86_64-unknown-linux-gnu.2.26"),
("provided.al2", "arm64", "aarch64-unknown-linux-gnu.2.26"),
]
)
def test_release_build_cargo_command_with_correct_targets(self, runtime, architecture, expected_target):
cargo = BinaryPath(None, None, None, binary_path="path/to/cargo")
action = RustCargoLambdaBuildAction(
"source_dir", {"cargo": cargo}, None, self.subprocess_cargo_lambda, runtime, architecture
)
self.assertEqual(
action.build_command(),
["path/to/cargo", "lambda", "build", "--release", "--target", expected_target],
)

def test_release_build_cargo_command_for_provided_al2023(self):
cargo = BinaryPath(None, None, None, binary_path="path/to/cargo")
action = RustCargoLambdaBuildAction(
"source_dir", {"cargo": cargo}, None, self.subprocess_cargo_lambda, "provided.al2023"
)
self.assertEqual(
action.build_command(),
["path/to/cargo", "lambda", "build", "--release"],
)

def test_release_build_cargo_command_without_release_mode(self):
cargo = BinaryPath(None, None, None, binary_path="path/to/cargo")
action = RustCargoLambdaBuildAction("source_dir", {"cargo": cargo}, None, self.subprocess_cargo_lambda)
action = RustCargoLambdaBuildAction("source_dir", {"cargo": cargo}, None, None, self.subprocess_cargo_lambda)
self.assertEqual(
action.build_command(),
["path/to/cargo", "lambda", "build", "--release"],
Expand All @@ -54,7 +81,7 @@ def test_release_build_cargo_command_without_release_mode(self):
def test_release_build_cargo_command(self):
cargo = BinaryPath(None, None, None, binary_path="path/to/cargo")
action = RustCargoLambdaBuildAction(
"source_dir", {"cargo": cargo}, BuildMode.RELEASE, self.subprocess_cargo_lambda
"source_dir", {"cargo": cargo}, BuildMode.RELEASE, None, self.subprocess_cargo_lambda
)
self.assertEqual(
action.build_command(),
Expand All @@ -64,7 +91,7 @@ def test_release_build_cargo_command(self):
def test_release_build_cargo_command_with_target(self):
cargo = BinaryPath(None, None, None, binary_path="path/to/cargo")
action = RustCargoLambdaBuildAction(
"source_dir", {"cargo": cargo}, BuildMode.RELEASE, self.subprocess_cargo_lambda, "arm64"
"source_dir", {"cargo": cargo}, BuildMode.RELEASE, None, self.subprocess_cargo_lambda, "arm64"
)
self.assertEqual(
action.build_command(),
Expand All @@ -74,7 +101,7 @@ def test_release_build_cargo_command_with_target(self):
def test_debug_build_cargo_command(self):
cargo = BinaryPath(None, None, None, binary_path="path/to/cargo")
action = RustCargoLambdaBuildAction(
"source_dir", {"cargo": cargo}, BuildMode.DEBUG, self.subprocess_cargo_lambda
"source_dir", {"cargo": cargo}, BuildMode.DEBUG, None, self.subprocess_cargo_lambda
)
self.assertEqual(
action.build_command(),
Expand All @@ -84,7 +111,7 @@ def test_debug_build_cargo_command(self):
def test_debug_build_cargo_command_with_architecture(self):
cargo = BinaryPath(None, None, None, binary_path="path/to/cargo")
action = RustCargoLambdaBuildAction(
"source_dir", {"cargo": cargo}, BuildMode.DEBUG, self.subprocess_cargo_lambda, "arm64"
"source_dir", {"cargo": cargo}, BuildMode.DEBUG, None, self.subprocess_cargo_lambda, "arm64"
)
self.assertEqual(
action.build_command(),
Expand All @@ -95,7 +122,7 @@ def test_debug_build_cargo_command_with_flags(self):
cargo = BinaryPath(None, None, None, binary_path="path/to/cargo")
flags = ["--package", "package-in-workspace"]
action = RustCargoLambdaBuildAction(
"source_dir", {"cargo": cargo}, BuildMode.DEBUG, self.subprocess_cargo_lambda, "arm64", flags=flags
"source_dir", {"cargo": cargo}, BuildMode.DEBUG, None, self.subprocess_cargo_lambda, "arm64", flags=flags
)
self.assertEqual(
action.build_command(),
Expand All @@ -105,7 +132,7 @@ def test_debug_build_cargo_command_with_flags(self):
def test_debug_build_cargo_command_with_handler(self):
cargo = BinaryPath(None, None, None, binary_path="path/to/cargo")
action = RustCargoLambdaBuildAction(
"source_dir", {"cargo": cargo}, BuildMode.DEBUG, self.subprocess_cargo_lambda, "arm64", handler="foo"
"source_dir", {"cargo": cargo}, BuildMode.DEBUG, None, self.subprocess_cargo_lambda, "arm64", handler="foo"
)
self.assertEqual(
action.build_command(),
Expand All @@ -115,7 +142,7 @@ def test_debug_build_cargo_command_with_handler(self):
def test_execute_happy_path(self):
cargo = BinaryPath(None, None, None, binary_path="path/to/cargo")
action = RustCargoLambdaBuildAction(
"source_dir", {"cargo": cargo}, BuildMode.RELEASE, self.subprocess_cargo_lambda
"source_dir", {"cargo": cargo}, BuildMode.RELEASE, self.subprocess_cargo_lambda, None
)
action.execute()

Expand All @@ -125,7 +152,7 @@ def test_execute_cargo_build_fail(self):

cargo = BinaryPath(None, None, None, binary_path="path/to/cargo")
action = RustCargoLambdaBuildAction(
"source_dir", {"cargo": cargo}, BuildMode.RELEASE, self.subprocess_cargo_lambda
"source_dir", {"cargo": cargo}, BuildMode.RELEASE, self.subprocess_cargo_lambda, None
)
with self.assertRaises(ActionFailedError) as err_assert:
action.execute()
Expand All @@ -136,7 +163,7 @@ def test_execute_happy_with_logger(self):
with patch.object(LOG, "debug") as mock_warning:
cargo = BinaryPath(None, None, None, binary_path="path/to/cargo")
action = RustCargoLambdaBuildAction(
"source_dir", {"cargo": cargo}, BuildMode.RELEASE, self.subprocess_cargo_lambda
"source_dir", {"cargo": cargo}, BuildMode.RELEASE, self.subprocess_cargo_lambda, None
)
out = action.execute()
self.assertEqual(out, "out")
Expand Down

0 comments on commit 008bf08

Please sign in to comment.