Skip to content

Commit fe0331b

Browse files
committed
feat: remove vendored aws-lambda-cpp dependency
1 parent b668333 commit fe0331b

54 files changed

Lines changed: 72 additions & 34411 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
compile-flags.txt
22
ric-dev-environment/codeartifact-properties.mk
3+
4+
# aws-lambda-cpp prebuilt lib + headers, fetched and staged at build time
5+
src/main/jni/deps/aws-lambda-cpp/

aws-lambda-java-runtime-interface-client/src/main/jni/Dockerfile.glibc

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ ARG AWS_REGION
77
RUN if [ -n "${AWS_REGION}" ]; then echo "${AWS_REGION}" > /etc/yum/vars/awsregion; fi
88

99
RUN yum install -y \
10-
cmake3 \
1110
tar \
1211
gzip \
1312
make \
@@ -33,18 +32,12 @@ RUN ./configure \
3332
make && \
3433
make install
3534

36-
# Install aws-lambda-cpp dependency
37-
ADD ./deps/aws-lambda-cpp-* /src/deps/aws-lambda-cpp
38-
RUN mkdir -p /src/deps/aws-lambda-cpp/build
39-
WORKDIR /src/deps/aws-lambda-cpp/build
40-
RUN cmake3 .. \
41-
-DENABLE_LTO=OFF \
42-
-DCMAKE_CXX_FLAGS="-fPIC -DBACKWARD_SYSTEM_UNKNOWN" \
43-
-DCMAKE_CXX_STANDARD=11 \
44-
-DCMAKE_INSTALL_PREFIX=$(pwd)/../../artifacts \
45-
-DCMAKE_MODULE_PATH=$(pwd)/../../artifacts/lib/pkgconfig && \
46-
make && \
47-
make install
35+
# Install prebuilt aws-lambda-cpp dependency. The static library and headers
36+
# were fetched and GPG-verified on the host by build-jni-lib.sh; here we only
37+
# COPY them into the artifacts tree the native client links against (the build
38+
# container never reaches the network).
39+
COPY ./deps/aws-lambda-cpp/include /src/deps/artifacts/include
40+
COPY ./deps/aws-lambda-cpp/lib/libaws-lambda-runtime.a /src/deps/artifacts/lib/
4841

4942
# Build native client
5043
ADD *.cpp *.h /src/

aws-lambda-java-runtime-interface-client/src/main/jni/Dockerfile.musl

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ ARG CURL_VERSION
66
RUN apk update && \
77
apk add \
88
openjdk11 \
9-
cmake \
109
file \
1110
g++ \
1211
gcc \
@@ -31,17 +30,8 @@ RUN ./configure \
3130
make && \
3231
make install
3332

34-
# Install aws-lambda-cpp dependency
35-
ADD ./deps/aws-lambda-cpp-* /src/deps/aws-lambda-cpp
36-
RUN mkdir -p /src/deps/aws-lambda-cpp/build
37-
WORKDIR /src/deps/aws-lambda-cpp/build
38-
RUN cmake .. \
39-
-DCMAKE_CXX_FLAGS="-fPIC -DBACKWARD_SYSTEM_UNKNOWN" \
40-
-DCMAKE_CXX_STANDARD=11 \
41-
-DCMAKE_INSTALL_PREFIX=$(pwd)/../../artifacts\
42-
-DCMAKE_MODULE_PATH=$(pwd)/../../artifacts/lib/pkgconfig && \
43-
make && \
44-
make install
33+
COPY ./deps/aws-lambda-cpp/include /src/deps/artifacts/include
34+
COPY ./deps/aws-lambda-cpp/lib/libaws-lambda-runtime.a /src/deps/artifacts/lib/
4535

4636
# Build native client
4737
ADD *.cpp *.h /src/

aws-lambda-java-runtime-interface-client/src/main/jni/build-jni-lib.sh

Lines changed: 61 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,68 @@ MULTI_ARCH=${2}
99
BUILD_OS=${3}
1010
BUILD_ARCH=${4}
1111
CURL_VERSION=7.83.1
12-
# Registry hosting the base images. Defaults to public.ecr.aws for local and
13-
# GitHub-hosted builds; the release workflow overrides it with the ECR
14-
# pull-through cache so egress-locked runners don't hit public.ecr.aws.
12+
1513
BASE_REGISTRY="${BASE_REGISTRY:-public.ecr.aws}"
1614
AWS_REGION="${AWS_REGION:-${AWS_DEFAULT_REGION:-}}"
1715

