-
Notifications
You must be signed in to change notification settings - Fork 35
Expand file tree
/
Copy pathDockerfile.sdk
More file actions
134 lines (115 loc) · 4.54 KB
/
Copy pathDockerfile.sdk
File metadata and controls
134 lines (115 loc) · 4.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# ARGUMENTS --------------------------------------------------------------------
##
# Base container version
##
ARG CROSS_SDK_BASE_TAG=4
##
# Board architecture
##
ARG IMAGE_ARCH=
##
# Host architecture
##
ARG HOST_ARCH=
##
# Board GPU vendor prefix
##
ARG GPU=
##
# Directory of the application inside container
##
ARG APP_ROOT=
##
# Slint Version
##
ARG SLINT_VERSION=1.17.1
# BUILD ------------------------------------------------------------------------
FROM --platform=linux/${HOST_ARCH} torizon/cross-toolchain-${IMAGE_ARCH}:${CROSS_SDK_BASE_TAG} AS build
ARG IMAGE_ARCH
ARG GPU
ARG APP_ROOT
ARG SLINT_VERSION
# Install an up-to-date cmake as well as ninja and make
RUN apt-get update && \
apt-get install --assume-yes gpg wget && \
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null && \
echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ jammy main' | tee /etc/apt/sources.list.d/kitware.list >/dev/null && \
apt-get update && \
apt-get install --assume-yes cmake ninja-build make && \
rm -f /etc/apt/sources.list.d/kitware.list /usr/share/keyrings/kitware-archive-keyring.gpg && \
rm -rf /var/lib/apt/lists/*
COPY --chmod=755 armhf-toolchain.cmake arm64-toolchain.cmake /
RUN if [ "$IMAGE_ARCH" = "arm64" ] ; then \
echo arm64 > /cross-toolchain-arch.txt; \
dpkg-divert --divert /usr/bin/cmake.real --rename /usr/bin/cmake; \
printf '#!/bin/sh\nexport CMAKE_TOOLCHAIN_FILE=/arm64-toolchain.cmake\nexec /usr/bin/cmake.real $*\n' > /usr/bin/cmake; \
chmod 755 /usr/bin/cmake ;\
elif [ "$IMAGE_ARCH" = "armhf" ] ; then \
echo armhf > /cross-toolchain-arch.txt; \
dpkg-divert --divert /usr/bin/cmake.real --rename /usr/bin/cmake; \
printf '#!/bin/sh\nexport CMAKE_TOOLCHAIN_FILE=/armhf-toolchain.cmake\nexec /usr/bin/cmake.real $*\n' > /usr/bin/cmake; \
chmod 755 /usr/bin/cmake ;\
elif [ "$IMAGE_ARCH" = "amd64" ] ; then \
echo amd64 > /cross-toolchain-arch.txt; \
fi
# Download Slint binary packages
RUN \
CROSS_TOOLCHAIN_ARCH=$(cat /cross-toolchain-arch.txt) && \
if [ "$SLINT_VERSION" = "nightly" ]; then \
GITHUB_RELEASE=nightly; \
GITHUB_FILENAME_INFIX=nightly; \
else \
GITHUB_RELEASE=v$SLINT_VERSION; \
GITHUB_FILENAME_INFIX=$SLINT_VERSION; \
fi && \
wget -O - https://github.com/slint-ui/slint/releases/download/$GITHUB_RELEASE/Slint-cpp-$GITHUB_FILENAME_INFIX-Linux-$CROSS_TOOLCHAIN_ARCH.tar.gz \
| tar xzvf - --strip-components 1 -C /usr && \
if [ "$SLINT_VERSION" = "nightly" ]; then \
echo 'set(SLINT_GITHUB_RELEASE "nightly" CACHE STRING "")' >> armhf-toolchain.cmake ;\
echo 'set(SLINT_GITHUB_RELEASE "nightly" CACHE STRING "")' >> arm64-toolchain.cmake ;\
fi
# Install Slint build dependencies (libxcb, etc.)
RUN \
--mount=type=cache,target=/var/cache/apt \
CROSS_TOOLCHAIN_ARCH=$(cat /cross-toolchain-arch.txt) && \
rm /etc/apt/sources.list.d/toradex.sources && \
apt-get update && \
apt-get install --assume-yes \
pkg-config \
libfontconfig1 \
libfontconfig1-dev:$CROSS_TOOLCHAIN_ARCH \
libxcb1-dev:$CROSS_TOOLCHAIN_ARCH \
libxcb-render0-dev:$CROSS_TOOLCHAIN_ARCH \
libxcb-shape0-dev:$CROSS_TOOLCHAIN_ARCH \
libxcb-xfixes0-dev:$CROSS_TOOLCHAIN_ARCH \
libxkbcommon-dev:$CROSS_TOOLCHAIN_ARCH \
libinput-dev:$CROSS_TOOLCHAIN_ARCH \
libudev-dev:$CROSS_TOOLCHAIN_ARCH \
libdrm2:$CROSS_TOOLCHAIN_ARCH \
libgbm-dev:$CROSS_TOOLCHAIN_ARCH \
python3 \
clang \
libstdc++-11-dev:$CROSS_TOOLCHAIN_ARCH && \
rm -rf /var/lib/apt/lists/*
ENV PKG_CONFIG_ALLOW_CROSS=1
# Default to Ninja
ENV CMAKE_GENERATOR=Ninja
# automate for torizonPackages.json
RUN apt-get -q -y update && \
apt-get -q -y install \
# DO NOT REMOVE THIS LABEL: this is used for VS Code automation
# __torizon_packages_build_start__
# __torizon_packages_build_end__
# DO NOT REMOVE THIS LABEL: this is used for VS Code automation
&& \
apt-get clean && apt-get autoremove && \
rm -rf /var/lib/apt/lists/*
# get the arch and copy the /usr/lib to /usr/lib/${ARCH_TRIPLET}
RUN ARCH_TRIPLET=$(dpkg-architecture -qDEB_HOST_MULTIARCH) && \
cp -r /usr/lib/libslint_cpp.so /usr/lib/${ARCH_TRIPLET}/libslint_cpp.so
# Default to the Skia backend for best performance
ENV SLINT_BACKEND=linuxkms-skia
# Default to Slint running in fullscreen
ENV SLINT_FULLSCREEN=1
USER torizon
WORKDIR ${APP_ROOT}