Dockerfile 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. # file Copyright.txt or https://cmake.org/licensing for details.
  3. # Produce an image with custom-built dependencies for portable CMake binaries.
  4. # Build using the directory containing this file as its own build context.
  5. ARG FROM_IMAGE_NAME=kitware/cmake:build-linux-x86_64-base-2019-08-09
  6. ARG FROM_IMAGE_DIGEST=@sha256:d2c13617f01181a3143a069e4496d6b78eafffa19d181c42be196d5dfd588151
  7. ARG FROM_IMAGE=$FROM_IMAGE_NAME$FROM_IMAGE_DIGEST
  8. FROM $FROM_IMAGE
  9. # Sphinx
  10. RUN : \
  11. && source /opt/rh/rh-python36/enable \
  12. && pip install sphinx==2.1.2 \
  13. && :
  14. # Qt
  15. # Version 5.12.0 was the last to bundle xkbcommon.
  16. COPY qt-install.patch /opt/qt/src/
  17. RUN : \
  18. && mkdir -p /opt/qt/src/qt-build \
  19. && cd /opt/qt/src \
  20. && curl -OL https://download.qt.io/archive/qt/5.12/5.12.0/single/qt-everywhere-src-5.12.0.tar.xz \
  21. && sha512sum qt-everywhere-src-5.12.0.tar.xz | grep -q 0dd03d2645fb6dac5b58c8caf92b4a0a6900131f1ccfb02443a0df4702b5da0458f4c45e758d1b929ec709b0f4b36900df2fd60a058af9cc8c1a0748b6d57aae \
  22. && tar xJf qt-everywhere-src-5.12.0.tar.xz \
  23. && cd qt-build \
  24. && source /opt/rh/devtoolset-6/enable \
  25. && ../qt-everywhere-src-5.12.0/configure \
  26. -prefix /opt/qt \
  27. -static \
  28. -release \
  29. -c++std c++11 \
  30. -opensource -confirm-license \
  31. -gui \
  32. -widgets \
  33. -xcb \
  34. -fontconfig \
  35. -sql-sqlite \
  36. -qt-doubleconversion \
  37. -qt-libjpeg \
  38. -qt-libpng \
  39. -qt-pcre \
  40. -qt-sqlite \
  41. -qt-xcb \
  42. -qt-xkbcommon \
  43. -qt-zlib \
  44. -system-freetype \
  45. -no-accessibility \
  46. -no-compile-examples \
  47. -no-cups \
  48. -no-dbus \
  49. -no-directfb \
  50. -no-egl \
  51. -no-eglfs \
  52. -no-evdev \
  53. -no-gbm \
  54. -no-gif \
  55. -no-glib \
  56. -no-gtk \
  57. -no-harfbuzz \
  58. -no-iconv \
  59. -no-icu \
  60. -no-journald \
  61. -no-kms \
  62. -no-libinput \
  63. -no-libproxy \
  64. -no-linuxfb \
  65. -no-ltcg \
  66. -no-mirclient \
  67. -no-mtdev \
  68. -no-opengl \
  69. -no-openssl \
  70. -no-pch \
  71. -no-sql-mysql \
  72. -no-sql-psql \
  73. -no-sql-sqlite2 \
  74. -no-syslog \
  75. -no-system-proxies \
  76. -no-tslib \
  77. -no-use-gold-linker \
  78. -skip declarative \
  79. -skip multimedia \
  80. -skip qtcanvas3d \
  81. -skip qtconnectivity \
  82. -skip qtdeclarative \
  83. -skip qtlocation \
  84. -skip qtmultimedia \
  85. -skip qtsensors \
  86. -skip qtserialport \
  87. -skip qtsvg \
  88. -skip qtwayland \
  89. -skip qtwebchannel \
  90. -skip qtwebengine \
  91. -skip qtwebsockets \
  92. -skip qtwinextras \
  93. -skip qtxmlpatterns \
  94. -nomake examples \
  95. -nomake tests \
  96. && make install -j $(nproc) \
  97. && cd /opt/qt \
  98. && patch -p1 -i src/qt-install.patch \
  99. && cd /opt \
  100. && rm -rf /opt/qt/src \
  101. && :
  102. # Curses
  103. RUN : \
  104. && mkdir -p /opt/ncurses/src/ncurses-build \
  105. && cd /opt/ncurses/src \
  106. && curl -O https://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.1.tar.gz \
  107. && sha512sum ncurses-6.1.tar.gz | grep -q e308af43f8b7e01e98a55f4f6c4ee4d1c39ce09d95399fa555b3f0cdf5fd0db0f4c4d820b4af78a63f6cf6d8627587114a40af48cfc066134b600520808a77ee \
  108. && tar xzf ncurses-6.1.tar.gz \
  109. && cd ncurses-build \
  110. && source /opt/rh/devtoolset-6/enable \
  111. && ../ncurses-6.1/configure \
  112. --prefix=/opt/ncurses \
  113. --with-terminfo-dirs=/etc/terminfo:/lib/terminfo:/usr/share/terminfo \
  114. --with-default-terminfo-dir=/usr/share/terminfo \
  115. --without-shared \
  116. && make -j $(nproc) \
  117. && make install.libs install.includes \
  118. && cd /opt \
  119. && rm -rf /opt/ncurses/src \
  120. && :
  121. # OpenSSL
  122. COPY openssl-source.patch /opt/openssl/src/
  123. RUN : \
  124. && mkdir -p /opt/openssl/src \
  125. && cd /opt/openssl/src \
  126. && curl -O https://www.openssl.org/source/openssl-1.1.1f.tar.gz \
  127. && sha512sum openssl-1.1.1f.tar.gz | grep -q b00bd9b5ad5298fbceeec6bb19c1ab0c106ca5cfb31178497c58bf7e0e0cf30fcc19c20f84e23af31cc126bf2447d3e4f8461db97bafa7bd78f69561932f000c \
  128. && tar xzf openssl-1.1.1f.tar.gz \
  129. && cd openssl-1.1.1f \
  130. && patch -p1 -i ../openssl-source.patch \
  131. && source /opt/rh/devtoolset-6/enable \
  132. && ./Configure --prefix=/opt/openssl linux-elf no-asm no-shared -D_POSIX_C_SOURCE=199506L -D_POSIX_SOURCE=1 -D_SVID_SOURCE=1 -D_BSD_SOURCE=1 \
  133. && make install_dev -j $(nproc) \
  134. && cd /opt \
  135. && rm -rf /opt/openssl/src \
  136. && :