forked from qt-creator/qt-creator
Use the packaging script for the github action
Unifies a bit of what is done. For example this adds documentation and creates a disk image for macOS. It will also make adding perfparser/elfutils and 32bit wininterrupt and qtcreatorcdbext easier. Adds Qt translations. Adds some useful options to build.py and make it work with python3 Disables detection of debug vs release build in deployqt.py on Windows if dumpbin is not there (for MinGW). Change-Id: I3cc33144cad653823321209c219d220eb75093ec Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
220
.github/workflows/build_cmake.yml
vendored
220
.github/workflows/build_cmake.yml
vendored
@@ -23,12 +23,14 @@ jobs:
|
|||||||
name: "Windows Latest MSVC", artifact: "Windows-MSVC",
|
name: "Windows Latest MSVC", artifact: "Windows-MSVC",
|
||||||
os: windows-latest,
|
os: windows-latest,
|
||||||
cc: "cl", cxx: "cl",
|
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",
|
name: "Windows Latest MinGW", artifact: "Windows-MinGW",
|
||||||
os: windows-latest,
|
os: windows-latest,
|
||||||
cc: "gcc", cxx: "g++"
|
cc: "gcc", cxx: "g++",
|
||||||
|
is_msvc: false
|
||||||
}
|
}
|
||||||
- {
|
- {
|
||||||
name: "Ubuntu Latest GCC", artifact: "Linux",
|
name: "Ubuntu Latest GCC", artifact: "Linux",
|
||||||
@@ -139,7 +141,7 @@ jobs:
|
|||||||
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xvf ../${archive} WORKING_DIRECTORY qt5)
|
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xvf ../${archive} WORKING_DIRECTORY qt5)
|
||||||
endfunction()
|
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(
|
downloadAndExtract(
|
||||||
"${qt_base_url}/qt.qt5.${qt_version_dotless}.${qt_package_arch_suffix}/${qt_package_version}${package}${qt_package_suffix}.7z"
|
"${qt_base_url}/qt.qt5.${qt_version_dotless}.${qt_package_arch_suffix}/${qt_package_version}${package}${qt_package_suffix}.7z"
|
||||||
${package}.7z
|
${package}.7z
|
||||||
@@ -168,18 +170,37 @@ jobs:
|
|||||||
string(REPLACE "licheck_mac" "" qtconfig "${qtconfig}")
|
string(REPLACE "licheck_mac" "" qtconfig "${qtconfig}")
|
||||||
file(WRITE "qt5/${qt_dir_prefix}/mkspecs/qconfig.pri" "${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
|
- name: Download OpenSSL
|
||||||
shell: cmake -P {0}
|
shell: cmake -P {0}
|
||||||
run: |
|
run: |
|
||||||
if ("${{ runner.os }}" STREQUAL "Windows")
|
if ("${{ runner.os }}" STREQUAL "Windows")
|
||||||
set(url_os "windows_x86")
|
set(url_os "windows_x86")
|
||||||
set(openssl_localdir "Tools/OpenSSL/Win_x64/bin")
|
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")
|
set(shared_suffix ".dll")
|
||||||
elseif ("${{ runner.os }}" STREQUAL "Linux")
|
elseif ("${{ runner.os }}" STREQUAL "Linux")
|
||||||
set(url_os "linux_x64")
|
set(url_os "linux_x64")
|
||||||
set(openssl_localdir "Tools/OpenSSL/binary/lib")
|
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*")
|
set(shared_suffix ".so*")
|
||||||
elseif ("${{ runner.os }}" STREQUAL "macOS")
|
elseif ("${{ runner.os }}" STREQUAL "macOS")
|
||||||
# Not needed on macOS
|
# Not needed on macOS
|
||||||
@@ -289,7 +310,7 @@ jobs:
|
|||||||
file(TO_CMAKE_PATH "$ENV{GITHUB_WORKSPACE}/googletest-release-$ENV{GOOGLETEST_VERSION}" googletest_dir)
|
file(TO_CMAKE_PATH "$ENV{GITHUB_WORKSPACE}/googletest-release-$ENV{GOOGLETEST_VERSION}" googletest_dir)
|
||||||
message("::set-output name=googletest_dir::${googletest_dir}")
|
message("::set-output name=googletest_dir::${googletest_dir}")
|
||||||
|
|
||||||
- name: Configure
|
- name: Build
|
||||||
shell: cmake -P {0}
|
shell: cmake -P {0}
|
||||||
run: |
|
run: |
|
||||||
set(ENV{CC} ${{ matrix.config.cc }})
|
set(ENV{CC} ${{ matrix.config.cc }})
|
||||||
@@ -312,56 +333,12 @@ jobs:
|
|||||||
if ("${{ runner.os }}" STREQUAL "Windows")
|
if ("${{ runner.os }}" STREQUAL "Windows")
|
||||||
set(path_separator ";")
|
set(path_separator ";")
|
||||||
endif()
|
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 }}")
|
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] ")
|
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)
|
file(TO_CMAKE_PATH "$ENV{GITHUB_WORKSPACE}" ccache_basedir)
|
||||||
set(ENV{CCACHE_BASEDIR} "${ccache_basedir}")
|
set(ENV{CCACHE_BASEDIR} "${ccache_basedir}")
|
||||||
set(ENV{CCACHE_DIR} "${ccache_basedir}/.ccache")
|
set(ENV{CCACHE_DIR} "${ccache_basedir}/.ccache")
|
||||||
@@ -376,11 +353,29 @@ jobs:
|
|||||||
execute_process(COMMAND ccache -p)
|
execute_process(COMMAND ccache -p)
|
||||||
execute_process(COMMAND ccache -z)
|
execute_process(COMMAND ccache -z)
|
||||||
|
|
||||||
execute_process(
|
if ("x${{ matrix.config.environment_script }}" STREQUAL "x")
|
||||||
COMMAND ${{ steps.cmake_and_ninja.outputs.cmake_dir }}/cmake --build build
|
set(CDB_OPTION "--no-cdb")
|
||||||
RESULT_VARIABLE result
|
else()
|
||||||
)
|
set(CDB_OPTION)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
execute_process(
|
||||||
|
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}
|
||||||
|
--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)
|
if (NOT result EQUAL 0)
|
||||||
message(FATAL_ERROR "Bad exit status")
|
message(FATAL_ERROR "Bad exit status")
|
||||||
endif()
|
endif()
|
||||||
@@ -397,7 +392,7 @@ jobs:
|
|||||||
|
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${{ steps.cmake_and_ninja.outputs.cmake_dir }}/ctest -j ${N}
|
COMMAND ${{ steps.cmake_and_ninja.outputs.cmake_dir }}/ctest -j ${N}
|
||||||
WORKING_DIRECTORY build
|
WORKING_DIRECTORY build/build
|
||||||
RESULT_VARIABLE result
|
RESULT_VARIABLE result
|
||||||
OUTPUT_VARIABLE stdout
|
OUTPUT_VARIABLE stdout
|
||||||
ERROR_VARIABLE stdout
|
ERROR_VARIABLE stdout
|
||||||
@@ -412,33 +407,38 @@ jobs:
|
|||||||
message("::warning::${pass_rate}")
|
message("::warning::${pass_rate}")
|
||||||
endif()
|
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: 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: 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
|
- name: Upload
|
||||||
uses: actions/upload-artifact@v1
|
uses: actions/upload-artifact@v1
|
||||||
with:
|
with:
|
||||||
path: ./QtCreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
path: build/qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
||||||
name: QtCreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
||||||
|
|
||||||
- name: Upload Devel
|
- name: Upload Devel
|
||||||
uses: actions/upload-artifact@v1
|
uses: actions/upload-artifact@v1
|
||||||
with:
|
with:
|
||||||
path: ./QtCreator-${{ matrix.config.artifact }}-${{ github.run_id }}-dev.7z
|
path: build/qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}_dev.7z
|
||||||
name: QtCreator-${{ matrix.config.artifact }}-${{ github.run_id }}-dev.7z
|
name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}_dev.7z
|
||||||
|
|
||||||
|
- 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 qtcreatorcdbext
|
||||||
|
if: runner.os == 'Windows' && matrix.config.is_msvc
|
||||||
|
uses: actions/upload-artifact@v1
|
||||||
|
with:
|
||||||
|
path: build/qtcreatorcdbext-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
||||||
|
name: qtcreatorcdbext-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
||||||
|
|
||||||
|
- name: Upload disk image
|
||||||
|
if: runner.os == 'macOS'
|
||||||
|
uses: actions/upload-artifact@v1
|
||||||
|
with:
|
||||||
|
path: build/qt-creator-${{ matrix.config.artifact }}-${{ github.run_id }}.dmg
|
||||||
|
name: qt-creator-${{ matrix.config.artifact }}-${{ github.run_id }}.dmg
|
||||||
|
|
||||||
release:
|
release:
|
||||||
if: contains(github.ref, 'tags/v')
|
if: contains(github.ref, 'tags/v')
|
||||||
@@ -476,10 +476,12 @@ jobs:
|
|||||||
config:
|
config:
|
||||||
- {
|
- {
|
||||||
name: "Windows Latest MSVC", artifact: "Windows-MSVC",
|
name: "Windows Latest MSVC", artifact: "Windows-MSVC",
|
||||||
|
is_msvc: true,
|
||||||
os: ubuntu-latest
|
os: ubuntu-latest
|
||||||
}
|
}
|
||||||
- {
|
- {
|
||||||
name: "Windows Latest MinGW", artifact: "Windows-MinGW",
|
name: "Windows Latest MinGW", artifact: "Windows-MinGW",
|
||||||
|
is_msvc: false,
|
||||||
os: ubuntu-latest
|
os: ubuntu-latest
|
||||||
}
|
}
|
||||||
- {
|
- {
|
||||||
@@ -496,13 +498,34 @@ jobs:
|
|||||||
- name: Download artifact
|
- name: Download artifact
|
||||||
uses: actions/download-artifact@v1
|
uses: actions/download-artifact@v1
|
||||||
with:
|
with:
|
||||||
name: QtCreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
||||||
path: ./
|
path: ./
|
||||||
|
|
||||||
- name: Download Devel artifact
|
- name: Download Devel artifact
|
||||||
uses: actions/download-artifact@v1
|
uses: actions/download-artifact@v1
|
||||||
with:
|
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: ./
|
path: ./
|
||||||
|
|
||||||
- name: Download URL
|
- name: Download URL
|
||||||
@@ -521,8 +544,8 @@ jobs:
|
|||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
with:
|
with:
|
||||||
upload_url: ${{ steps.set_upload_url.outputs.upload_url }}
|
upload_url: ${{ steps.set_upload_url.outputs.upload_url }}
|
||||||
asset_path: ./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_name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
||||||
asset_content_type: application/x-gtar
|
asset_content_type: application/x-gtar
|
||||||
|
|
||||||
- name: Upload Devel to Release
|
- name: Upload Devel to Release
|
||||||
@@ -531,6 +554,39 @@ jobs:
|
|||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
with:
|
with:
|
||||||
upload_url: ${{ steps.set_upload_url.outputs.upload_url }}
|
upload_url: ${{ steps.set_upload_url.outputs.upload_url }}
|
||||||
asset_path: ./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_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
|
asset_content_type: application/x-gtar
|
||||||
|
@@ -89,21 +89,29 @@ def get_arguments():
|
|||||||
action='store_true', default=False)
|
action='store_true', default=False)
|
||||||
parser.add_argument('--no-zip', help='Skip creation of 7zip files for install and developer package',
|
parser.add_argument('--no-zip', help='Skip creation of 7zip files for install and developer package',
|
||||||
action='store_true', default=False)
|
action='store_true', default=False)
|
||||||
|
parser.add_argument('--with-tests', help='Enable building of tests',
|
||||||
|
action='store_true', default=False)
|
||||||
parser.add_argument('--add-make-arg', help='Passes the argument to the make tool.',
|
parser.add_argument('--add-make-arg', help='Passes the argument to the make tool.',
|
||||||
action='append', dest='make_args', default=[])
|
action='append', dest='make_args', default=[])
|
||||||
|
parser.add_argument('--add-config', help=('Adds the argument to the CMake configuration call. '
|
||||||
|
'Use "--add-config=-DSOMEVAR=SOMEVALUE" if the argument begins with a dash.'),
|
||||||
|
action='append', dest='config_args', default=[])
|
||||||
|
parser.add_argument('--zip-infix', help='Adds an infix to generated zip files, use e.g. for a build number.',
|
||||||
|
default='')
|
||||||
return parser.parse_args()
|
return parser.parse_args()
|
||||||
|
|
||||||
def build_qtcreator(args, paths):
|
def build_qtcreator(args, paths):
|
||||||
if not os.path.exists(paths.build):
|
if not os.path.exists(paths.build):
|
||||||
os.makedirs(paths.build)
|
os.makedirs(paths.build)
|
||||||
prefix_paths = [paths.qt]
|
prefix_paths = [paths.qt]
|
||||||
if args.llvm_path:
|
if paths.llvm:
|
||||||
prefix_paths += [args.llvm_path]
|
prefix_paths += [paths.llvm]
|
||||||
if paths.elfutils:
|
if paths.elfutils:
|
||||||
prefix_paths += [paths.elfutils]
|
prefix_paths += [paths.elfutils]
|
||||||
build_type = 'Debug' if args.debug else 'Release'
|
build_type = 'Debug' if args.debug else 'Release'
|
||||||
with_docs_str = 'OFF' if args.no_docs else 'ON'
|
with_docs_str = 'OFF' if args.no_docs else 'ON'
|
||||||
build_date_option = 'OFF' if args.no_build_date else 'ON'
|
build_date_option = 'OFF' if args.no_build_date else 'ON'
|
||||||
|
test_option = 'ON' if args.with_tests else 'OFF'
|
||||||
cmake_args = ['cmake',
|
cmake_args = ['cmake',
|
||||||
'-DCMAKE_PREFIX_PATH=' + ';'.join(prefix_paths),
|
'-DCMAKE_PREFIX_PATH=' + ';'.join(prefix_paths),
|
||||||
'-DCMAKE_BUILD_TYPE=' + build_type,
|
'-DCMAKE_BUILD_TYPE=' + build_type,
|
||||||
@@ -112,7 +120,7 @@ def build_qtcreator(args, paths):
|
|||||||
'-DBUILD_DEVELOPER_DOCS=' + with_docs_str,
|
'-DBUILD_DEVELOPER_DOCS=' + with_docs_str,
|
||||||
'-DBUILD_EXECUTABLE_SDKTOOL=OFF',
|
'-DBUILD_EXECUTABLE_SDKTOOL=OFF',
|
||||||
'-DCMAKE_INSTALL_PREFIX=' + paths.install,
|
'-DCMAKE_INSTALL_PREFIX=' + paths.install,
|
||||||
'-DWITH_TESTS=OFF',
|
'-DWITH_TESTS=' + test_option,
|
||||||
'-G', 'Ninja']
|
'-G', 'Ninja']
|
||||||
|
|
||||||
if args.python3:
|
if args.python3:
|
||||||
@@ -122,9 +130,10 @@ def build_qtcreator(args, paths):
|
|||||||
# even if MSVC is first mentioned in the PATH...
|
# even if MSVC is first mentioned in the PATH...
|
||||||
# TODO would be nicer if we only did this if cl.exe is indeed first in the PATH
|
# TODO would be nicer if we only did this if cl.exe is indeed first in the PATH
|
||||||
if common.is_windows_platform():
|
if common.is_windows_platform():
|
||||||
|
if not os.environ.get('CC') and not os.environ.get('CXX'):
|
||||||
cmake_args += ['-DCMAKE_C_COMPILER=cl',
|
cmake_args += ['-DCMAKE_C_COMPILER=cl',
|
||||||
'-DCMAKE_CXX_COMPILER=cl',
|
'-DCMAKE_CXX_COMPILER=cl']
|
||||||
'-DBUILD_EXECUTABLE_WIN32INTERRUPT=OFF',
|
cmake_args += ['-DBUILD_EXECUTABLE_WIN32INTERRUPT=OFF',
|
||||||
'-DBUILD_EXECUTABLE_WIN64INTERRUPT=OFF',
|
'-DBUILD_EXECUTABLE_WIN64INTERRUPT=OFF',
|
||||||
'-DBUILD_LIBRARY_QTCREATORCDBEXT=OFF']
|
'-DBUILD_LIBRARY_QTCREATORCDBEXT=OFF']
|
||||||
if args.python_path:
|
if args.python_path:
|
||||||
@@ -142,6 +151,8 @@ def build_qtcreator(args, paths):
|
|||||||
'-DIDE_REVISION_STR=' + ide_revision,
|
'-DIDE_REVISION_STR=' + ide_revision,
|
||||||
'-DIDE_REVISION_URL=https://code.qt.io/cgit/qt-creator/qt-creator.git/log/?id=' + ide_revision]
|
'-DIDE_REVISION_URL=https://code.qt.io/cgit/qt-creator/qt-creator.git/log/?id=' + ide_revision]
|
||||||
|
|
||||||
|
cmake_args += args.config_args
|
||||||
|
|
||||||
common.check_print_call(cmake_args + [paths.src], paths.build)
|
common.check_print_call(cmake_args + [paths.src], paths.build)
|
||||||
build_args = ['cmake', '--build', '.']
|
build_args = ['cmake', '--build', '.']
|
||||||
if args.make_args:
|
if args.make_args:
|
||||||
@@ -200,31 +211,42 @@ def deploy_qt(args, paths):
|
|||||||
qt_plugins = os.path.join(paths.qt, 'plugins')
|
qt_plugins = os.path.join(paths.qt, 'plugins')
|
||||||
qt_imports = os.path.join(paths.qt, 'imports')
|
qt_imports = os.path.join(paths.qt, 'imports')
|
||||||
qt_qml = os.path.join(paths.qt, 'qml')
|
qt_qml = os.path.join(paths.qt, 'qml')
|
||||||
|
env = dict(os.environ)
|
||||||
|
if paths.llvm:
|
||||||
|
env['LLVM_INSTALL_DIR'] = paths.llvm
|
||||||
common.check_print_call([script, app, qt_bins, qt_translations, qt_plugins,
|
common.check_print_call([script, app, qt_bins, qt_translations, qt_plugins,
|
||||||
qt_imports, qt_qml],
|
qt_imports, qt_qml],
|
||||||
paths.build)
|
paths.build,
|
||||||
|
env=env)
|
||||||
else:
|
else:
|
||||||
cmd_args = ['python', '-u', os.path.join(paths.src, 'scripts', 'deployqt.py'), '-i']
|
cmd_args = ['python', '-u', os.path.join(paths.src, 'scripts', 'deployqt.py'), '-i']
|
||||||
if paths.elfutils:
|
if paths.elfutils:
|
||||||
cmd_args.extend(['--elfutils-path', paths.elfutils])
|
cmd_args.extend(['--elfutils-path', paths.elfutils])
|
||||||
|
if paths.llvm:
|
||||||
|
cmd_args.extend(['--llvm-path', paths.llvm])
|
||||||
exe = os.path.join(paths.install, 'bin', args.app_target)
|
exe = os.path.join(paths.install, 'bin', args.app_target)
|
||||||
common.check_print_call(cmd_args + [exe, os.path.join(paths.qt, 'bin', 'qmake')],
|
common.check_print_call(cmd_args + [exe, os.path.join(paths.qt, 'bin', 'qmake')],
|
||||||
paths.build)
|
paths.build)
|
||||||
|
|
||||||
def package_qtcreator(args, paths):
|
def package_qtcreator(args, paths):
|
||||||
if not args.no_zip:
|
if not args.no_zip:
|
||||||
common.check_print_call(['7z', 'a', '-mmt2', os.path.join(paths.result, 'qtcreator.7z'), '*'],
|
common.check_print_call(['7z', 'a', '-mmt2',
|
||||||
|
os.path.join(paths.result, 'qtcreator' + args.zip_infix + '.7z'),
|
||||||
|
'*'],
|
||||||
paths.install)
|
paths.install)
|
||||||
common.check_print_call(['7z', 'a', '-mmt2',
|
common.check_print_call(['7z', 'a', '-mmt2',
|
||||||
os.path.join(paths.result, 'qtcreator_dev.7z'), '*'],
|
os.path.join(paths.result, 'qtcreator' + args.zip_infix + '_dev.7z'),
|
||||||
|
'*'],
|
||||||
paths.dev_install)
|
paths.dev_install)
|
||||||
if common.is_windows_platform():
|
if common.is_windows_platform():
|
||||||
common.check_print_call(['7z', 'a', '-mmt2',
|
common.check_print_call(['7z', 'a', '-mmt2',
|
||||||
os.path.join(paths.result, 'wininterrupt.7z'), '*'],
|
os.path.join(paths.result, 'wininterrupt' + args.zip_infix + '.7z'),
|
||||||
|
'*'],
|
||||||
paths.wininterrupt_install)
|
paths.wininterrupt_install)
|
||||||
if not args.no_cdb:
|
if not args.no_cdb:
|
||||||
common.check_print_call(['7z', 'a', '-mmt2',
|
common.check_print_call(['7z', 'a', '-mmt2',
|
||||||
os.path.join(paths.result, 'qtcreatorcdbext.7z'), '*'],
|
os.path.join(paths.result, 'qtcreatorcdbext' + args.zip_infix + '.7z'),
|
||||||
|
'*'],
|
||||||
paths.qtcreatorcdbext_install)
|
paths.qtcreatorcdbext_install)
|
||||||
|
|
||||||
if common.is_mac_platform():
|
if common.is_mac_platform():
|
||||||
@@ -233,7 +255,7 @@ def package_qtcreator(args, paths):
|
|||||||
if not args.no_dmg:
|
if not args.no_dmg:
|
||||||
common.check_print_call(['python', '-u',
|
common.check_print_call(['python', '-u',
|
||||||
os.path.join(paths.src, 'scripts', 'makedmg.py'),
|
os.path.join(paths.src, 'scripts', 'makedmg.py'),
|
||||||
'qt-creator.dmg',
|
'qt-creator' + args.zip_infix + '.dmg',
|
||||||
'Qt Creator',
|
'Qt Creator',
|
||||||
paths.src,
|
paths.src,
|
||||||
paths.install],
|
paths.install],
|
||||||
@@ -244,7 +266,7 @@ def get_paths(args):
|
|||||||
['qt', 'src', 'build',
|
['qt', 'src', 'build',
|
||||||
'install', 'dev_install', 'wininterrupt_install',
|
'install', 'dev_install', 'wininterrupt_install',
|
||||||
'qtcreatorcdbext_install', 'result',
|
'qtcreatorcdbext_install', 'result',
|
||||||
'elfutils'])
|
'elfutils', 'llvm'])
|
||||||
build_path = os.path.abspath(args.build)
|
build_path = os.path.abspath(args.build)
|
||||||
install_path = os.path.join(build_path, 'install')
|
install_path = os.path.join(build_path, 'install')
|
||||||
return Paths(qt=os.path.abspath(args.qt_path),
|
return Paths(qt=os.path.abspath(args.qt_path),
|
||||||
@@ -255,7 +277,8 @@ def get_paths(args):
|
|||||||
wininterrupt_install=os.path.join(install_path, 'wininterrupt'),
|
wininterrupt_install=os.path.join(install_path, 'wininterrupt'),
|
||||||
qtcreatorcdbext_install=os.path.join(install_path, 'qtcreatorcdbext'),
|
qtcreatorcdbext_install=os.path.join(install_path, 'qtcreatorcdbext'),
|
||||||
result=build_path,
|
result=build_path,
|
||||||
elfutils=os.path.abspath(args.elfutils_path) if args.elfutils_path else None)
|
elfutils=os.path.abspath(args.elfutils_path) if args.elfutils_path else None,
|
||||||
|
llvm=os.path.abspath(args.llvm_path) if args.llvm_path else None)
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
args = get_arguments()
|
args = get_arguments()
|
||||||
|
@@ -40,18 +40,20 @@ def is_linux_platform():
|
|||||||
def is_mac_platform():
|
def is_mac_platform():
|
||||||
return sys.platform.startswith('darwin')
|
return sys.platform.startswith('darwin')
|
||||||
|
|
||||||
def check_print_call(command, workdir):
|
def check_print_call(command, workdir, env=None):
|
||||||
print('------------------------------------------')
|
print('------------------------------------------')
|
||||||
print('COMMAND:')
|
print('COMMAND:')
|
||||||
print(' '.join(['"' + c.replace('"', '\\"') + '"' for c in command]))
|
print(' '.join(['"' + c.replace('"', '\\"') + '"' for c in command]))
|
||||||
print('PWD: "' + workdir + '"')
|
print('PWD: "' + workdir + '"')
|
||||||
print('------------------------------------------')
|
print('------------------------------------------')
|
||||||
subprocess.check_call(command, cwd=workdir)
|
subprocess.check_call(command, cwd=workdir, env=env)
|
||||||
|
|
||||||
|
|
||||||
def get_git_SHA(path):
|
def get_git_SHA(path):
|
||||||
try:
|
try:
|
||||||
return subprocess.check_output(['git', 'rev-list', '-n1', 'HEAD'], cwd=path).strip()
|
output = subprocess.check_output(['git', 'rev-list', '-n1', 'HEAD'], cwd=path).strip()
|
||||||
|
decoded_output = output.decode(encoding) if encoding else output
|
||||||
|
return decoded_output
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
return None
|
return None
|
||||||
return None
|
return None
|
||||||
|
@@ -47,6 +47,10 @@ def get_args():
|
|||||||
action='store_true', default=False)
|
action='store_true', default=False)
|
||||||
parser.add_argument('--elfutils-path',
|
parser.add_argument('--elfutils-path',
|
||||||
help='Path to elfutils installation for use by perfprofiler (Windows, Linux)')
|
help='Path to elfutils installation for use by perfprofiler (Windows, Linux)')
|
||||||
|
# TODO remove defaulting to LLVM_INSTALL_DIR when we no longer build qmake based packages
|
||||||
|
parser.add_argument('--llvm-path',
|
||||||
|
help='Path to LLVM installation',
|
||||||
|
default=os.environ.get('LLVM_INSTALL_DIR'))
|
||||||
parser.add_argument('qtcreator_binary', help='Path to Qt Creator binary')
|
parser.add_argument('qtcreator_binary', help='Path to Qt Creator binary')
|
||||||
parser.add_argument('qmake_binary', help='Path to qmake binary')
|
parser.add_argument('qmake_binary', help='Path to qmake binary')
|
||||||
|
|
||||||
@@ -98,8 +102,12 @@ def is_debug(fpath):
|
|||||||
# bootstrap exception
|
# bootstrap exception
|
||||||
if coredebug.search(fpath):
|
if coredebug.search(fpath):
|
||||||
return True
|
return True
|
||||||
|
try:
|
||||||
output = subprocess.check_output(['dumpbin', '/imports', fpath])
|
output = subprocess.check_output(['dumpbin', '/imports', fpath])
|
||||||
return coredebug.search(output.decode(encoding)) != None
|
return coredebug.search(output.decode(encoding)) != None
|
||||||
|
except FileNotFoundError:
|
||||||
|
# dumpbin is not there, maybe MinGW ? Just ship all .dlls.
|
||||||
|
return debug_build
|
||||||
|
|
||||||
def is_ignored_windows_file(use_debug, basepath, filename):
|
def is_ignored_windows_file(use_debug, basepath, filename):
|
||||||
ignore_patterns = ['.lib', '.pdb', '.exp', '.ilk']
|
ignore_patterns = ['.lib', '.pdb', '.exp', '.ilk']
|
||||||
@@ -369,8 +377,8 @@ def main():
|
|||||||
else:
|
else:
|
||||||
copy_qt_libs(qt_deploy_prefix, QT_INSTALL_BINS, QT_INSTALL_LIBS, QT_INSTALL_PLUGINS, QT_INSTALL_IMPORTS, QT_INSTALL_QML, plugins, imports)
|
copy_qt_libs(qt_deploy_prefix, QT_INSTALL_BINS, QT_INSTALL_LIBS, QT_INSTALL_PLUGINS, QT_INSTALL_IMPORTS, QT_INSTALL_QML, plugins, imports)
|
||||||
copy_translations(install_dir, QT_INSTALL_TRANSLATIONS)
|
copy_translations(install_dir, QT_INSTALL_TRANSLATIONS)
|
||||||
if "LLVM_INSTALL_DIR" in os.environ:
|
if args.llvm_path:
|
||||||
deploy_libclang(install_dir, os.environ["LLVM_INSTALL_DIR"], chrpath_bin)
|
deploy_libclang(install_dir, args.llvm_path, chrpath_bin)
|
||||||
|
|
||||||
if args.elfutils_path:
|
if args.elfutils_path:
|
||||||
deploy_elfutils(install_dir, chrpath_bin, args)
|
deploy_elfutils(install_dir, chrpath_bin, args)
|
||||||
|
Reference in New Issue
Block a user