Skip to content

Commit e91bcc7

Browse files
authored
Add support to build toolchain for Ubuntu 23.10 and 24.04 (#380)
1 parent 65dd5f9 commit e91bcc7

File tree

2 files changed

+161
-0
lines changed

2 files changed

+161
-0
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
FROM ubuntu:23.10
2+
3+
RUN groupadd -g 998 build-user && \
4+
useradd -m -r -u 998 -g build-user build-user
5+
6+
ENV DEBIAN_FRONTEND="noninteractive"
7+
8+
RUN apt-get -y update && apt-get -y install \
9+
build-essential \
10+
cmake \
11+
git \
12+
icu-devtools \
13+
libcurl4-openssl-dev \
14+
libedit-dev \
15+
libicu-dev \
16+
libncurses5-dev \
17+
libpython3-dev \
18+
libsqlite3-dev \
19+
libxml2-dev \
20+
ninja-build \
21+
pkg-config \
22+
python3-six \
23+
python3-distutils \
24+
python3-pkg-resources \
25+
python3-psutil \
26+
rsync \
27+
swig \
28+
systemtap-sdt-dev \
29+
tzdata \
30+
uuid-dev \
31+
zip
32+
33+
ARG SWIFT_PLATFORM=ubuntu22.04
34+
ARG SWIFT_VERSION=5.8.1
35+
ARG SWIFT_BRANCH=swift-${SWIFT_VERSION}-release
36+
ARG SWIFT_TAG=swift-${SWIFT_VERSION}-RELEASE
37+
ARG SWIFT_WEBROOT=https://download.swift.org
38+
ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION}
39+
40+
ENV SWIFT_PLATFORM=$SWIFT_PLATFORM \
41+
SWIFT_VERSION=$SWIFT_VERSION \
42+
SWIFT_BRANCH=$SWIFT_BRANCH \
43+
SWIFT_TAG=$SWIFT_TAG \
44+
SWIFT_WEBROOT=$SWIFT_WEBROOT \
45+
SWIFT_PREFIX=$SWIFT_PREFIX
46+
47+
RUN set -e; \
48+
ARCH_NAME="$(dpkg --print-architecture)"; \
49+
url=; \
50+
case "${ARCH_NAME##*-}" in \
51+
'amd64') \
52+
OS_ARCH_SUFFIX=''; \
53+
;; \
54+
'arm64') \
55+
OS_ARCH_SUFFIX='-aarch64'; \
56+
;; \
57+
*) echo >&2 "error: unsupported architecture: '$ARCH_NAME'"; exit 1 ;; \
58+
esac; \
59+
SWIFT_WEBDIR="$SWIFT_WEBROOT/$SWIFT_BRANCH/$(echo $SWIFT_PLATFORM | tr -d .)$OS_ARCH_SUFFIX" \
60+
&& SWIFT_BIN_URL="$SWIFT_WEBDIR/$SWIFT_TAG/$SWIFT_TAG-$SWIFT_PLATFORM$OS_ARCH_SUFFIX.tar.gz" \
61+
&& SWIFT_SIG_URL="$SWIFT_BIN_URL.sig" \
62+
# - Grab curl here so we cache better up above
63+
&& export DEBIAN_FRONTEND=noninteractive \
64+
&& apt-get -q update && apt-get -q install -y curl && rm -rf /var/lib/apt/lists/* \
65+
# - Download the GPG keys, Swift toolchain, and toolchain signature, and verify.
66+
&& export GNUPGHOME="$(mktemp -d)" \
67+
&& curl -fsSL "$SWIFT_BIN_URL" -o swift.tar.gz "$SWIFT_SIG_URL" -o swift.tar.gz.sig \
68+
&& curl -fSsL https://swift.org/keys/all-keys.asc | gpg --import - \
69+
&& gpg --batch --verify swift.tar.gz.sig swift.tar.gz \
70+
# - Unpack the toolchain, set libs permissions, and clean up.
71+
&& mkdir -p $SWIFT_PREFIX \
72+
&& tar -xzf swift.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \
73+
&& chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \
74+
&& rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz \
75+
&& apt-get purge --auto-remove -y curl
76+
77+
ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}"
78+
79+
USER build-user
80+
81+
WORKDIR /home/build-user
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
FROM ubuntu:24.04
2+
3+
RUN groupadd -g 998 build-user && \
4+
useradd -m -r -u 998 -g build-user build-user
5+
6+
ENV DEBIAN_FRONTEND="noninteractive"
7+
8+
RUN apt-get -y update && apt-get -y install \
9+
build-essential \
10+
cmake \
11+
git \
12+
icu-devtools \
13+
libcurl4-openssl-dev \
14+
libedit-dev \
15+
libicu-dev \
16+
libncurses5-dev \
17+
libpython3-dev \
18+
libsqlite3-dev \
19+
libxml2-dev \
20+
ninja-build \
21+
pkg-config \
22+
python3-six \
23+
python3-pkg-resources \
24+
python3-psutil \
25+
rsync \
26+
swig \
27+
systemtap-sdt-dev \
28+
tzdata \
29+
uuid-dev \
30+
zip
31+
32+
ARG SWIFT_PLATFORM=ubuntu22.04
33+
ARG SWIFT_VERSION=5.8.1
34+
ARG SWIFT_BRANCH=swift-${SWIFT_VERSION}-release
35+
ARG SWIFT_TAG=swift-${SWIFT_VERSION}-RELEASE
36+
ARG SWIFT_WEBROOT=https://download.swift.org
37+
ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION}
38+
39+
ENV SWIFT_PLATFORM=$SWIFT_PLATFORM \
40+
SWIFT_VERSION=$SWIFT_VERSION \
41+
SWIFT_BRANCH=$SWIFT_BRANCH \
42+
SWIFT_TAG=$SWIFT_TAG \
43+
SWIFT_WEBROOT=$SWIFT_WEBROOT \
44+
SWIFT_PREFIX=$SWIFT_PREFIX
45+
46+
RUN set -e; \
47+
ARCH_NAME="$(dpkg --print-architecture)"; \
48+
url=; \
49+
case "${ARCH_NAME##*-}" in \
50+
'amd64') \
51+
OS_ARCH_SUFFIX=''; \
52+
;; \
53+
'arm64') \
54+
OS_ARCH_SUFFIX='-aarch64'; \
55+
;; \
56+
*) echo >&2 "error: unsupported architecture: '$ARCH_NAME'"; exit 1 ;; \
57+
esac; \
58+
SWIFT_WEBDIR="$SWIFT_WEBROOT/$SWIFT_BRANCH/$(echo $SWIFT_PLATFORM | tr -d .)$OS_ARCH_SUFFIX" \
59+
&& SWIFT_BIN_URL="$SWIFT_WEBDIR/$SWIFT_TAG/$SWIFT_TAG-$SWIFT_PLATFORM$OS_ARCH_SUFFIX.tar.gz" \
60+
&& SWIFT_SIG_URL="$SWIFT_BIN_URL.sig" \
61+
# - Grab curl here so we cache better up above
62+
&& export DEBIAN_FRONTEND=noninteractive \
63+
&& apt-get -q update && apt-get -q install -y curl && rm -rf /var/lib/apt/lists/* \
64+
# - Download the GPG keys, Swift toolchain, and toolchain signature, and verify.
65+
&& export GNUPGHOME="$(mktemp -d)" \
66+
&& curl -fsSL "$SWIFT_BIN_URL" -o swift.tar.gz "$SWIFT_SIG_URL" -o swift.tar.gz.sig \
67+
&& curl -fSsL https://swift.org/keys/all-keys.asc | gpg --import - \
68+
&& gpg --batch --verify swift.tar.gz.sig swift.tar.gz \
69+
# - Unpack the toolchain, set libs permissions, and clean up.
70+
&& mkdir -p $SWIFT_PREFIX \
71+
&& tar -xzf swift.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \
72+
&& chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \
73+
&& rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz \
74+
&& apt-get purge --auto-remove -y curl
75+
76+
ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}"
77+
78+
USER build-user
79+
80+
WORKDIR /home/build-user

0 commit comments

Comments
 (0)