aboutsummaryrefslogtreecommitdiffstats
path: root/.github/workflows/build_cmake.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/build_cmake.yml')
-rw-r--r--.github/workflows/build_cmake.yml281
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