|
| 1 | +# cmake |
| 2 | +FROM ubuntu:26.04 AS build-cmake |
| 3 | + |
| 4 | +ARG CMAKE_VERSION=4.3.2 |
| 5 | +ARG CMAKE_SHA256SUM=b0231eb39b3c3cabdc568c619df78208a7bd95ea10c9b2236d61218bac1b367d |
| 6 | + |
| 7 | +ARG NUM_JOBS=26 |
| 8 | + |
| 9 | +ENV DEBIAN_FRONTEND=noninteractive |
| 10 | +ENV LC_ALL=en_US.UTF-8 |
| 11 | +ENV LANG=en_US.UTF-8 |
| 12 | +ENV LANGUAGE=en_US.UTF-8 |
| 13 | + |
| 14 | +RUN <<EOF |
| 15 | +set -e |
| 16 | + |
| 17 | +apt-get update |
| 18 | + |
| 19 | +apt-get install -y --no-install-recommends \ |
| 20 | + build-essential \ |
| 21 | + ca-certificates \ |
| 22 | + libssl-dev \ |
| 23 | + locales \ |
| 24 | + locales-all \ |
| 25 | + curl |
| 26 | + |
| 27 | +apt-get clean |
| 28 | +EOF |
| 29 | + |
| 30 | +# Install CMake |
| 31 | +RUN <<EOF |
| 32 | +set -e |
| 33 | +mkdir /tmp/cmake |
| 34 | +cd /tmp/cmake |
| 35 | +curl --location --output cmake.tar.gz https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}.tar.gz |
| 36 | +echo "${CMAKE_SHA256SUM} cmake.tar.gz" | sha256sum --check --status |
| 37 | +tar xzf cmake.tar.gz |
| 38 | +cd cmake-${CMAKE_VERSION} |
| 39 | +./bootstrap --prefix=/usr/local-cmake |
| 40 | +make -j${NUM_JOBS} |
| 41 | +make install |
| 42 | +rm -rf /tmp/cmake |
| 43 | +EOF |
| 44 | + |
| 45 | + |
| 46 | + |
| 47 | +# boost |
| 48 | +FROM ubuntu:26.04 AS build-boost |
| 49 | + |
| 50 | +ARG BOOST_VERSION=1.84.0 |
| 51 | +ARG BOOST_SHA256SUM=cc4b893acf645c9d4b698e9a0f08ca8846aa5d6c68275c14c3e7949c24109454 |
| 52 | + |
| 53 | +ARG NUM_JOBS=26 |
| 54 | + |
| 55 | +ENV DEBIAN_FRONTEND=noninteractive |
| 56 | +ENV LC_ALL=en_US.UTF-8 |
| 57 | +ENV LANG=en_US.UTF-8 |
| 58 | +ENV LANGUAGE=en_US.UTF-8 |
| 59 | + |
| 60 | +# COPY --from=build-cmake /usr/local-cmake /usr/local-cmake |
| 61 | + |
| 62 | +RUN <<EOF |
| 63 | +set -e |
| 64 | + |
| 65 | +apt-get update |
| 66 | + |
| 67 | +apt-get install -y --no-install-recommends \ |
| 68 | + build-essential \ |
| 69 | + ca-certificates \ |
| 70 | + libssl-dev \ |
| 71 | + locales \ |
| 72 | + locales-all \ |
| 73 | + curl |
| 74 | + |
| 75 | +apt-get clean |
| 76 | +EOF |
| 77 | + |
| 78 | +RUN <<EOF |
| 79 | +set -e |
| 80 | +mkdir /tmp/boost |
| 81 | +cd /tmp/boost |
| 82 | +BOOST_VERSION_MOD=$(echo $BOOST_VERSION | tr . _) |
| 83 | +curl --location --output boost.tar.bz2 https://archives.boost.io/release/${BOOST_VERSION}/source/boost_${BOOST_VERSION_MOD}.tar.bz2 |
| 84 | +echo "$BOOST_SHA256SUM boost.tar.bz2" | sha256sum --check --status |
| 85 | +tar --bzip2 -xf boost.tar.bz2 |
| 86 | +cd boost_${BOOST_VERSION_MOD} |
| 87 | +./bootstrap.sh --prefix=/usr/local-boost |
| 88 | +./b2 install |
| 89 | +rm -rf /tmp/boost |
| 90 | +EOF |
| 91 | + |
| 92 | + |
| 93 | + |
| 94 | +# Qt |
| 95 | +FROM ubuntu:26.04 AS build-qt |
| 96 | + |
| 97 | +ARG QT_TAG=v6.11.1 |
| 98 | + |
| 99 | +ARG NUM_JOBS=26 |
| 100 | + |
| 101 | +COPY --from=build-cmake /usr/local-cmake /usr/local-cmake |
| 102 | + |
| 103 | +ENV DEBIAN_FRONTEND=noninteractive |
| 104 | +ENV LC_ALL=en_US.UTF-8 |
| 105 | +ENV LANG=en_US.UTF-8 |
| 106 | +ENV LANGUAGE=en_US.UTF-8 |
| 107 | +ENV PATH="/usr/local-cmake/bin:${PATH}" |
| 108 | + |
| 109 | +RUN <<EOF |
| 110 | +set -e |
| 111 | + |
| 112 | +apt-get update |
| 113 | + |
| 114 | +apt-get install -y --no-install-recommends \ |
| 115 | + build-essential \ |
| 116 | + ca-certificates \ |
| 117 | + libssl-dev \ |
| 118 | + locales \ |
| 119 | + locales-all \ |
| 120 | + curl \ |
| 121 | + ninja-build \ |
| 122 | + git |
| 123 | + |
| 124 | +apt-get install -y --no-install-recommends \ |
| 125 | + libgl-dev \ |
| 126 | + libz3-dev \ |
| 127 | + zlib1g-dev \ |
| 128 | + libjpeg-dev \ |
| 129 | + libpng-dev \ |
| 130 | + libfreetype-dev \ |
| 131 | + libpcre2-dev \ |
| 132 | + libharfbuzz-dev \ |
| 133 | + libx11-xcb-dev \ |
| 134 | + libxcb-glx0-dev \ |
| 135 | + libxcb-cursor-dev \ |
| 136 | + libxcb-icccm4-dev \ |
| 137 | + libxcb-image0-dev \ |
| 138 | + libxcb-keysyms1-dev \ |
| 139 | + libxcb-randr0-dev \ |
| 140 | + libxcb-render0-dev \ |
| 141 | + libxcb-render-util0-dev \ |
| 142 | + libxcb-shape0-dev \ |
| 143 | + libxcb-shm0-dev \ |
| 144 | + libxcb-sync-dev \ |
| 145 | + libxcb-xfixes0-dev \ |
| 146 | + libxcb-xkb-dev \ |
| 147 | + libxcb-xinput-dev \ |
| 148 | + libegl1-mesa-dev \ |
| 149 | + libxkbcommon-dev \ |
| 150 | + libxkbcommon-x11-dev \ |
| 151 | + libfontconfig1-dev \ |
| 152 | + pkg-config \ |
| 153 | + libxcb1-dev \ |
| 154 | + libxcb-util-dev \ |
| 155 | + libwebp-dev |
| 156 | + |
| 157 | +apt-get clean |
| 158 | +EOF |
| 159 | + |
| 160 | +# CLONE QT |
| 161 | +RUN <<EOF |
| 162 | +set -e |
| 163 | + |
| 164 | +mkdir /tmp/qt |
| 165 | +cd /tmp/qt |
| 166 | +git clone https://github.com/qt/qt5 |
| 167 | +cd qt5 |
| 168 | +git checkout ${QT_TAG} |
| 169 | + |
| 170 | +EOF |
| 171 | + |
| 172 | +# INIT QT REPOSITORY |
| 173 | +RUN <<EOF |
| 174 | +set -e |
| 175 | + |
| 176 | +cd /tmp/qt/qt5 |
| 177 | + |
| 178 | +./init-repository --module-subset=qtbase,qtimageformats,qt5compat,qtsvg |
| 179 | + |
| 180 | +EOF |
| 181 | + |
| 182 | +# CONFIGURE & BUILD QT |
| 183 | +RUN <<EOF |
| 184 | +set -e |
| 185 | + |
| 186 | +cd /tmp/qt/qt5 |
| 187 | + |
| 188 | +./configure \ |
| 189 | + -static \ |
| 190 | + -prefix /usr/local-qt \ |
| 191 | + -xcb \ |
| 192 | + -xkbcommon \ |
| 193 | + -qpa xcb \ |
| 194 | + -opensource \ |
| 195 | + -system-zlib \ |
| 196 | + -system-libjpeg \ |
| 197 | + -system-libpng \ |
| 198 | + -system-freetype \ |
| 199 | + -system-pcre \ |
| 200 | + -system-harfbuzz \ |
| 201 | + -system-webp \ |
| 202 | + -confirm-license \ |
| 203 | + -nomake examples \ |
| 204 | + -nomake tests |
| 205 | + |
| 206 | +cmake --build . |
| 207 | +cmake --install . |
| 208 | +EOF |
| 209 | + |
| 210 | + |
| 211 | + |
| 212 | +# Chatterino2 |
| 213 | +FROM ubuntu:26.04 |
| 214 | + |
| 215 | +COPY --from=build-cmake /usr/local-cmake /usr/local-cmake |
| 216 | +COPY --from=build-boost /usr/local-boost /usr/local-boost |
| 217 | +COPY --from=build-qt /usr/local-qt /usr/local-qt |
| 218 | + |
| 219 | +ENV DEBIAN_FRONTEND=noninteractive |
| 220 | +ENV LC_ALL=en_US.UTF-8 |
| 221 | +ENV LANG=en_US.UTF-8 |
| 222 | +ENV LANGUAGE=en_US.UTF-8 |
| 223 | +ENV QT_QPA_PLATFORM=minimal |
| 224 | +ENV PATH="/usr/local-cmake/bin:${PATH}" |
| 225 | +ENV Qt6_DIR="/usr/local-qt" |
| 226 | +ENV Boost_DIR="/usr/local-boost" |
| 227 | + |
| 228 | +RUN <<EOF |
| 229 | +set -e |
| 230 | + |
| 231 | +apt-get update |
| 232 | + |
| 233 | +apt-get install -y --no-install-recommends \ |
| 234 | + build-essential \ |
| 235 | + ca-certificates \ |
| 236 | + libssl-dev \ |
| 237 | + locales \ |
| 238 | + locales-all \ |
| 239 | + curl \ |
| 240 | + libbenchmark-dev \ |
| 241 | + git |
| 242 | + |
| 243 | +apt-get install -y --no-install-recommends \ |
| 244 | + libgl-dev \ |
| 245 | + libz3-dev \ |
| 246 | + zlib1g-dev \ |
| 247 | + libjpeg-dev \ |
| 248 | + libpng-dev \ |
| 249 | + libfreetype-dev \ |
| 250 | + libpcre2-dev \ |
| 251 | + libwebp-dev \ |
| 252 | + libharfbuzz-dev |
| 253 | + |
| 254 | +apt-get install -y --no-install-recommends \ |
| 255 | + libsecret-1-dev |
| 256 | + |
| 257 | +apt-get install -y --no-install-recommends \ |
| 258 | + libgl-dev \ |
| 259 | + libz3-dev \ |
| 260 | + zlib1g-dev \ |
| 261 | + libjpeg-dev \ |
| 262 | + libpng-dev \ |
| 263 | + libfreetype-dev \ |
| 264 | + libpcre2-dev \ |
| 265 | + libharfbuzz-dev \ |
| 266 | + libx11-xcb-dev \ |
| 267 | + libxcb-glx0-dev \ |
| 268 | + libxcb-cursor-dev \ |
| 269 | + libxcb-icccm4-dev \ |
| 270 | + libxcb-image0-dev \ |
| 271 | + libxcb-keysyms1-dev \ |
| 272 | + libxcb-randr0-dev \ |
| 273 | + libxcb-render0-dev \ |
| 274 | + libxcb-render-util0-dev \ |
| 275 | + libxcb-shape0-dev \ |
| 276 | + libxcb-shm0-dev \ |
| 277 | + libxcb-sync-dev \ |
| 278 | + libxcb-xfixes0-dev \ |
| 279 | + libxcb-xkb-dev \ |
| 280 | + libxcb-xinput-dev \ |
| 281 | + libegl1-mesa-dev \ |
| 282 | + libxkbcommon-dev \ |
| 283 | + libxkbcommon-x11-dev \ |
| 284 | + libfontconfig1-dev \ |
| 285 | + pkg-config \ |
| 286 | + libxcb1-dev \ |
| 287 | + libxcb-util-dev \ |
| 288 | + libwebp-dev |
| 289 | + |
| 290 | +# Use system RapidJSON instead of Chatterino submodule |
| 291 | +apt-get install -y --no-install-recommends \ |
| 292 | + rapidjson-dev |
| 293 | + |
| 294 | +# For builds with desktop notification support (default) |
| 295 | +apt-get install -y --no-install-recommends \ |
| 296 | + libnotify4 \ |
| 297 | + libnotify-dev |
| 298 | + |
| 299 | +# Necessary for GitHub actions |
| 300 | +apt-get install -y --no-install-recommends \ |
| 301 | + sudo |
| 302 | + |
| 303 | +# Necessary for AppImage creation |
| 304 | +apt-get install -y --no-install-recommends \ |
| 305 | + file |
| 306 | + |
| 307 | +# Necessary for deb creation |
| 308 | +apt-get install -y --no-install-recommends \ |
| 309 | + lsb-release |
| 310 | + |
| 311 | +apt-get clean |
| 312 | +EOF |
0 commit comments