Dockerfile 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877
  1. {%- set GIT = "https://github.com" -%}
  2. {%- set GIT_FREEDESKTOP = GIT ~ "/gitlab-freedesktop-mirrors" -%}
  3. {%- set GIT_UPDATE_M4 = "git submodule set-url m4 https://gitlab.freedesktop.org/xorg/util/xcb-util-m4 && git config -f .gitmodules submodule.m4.shallow true && git submodule init && git submodule update" -%}
  4. {%- set TOOLSET = "gcc-toolset-12" -%}
  5. {%- set QT = "6.8.2" -%}
  6. {%- set QT_TAG = "v" ~ QT -%}
  7. {%- set CFLAGS_DEBUG = "$CFLAGS -O0 -fno-lto -U_FORTIFY_SOURCE" -%}
  8. {%- set LibrariesPath = "/usr/src/Libraries" -%}
  9. # syntax=docker/dockerfile:1
  10. FROM rockylinux:8 AS builder
  11. ENV LANG C.UTF-8
  12. ENV PATH /opt/rh/{{ TOOLSET }}/root/usr/bin:$PATH
  13. ENV LIBRARY_PATH /opt/rh/{{ TOOLSET }}/root/usr/lib64:/opt/rh/{{ TOOLSET }}/root/usr/lib:/usr/local/lib64:/usr/local/lib:/lib64:/lib:/usr/lib64:/usr/lib
  14. ENV LD_LIBRARY_PATH $LIBRARY_PATH
  15. ENV PKG_CONFIG_PATH /opt/rh/{{ TOOLSET }}/root/usr/lib64/pkgconfig:/opt/rh/{{ TOOLSET }}/root/usr/lib/pkgconfig:/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig
  16. RUN dnf -y install epel-release \
  17. && dnf config-manager --set-enabled powertools \
  18. && dnf -y install cmake autoconf automake libtool pkgconfig make patch git \
  19. python3.11-pip python3.11-devel gperf flex bison clang clang-tools-extra \
  20. lld nasm yasm file which perl-open perl-XML-Parser perl-IPC-Cmd \
  21. xorg-x11-util-macros {{ TOOLSET }}-gcc {{ TOOLSET }}-gcc-c++ \
  22. {{ TOOLSET }}-binutils {{ TOOLSET }}-gdb {{ TOOLSET }}-libasan-devel \
  23. libffi-devel fontconfig-devel freetype-devel libX11-devel wayland-devel \
  24. alsa-lib-devel pulseaudio-libs-devel mesa-libGL-devel mesa-libEGL-devel \
  25. mesa-libgbm-devel libdrm-devel vulkan-devel libva-devel libvdpau-devel \
  26. glib2-devel at-spi2-core-devel gtk3-devel boost1.78-devel fmt-devel \
  27. && dnf clean all
  28. RUN python3 -m pip install meson ninja
  29. RUN echo set debuginfod enabled on > /opt/rh/{{ TOOLSET }}/root/etc/gdbinit.d/00-debuginfod.gdb
  30. RUN adduser user
  31. WORKDIR {{ LibrariesPath }}
  32. ENV AR gcc-ar
  33. ENV RANLIB gcc-ranlib
  34. ENV NM gcc-nm
  35. ENV CFLAGS {% if DEBUG %}-g{% endif %} -O3 {% if LTO %}-flto=auto -ffat-lto-objects{% endif %} -pipe -fPIC -fno-strict-aliasing -fexceptions -fasynchronous-unwind-tables -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fstack-protector-strong -fstack-clash-protection -fcf-protection -D_FORTIFY_SOURCE=3 -D_GLIBCXX_ASSERTIONS
  36. ENV CXXFLAGS $CFLAGS
  37. FROM builder AS patches
  38. RUN git init patches \
  39. && cd patches \
  40. && git remote add origin {{ GIT }}/desktop-app/patches.git \
  41. && git fetch --depth=1 origin fb35ec726cf0a99eead201ddf80e1e717b9fa7c2 \
  42. && git reset --hard FETCH_HEAD \
  43. && rm -rf .git
  44. FROM builder AS zlib
  45. RUN git init zlib \
  46. && cd zlib \
  47. && git remote add origin {{ GIT }}/madler/zlib.git \
  48. && git fetch --depth=1 origin 643e17b7498d12ab8d15565662880579692f769d \
  49. && git reset --hard FETCH_HEAD \
  50. && ./configure \
  51. && make -j$(nproc) \
  52. && make DESTDIR="{{ LibrariesPath }}/zlib-cache" install \
  53. && cd .. \
  54. && rm -rf zlib
  55. FROM builder AS xz
  56. RUN git clone -b v5.4.4 --depth=1 {{ GIT }}/tukaani-project/xz.git \
  57. && cd xz \
  58. && cmake -B build . -DCMAKE_BUILD_TYPE=None \
  59. && cmake --build build -j$(nproc) \
  60. && DESTDIR="{{ LibrariesPath }}/xz-cache" cmake --install build \
  61. && cd .. \
  62. && rm -rf xz
  63. FROM builder AS protobuf
  64. RUN git clone -b v21.9 --depth=1 --recursive --shallow-submodules {{ GIT }}/protocolbuffers/protobuf.git \
  65. && cd protobuf \
  66. && git init third_party/abseil-cpp \
  67. && cd third_party/abseil-cpp \
  68. && git remote add origin {{ GIT }}/abseil/abseil-cpp.git \
  69. && git fetch --depth=1 origin 273292d1cfc0a94a65082ee350509af1d113344d \
  70. && git reset --hard FETCH_HEAD \
  71. && cd ../.. \
  72. && cmake -GNinja -B build . \
  73. -DCMAKE_BUILD_TYPE=None \
  74. -Dprotobuf_BUILD_TESTS=OFF \
  75. -Dprotobuf_BUILD_PROTOBUF_BINARIES=ON \
  76. -Dprotobuf_BUILD_LIBPROTOC=ON \
  77. -Dprotobuf_WITH_ZLIB=OFF \
  78. && cmake --build build --parallel \
  79. && DESTDIR="{{ LibrariesPath }}/protobuf-cache" cmake --install build \
  80. && cd .. \
  81. && rm -rf protobuf
  82. FROM builder AS lcms2
  83. RUN git clone -b lcms2.15 --depth=1 {{ GIT }}/mm2/Little-CMS.git \
  84. && cd Little-CMS \
  85. && meson build \
  86. --buildtype=plain \
  87. --default-library=both \
  88. && meson compile -C build \
  89. && DESTDIR="{{ LibrariesPath }}/lcms2-cache" meson install -C build \
  90. && cd .. \
  91. && rm -rf Little-CMS
  92. FROM builder AS brotli
  93. RUN git clone -b v1.1.0 --depth=1 {{ GIT }}/google/brotli.git \
  94. && cd brotli \
  95. && cmake -GNinja -B build . \
  96. -DCMAKE_BUILD_TYPE=None \
  97. -DBUILD_SHARED_LIBS=OFF \
  98. -DBROTLI_DISABLE_TESTS=ON \
  99. && cmake --build build --parallel \
  100. && DESTDIR="{{ LibrariesPath }}/brotli-cache" cmake --install build \
  101. && cd .. \
  102. && rm -rf brotli
  103. FROM builder AS highway
  104. RUN git clone -b 1.0.7 --depth=1 {{ GIT }}/google/highway.git \
  105. && cd highway \
  106. && cmake -GNinja -B build . \
  107. -DCMAKE_BUILD_TYPE=None \
  108. -DBUILD_TESTING=OFF \
  109. -DHWY_ENABLE_CONTRIB=OFF \
  110. -DHWY_ENABLE_EXAMPLES=OFF \
  111. && cmake --build build --parallel \
  112. && DESTDIR="{{ LibrariesPath }}/highway-cache" cmake --install build \
  113. && cd .. \
  114. && rm -rf highway
  115. FROM builder AS opus
  116. RUN git clone -b v1.4 --depth=1 {{ GIT }}/xiph/opus.git \
  117. && cd opus \
  118. && ./autogen.sh \
  119. && ./configure \
  120. && make -j$(nproc) \
  121. && make DESTDIR="{{ LibrariesPath }}/opus-cache" install \
  122. && cd .. \
  123. && rm -rf opus
  124. FROM builder AS dav1d
  125. RUN git clone -b 1.4.1 --depth=1 {{ GIT }}/videolan/dav1d.git \
  126. && cd dav1d \
  127. && meson build \
  128. --buildtype=plain \
  129. --default-library=both \
  130. -Denable_tools=false \
  131. -Denable_tests=false \
  132. && meson compile -C build \
  133. && DESTDIR="{{ LibrariesPath }}/dav1d-cache" meson install -C build \
  134. && cd .. \
  135. && rm -rf dav1d
  136. FROM builder AS openh264
  137. RUN git clone -b v2.4.1 --depth=1 {{ GIT }}/cisco/openh264.git \
  138. && cd openh264 \
  139. && meson build \
  140. --buildtype=plain \
  141. --default-library=both \
  142. && meson compile -C build \
  143. && DESTDIR="{{ LibrariesPath }}/openh264-cache" meson install -C build \
  144. && cd .. \
  145. && rm -rf openh264
  146. FROM builder AS libde265
  147. RUN git clone -b v1.0.15 --depth=1 {{ GIT }}/strukturag/libde265.git \
  148. && cd libde265 \
  149. && cmake -GNinja . \
  150. -DCMAKE_BUILD_TYPE=None \
  151. -DBUILD_SHARED_LIBS=OFF \
  152. -DENABLE_DECODER=OFF \
  153. -DENABLE_SDL=OFF \
  154. && cmake --build . --parallel \
  155. && DESTDIR="{{ LibrariesPath }}/libde265-cache" cmake --install . \
  156. && cd .. \
  157. && rm -rf libde265
  158. FROM builder AS libvpx
  159. RUN git init libvpx \
  160. && cd libvpx \
  161. && git remote add origin {{ GIT }}/webmproject/libvpx.git \
  162. && git fetch --depth=1 origin 12f3a2ac603e8f10742105519e0cd03c3b8f71dd \
  163. && git reset --hard FETCH_HEAD \
  164. && CFLAGS="$CFLAGS -fno-lto" CXXFLAGS="$CXXFLAGS -fno-lto" ./configure \
  165. --disable-examples \
  166. --disable-unit-tests \
  167. --disable-tools \
  168. --disable-docs \
  169. --enable-vp8 \
  170. --enable-vp9 \
  171. --enable-webm-io \
  172. --size-limit=4096x4096 \
  173. && make -j$(nproc) \
  174. && make DESTDIR="{{ LibrariesPath }}/libvpx-cache" install \
  175. && cd .. \
  176. && rm -rf libvpx
  177. FROM builder AS libwebp
  178. RUN git clone -b chrome-m116-5845 --depth=1 {{ GIT }}/webmproject/libwebp.git \
  179. && cd libwebp \
  180. && cmake -GNinja -B build . \
  181. -DCMAKE_BUILD_TYPE=None \
  182. -DWEBP_BUILD_ANIM_UTILS=OFF \
  183. -DWEBP_BUILD_CWEBP=OFF \
  184. -DWEBP_BUILD_DWEBP=OFF \
  185. -DWEBP_BUILD_GIF2WEBP=OFF \
  186. -DWEBP_BUILD_IMG2WEBP=OFF \
  187. -DWEBP_BUILD_VWEBP=OFF \
  188. -DWEBP_BUILD_WEBPMUX=OFF \
  189. -DWEBP_BUILD_WEBPINFO=OFF \
  190. -DWEBP_BUILD_EXTRAS=OFF \
  191. && cmake --build build --parallel \
  192. && DESTDIR="{{ LibrariesPath }}/libwebp-cache" cmake --install build \
  193. && cd .. \
  194. && rm -rf libwebp
  195. FROM builder AS libavif
  196. COPY --link --from=dav1d {{ LibrariesPath }}/dav1d-cache /
  197. RUN git clone -b v1.0.4 --depth=1 {{ GIT }}/AOMediaCodec/libavif.git \
  198. && cd libavif \
  199. && cmake -GNinja -B build . \
  200. -DCMAKE_BUILD_TYPE=None \
  201. -DBUILD_SHARED_LIBS=OFF \
  202. -DAVIF_CODEC_DAV1D=ON \
  203. && cmake --build build --parallel \
  204. && DESTDIR="{{ LibrariesPath }}/libavif-cache" cmake --install build \
  205. && cd .. \
  206. && rm -rf libavif
  207. FROM builder AS libheif
  208. COPY --link --from=libde265 {{ LibrariesPath }}/libde265-cache /
  209. RUN git clone -b v1.18.2 --depth=1 {{ GIT }}/strukturag/libheif.git \
  210. && cd libheif \
  211. && cmake -GNinja -B build . \
  212. -DCMAKE_BUILD_TYPE=None \
  213. -DBUILD_SHARED_LIBS=OFF \
  214. -DBUILD_TESTING=OFF \
  215. -DENABLE_PLUGIN_LOADING=OFF \
  216. -DWITH_X265=OFF \
  217. -DWITH_AOM_DECODER=OFF \
  218. -DWITH_AOM_ENCODER=OFF \
  219. -DWITH_RAV1E=OFF \
  220. -DWITH_RAV1E_PLUGIN=OFF \
  221. -DWITH_SvtEnc=OFF \
  222. -DWITH_SvtEnc_PLUGIN=OFF \
  223. -DWITH_DAV1D=OFF \
  224. -DWITH_EXAMPLES=OFF \
  225. && cmake --build build --parallel \
  226. && DESTDIR="{{ LibrariesPath }}/libheif-cache" cmake --install build \
  227. && cd .. \
  228. && rm -rf libheif
  229. FROM patches AS libjxl
  230. COPY --link --from=lcms2 {{ LibrariesPath }}/lcms2-cache /
  231. COPY --link --from=brotli {{ LibrariesPath }}/brotli-cache /
  232. COPY --link --from=highway {{ LibrariesPath }}/highway-cache /
  233. RUN git clone -b v0.11.1 --depth=1 {{ GIT }}/libjxl/libjxl.git \
  234. && cd libjxl \
  235. && git submodule update --init --recursive --depth=1 third_party/libjpeg-turbo \
  236. && cmake -GNinja -B build . \
  237. -DCMAKE_BUILD_TYPE=None \
  238. -DBUILD_SHARED_LIBS=OFF \
  239. -DBUILD_TESTING=OFF \
  240. -DJPEGXL_ENABLE_DEVTOOLS=OFF \
  241. -DJPEGXL_ENABLE_TOOLS=OFF \
  242. -DJPEGXL_INSTALL_JPEGLI_LIBJPEG=ON \
  243. -DJPEGXL_ENABLE_DOXYGEN=OFF \
  244. -DJPEGXL_ENABLE_MANPAGES=OFF \
  245. -DJPEGXL_ENABLE_BENCHMARK=OFF \
  246. -DJPEGXL_ENABLE_EXAMPLES=OFF \
  247. -DJPEGXL_ENABLE_JNI=OFF \
  248. -DJPEGXL_ENABLE_SJPEG=OFF \
  249. -DJPEGXL_ENABLE_OPENEXR=OFF \
  250. -DJPEGXL_ENABLE_SKCMS=OFF \
  251. && cmake --build build --parallel \
  252. && export DESTDIR="{{ LibrariesPath }}/libjxl-cache" \
  253. && cmake --install build \
  254. && cp build/lib/libjpegli-static.a $DESTDIR/usr/local/lib64/libjpeg.a \
  255. && ar rcs $DESTDIR/usr/local/lib64/libjpeg.a build/lib/CMakeFiles/jpegli-libjpeg-obj.dir/jpegli/libjpeg_wrapper.cc.o \
  256. && cd .. \
  257. && rm -rf libjxl
  258. FROM builder AS rnnoise
  259. RUN git clone -b master --depth=1 {{ GIT }}/desktop-app/rnnoise.git \
  260. && cd rnnoise \
  261. && cmake -GNinja -B build . -DCMAKE_BUILD_TYPE=None \
  262. && cmake --build build --parallel \
  263. && mkdir -p "{{ LibrariesPath }}/rnnoise-cache/usr/local/include" \
  264. && cp "include/rnnoise.h" "{{ LibrariesPath }}/rnnoise-cache/usr/local/include/" \
  265. && mkdir -p "{{ LibrariesPath }}/rnnoise-cache/usr/local/lib" \
  266. && cp "build/librnnoise.a" "{{ LibrariesPath }}/rnnoise-cache/usr/local/lib/" \
  267. && cd .. \
  268. && rm -rf rnnoise
  269. FROM builder AS xcb-proto
  270. RUN git clone -b xcb-proto-1.16.0 --depth=1 {{ GIT_FREEDESKTOP }}/xcbproto.git \
  271. && cd xcbproto \
  272. && ./autogen.sh \
  273. && make -j$(nproc) \
  274. && make DESTDIR="{{ LibrariesPath }}/xcb-proto-cache" install \
  275. && cd .. \
  276. && rm -rf xcbproto
  277. FROM builder AS xcb
  278. COPY --link --from=xcb-proto {{ LibrariesPath }}/xcb-proto-cache /
  279. RUN git clone -b libxcb-1.16 --depth=1 {{ GIT_FREEDESKTOP }}/libxcb.git \
  280. && cd libxcb \
  281. && ./autogen.sh --enable-static \
  282. && make -j$(nproc) \
  283. && make DESTDIR="{{ LibrariesPath }}/xcb-cache" install \
  284. && cd .. \
  285. && rm -rf libxcb
  286. FROM builder AS xcb-wm
  287. RUN git clone -b xcb-util-wm-0.4.2 --depth=1 {{ GIT_FREEDESKTOP }}/libxcb-wm.git \
  288. && cd libxcb-wm \
  289. && {{ GIT_UPDATE_M4 }} \
  290. && ./autogen.sh --enable-static \
  291. && make -j$(nproc) \
  292. && make DESTDIR="{{ LibrariesPath }}/xcb-wm-cache" install \
  293. && cd .. \
  294. && rm -rf libxcb-wm
  295. FROM builder AS xcb-util
  296. RUN git clone -b xcb-util-0.4.1 --depth=1 {{ GIT_FREEDESKTOP }}/libxcb-util.git \
  297. && cd libxcb-util \
  298. && {{ GIT_UPDATE_M4 }} \
  299. && ./autogen.sh --enable-static \
  300. && make -j$(nproc) \
  301. && make DESTDIR="{{ LibrariesPath }}/xcb-util-cache" install \
  302. && cd .. \
  303. && rm -rf libxcb-util
  304. FROM builder AS xcb-image
  305. COPY --link --from=xcb-util {{ LibrariesPath }}/xcb-util-cache /
  306. RUN git clone -b xcb-util-image-0.4.1 --depth=1 {{ GIT_FREEDESKTOP }}/libxcb-image.git \
  307. && cd libxcb-image \
  308. && {{ GIT_UPDATE_M4 }} \
  309. && ./autogen.sh --enable-static \
  310. && make -j$(nproc) \
  311. && make DESTDIR="{{ LibrariesPath }}/xcb-image-cache" install \
  312. && cd .. \
  313. && rm -rf libxcb-image
  314. FROM builder AS xcb-keysyms
  315. RUN git clone -b xcb-util-keysyms-0.4.1 --depth=1 {{ GIT_FREEDESKTOP }}/libxcb-keysyms.git \
  316. && cd libxcb-keysyms \
  317. && {{ GIT_UPDATE_M4 }} \
  318. && ./autogen.sh --enable-static \
  319. && make -j$(nproc) \
  320. && make DESTDIR="{{ LibrariesPath }}/xcb-keysyms-cache" install \
  321. && cd .. \
  322. && rm -rf libxcb-keysyms
  323. FROM builder AS xcb-render-util
  324. RUN git clone -b xcb-util-renderutil-0.3.10 --depth=1 {{ GIT_FREEDESKTOP }}/libxcb-render-util.git \
  325. && cd libxcb-render-util \
  326. && {{ GIT_UPDATE_M4 }} \
  327. && ./autogen.sh --enable-static \
  328. && make -j$(nproc) \
  329. && make DESTDIR="{{ LibrariesPath }}/xcb-render-util-cache" install \
  330. && cd .. \
  331. && rm -rf libxcb-render-util
  332. FROM builder AS xcb-cursor
  333. COPY --link --from=xcb-util {{ LibrariesPath }}/xcb-util-cache /
  334. COPY --link --from=xcb-image {{ LibrariesPath }}/xcb-image-cache /
  335. COPY --link --from=xcb-render-util {{ LibrariesPath }}/xcb-render-util-cache /
  336. RUN git clone -b xcb-util-cursor-0.1.4 --depth=1 {{ GIT_FREEDESKTOP }}/libxcb-cursor.git \
  337. && cd libxcb-cursor \
  338. && {{ GIT_UPDATE_M4 }} \
  339. && ./autogen.sh --enable-static \
  340. && make -j$(nproc) \
  341. && make DESTDIR="{{ LibrariesPath }}/xcb-cursor-cache" install \
  342. && cd .. \
  343. && rm -rf libxcb-cursor
  344. FROM builder AS libXext
  345. RUN git clone -b libXext-1.3.5 --depth=1 {{ GIT_FREEDESKTOP }}/libxext.git \
  346. && cd libxext \
  347. && ./autogen.sh --enable-static \
  348. && make -j$(nproc) \
  349. && make DESTDIR="{{ LibrariesPath }}/libXext-cache" install \
  350. && cd .. \
  351. && rm -rf libxext
  352. FROM builder AS libXtst
  353. RUN git clone -b libXtst-1.2.4 --depth=1 {{ GIT_FREEDESKTOP }}/libxtst.git \
  354. && cd libxtst \
  355. && ./autogen.sh --enable-static \
  356. && make -j$(nproc) \
  357. && make DESTDIR="{{ LibrariesPath }}/libXtst-cache" install \
  358. && cd .. \
  359. && rm -rf libxtst
  360. FROM builder AS libXfixes
  361. RUN git clone -b libXfixes-5.0.3 --depth=1 {{ GIT_FREEDESKTOP }}/libxfixes.git \
  362. && cd libxfixes \
  363. && ./autogen.sh --enable-static \
  364. && make -j$(nproc) \
  365. && make DESTDIR="{{ LibrariesPath }}/libXfixes-cache" install \
  366. && cd .. \
  367. && rm -rf libxfixes
  368. FROM builder AS libXv
  369. COPY --link --from=libXext {{ LibrariesPath }}/libXext-cache /
  370. RUN git clone -b libXv-1.0.12 --depth=1 {{ GIT_FREEDESKTOP }}/libxv.git \
  371. && cd libxv \
  372. && ./autogen.sh --enable-static \
  373. && make -j$(nproc) \
  374. && make DESTDIR="{{ LibrariesPath }}/libXv-cache" install \
  375. && cd .. \
  376. && rm -rf libxv
  377. FROM builder AS libXrandr
  378. RUN git clone -b libXrandr-1.5.3 --depth=1 {{ GIT_FREEDESKTOP }}/libxrandr.git \
  379. && cd libxrandr \
  380. && ./autogen.sh --enable-static \
  381. && make -j$(nproc) \
  382. && make DESTDIR="{{ LibrariesPath }}/libXrandr-cache" install \
  383. && cd .. \
  384. && rm -rf libxrandr
  385. FROM builder AS libXrender
  386. RUN git clone -b libXrender-0.9.11 --depth=1 {{ GIT_FREEDESKTOP }}/libxrender.git \
  387. && cd libxrender \
  388. && ./autogen.sh --enable-static \
  389. && make -j$(nproc) \
  390. && make DESTDIR="{{ LibrariesPath }}/libXrender-cache" install \
  391. && cd .. \
  392. && rm -rf libxrender
  393. FROM builder AS libXdamage
  394. RUN git clone -b libXdamage-1.1.6 --depth=1 {{ GIT_FREEDESKTOP }}/libxdamage.git \
  395. && cd libxdamage \
  396. && ./autogen.sh --enable-static \
  397. && make -j$(nproc) \
  398. && make DESTDIR="{{ LibrariesPath }}/libXdamage-cache" install \
  399. && cd .. \
  400. && rm -rf libxdamage
  401. FROM builder AS libXcomposite
  402. RUN git clone -b libXcomposite-0.4.6 --depth=1 {{ GIT_FREEDESKTOP }}/libxcomposite.git \
  403. && cd libxcomposite \
  404. && ./autogen.sh --enable-static \
  405. && make -j$(nproc) \
  406. && make DESTDIR="{{ LibrariesPath }}/libXcomposite-cache" install \
  407. && cd .. \
  408. && rm -rf libxcomposite
  409. FROM builder AS wayland
  410. RUN git clone -b 1.19.0 --depth=1 {{ GIT_FREEDESKTOP }}/wayland.git \
  411. && cd wayland \
  412. && sed -i "/subdir('tests')/d" meson.build \
  413. && meson build \
  414. --buildtype=plain \
  415. --default-library=both \
  416. -Ddocumentation=false \
  417. -Ddtd_validation=false \
  418. -Dicon_directory=/usr/share/icons \
  419. && meson compile -C build src/wayland-scanner \
  420. && mkdir -p "{{ LibrariesPath }}/wayland-cache/usr/local/bin" "{{ LibrariesPath }}/wayland-cache/usr/local/lib64/pkgconfig" \
  421. && cp build/src/wayland-scanner "{{ LibrariesPath }}/wayland-cache/usr/local/bin" \
  422. && sed 's@bindir=${prefix}/bin@bindir=${prefix}/local/bin@;s/1.21.0/1.19.0/' /usr/lib64/pkgconfig/wayland-scanner.pc > "{{ LibrariesPath }}/wayland-cache/usr/local/lib64/pkgconfig/wayland-scanner.pc" \
  423. && cd .. \
  424. && rm -rf wayland
  425. FROM builder AS nv-codec-headers
  426. RUN git clone -b n12.1.14.0 --depth=1 {{ GIT }}/FFmpeg/nv-codec-headers.git \
  427. && DESTDIR="{{ LibrariesPath }}/nv-codec-headers-cache" make -C nv-codec-headers install \
  428. && rm -rf nv-codec-headers
  429. FROM builder AS ffmpeg
  430. COPY --link --from=opus {{ LibrariesPath }}/opus-cache /
  431. COPY --link --from=openh264 {{ LibrariesPath }}/openh264-cache /
  432. COPY --link --from=dav1d {{ LibrariesPath }}/dav1d-cache /
  433. COPY --link --from=libvpx {{ LibrariesPath }}/libvpx-cache /
  434. COPY --link --from=libXext {{ LibrariesPath }}/libXext-cache /
  435. COPY --link --from=libXv {{ LibrariesPath }}/libXv-cache /
  436. COPY --link --from=nv-codec-headers {{ LibrariesPath }}/nv-codec-headers-cache /
  437. RUN git clone -b n6.1.1 --depth=1 {{ GIT }}/FFmpeg/FFmpeg.git \
  438. && cd FFmpeg \
  439. && ./configure \
  440. --extra-cflags="-DCONFIG_SAFE_BITSTREAM_READER=1" \
  441. --extra-cxxflags="-DCONFIG_SAFE_BITSTREAM_READER=1" \
  442. --disable-debug \
  443. --disable-optimizations \
  444. --disable-inline-asm \
  445. --disable-programs \
  446. --disable-doc \
  447. --disable-network \
  448. --disable-autodetect \
  449. --disable-everything \
  450. --enable-libdav1d \
  451. --enable-libopenh264 \
  452. --enable-libopus \
  453. --enable-libvpx \
  454. --enable-vaapi \
  455. --enable-vdpau \
  456. --enable-xlib \
  457. --enable-libdrm \
  458. --enable-ffnvcodec \
  459. --enable-nvdec \
  460. --enable-cuvid \
  461. --enable-protocol=file \
  462. --enable-hwaccel=av1_vaapi \
  463. --enable-hwaccel=av1_nvdec \
  464. --enable-hwaccel=h264_vaapi \
  465. --enable-hwaccel=h264_vdpau \
  466. --enable-hwaccel=h264_nvdec \
  467. --enable-hwaccel=hevc_vaapi \
  468. --enable-hwaccel=hevc_vdpau \
  469. --enable-hwaccel=hevc_nvdec \
  470. --enable-hwaccel=mpeg2_vaapi \
  471. --enable-hwaccel=mpeg2_vdpau \
  472. --enable-hwaccel=mpeg2_nvdec \
  473. --enable-hwaccel=mpeg4_vaapi \
  474. --enable-hwaccel=mpeg4_vdpau \
  475. --enable-hwaccel=mpeg4_nvdec \
  476. --enable-hwaccel=vp8_vaapi \
  477. --enable-hwaccel=vp8_nvdec \
  478. --enable-decoder=aac \
  479. --enable-decoder=aac_fixed \
  480. --enable-decoder=aac_latm \
  481. --enable-decoder=aasc \
  482. --enable-decoder=ac3 \
  483. --enable-decoder=alac \
  484. --enable-decoder=av1 \
  485. --enable-decoder=av1_cuvid \
  486. --enable-decoder=eac3 \
  487. --enable-decoder=flac \
  488. --enable-decoder=gif \
  489. --enable-decoder=h264 \
  490. --enable-decoder=hevc \
  491. --enable-decoder=libdav1d \
  492. --enable-decoder=libvpx_vp8 \
  493. --enable-decoder=libvpx_vp9 \
  494. --enable-decoder=mp1 \
  495. --enable-decoder=mp1float \
  496. --enable-decoder=mp2 \
  497. --enable-decoder=mp2float \
  498. --enable-decoder=mp3 \
  499. --enable-decoder=mp3adu \
  500. --enable-decoder=mp3adufloat \
  501. --enable-decoder=mp3float \
  502. --enable-decoder=mp3on4 \
  503. --enable-decoder=mp3on4float \
  504. --enable-decoder=mpeg4 \
  505. --enable-decoder=msmpeg4v2 \
  506. --enable-decoder=msmpeg4v3 \
  507. --enable-decoder=opus \
  508. --enable-decoder=pcm_alaw \
  509. --enable-decoder=pcm_f32be \
  510. --enable-decoder=pcm_f32le \
  511. --enable-decoder=pcm_f64be \
  512. --enable-decoder=pcm_f64le \
  513. --enable-decoder=pcm_lxf \
  514. --enable-decoder=pcm_mulaw \
  515. --enable-decoder=pcm_s16be \
  516. --enable-decoder=pcm_s16be_planar \
  517. --enable-decoder=pcm_s16le \
  518. --enable-decoder=pcm_s16le_planar \
  519. --enable-decoder=pcm_s24be \
  520. --enable-decoder=pcm_s24daud \
  521. --enable-decoder=pcm_s24le \
  522. --enable-decoder=pcm_s24le_planar \
  523. --enable-decoder=pcm_s32be \
  524. --enable-decoder=pcm_s32le \
  525. --enable-decoder=pcm_s32le_planar \
  526. --enable-decoder=pcm_s64be \
  527. --enable-decoder=pcm_s64le \
  528. --enable-decoder=pcm_s8 \
  529. --enable-decoder=pcm_s8_planar \
  530. --enable-decoder=pcm_u16be \
  531. --enable-decoder=pcm_u16le \
  532. --enable-decoder=pcm_u24be \
  533. --enable-decoder=pcm_u24le \
  534. --enable-decoder=pcm_u32be \
  535. --enable-decoder=pcm_u32le \
  536. --enable-decoder=pcm_u8 \
  537. --enable-decoder=pcm_zork \
  538. --enable-decoder=vorbis \
  539. --enable-decoder=vp8 \
  540. --enable-decoder=wavpack \
  541. --enable-decoder=wmalossless \
  542. --enable-decoder=wmapro \
  543. --enable-decoder=wmav1 \
  544. --enable-decoder=wmav2 \
  545. --enable-decoder=wmavoice \
  546. --enable-encoder=aac \
  547. --enable-encoder=libopenh264 \
  548. --enable-encoder=libopus \
  549. --enable-encoder=pcm_s16le \
  550. --enable-filter=atempo \
  551. --enable-parser=aac \
  552. --enable-parser=aac_latm \
  553. --enable-parser=flac \
  554. --enable-parser=gif \
  555. --enable-parser=h264 \
  556. --enable-parser=hevc \
  557. --enable-parser=mpeg4video \
  558. --enable-parser=mpegaudio \
  559. --enable-parser=opus \
  560. --enable-parser=vorbis \
  561. --enable-demuxer=aac \
  562. --enable-demuxer=flac \
  563. --enable-demuxer=gif \
  564. --enable-demuxer=h264 \
  565. --enable-demuxer=hevc \
  566. --enable-demuxer=matroska \
  567. --enable-demuxer=m4v \
  568. --enable-demuxer=mov \
  569. --enable-demuxer=mp3 \
  570. --enable-demuxer=ogg \
  571. --enable-demuxer=wav \
  572. --enable-muxer=mp4 \
  573. --enable-muxer=ogg \
  574. --enable-muxer=opus \
  575. --enable-muxer=wav \
  576. && make -j$(nproc) \
  577. && make DESTDIR="{{ LibrariesPath }}/ffmpeg-cache" install \
  578. && cd .. \
  579. && rm -rf ffmpeg
  580. FROM builder AS pipewire
  581. RUN git clone -b 0.3.62 --depth=1 {{ GIT }}/PipeWire/pipewire.git \
  582. && cd pipewire \
  583. && meson build \
  584. --buildtype=plain \
  585. -Dtests=disabled \
  586. -Dexamples=disabled \
  587. -Dsession-managers=media-session \
  588. -Dspa-plugins=disabled \
  589. && meson compile -C build \
  590. && DESTDIR="{{ LibrariesPath }}/pipewire-cache" meson install -C build \
  591. && cd .. \
  592. && rm -rf pipewire
  593. FROM builder AS openal
  594. COPY --link --from=pipewire {{ LibrariesPath }}/pipewire-cache /
  595. RUN git clone -b 1.24.1 --depth=1 {{ GIT }}/kcat/openal-soft.git \
  596. && cd openal-soft \
  597. && cmake -GNinja -B build . \
  598. -DCMAKE_BUILD_TYPE=None \
  599. -DLIBTYPE:STRING=STATIC \
  600. -DALSOFT_EXAMPLES=OFF \
  601. -DALSOFT_UTILS=OFF \
  602. -DALSOFT_INSTALL_CONFIG=OFF \
  603. && cmake --build build --parallel \
  604. && DESTDIR="{{ LibrariesPath }}/openal-cache" cmake --install build \
  605. && cd .. \
  606. && rm -rf openal-soft
  607. FROM builder AS openssl
  608. RUN git clone -b openssl-3.2.1 --depth=1 {{ GIT }}/openssl/openssl.git \
  609. && cd openssl \
  610. && ./config \
  611. --openssldir=/etc/ssl \
  612. no-tests \
  613. no-dso \
  614. && make -j$(nproc) \
  615. && make DESTDIR="{{ LibrariesPath }}/openssl-cache" install_sw \
  616. && cd .. \
  617. && rm -rf openssl
  618. FROM builder AS xkbcommon
  619. COPY --link --from=xcb {{ LibrariesPath }}/xcb-cache /
  620. RUN git clone -b xkbcommon-1.6.0 --depth=1 {{ GIT }}/xkbcommon/libxkbcommon.git \
  621. && cd libxkbcommon \
  622. && meson build \
  623. --buildtype=plain \
  624. --default-library=both \
  625. -Denable-docs=false \
  626. -Denable-wayland=false \
  627. -Denable-xkbregistry=false \
  628. -Dxkb-config-root=/usr/share/X11/xkb \
  629. -Dxkb-config-extra-path=/etc/xkb \
  630. -Dx-locale-root=/usr/share/X11/locale \
  631. && meson compile -C build \
  632. && DESTDIR="{{ LibrariesPath }}/xkbcommon-cache" meson install -C build \
  633. && cd .. \
  634. && rm -rf libxkbcommon
  635. FROM builder AS glib
  636. RUN git clone -b 2.78.1 --depth=1 {{ GIT }}/GNOME/glib.git \
  637. && cd glib \
  638. && meson build \
  639. --buildtype=plain \
  640. --default-library=both \
  641. -Dtests=false \
  642. -Dmm-common:use-network=true \
  643. && meson compile -C build \
  644. && DESTDIR="{{ LibrariesPath }}/glib-cache" meson install -C build \
  645. && cd .. \
  646. && rm -rf glib
  647. FROM builder AS gobject-introspection
  648. COPY --link --from=glib {{ LibrariesPath }}/glib-cache /
  649. RUN git clone -b 1.78.1 --depth=1 {{ GIT }}/GNOME/gobject-introspection.git \
  650. && cd gobject-introspection \
  651. && meson build --buildtype=plain \
  652. && meson compile -C build \
  653. && DESTDIR="{{ LibrariesPath }}/gobject-introspection-cache" meson install -C build \
  654. && cd .. \
  655. && rm -rf gobject-introspection
  656. FROM patches AS qt
  657. COPY --link --from=zlib {{ LibrariesPath }}/zlib-cache /
  658. COPY --link --from=lcms2 {{ LibrariesPath }}/lcms2-cache /
  659. COPY --link --from=libjxl {{ LibrariesPath }}/libjxl-cache /
  660. COPY --link --from=xcb {{ LibrariesPath }}/xcb-cache /
  661. COPY --link --from=xcb-wm {{ LibrariesPath }}/xcb-wm-cache /
  662. COPY --link --from=xcb-util {{ LibrariesPath }}/xcb-util-cache /
  663. COPY --link --from=xcb-image {{ LibrariesPath }}/xcb-image-cache /
  664. COPY --link --from=xcb-keysyms {{ LibrariesPath }}/xcb-keysyms-cache /
  665. COPY --link --from=xcb-render-util {{ LibrariesPath }}/xcb-render-util-cache /
  666. COPY --link --from=xcb-cursor {{ LibrariesPath }}/xcb-cursor-cache /
  667. COPY --link --from=wayland {{ LibrariesPath }}/wayland-cache /
  668. COPY --link --from=openssl {{ LibrariesPath }}/openssl-cache /
  669. COPY --link --from=xkbcommon {{ LibrariesPath }}/xkbcommon-cache /
  670. COPY --link --from=libwebp {{ LibrariesPath }}/libwebp-cache /
  671. RUN git clone -b {{ QT_TAG }} --depth=1 {{ GIT }}/qt/qt5.git \
  672. && cd qt5 \
  673. && git submodule update --init --recursive --depth=1 qtbase qtdeclarative qtwayland qtimageformats qtsvg qtshadertools \
  674. && cd qtbase \
  675. && find ../../patches/qtbase_{{ QT }} -type f -print0 | sort -z | xargs -r0 git apply \
  676. && cd ../qtwayland \
  677. && find ../../patches/qtwayland_{{ QT }} -type f -print0 | sort -z | xargs -r0 git apply \
  678. && cd .. \
  679. && cmake -GNinja -B build . \
  680. -DCMAKE_BUILD_TYPE=None \
  681. -DBUILD_SHARED_LIBS=OFF \
  682. -DQT_GENERATE_SBOM=OFF \
  683. -DINPUT_libpng=qt \
  684. -DINPUT_harfbuzz=qt \
  685. -DINPUT_pcre=qt \
  686. -DFEATURE_icu=OFF \
  687. -DFEATURE_xcb_sm=OFF \
  688. -DINPUT_dbus=runtime \
  689. -DINPUT_openssl=linked \
  690. && cmake --build build --parallel \
  691. && DESTDIR="{{ LibrariesPath }}/qt-cache" cmake --install build \
  692. && cd .. \
  693. && rm -rf qt5
  694. FROM builder AS breakpad
  695. RUN git clone -b v2023.06.01 --depth=1 https://chromium.googlesource.com/breakpad/breakpad.git \
  696. && cd breakpad \
  697. && git clone -b v2022.10.12 --depth=1 https://chromium.googlesource.com/linux-syscall-support.git src/third_party/lss \
  698. && env -u CFLAGS -u CXXFLAGS ./configure \
  699. && make -j$(nproc) \
  700. && make DESTDIR="{{ LibrariesPath }}/breakpad-cache" install \
  701. && cd .. \
  702. && rm -rf breakpad
  703. FROM builder AS webrtc
  704. COPY --link --from=opus {{ LibrariesPath }}/opus-cache /
  705. COPY --link --from=openh264 {{ LibrariesPath }}/openh264-cache /
  706. COPY --link --from=libvpx {{ LibrariesPath }}/libvpx-cache /
  707. COPY --link --from=libjxl {{ LibrariesPath }}/libjxl-cache /
  708. COPY --link --from=ffmpeg {{ LibrariesPath }}/ffmpeg-cache /
  709. COPY --link --from=openssl {{ LibrariesPath }}/openssl-cache /
  710. COPY --link --from=libXtst {{ LibrariesPath }}/libXtst-cache /
  711. COPY --link --from=pipewire {{ LibrariesPath }}/pipewire-cache /
  712. # Shallow clone on a specific commit.
  713. RUN git init tg_owt \
  714. && cd tg_owt \
  715. && git remote add origin {{ GIT }}/desktop-app/tg_owt.git \
  716. && git fetch --depth=1 origin 8198c4d8b91e22d68eb5c7327fd408e3b6abcc79 \
  717. && git reset --hard FETCH_HEAD \
  718. && git submodule update --init --recursive --depth=1 \
  719. && rm -rf .git \
  720. && env -u CFLAGS -u CXXFLAGS cmake -G"Ninja Multi-Config" -B out . \
  721. -DCMAKE_C_FLAGS_RELEASE="$CFLAGS" \
  722. -DCMAKE_C_FLAGS_DEBUG="{{ CFLAGS_DEBUG }}" \
  723. -DCMAKE_CXX_FLAGS_RELEASE="$CXXFLAGS" \
  724. -DCMAKE_CXX_FLAGS_DEBUG="{{ CFLAGS_DEBUG }}" \
  725. -DTG_OWT_SPECIAL_TARGET=linux \
  726. -DTG_OWT_LIBJPEG_INCLUDE_PATH=/usr/local/include \
  727. -DTG_OWT_OPENSSL_INCLUDE_PATH=/usr/local/include \
  728. -DTG_OWT_OPUS_INCLUDE_PATH=/usr/local/include/opus \
  729. -DTG_OWT_LIBVPX_INCLUDE_PATH=/usr/local/include \
  730. -DTG_OWT_OPENH264_INCLUDE_PATH=/usr/local/include \
  731. -DTG_OWT_FFMPEG_INCLUDE_PATH=/usr/local/include
  732. WORKDIR tg_owt
  733. FROM webrtc AS webrtc_release
  734. RUN cmake --build out --config Release --parallel \
  735. && find out -mindepth 1 -maxdepth 1 ! -name Release -exec rm -rf {} \;
  736. {%- if DEBUG %}
  737. FROM webrtc AS webrtc_debug
  738. RUN cmake --build out --config Debug --parallel \
  739. && find out -mindepth 1 -maxdepth 1 ! -name Debug -exec rm -rf {} \;
  740. {%- endif %}
  741. FROM builder AS ada
  742. RUN git clone -b v2.9.0 --depth=1 {{ GIT }}/ada-url/ada.git \
  743. && cd ada \
  744. && cmake -GNinja -B build . \
  745. -D CMAKE_BUILD_TYPE=None \
  746. -D ADA_TESTING=OFF \
  747. -D ADA_TOOLS=OFF \
  748. && cmake --build build --parallel \
  749. && DESTDIR="{{ LibrariesPath }}/ada-cache" cmake --install build \
  750. && cd .. \
  751. && rm -rf ada
  752. FROM builder
  753. COPY --link --from=zlib {{ LibrariesPath }}/zlib-cache /
  754. COPY --link --from=xz {{ LibrariesPath }}/xz-cache /
  755. COPY --link --from=protobuf {{ LibrariesPath }}/protobuf-cache /
  756. COPY --link --from=lcms2 {{ LibrariesPath }}/lcms2-cache /
  757. COPY --link --from=brotli {{ LibrariesPath }}/brotli-cache /
  758. COPY --link --from=highway {{ LibrariesPath }}/highway-cache /
  759. COPY --link --from=opus {{ LibrariesPath }}/opus-cache /
  760. COPY --link --from=dav1d {{ LibrariesPath }}/dav1d-cache /
  761. COPY --link --from=openh264 {{ LibrariesPath }}/openh264-cache /
  762. COPY --link --from=libde265 {{ LibrariesPath }}/libde265-cache /
  763. COPY --link --from=libvpx {{ LibrariesPath }}/libvpx-cache /
  764. COPY --link --from=libavif {{ LibrariesPath }}/libavif-cache /
  765. COPY --link --from=libheif {{ LibrariesPath }}/libheif-cache /
  766. COPY --link --from=libjxl {{ LibrariesPath }}/libjxl-cache /
  767. COPY --link --from=rnnoise {{ LibrariesPath }}/rnnoise-cache /
  768. COPY --link --from=xcb {{ LibrariesPath }}/xcb-cache /
  769. COPY --link --from=xcb-wm {{ LibrariesPath }}/xcb-wm-cache /
  770. COPY --link --from=xcb-util {{ LibrariesPath }}/xcb-util-cache /
  771. COPY --link --from=xcb-image {{ LibrariesPath }}/xcb-image-cache /
  772. COPY --link --from=xcb-keysyms {{ LibrariesPath }}/xcb-keysyms-cache /
  773. COPY --link --from=xcb-render-util {{ LibrariesPath }}/xcb-render-util-cache /
  774. COPY --link --from=xcb-cursor {{ LibrariesPath }}/xcb-cursor-cache /
  775. COPY --link --from=libXext {{ LibrariesPath }}/libXext-cache /
  776. COPY --link --from=libXfixes {{ LibrariesPath }}/libXfixes-cache /
  777. COPY --link --from=libXv {{ LibrariesPath }}/libXv-cache /
  778. COPY --link --from=libXtst {{ LibrariesPath }}/libXtst-cache /
  779. COPY --link --from=libXrandr {{ LibrariesPath }}/libXrandr-cache /
  780. COPY --link --from=libXrender {{ LibrariesPath }}/libXrender-cache /
  781. COPY --link --from=libXdamage {{ LibrariesPath }}/libXdamage-cache /
  782. COPY --link --from=libXcomposite {{ LibrariesPath }}/libXcomposite-cache /
  783. COPY --link --from=wayland {{ LibrariesPath }}/wayland-cache /
  784. COPY --link --from=ffmpeg {{ LibrariesPath }}/ffmpeg-cache /
  785. COPY --link --from=openal {{ LibrariesPath }}/openal-cache /
  786. COPY --link --from=openssl {{ LibrariesPath }}/openssl-cache /
  787. COPY --link --from=xkbcommon {{ LibrariesPath }}/xkbcommon-cache /
  788. COPY --link --from=glib {{ LibrariesPath }}/glib-cache /
  789. COPY --link --from=gobject-introspection {{ LibrariesPath }}/gobject-introspection-cache /
  790. COPY --link --from=qt {{ LibrariesPath }}/qt-cache /
  791. COPY --link --from=breakpad {{ LibrariesPath }}/breakpad-cache /
  792. COPY --link --from=webrtc {{ LibrariesPath }}/tg_owt tg_owt
  793. COPY --link --from=webrtc_release {{ LibrariesPath }}/tg_owt/out/Release tg_owt/out/Release
  794. COPY --link --from=libwebp {{ LibrariesPath }}/libwebp-cache /
  795. COPY --link --from=ada {{ LibrariesPath }}/ada-cache /
  796. {%- if DEBUG %}
  797. COPY --link --from=webrtc_debug {{ LibrariesPath }}/tg_owt/out/Debug tg_owt/out/Debug
  798. {%- endif %}
  799. WORKDIR ../tdesktop
  800. ENV QT {{ QT }}
  801. ENV BOOST_INCLUDEDIR /usr/include/boost1.78
  802. ENV BOOST_LIBRARYDIR /usr/lib64/boost1.78
  803. USER user
  804. VOLUME [ "/usr/src/tdesktop" ]
  805. CMD [ "/usr/src/tdesktop/Telegram/build/docker/centos_env/build.sh" ]