Warning, /sdk/codevis/packaging/appimage/Dockerfile is written in an unsupported language. File is not indexed.
0001 FROM ubuntu:22.04 AS base 0002 0003 # it is an arg so it doesn't persist 0004 ARG DEBIAN_FRONTEND=noninteractive 0005 0006 # Before installing the "real" dependencies we need new apt keys 0007 # Note: wget is also used later in build-package.sh 0008 RUN apt-get update && apt-get -qq install wget gnupg 0009 RUN wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - 0010 0011 # standardise build so everything uses llvm-14 0012 RUN echo "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-14 main" >> /etc/apt/sources.list.d/llvm14.list 0013 0014 RUN apt-get update && apt-get -qq install \ 0015 bison \ 0016 build-essential \ 0017 catch2 \ 0018 clang-14 \ 0019 clang-format \ 0020 clang-tidy-14 \ 0021 clang-tools-14 \ 0022 cmake \ 0023 cppcheck \ 0024 flex \ 0025 git \ 0026 lcov \ 0027 libclang-14-dev \ 0028 libqt5core5a \ 0029 libsqlite3-dev \ 0030 llvm-14-dev \ 0031 moreutils \ 0032 python3-dev \ 0033 qtbase5-dev \ 0034 qtwebengine5-dev \ 0035 libqt5svg5-dev \ 0036 shellcheck \ 0037 sqlite3 0038 0039 FROM base as dependencies 0040 0041 FROM dependencies as build-pre 0042 0043 ARG INSTALL_PREFIX="/usr/local/diagram-server" 0044 COPY . /root/diagram-server 0045 WORKDIR /root/diagram-server 0046 RUN git submodule init 0047 RUN git submodule update --recursive 0048 WORKDIR /root/diagram-server/build 0049 RUN cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_INSTALL_PREFIX="${INSTALL_PREFIX}" .. 0050 0051 FROM build-pre as pre-analysis 0052 0053 WORKDIR /root/diagram-server 0054 RUN shellcheck scripts/**/*.sh lvtclp/run_tests.sh 0055 RUN ./scripts/clang-format.sh --diff 0056 0057 FROM build-pre as build-qt 0058 0059 WORKDIR /root/diagram-server/build 0060 RUN make -j`nproc` && make install 0061 0062 FROM build-qt as post-analysis 0063 0064 RUN apt-get update && apt-get -qq install \ 0065 clazy 0066 0067 WORKDIR /root/diagram-server 0068 0069 ENV REPORT_DIR=cppcheck-report 0070 ENV ARCHIVE=cppcheck-report.tar.gz 0071 RUN ./scripts/ci/cppcheck.sh 0072 RUN ./scripts/clang-tidy.sh lvt* desktopapp 0073 RUN ./scripts/clazy.sh lvt* desktopapp 0074 0075 FROM build-qt as tests 0076 0077 RUN apt-get update && apt-get -qq install \ 0078 python3-jinja2 0079 0080 WORKDIR /root/diagram-server/build 0081 0082 # Move the database schema files to XDG_DATA_DIRS 0083 RUN mkdir -p /root/.local/share/codevis/database-spec/ \ 0084 && cp /root/diagram-server/database-spec/codebase_db.sql /root/.local/share/codevis/database-spec/ \ 0085 && cp /root/diagram-server/database-spec/cad_db.sql /root/.local/share/codevis/database-spec/ 0086 0087 ENV LAKOSDIAGRAM_PYSCRIPTS_PATH="/root/diagram-server/python/codegeneration/" 0088 ENV TEST_PRJ_PATH="/root/diagram-server/lvtclp/systemtests/" 0089 ENV QT_QPA_PLATFORM="offscreen" 0090 RUN ctest -VV 0091 0092 # Appimage does not include glibc in the bundled app. The app will use the host 0093 # system's glibc. glibc is generally backwards but not forwards compatible so we 0094 # should link against the oldest glibc we can. 0095 FROM debian:buster as appimage 0096 0097 # it is an arg so it doesn't persist 0098 ARG DEBIAN_FRONTEND=noninteractive 0099 0100 # Before installing the "real" dependencies we need new apt keys 0101 # Note: wget is also used later in build-package.sh 0102 RUN apt-get update && apt-get -qq install wget gnupg 0103 RUN wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - 0104 0105 # lvtclp depends upon modern clang libraries 0106 RUN echo "deb http://apt.llvm.org/buster/ llvm-toolchain-buster-14 main" >> /etc/apt/sources.list.d/llvm14.list 0107 0108 RUN apt-get update && apt-get -qq install \ 0109 bison \ 0110 # Note: Catch2 is missing because there is no such package available at this point. 0111 # compilation must be configured with no tests. 0112 clang-14 \ 0113 clang-tools-14 \ 0114 clang-format \ 0115 clang-tidy-14 \ 0116 cmake \ 0117 cppcheck \ 0118 flex \ 0119 git \ 0120 libclang-14-dev \ 0121 libqt5core5a \ 0122 libsqlite3-dev \ 0123 llvm-14-dev \ 0124 python-jinja2 \ 0125 qt5-default \ 0126 qt5-qmake \ 0127 qtbase5-dev \ 0128 qtwebengine5-dev \ 0129 libqt5svg5-dev \ 0130 shellcheck \ 0131 sqlite3 0132 0133 # we installed new clang for the clang c++ parser libraries, as we have it, we 0134 # may as well build with a modern compiler 0135 ENV CXX=/usr/bin/clang++-14 0136 ENV CC=/usr/bin/clang-14 0137 0138 COPY . /root/diagram-server 0139 0140 # FUSE doesn't work inside docker. This works around that so appimages can still run 0141 ENV APPIMAGE_EXTRACT_AND_RUN=1 0142 0143 WORKDIR /root/diagram-server 0144 RUN git submodule init 0145 RUN git submodule update --recursive 0146 0147 ENV OUTDIR=/tmp/lvt-appimage 0148 RUN mkdir -p "${OUTDIR}" 0149 CMD scripts/packaging/build-package.sh --outdir "${OUTDIR}" 0150 0151 FROM appimage as deploy-cli-tools 0152 0153 WORKDIR /root/diagram-server 0154 ENV OUTDIR=/tmp/package 0155 ENV EXTERNAL_SO_DEPENDENCIES=/tmp/externaldeps 0156 RUN scripts/packaging/build-package.sh --no-deploy 0157 RUN mkdir -p "${EXTERNAL_SO_DEPENDENCIES}" \ 0158 && cp "/usr/lib/x86_64-linux-gnu/libQt5Core.so.5" "${EXTERNAL_SO_DEPENDENCIES}" \ 0159 && cp "/usr/lib/llvm-14/lib/libclang-cpp.so.14" "${EXTERNAL_SO_DEPENDENCIES}" \ 0160 && cp "/usr/lib/llvm-14/lib/libLLVM-14.so.1" "${EXTERNAL_SO_DEPENDENCIES}" \ 0161 && cp "/usr/lib/x86_64-linux-gnu/libsqlite3.so.0" "${EXTERNAL_SO_DEPENDENCIES}" \ 0162 && cp "/usr/lib/x86_64-linux-gnu/libicui18n.so.63" "${EXTERNAL_SO_DEPENDENCIES}" \ 0163 && cp "/usr/lib/x86_64-linux-gnu/libicuuc.so.63" "${EXTERNAL_SO_DEPENDENCIES}" \ 0164 && cp "/usr/lib/x86_64-linux-gnu/libpcre2-16.so.0" "${EXTERNAL_SO_DEPENDENCIES}" \ 0165 && cp "/usr/lib/x86_64-linux-gnu/libffi.so.6" "${EXTERNAL_SO_DEPENDENCIES}" \ 0166 && cp "/usr/lib/x86_64-linux-gnu/libxml2.so.2" "${EXTERNAL_SO_DEPENDENCIES}" \ 0167 && cp "/usr/lib/x86_64-linux-gnu/libicudata.so.63" "${EXTERNAL_SO_DEPENDENCIES}" \ 0168 && cp "/lib/x86_64-linux-gnu/libpcre.so.3" "${EXTERNAL_SO_DEPENDENCIES}" \ 0169 && cp "/usr/lib/x86_64-linux-gnu/libdouble-conversion.so.1" "${EXTERNAL_SO_DEPENDENCIES}" \ 0170 && mkdir -p "${OUTDIR}" 0171 CMD scripts/packaging/build-cli-package.sh --outdir "${OUTDIR}" --buildfolder "/root/diagram-server/build/lvt/" --externaldepsfolder "${EXTERNAL_SO_DEPENDENCIES}" 0172 0173 FROM build-qt as generate-diagrams 0174 0175 RUN apt-get update && apt-get -qq install python3-jinja2 0176 0177 WORKDIR /root/ 0178 ENV OUTDIR=/tmp/results 0179 ENV BUILD_PATH=/root/diagram-server/build/ 0180 ENV SEMRULES_PATH="/root/diagram-server/semrules/" 0181 0182 # Move the database schema files to XDG_DATA_DIRS 0183 RUN mkdir -p /root/.local/share/codevis/database-spec/ \ 0184 && cp /root/diagram-server/database-spec/codebase_db.sql /root/.local/share/codevis/database-spec/ \ 0185 && cp /root/diagram-server/database-spec/cad_db.sql /root/.local/share/codevis/database-spec/ 0186 0187 RUN mkdir -p "${OUTDIR}" 0188 CMD "${BUILD_PATH}/lvtclp/create_codebase_db" \ 0189 --source-path "/root/diagram-server/" \ 0190 --silent \ 0191 -j6 \ 0192 --ignore *.t.cpp \ 0193 --ignore *.m.cpp \ 0194 --ignore *moc_* \ 0195 --ignore *mocs_* \ 0196 --ignore *ui_* \ 0197 --replace \ 0198 -o "${OUTDIR}/codevis.db" \ 0199 --compile-commands-json "${BUILD_PATH}/compile_commands.json" \ 0200 && \ 0201 "${BUILD_PATH}/lvtprj/create_prj_from_db" \ 0202 --source-path "/root/diagram-server/" \ 0203 "${OUTDIR}/codevis.db" \ 0204 "${OUTDIR}/codevis.lks" 0205 0206 0207 FROM dependencies as code-coverage 0208 0209 COPY . /root/diagram-server 0210 WORKDIR /root/diagram-server 0211 RUN apt-get update && apt-get -qq install python3-jinja2 gcovr 0212 RUN git submodule init 0213 RUN git submodule update --recursive 0214 0215 # Move the database schema files to XDG_DATA_DIRS 0216 RUN mkdir -p /root/.local/share/codevis/database-spec/ \ 0217 && cp /root/diagram-server/database-spec/codebase_db.sql /root/.local/share/codevis/database-spec/ \ 0218 && cp /root/diagram-server/database-spec/cad_db.sql /root/.local/share/codevis/database-spec/ 0219 0220 WORKDIR /root/diagram-server/build 0221 RUN cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DENABLE_CODE_COVERAGE=ON -DCMAKE_BUILD_TYPE=Debug .. 0222 RUN cmake --build . -j$(nproc) 0223 ENV LAKOSDIAGRAM_PYSCRIPTS_PATH="/root/diagram-server/python/codegeneration/" 0224 ENV TEST_PRJ_PATH="/root/diagram-server/lvtclp/systemtests/" 0225 ENV QT_QPA_PLATFORM="offscreen" 0226 0227 CMD ctest . -VV -j$(nproc) && make coverage