16+
# aws-lambda-cpp is consumed as the prebuilt static library published on the
17+
# upstream GitHub release rather than being compiled from a vendored source
18+
# tree. We fetch and GPG-verify it
19+
ALC_VERSION="1.0.1"
20+
ALC_TAG="v${ALC_VERSION}"
21+
ALC_REPO_URL="https://github.com/awslabs/aws-lambda-cpp"
22+
ALC_RELEASE_URL="${ALC_REPO_URL}/releases/download/${ALC_TAG}"
23+
ALC_SIGNING_KEY_URL="https://raw.githubusercontent.com/awslabs/aws-lambda-cpp/${ALC_TAG}/signing-public-key.asc"
24+
ALC_STAGE_DIR="${SRC_DIR}/deps/aws-lambda-cpp"
25+
26+
function fetch_aws_lambda_cpp() {
27+
arch=$1
28+
29+
release_arch="${arch/aarch_64/aarch64}"
30+
31+
if [ -f "${ALC_STAGE_DIR}/.staged-arch" ] && \
32+
[ "$(cat "${ALC_STAGE_DIR}/.staged-arch")" == "${release_arch}" ]; then
33+
echo "aws-lambda-cpp ${ALC_VERSION} (${release_arch}) already staged, skipping fetch"
34+
return
35+
fi
36+
37+
echo "Fetching prebuilt aws-lambda-cpp ${ALC_VERSION} for ${release_arch}"
38+
rm -rf "${ALC_STAGE_DIR}"
39+
mkdir -p "${ALC_STAGE_DIR}/lib" "${ALC_STAGE_DIR}/include"
40+
41+
local workdir
42+
workdir=$(mktemp -d)
43+
local lib_asset="libaws-lambda-runtime-${release_arch}.a"
44+
45+
curl -fsSL -o "${workdir}/${lib_asset}" "${ALC_RELEASE_URL}/${lib_asset}"
46+
curl -fsSL -o "${workdir}/${lib_asset}.asc" "${ALC_RELEASE_URL}/${lib_asset}.asc"
47+
curl -fsSL -o "${workdir}/SHA256SUMS" "${ALC_RELEASE_URL}/SHA256SUMS"
48+
curl -fsSL -o "${workdir}/SHA256SUMS.asc" "${ALC_RELEASE_URL}/SHA256SUMS.asc"
49+
curl -fsSL -o "${workdir}/signing-key.asc" "${ALC_SIGNING_KEY_URL}"
50+
51+
local gnupg_home
52+
gnupg_home=$(mktemp -d)
53+
chmod 700 "${gnupg_home}"
54+
GNUPGHOME="${gnupg_home}" gpg --batch --import "${workdir}/signing-key.asc"
55+
GNUPGHOME="${gnupg_home}" gpg --batch --verify "${workdir}/${lib_asset}.asc" "${workdir}/${lib_asset}"
56+
GNUPGHOME="${gnupg_home}" gpg --batch --verify "${workdir}/SHA256SUMS.asc" "${workdir}/SHA256SUMS"
57+
rm -rf "${gnupg_home}"
58+
59+
# Cross-check the checksum too (defence in depth; SHA256SUMS is itself signed).
60+
( cd "${workdir}" && grep "${lib_asset}\$" SHA256SUMS | sha256sum -c - )
61+
62+
cp "${workdir}/${lib_asset}" "${ALC_STAGE_DIR}/lib/libaws-lambda-runtime.a"
63+
64+
# Headers aren't a release asset, so take them from the source at the same
65+
# tag. They are declarations only -- every symbol lives in the prebuilt lib.
66+
curl -fsSL -o "${workdir}/src.tar.gz" "${ALC_REPO_URL}/archive/refs/tags/${ALC_TAG}.tar.gz"
67+
tar -xzf "${workdir}/src.tar.gz" -C "${workdir}" "aws-lambda-cpp-${ALC_VERSION}/include"
68+
cp -R "${workdir}/aws-lambda-cpp-${ALC_VERSION}/include/." "${ALC_STAGE_DIR}/include/"
69+
70+
echo "${release_arch}" > "${ALC_STAGE_DIR}/.staged-arch"
71+
rm -rf "${workdir}"
72+
}
73+
1874
function get_docker_platform() {
1975
arch=$1
2076

@@ -44,6 +100,8 @@ function build_for_libc_arch() {
44100
arch=$2
45101
artifact=$3
46102

103+
fetch_aws_lambda_cpp "${arch}"
104+
47105
docker_platform=$(get_docker_platform ${arch})
48106

49107
echo "Compiling the native library with libc implementation \`${libc_impl}\` on architecture \`${arch}\` using Docker platform \`${docker_platform}\`"

aws-lambda-java-runtime-interface-client/src/main/jni/deps/aws-lambda-cpp-0.2.7/.clang-format

Lines changed: 0 additions & 61 deletions
This file was deleted.

aws-lambda-java-runtime-interface-client/src/main/jni/deps/aws-lambda-cpp-0.2.7/.clang-tidy

Lines changed: 0 additions & 41 deletions
This file was deleted.

aws-lambda-java-runtime-interface-client/src/main/jni/deps/aws-lambda-cpp-0.2.7/.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 0 additions & 6 deletions
This file was deleted.

aws-lambda-java-runtime-interface-client/src/main/jni/deps/aws-lambda-cpp-0.2.7/.gitignore

Lines changed: 0 additions & 5 deletions
This file was deleted.

aws-lambda-java-runtime-interface-client/src/main/jni/deps/aws-lambda-cpp-0.2.7/CMakeLists.txt

Lines changed: 0 additions & 132 deletions
This file was deleted.

0 commit comments

Comments
 (0)