Skip to content

Commit b583ff8

Browse files
committed
1 parent 63e404c commit b583ff8

File tree

5 files changed

+161
-0
lines changed

5 files changed

+161
-0
lines changed

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "swift-ci/sdks/android/resources/patches"]
2+
path = swift-ci/sdks/android/resources/patches
3+
url = https://github.com/swift-android-sdk/swift-android-sdk

swift-ci/sdks/android/Dockerfile

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
# ===----------------------------------------------------------------------===
2+
#
3+
# Swift Android SDK: Docker-based build
4+
#
5+
# ===----------------------------------------------------------------------===
6+
7+
FROM ubuntu:24.04
8+
9+
# Versions to fetch
10+
11+
ARG SWIFT_VERSION=scheme:release/6.2
12+
ARG LIBXML2_VERSION=2.12.7
13+
ARG CURL_VERSION=8.7.1
14+
ARG BORINGSSL_VERSION=fips-20220613
15+
ARG ICU_VERSION=maint/maint-69
16+
ARG ZLIB_VERSION=1.3.1
17+
18+
# Architecture to build on (empty means x86-64)
19+
ARG OS_ARCH_SUFFIX=
20+
21+
# ............................................................................
22+
23+
# Install development tools
24+
RUN apt-get -q update \
25+
&& DEBIAN_FRONTEND=noninteractive apt-get -q install -y \
26+
build-essential \
27+
cmake \
28+
ninja-build \
29+
python3 \
30+
golang \
31+
git \
32+
gnupg2 \
33+
libsqlite3-dev \
34+
libcurl4-openssl-dev \
35+
libedit-dev \
36+
libicu-dev \
37+
libncurses5-dev \
38+
libpython3-dev \
39+
libsqlite3-dev \
40+
libxml2-dev \
41+
uuid-dev \
42+
uuid-runtime \
43+
tzdata \
44+
curl \
45+
&& rm -rf /var/lib/apt-lists/*
46+
47+
# Install Swift
48+
ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069
49+
ARG SWIFT_PLATFORM=ubuntu
50+
ARG OS_MAJOR_VER=24
51+
ARG OS_MINOR_VER=04
52+
ARG SWIFT_WEBROOT=https://download.swift.org/swift-6.2-branch
53+
54+
ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \
55+
SWIFT_PLATFORM=$SWIFT_PLATFORM \
56+
OS_MAJOR_VER=$OS_MAJOR_VER \
57+
OS_MINOR_VER=$OS_MINOR_VER \
58+
OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER.$OS_MINOR_VER \
59+
SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MINOR_VER$OS_ARCH_SUFFIX"
60+
61+
COPY scripts/install-swift.sh /scripts/install-swift.sh
62+
RUN chmod ugo+x /scripts/install-swift.sh
63+
64+
RUN /scripts/install-swift.sh
65+
66+
ENV PATH="/usr/local/swift/bin:${PATH}"
67+
68+
RUN /scripts/install-ndk.sh
69+
70+
ENV SWIFT_VERSION=$SWIFT_VERSION \
71+
LIBXML2_VERSION=$LIBXML2_VERSION \
72+
CURL_VERSION=$CURL_VERSION \
73+
BORINGSSL_VERSION=$BORINGSSL_VERSION \
74+
ICU_VERSION=$ICU_VERSION \
75+
ZLIB_VERSION=$ZLIB_VERSION
76+
77+
COPY scripts /scripts
78+
RUN chmod ugo+x /scripts/*
79+
80+
COPY resources /resources
81+
82+
# Create a user
83+
RUN groupadd -g 998 build-user && \
84+
useradd -m -r -u 998 -g build-user build-user
85+
86+
USER build-user
87+
88+
WORKDIR /home/build-user
Submodule patches added at 8ceadf9
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/bin/bash
2+
#
3+
# ===----------------------------------------------------------------------===
4+
#
5+
# Swift Android SDK: Install NDK
6+
#
7+
# ===----------------------------------------------------------------------===
8+
9+
set -e
10+
11+
echo "Installing Android NDK"
12+
13+
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
#!/bin/bash
2+
#
3+
# ===----------------------------------------------------------------------===
4+
#
5+
# Swift Android SDK: Install Swift
6+
#
7+
# ===----------------------------------------------------------------------===
8+
9+
set -e
10+
11+
echo "Installing Swift"
12+
13+
# Get latest toolchain info
14+
latest_build=$(curl -s ${SWIFT_WEBROOT}/latest-build.yml)
15+
download=$(echo "$latest_build" | grep '^download: ' | sed 's/^download: //g')
16+
download_signature=$(echo "$latest_build " | grep '^download_signature: ' | sed 's/^download_signature: //g')
17+
download_dir=$(echo "$latest_build" | grep '^dir: ' | sed 's/^dir: //g')
18+
19+
echo "Latest build is ${download_dir}"
20+
21+
# Make a temporary directory
22+
tmpdir=$(mktemp -d)
23+
function cleanup {
24+
rm -rf "$tmpdir"
25+
}
26+
trap cleanup EXIT
27+
28+
pushd "$tmpdir" >/dev/null
29+
export GNUPGHOME="$tmpdir"
30+
31+
# Fetch the toolchain and signature
32+
echo "Going to fetch ${SWIFT_WEBROOT}/${download_dir}/${download}"
33+
34+
curl -fsSL "${SWIFT_WEBROOT}/${download_dir}/${download}" -o toolchain.tar.gz
35+
36+
echo "Going to fetch ${SWIFT_WEBROOT}/${download_dir}/${download_signature}"
37+
38+
curl -fsSL "${SWIFT_WEBROOT}/${download_dir}/${download_signature}" -o toolchain.sig
39+
40+
echo "Fetching keys"
41+
42+
curl -fsSL --compressed https://swift.org/keys/all-keys.asc | gpg --import -
43+
44+
echo "Verifying signature"
45+
46+
gpg --batch --verify toolchain.sig toolchain.tar.gz
47+
48+
# Extract and install the toolchain
49+
echo "Extracting Swift"
50+
51+
mkdir -p /usr/local/swift
52+
tar -xzf toolchain.tar.gz --directory /usr/local/swift --strip-components=2
53+
chmod -R o+r /usr/local/swift/lib/swift
54+
55+
popd >/dev/null
56+

0 commit comments

Comments
 (0)