Skip to content

Commit a96e2ad

Browse files
update lightntingcss
1 parent 8e58371 commit a96e2ad

1 file changed

Lines changed: 46 additions & 329 deletions

File tree

‎Dockerfile‎

Lines changed: 46 additions & 329 deletions
Original file line numberDiff line numberDiff line change
@@ -1,346 +1,63 @@
1-
# syntax=docker/dockerfile:1
2-
3-
FROM ubuntu:24.04
4-
5-
ARG DEBIAN_FRONTEND=noninteractive
6-
7-
# ============================================================
8-
# Versions
9-
# ============================================================
10-
11-
ARG ANDROID_NDK_VERSION=r27c
12-
13-
# ============================================================
14-
# Environment
15-
# ============================================================
16-
17-
ENV CARGO_HOME=/root/.cargo \
18-
RUSTUP_HOME=/root/.rustup \
19-
ANDROID_HOME=/opt/android-sdk \
20-
ANDROID_SDK_ROOT=/opt/android-sdk \
21-
ANDROID_NDK_ROOT=/opt/android-ndk \
22-
ANDROID_NDK_HOME=/opt/android-ndk \
23-
JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
24-
25-
ENV PATH="/root/.cargo/bin:${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/build-tools/35.0.0:${ANDROID_NDK_ROOT}:${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin:${PATH}"
26-
27-
# ============================================================
28-
# System dependencies
29-
# ============================================================
30-
31-
RUN apt-get update \
32-
&& apt-get install -y --no-install-recommends \
33-
ca-certificates \
34-
curl \
35-
wget \
36-
git \
37-
unzip \
38-
zip \
39-
xz-utils \
40-
file \
41-
pkg-config \
42-
build-essential \
43-
cmake \
44-
ninja-build \
45-
clang \
46-
lld \
47-
llvm \
48-
python3 \
49-
python3-pip \
50-
openjdk-17-jdk \
1+
FROM rust:1.89-bookworm
2+
3+
ENV DEBIAN_FRONTEND=noninteractive
4+
5+
RUN apt-get update && apt-get install -y \
6+
clang \
7+
lld \
8+
llvm \
9+
python3 \
10+
make \
11+
git \
12+
curl \
13+
unzip \
14+
openjdk-17-jdk \
5115
&& rm -rf /var/lib/apt/lists/*
5216

53-
# ============================================================
54-
# Android SDK Command Line Tools
55-
# ============================================================
56-
57-
ARG ANDROID_CMDLINE_TOOLS=13114758
58-
59-
RUN mkdir -p "${ANDROID_SDK_ROOT}/cmdline-tools" \
60-
&& wget -q \
61-
"https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_CMDLINE_TOOLS}_latest.zip" \
62-
-O /tmp/cmdline-tools.zip \
63-
&& unzip -q \
64-
/tmp/cmdline-tools.zip \
65-
-d "${ANDROID_SDK_ROOT}/cmdline-tools" \
66-
&& mv \
67-
"${ANDROID_SDK_ROOT}/cmdline-tools/cmdline-tools" \
68-
"${ANDROID_SDK_ROOT}/cmdline-tools/latest" \
69-
&& rm -f /tmp/cmdline-tools.zip
70-
71-
# ============================================================
72-
# Android SDK
73-
# ============================================================
74-
75-
RUN yes | sdkmanager --licenses >/dev/null 2>&1 || true
76-
77-
RUN sdkmanager \
78-
"platform-tools" \
79-
"platforms;android-35" \
80-
"build-tools;35.0.0"
81-
82-
# ============================================================
83-
# Android NDK
84-
# ============================================================
85-
86-
RUN wget -q \
87-
"https://dl.google.com/android/repository/android-ndk-${ANDROID_NDK_VERSION}-linux.zip" \
88-
-O /tmp/android-ndk.zip \
89-
&& unzip -q \
90-
/tmp/android-ndk.zip \
91-
-d /opt \
92-
&& mv \
93-
"/opt/android-ndk-${ANDROID_NDK_VERSION}" \
94-
"${ANDROID_NDK_ROOT}" \
95-
&& rm -f /tmp/android-ndk.zip
96-
97-
# ============================================================
98-
# Verify Android NDK
99-
# ============================================================
100-
101-
RUN test -f "${ANDROID_NDK_ROOT}/source.properties" \
102-
&& test -f "${ANDROID_NDK_ROOT}/ndk-build"
103-
104-
# ============================================================
105-
# Rust
106-
# ============================================================
107-
108-
RUN curl \
109-
--proto '=https' \
110-
--tlsv1.2 \
111-
-sSf \
112-
https://sh.rustup.rs \
113-
| sh -s -- \
114-
-y \
115-
--profile minimal
116-
117-
# ============================================================
118-
# Rust targets
119-
# ============================================================
120-
121-
RUN rustup target add \
122-
x86_64-unknown-linux-gnu \
123-
i686-unknown-linux-gnu \
124-
aarch64-unknown-linux-gnu \
125-
armv7-unknown-linux-gnueabihf \
126-
x86_64-pc-windows-gnu \
127-
i686-pc-windows-gnu \
128-
aarch64-linux-android \
129-
armv7-linux-androideabi \
130-
x86_64-linux-android \
131-
i686-linux-android
132-
133-
# ============================================================
134-
# Cargo Android linker configuration
135-
# ============================================================
136-
137-
RUN mkdir -p "${CARGO_HOME}" \
138-
&& cat > "${CARGO_HOME}/config.toml" <<'EOF'
139-
140-
[target.aarch64-linux-android]
141-
linker = "/opt/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang"
142-
143-
[target.armv7-linux-androideabi]
144-
linker = "/opt/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang"
145-
146-
[target.x86_64-linux-android]
147-
linker = "/opt/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android24-clang"
148-
149-
[target.i686-linux-android]
150-
linker = "/opt/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android24-clang"
151-
152-
EOF
153-
154-
# ============================================================
155-
# Node.js
156-
# ============================================================
157-
158-
RUN curl -fsSL \
159-
https://deb.nodesource.com/setup_22.x \
160-
| bash - \
161-
&& apt-get update \
162-
&& apt-get install -y --no-install-recommends nodejs \
163-
&& npm install -g corepack \
164-
&& corepack enable \
165-
&& rm -rf /var/lib/apt/lists/*
166-
167-
# ============================================================
168-
# Verification
169-
# ============================================================
170-
171-
RUN echo "========================================" \
172-
&& echo "System" \
173-
&& echo "========================================" \
174-
&& uname -a \
175-
&& echo \
176-
&& echo "========================================" \
177-
&& echo "Java" \
178-
&& echo "========================================" \
179-
&& java -version \
180-
&& echo \
181-
&& echo "========================================" \
182-
&& echo "Rust" \
183-
&& echo "========================================" \
184-
&& rustc --version \
185-
&& cargo --version \
186-
&& rustup --version \
187-
&& echo \
188-
&& echo "========================================" \
189-
&& echo "Node.js" \
190-
&& echo "========================================" \
191-
&& node --version \
192-
&& npm --version \
193-
&& echo \
194-
&& echo "========================================" \
195-
&& echo "C/C++ Toolchain" \
196-
&& echo "========================================" \
197-
&& gcc --version \
198-
&& clang --version \
199-
&& cmake --version \
200-
&& ninja --version \
201-
&& echo \
202-
&& echo "========================================" \
203-
&& echo "Android SDK" \
204-
&& echo "========================================" \
205-
&& sdkmanager --version \
206-
&& adb --version \
207-
&& echo \
208-
&& echo "========================================" \
209-
&& echo "Android NDK" \
210-
&& echo "========================================" \
211-
&& "${ANDROID_NDK_ROOT}/ndk-build" --version \
212-
&& echo \
213-
&& echo "========================================" \
214-
&& echo "Rust Targets" \
215-
&& echo "========================================" \
216-
&& rustup target list --installed \
217-
&& echo \
218-
&& echo "========================================" \
219-
&& echo "Android Linkers" \
220-
&& echo "========================================" \
221-
&& test -x "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang" \
222-
&& test -x "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang" \
223-
&& test -x "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android24-clang" \
224-
&& test -x "${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android24-clang" \
225-
&& echo "Android linkers: OK"
226-
227-
# ============================================================
228-
# Project
229-
# ============================================================
230-
231-
WORKDIR /workspace
232-
233-
CMD ["bash"] lld \
234-
llvm \
235-
python3 \
236-
python3-pip \
237-
openjdk-17-jdk \
238-
&& rm -rf /var/lib/apt/lists/*
239-
240-
# ============================================================
24117
# Android SDK command-line tools
242-
# ============================================================
243-
244-
ARG ANDROID_CMDLINE_TOOLS=13114758
245-
246-
RUN mkdir -p /opt/android-sdk/cmdline-tools \
247-
&& wget -q \
248-
"https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_CMDLINE_TOOLS}_latest.zip" \
249-
-O /tmp/cmdline-tools.zip \
250-
&& unzip -q /tmp/cmdline-tools.zip \
251-
-d /opt/android-sdk/cmdline-tools \
252-
&& mv \
253-
/opt/android-sdk/cmdline-tools/cmdline-tools \
254-
/opt/android-sdk/cmdline-tools/latest \
255-
&& rm -f /tmp/cmdline-tools.zip
256-
257-
# ============================================================
258-
# Android SDK
259-
# ============================================================
260-
261-
RUN yes | sdkmanager --licenses >/dev/null 2>&1 || true
18+
ENV ANDROID_SDK_ROOT=/opt/android-sdk
19+
ENV ANDROID_HOME=/opt/android-sdk
26220

263-
RUN sdkmanager \
264-
"platform-tools" \
265-
"platforms;android-35" \
266-
"build-tools;35.0.0"
21+
RUN mkdir -p ${ANDROID_SDK_ROOT}/cmdline-tools && \
22+
curl -L -o /tmp/cmdline-tools.zip \
23+
https://dl.google.com/android/repository/commandlinetools-linux-13114758_latest.zip && \
24+
unzip -q /tmp/cmdline-tools.zip -d ${ANDROID_SDK_ROOT}/cmdline-tools && \
25+
mv ${ANDROID_SDK_ROOT}/cmdline-tools/cmdline-tools \
26+
${ANDROID_SDK_ROOT}/cmdline-tools/latest && \
27+
rm /tmp/cmdline-tools.zip
26728

268-
# ============================================================
269-
# Android NDK
270-
# ============================================================
29+
ENV PATH=${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin:${ANDROID_SDK_ROOT}/platform-tools:${PATH}
27130

272-
RUN wget -q \
273-
"https://dl.google.com/android/repository/android-ndk-${ANDROID_NDK_VERSION}-linux.zip" \
274-
-O /tmp/android-ndk.zip \
275-
&& unzip -q /tmp/android-ndk.zip -d /opt \
276-
&& mv \
277-
"/opt/android-ndk-${ANDROID_NDK_VERSION}" \
278-
"${ANDROID_NDK_ROOT}" \
279-
&& rm -f /tmp/android-ndk.zip
31+
RUN yes | sdkmanager --licenses >/dev/null || true && \
32+
sdkmanager \
33+
"platform-tools" \
34+
"platforms;android-35" \
35+
"build-tools;35.0.0" \
36+
"ndk;27.2.12479018"
28037

281-
# ============================================================
282-
# Rust
283-
# ============================================================
38+
ENV ANDROID_NDK_HOME=${ANDROID_SDK_ROOT}/ndk/27.2.12479018
28439

285-
RUN curl --proto '=https' \
286-
--tlsv1.2 \
287-
-sSf https://sh.rustup.rs \
288-
| sh -s -- -y --profile minimal
40+
# Rust Android ARMv7 target
41+
RUN rustup target add armv7-linux-androideabi
28942

290-
# ============================================================
291-
# Rust Android targets
292-
# ============================================================
43+
WORKDIR /src
29344

294-
RUN rustup target add \
295-
aarch64-linux-android \
296-
armv7-linux-androideabi \
297-
x86_64-linux-android \
298-
i686-linux-android
45+
RUN git clone --depth 1 https://github.com/parcel-bundler/lightningcss.git .
29946

300-
# ============================================================
301-
# Cargo Android linker configuration
302-
# ============================================================
47+
# Android ARMv7 linker
48+
ENV AR_armv7_linux_androideabi=\
49+
/opt/android-sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar
30350

304-
RUN mkdir -p /root/.cargo \
305-
&& cat > /root/.cargo/config.toml <<'EOF'
306-
[target.aarch64-linux-android]
307-
linker = "/opt/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang"
308-
309-
[target.armv7-linux-androideabi]
310-
linker = "/opt/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang"
311-
312-
[target.x86_64-linux-android]
313-
linker = "/opt/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android24-clang"
314-
315-
[target.i686-linux-android]
316-
linker = "/opt/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android24-clang"
317-
EOF
318-
319-
# ============================================================
320-
# Node.js
321-
# ============================================================
322-
323-
RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \
324-
&& apt-get update \
325-
&& apt-get install -y --no-install-recommends nodejs \
326-
&& npm install -g corepack \
327-
&& corepack enable \
328-
&& rm -rf /var/lib/apt/lists/*
51+
ENV CC_armv7_linux_androideabi=\
52+
/opt/android-sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang
32953

330-
# ============================================================
331-
# Verification
332-
# ============================================================
54+
ENV CXX_armv7_linux_androideabi=\
55+
/opt/android-sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang++
33356

334-
RUN rustc --version \
335-
&& cargo --version \
336-
&& node --version \
337-
&& npm --version \
338-
&& clang --version \
339-
&& cmake --version \
340-
&& java -version \
341-
&& sdkmanager --version \
342-
&& ndk-build --version
57+
ENV CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER=\
58+
/opt/android-sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi24-clang
34359

344-
WORKDIR /workspace
60+
RUN cargo build --release \
61+
--target armv7-linux-androideabi
34562

34663
CMD ["bash"]

0 commit comments

Comments
 (0)