diff options
Diffstat (limited to '.github/workflows/build_cmake.yml')
-rw-r--r-- | .github/workflows/build_cmake.yml | 281 |
1 files changed, 187 insertions, 94 deletions
diff --git a/.github/workflows/build_cmake.yml b/.github/workflows/build_cmake.yml index dc8a7ac4b7..57826d6d91 100644 --- a/.github/workflows/build_cmake.yml +++ b/.github/workflows/build_cmake.yml @@ -3,8 +3,9 @@ name: CMake Build Matrix on: [push, pull_request] env: - QT_VERSION: 5.14.2 - CLANG_VERSION: 80 + QT_VERSION: 5.15.0 + CLANG_VERSION: 100 + ELFUTILS_VERSION: 0.175 CMAKE_VERSION: 3.17.0 NINJA_VERSION: 1.10.0 BUILD_TYPE: Release @@ -23,12 +24,14 @@ jobs: name: "Windows Latest MSVC", artifact: "Windows-MSVC", os: windows-latest, cc: "cl", cxx: "cl", - environment_script: "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars64.bat" + environment_script: "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars64.bat", + is_msvc: true } - { name: "Windows Latest MinGW", artifact: "Windows-MinGW", os: windows-latest, - cc: "gcc", cxx: "g++" + cc: "gcc", cxx: "g++", + is_msvc: false } - { name: "Ubuntu Latest GCC", artifact: "Linux", @@ -44,7 +47,10 @@ jobs: steps: - uses: actions/checkout@v2 - name: Checkout submodules - run: git submodule update --init src/plugins/help/qlitehtml/litehtml + run: | + git submodule set-url -- perfparser https://code.qt.io/qt-creator/perfparser.git + git submodule update --init src/plugins/help/qlitehtml/litehtml + git submodule update --init src/tools/perfparser - name: Download Ninja and CMake id: cmake_and_ninja @@ -96,17 +102,17 @@ jobs: if ("${{ runner.os }}" STREQUAL "Windows") set(url_os "windows_x86") if ("x${{ matrix.config.environment_script }}" STREQUAL "x") - set(qt_package_arch_suffix "win64_mingw73") - set(qt_dir_prefix "${qt_version}/mingw73_64") - set(qt_package_suffix "-Windows-Windows_10-Mingw73-Windows-Windows_10-X86_64") + set(qt_package_arch_suffix "win64_mingw81") + set(qt_dir_prefix "${qt_version}/mingw81_64") + set(qt_package_suffix "-Windows-Windows_10-Mingw-Windows-Windows_10-X86_64") elseif ("${{ matrix.config.environment_script }}" MATCHES "vcvars64.bat") - set(qt_package_arch_suffix "win64_msvc2017_64") - set(qt_dir_prefix "${qt_version}/msvc2017_64") - set(qt_package_suffix "-Windows-Windows_10-MSVC2017-Windows-Windows_10-X86_64") + set(qt_package_arch_suffix "win64_msvc2019_64") + set(qt_dir_prefix "${qt_version}/msvc2019_64") + set(qt_package_suffix "-Windows-Windows_10-MSVC2019-Windows-Windows_10-X86_64") elseif ("${{ matrix.config.environment_script }}" MATCHES "vcvars32.bat") - set(qt_package_arch_suffix "win32_msvc2017") - set(qt_dir_prefix "${qt_version}/msvc2017") - set(qt_package_suffix "-Windows-Windows_10-MSVC2017-Windows-Windows_10-X86") + set(qt_package_arch_suffix "win32_msvc2019") + set(qt_dir_prefix "${qt_version}/msvc2019") + set(qt_package_suffix "-Windows-Windows_10-MSVC2019-Windows-Windows_10-X86") endif() elseif ("${{ runner.os }}" STREQUAL "Linux") set(url_os "linux_x64") @@ -139,7 +145,7 @@ jobs: execute_process(COMMAND ${CMAKE_COMMAND} -E tar xvf ../${archive} WORKING_DIRECTORY qt5) endfunction() - foreach(package qtbase qtdeclarative qttools qtsvg qtserialport qtquickcontrols qtquickcontrols2 qtgraphicaleffects qtlocation qtimageformats) + foreach(package qtbase qtdeclarative qttools qtsvg qtserialport qtquickcontrols qtquickcontrols2 qtgraphicaleffects qtlocation qtimageformats qttranslations) downloadAndExtract( "${qt_base_url}/qt.qt5.${qt_version_dotless}.${qt_package_arch_suffix}/${qt_package_version}${package}${qt_package_suffix}.7z" ${package}.7z @@ -168,18 +174,37 @@ jobs: string(REPLACE "licheck_mac" "" qtconfig "${qtconfig}") file(WRITE "qt5/${qt_dir_prefix}/mkspecs/qconfig.pri" "${qtconfig}") + if ("${{ runner.os }}" STREQUAL "Windows") + # deploy "system" runtimes into Qt, so they get deployed as well + if ("x${{ matrix.config.environment_script }}" STREQUAL "x") + # deploy MinGW + foreach(file libwinpthread-1.dll libstdc++-6.dll libgcc_s_seh-1.dll) + file(INSTALL "C:/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/bin/${file}" + DESTINATION "qt5/${qt_dir_prefix}/bin" + USE_SOURCE_PERMISSIONS) + endforeach() + else() + # deploy MSVC + foreach(file vcruntime140.dll concrt140.dll msvcp140_1.dll msvcp140_2.dll + msvcp140_codecvt_ids.dll vcruntime140_1.dll msvcp140.dll) + file(INSTALL "C:/Windows/System32/${file}" + DESTINATION "qt5/${qt_dir_prefix}/bin") + endforeach() + endif() + endif() + - name: Download OpenSSL shell: cmake -P {0} run: | if ("${{ runner.os }}" STREQUAL "Windows") set(url_os "windows_x86") set(openssl_localdir "Tools/OpenSSL/Win_x64/bin") - set(openssl_dest_dir "instdir/bin") + set(openssl_dest_dir "${{ steps.qt.outputs.qt_dir }}/bin") set(shared_suffix ".dll") elseif ("${{ runner.os }}" STREQUAL "Linux") set(url_os "linux_x64") set(openssl_localdir "Tools/OpenSSL/binary/lib") - set(openssl_dest_dir "instdir/lib/Qt/lib") + set(openssl_dest_dir "${{ steps.qt.outputs.qt_dir }}/lib/Qt/lib") set(shared_suffix ".so*") elseif ("${{ runner.os }}" STREQUAL "macOS") # Not needed on macOS @@ -220,12 +245,12 @@ jobs: if ("x${{ matrix.config.environment_script }}" STREQUAL "x") set(libclang "libclang-release_${clang_version}-based-windows-mingw_64.7z") elseif ("${{ matrix.config.environment_script }}" MATCHES "vcvars64.bat") - set(libclang "libclang-release_${clang_version}-based-windows-vs2017_64.7z") + set(libclang "libclang-release_${clang_version}-based-windows-vs2019_64.7z") elseif ("${{ matrix.config.environment_script }}" MATCHES "vcvars32.bat") - set(libclang "libclang-release_${clang_version}-based-windows-vs2017_32.7z") + set(libclang "libclang-release_${clang_version}-based-windows-vs2019_32.7z") endif() elseif ("${{ runner.os }}" STREQUAL "Linux") - set(libclang "libclang-release_${clang_version}-based-linux-Ubuntu16.04-gcc5.3-x86_64.7z") + set(libclang "libclang-release_${clang_version}-based-linux-Ubuntu18.04-gcc9.2-x86_64.7z") elseif ("${{ runner.os }}" STREQUAL "macOS") set(libclang "libclang-release_${clang_version}-based-mac.7z") endif() @@ -240,6 +265,32 @@ jobs: file(TO_CMAKE_PATH "$ENV{GITHUB_WORKSPACE}/libclang" libclang_dir) message("::set-output name=libclang_dir::${libclang_dir}") + - name: Download elfutils + if: runner.os == 'Windows' && matrix.config.is_msvc || runner.os == 'Linux' + id: elfutils + shell: cmake -P {0} + run: | + set(elfutils_version "$ENV{ELFUTILS_VERSION}") + + if ("${{ runner.os }}" STREQUAL "Windows") + if ("${{ matrix.config.environment_script }}" MATCHES "vcvars64.bat") + set(elfutils "elfutils-release_${elfutils_version}qt-windows-x86_64.7z") + elseif ("${{ matrix.config.environment_script }}" MATCHES "vcvars32.bat") + set(elfutils "elfutils-release_${elfutils_version}qt-windows-i686.7z") + endif() + elseif ("${{ runner.os }}" STREQUAL "Linux") + set(elfutils "elfutils-release_${elfutils_version}qt-linux-x86_64.7z") + endif() + + set(elfutils_url "https://download.qt.io/development_releases/prebuilt/elfutils/${elfutils}") + file(DOWNLOAD "${elfutils_url}" ./elfutils.7z SHOW_PROGRESS) + file(MAKE_DIRECTORY elfutils) + execute_process(COMMAND ${CMAKE_COMMAND} -E tar xvf ../elfutils.7z WORKING_DIRECTORY elfutils) + + # Save the path for other steps + file(TO_CMAKE_PATH "$ENV{GITHUB_WORKSPACE}/elfutils" elfutils_dir) + message("::set-output name=elfutils_dir::${elfutils_dir}") + - name: Download ccache id: ccache shell: cmake -P {0} @@ -289,7 +340,7 @@ jobs: file(TO_CMAKE_PATH "$ENV{GITHUB_WORKSPACE}/googletest-release-$ENV{GOOGLETEST_VERSION}" googletest_dir) message("::set-output name=googletest_dir::${googletest_dir}") - - name: Configure + - name: Build shell: cmake -P {0} run: | set(ENV{CC} ${{ matrix.config.cc }}) @@ -312,56 +363,12 @@ jobs: if ("${{ runner.os }}" STREQUAL "Windows") set(path_separator ";") endif() - set(ENV{PATH} "$ENV{GITHUB_WORKSPACE}${path_separator}$ENV{PATH}") + set(ENV{PATH} "${{ steps.cmake_and_ninja.outputs.cmake_dir }}${path_separator}$ENV{GITHUB_WORKSPACE}${path_separator}$ENV{PATH}") set(ENV{GOOGLETEST_DIR} "${{ steps.googletest.outputs.googletest_dir }}") - # Workaround for https://gitlab.kitware.com/cmake/cmake/issues/20119 - foreach(step 1 2) - execute_process( - COMMAND ${{ steps.cmake_and_ninja.outputs.cmake_dir }}/cmake - -S . - -B build - -D CMAKE_BUILD_TYPE=$ENV{BUILD_TYPE} - -D "CMAKE_PREFIX_PATH=${{ steps.libclang.outputs.libclang_dir }};${{ steps.qt.outputs.qt_dir }}" - -G Ninja - -D CMAKE_MAKE_PROGRAM=ninja - -D CMAKE_FIND_PACKAGE_PREFER_CONFIG=TRUE - -D CMAKE_C_COMPILER_LAUNCHER=ccache - -D CMAKE_CXX_COMPILER_LAUNCHER=ccache - -D BUILD_WITH_PCH=OFF - -D WITH_TESTS=ON - -D IDE_REVISION=TRUE - -D IDE_REVISION_STR=$ENV{GITHUB_SHA} - -D IDE_REVISION_URL=https://github.com/$ENV{GITHUB_REPOSITORY}/commits/$ENV{GITHUB_SHA} - RESULT_VARIABLE result - COMMAND_ECHO STDOUT - ) - if (NOT result EQUAL 0) - message(FATAL_ERROR "Bad exit status") - endif() - endforeach() - - - name: Build - shell: cmake -P {0} - run: | set(ENV{NINJA_STATUS} "[%f/%t %o/sec] ") - if ("${{ runner.os }}" STREQUAL "Windows" AND NOT "x${{ matrix.config.environment_script }}" STREQUAL "x") - file(STRINGS environment_script_output.txt output_lines) - foreach(line IN LISTS output_lines) - if (line MATCHES "^([a-zA-Z0-9_-]+)=(.*)$") - set(ENV{${CMAKE_MATCH_1}} "${CMAKE_MATCH_2}") - endif() - endforeach() - endif() - - set(path_separator ":") - if ("${{ runner.os }}" STREQUAL "Windows") - set(path_separator ";") - endif() - set(ENV{PATH} "$ENV{GITHUB_WORKSPACE}${path_separator}$ENV{PATH}") - file(TO_CMAKE_PATH "$ENV{GITHUB_WORKSPACE}" ccache_basedir) set(ENV{CCACHE_BASEDIR} "${ccache_basedir}") set(ENV{CCACHE_DIR} "${ccache_basedir}/.ccache") @@ -376,11 +383,36 @@ jobs: execute_process(COMMAND ccache -p) execute_process(COMMAND ccache -z) + if ("x${{ matrix.config.environment_script }}" STREQUAL "x") + set(CDB_OPTION "--no-cdb") + else() + set(CDB_OPTION) + endif() + + if (NOT "${{ steps.elfutils.outputs.elfutils_dir }}" STREQUAL "") + set(ELFUTILS_OPTION "--elfutils-path;${{ steps.elfutils.outputs.elfutils_dir }}") + else() + set(ELFUTILS_OPTION) + endif() + execute_process( - COMMAND ${{ steps.cmake_and_ninja.outputs.cmake_dir }}/cmake --build build + COMMAND python + -u + scripts/build.py + --src . + --build build + --qt-path "${{ steps.qt.outputs.qt_dir }}" + --llvm-path "${{ steps.libclang.outputs.libclang_dir }}" + --with-tests + ${CDB_OPTION} + ${ELFUTILS_OPTION} + --add-config=-DCMAKE_C_COMPILER_LAUNCHER=ccache + --add-config=-DCMAKE_CXX_COMPILER_LAUNCHER=ccache + --add-config=-DIDE_REVISION_URL=https://github.com/$ENV{GITHUB_REPOSITORY}/commits/$ENV{GITHUB_SHA} + --zip-infix=-${{ matrix.config.artifact }}-${{ github.run_id }} RESULT_VARIABLE result + COMMAND_ECHO STDOUT ) - if (NOT result EQUAL 0) message(FATAL_ERROR "Bad exit status") endif() @@ -397,7 +429,7 @@ jobs: execute_process( COMMAND ${{ steps.cmake_and_ninja.outputs.cmake_dir }}/ctest -j ${N} - WORKING_DIRECTORY build + WORKING_DIRECTORY build/build RESULT_VARIABLE result OUTPUT_VARIABLE stdout ERROR_VARIABLE stdout @@ -412,33 +444,38 @@ jobs: message("::warning::${pass_rate}") endif() - - name: Install Strip - run: | - ${{ steps.cmake_and_ninja.outputs.cmake_dir }}/cmake --install build --prefix instdir --strip - ${{ steps.cmake_and_ninja.outputs.cmake_dir }}/cmake --install build --prefix instdir --component Dependencies - - - name: Install Devel - run: ${{ steps.cmake_and_ninja.outputs.cmake_dir }}/cmake --install build --prefix instdir-dev --component Devel + - name: Upload + uses: actions/upload-artifact@v1 + with: + path: build/qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z + name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z - - name: Pack - working-directory: instdir - run: ${{ steps.cmake_and_ninja.outputs.cmake_dir }}/cmake -E tar cfv ../QtCreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z --format=7zip . + - name: Upload Devel + uses: actions/upload-artifact@v1 + with: + path: build/qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}_dev.7z + name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}_dev.7z - - name: Pack Devel - working-directory: instdir-dev - run: ${{ steps.cmake_and_ninja.outputs.cmake_dir }}/cmake -E tar cfv ../QtCreator-${{ matrix.config.artifact }}-${{ github.run_id }}-dev.7z --format=7zip . + - name: Upload wininterrupt + if: runner.os == 'Windows' + uses: actions/upload-artifact@v1 + with: + path: build/wininterrupt-${{ matrix.config.artifact }}-${{ github.run_id }}.7z + name: wininterrupt-${{ matrix.config.artifact }}-${{ github.run_id }}.7z - - name: Upload + - name: Upload qtcreatorcdbext + if: runner.os == 'Windows' && matrix.config.is_msvc uses: actions/upload-artifact@v1 with: - path: ./QtCreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z - name: QtCreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z + path: build/qtcreatorcdbext-${{ matrix.config.artifact }}-${{ github.run_id }}.7z + name: qtcreatorcdbext-${{ matrix.config.artifact }}-${{ github.run_id }}.7z - - name: Upload Devel + - name: Upload disk image + if: runner.os == 'macOS' uses: actions/upload-artifact@v1 with: - path: ./QtCreator-${{ matrix.config.artifact }}-${{ github.run_id }}-dev.7z - name: QtCreator-${{ matrix.config.artifact }}-${{ github.run_id }}-dev.7z + path: build/qt-creator-${{ matrix.config.artifact }}-${{ github.run_id }}.dmg + name: qt-creator-${{ matrix.config.artifact }}-${{ github.run_id }}.dmg release: if: contains(github.ref, 'tags/v') @@ -476,10 +513,12 @@ jobs: config: - { name: "Windows Latest MSVC", artifact: "Windows-MSVC", + is_msvc: true, os: ubuntu-latest } - { name: "Windows Latest MinGW", artifact: "Windows-MinGW", + is_msvc: false, os: ubuntu-latest } - { @@ -496,13 +535,34 @@ jobs: - name: Download artifact uses: actions/download-artifact@v1 with: - name: QtCreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z + name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z path: ./ - name: Download Devel artifact uses: actions/download-artifact@v1 with: - name: QtCreator-${{ matrix.config.artifact }}-${{ github.run_id }}-dev.7z + name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}_dev.7z + path: ./ + + - name: Download wininterrupt artifact + if: runner.os == 'Windows' + uses: actions/download-artifact@v1 + with: + name: wininterrupt-${{ matrix.config.artifact }}-${{ github.run_id }}.7z + path: ./ + + - name: Download qtcreatorcdbext artifact + if: runner.os == 'Windows' && matrix.config.is_msvc + uses: actions/upload-artifact@v1 + with: + name: qtcreatorcdbext-${{ matrix.config.artifact }}-${{ github.run_id }}.7z + path: ./ + + - name: Download disk image artifact + if: runner.os == 'macOS' + uses: actions/upload-artifact@v1 + with: + name: qt-creator-${{ matrix.config.artifact }}-${{ github.run_id }}.dmg path: ./ - name: Download URL @@ -521,8 +581,8 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.set_upload_url.outputs.upload_url }} - asset_path: ./QtCreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z - asset_name: QtCreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z + asset_path: ./qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z + asset_name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z asset_content_type: application/x-gtar - name: Upload Devel to Release @@ -531,6 +591,39 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.set_upload_url.outputs.upload_url }} - asset_path: ./QtCreator-${{ matrix.config.artifact }}-${{ github.run_id }}-dev.7z - asset_name: QtCreator-${{ matrix.config.artifact }}-${{ github.run_id }}-dev.7z + asset_path: ./qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}_dev.7z + asset_name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}_dev.7z + asset_content_type: application/x-gtar + + - name: Upload wininterrupt to Release + if: runner.os == 'Windows' + uses: actions/upload-release-asset@v1.0.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.set_upload_url.outputs.upload_url }} + asset_path: ./wininterrupt-${{ matrix.config.artifact }}-${{ github.run_id }}.7z + asset_name: wininterrupt-${{ matrix.config.artifact }}-${{ github.run_id }}.7z + asset_content_type: application/x-gtar + + - name: Upload qtcreatorcdbext to Release + if: runner.os == 'Windows' && matrix.config.is_msvc + uses: actions/upload-release-asset@v1.0.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.set_upload_url.outputs.upload_url }} + asset_path: ./qtcreatorcdbext-${{ matrix.config.artifact }}-${{ github.run_id }}.7z + asset_name: qtcreatorcdbext-${{ matrix.config.artifact }}-${{ github.run_id }}.7z + asset_content_type: application/x-gtar + + - name: Upload disk image to Release + if: runner.os == 'macOS' + uses: actions/upload-release-asset@v1.0.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.set_upload_url.outputs.upload_url }} + asset_path: ./qt-creator-${{ matrix.config.artifact }}-${{ github.run_id }}.dmg + asset_name: qt-creator-${{ matrix.config.artifact }}-${{ github.run_id }}.dmg asset_content_type: application/x-gtar |