aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/build_cmake.yml214
-rwxr-xr-xscripts/build.py51
-rw-r--r--scripts/common.py8
-rwxr-xr-xscripts/deployqt.py16
4 files changed, 189 insertions, 100 deletions
diff --git a/.github/workflows/build_cmake.yml b/.github/workflows/build_cmake.yml
index 0145148992..1bbb6f82f4 100644
--- a/.github/workflows/build_cmake.yml
+++ b/.github/workflows/build_cmake.yml
@@ -23,12 +23,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",
@@ -139,7 +141,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 +170,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
@@ -289,7 +310,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 +333,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 +353,29 @@ 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()
+
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}
+ --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 +392,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 +407,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 +476,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 +498,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 +544,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 +554,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
diff --git a/scripts/build.py b/scripts/build.py
index 11b7e0a387..6fd8d976b2 100755
--- a/scripts/build.py
+++ b/scripts/build.py
@@ -89,21 +89,29 @@ def get_arguments():
action='store_true', default=False)
parser.add_argument('--no-zip', help='Skip creation of 7zip files for install and developer package',
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.',
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()
def build_qtcreator(args, paths):
if not os.path.exists(paths.build):
os.makedirs(paths.build)
prefix_paths = [paths.qt]
- if args.llvm_path:
- prefix_paths += [args.llvm_path]
+ if paths.llvm:
+ prefix_paths += [paths.llvm]
if paths.elfutils:
prefix_paths += [paths.elfutils]
build_type = 'Debug' if args.debug else 'Release'
with_docs_str = 'OFF' if args.no_docs 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',
'-DCMAKE_PREFIX_PATH=' + ';'.join(prefix_paths),
'-DCMAKE_BUILD_TYPE=' + build_type,
@@ -112,7 +120,7 @@ def build_qtcreator(args, paths):
'-DBUILD_DEVELOPER_DOCS=' + with_docs_str,
'-DBUILD_EXECUTABLE_SDKTOOL=OFF',
'-DCMAKE_INSTALL_PREFIX=' + paths.install,
- '-DWITH_TESTS=OFF',
+ '-DWITH_TESTS=' + test_option,
'-G', 'Ninja']
if args.python3:
@@ -122,9 +130,10 @@ def build_qtcreator(args, paths):
# 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
if common.is_windows_platform():
- cmake_args += ['-DCMAKE_C_COMPILER=cl',
- '-DCMAKE_CXX_COMPILER=cl',
- '-DBUILD_EXECUTABLE_WIN32INTERRUPT=OFF',
+ if not os.environ.get('CC') and not os.environ.get('CXX'):
+ cmake_args += ['-DCMAKE_C_COMPILER=cl',
+ '-DCMAKE_CXX_COMPILER=cl']
+ cmake_args += ['-DBUILD_EXECUTABLE_WIN32INTERRUPT=OFF',
'-DBUILD_EXECUTABLE_WIN64INTERRUPT=OFF',
'-DBUILD_LIBRARY_QTCREATORCDBEXT=OFF']
if args.python_path:
@@ -142,6 +151,8 @@ def build_qtcreator(args, paths):
'-DIDE_REVISION_STR=' + 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)
build_args = ['cmake', '--build', '.']
if args.make_args:
@@ -200,31 +211,42 @@ def deploy_qt(args, paths):
qt_plugins = os.path.join(paths.qt, 'plugins')
qt_imports = os.path.join(paths.qt, 'imports')
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,
qt_imports, qt_qml],
- paths.build)
+ paths.build,
+ env=env)
else:
cmd_args = ['python', '-u', os.path.join(paths.src, 'scripts', 'deployqt.py'), '-i']
if 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)
common.check_print_call(cmd_args + [exe, os.path.join(paths.qt, 'bin', 'qmake')],
paths.build)
def package_qtcreator(args, paths):
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)
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)
if common.is_windows_platform():
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)
if not args.no_cdb:
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)
if common.is_mac_platform():
@@ -233,7 +255,7 @@ def package_qtcreator(args, paths):
if not args.no_dmg:
common.check_print_call(['python', '-u',
os.path.join(paths.src, 'scripts', 'makedmg.py'),
- 'qt-creator.dmg',
+ 'qt-creator' + args.zip_infix + '.dmg',
'Qt Creator',
paths.src,
paths.install],
@@ -244,7 +266,7 @@ def get_paths(args):
['qt', 'src', 'build',
'install', 'dev_install', 'wininterrupt_install',
'qtcreatorcdbext_install', 'result',
- 'elfutils'])
+ 'elfutils', 'llvm'])
build_path = os.path.abspath(args.build)
install_path = os.path.join(build_path, 'install')
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'),
qtcreatorcdbext_install=os.path.join(install_path, 'qtcreatorcdbext'),
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():
args = get_arguments()
diff --git a/scripts/common.py b/scripts/common.py
index 61923803fb..d033108648 100644
--- a/scripts/common.py
+++ b/scripts/common.py
@@ -40,18 +40,20 @@ def is_linux_platform():
def is_mac_platform():
return sys.platform.startswith('darwin')
-def check_print_call(command, workdir):
+def check_print_call(command, workdir, env=None):
print('------------------------------------------')
print('COMMAND:')
print(' '.join(['"' + c.replace('"', '\\"') + '"' for c in command]))
print('PWD: "' + workdir + '"')
print('------------------------------------------')
- subprocess.check_call(command, cwd=workdir)
+ subprocess.check_call(command, cwd=workdir, env=env)
def get_git_SHA(path):
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:
return None
return None
diff --git a/scripts/deployqt.py b/scripts/deployqt.py
index 4579c92cc3..5d7011e068 100755
--- a/scripts/deployqt.py
+++ b/scripts/deployqt.py
@@ -47,6 +47,10 @@ def get_args():
action='store_true', default=False)
parser.add_argument('--elfutils-path',
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('qmake_binary', help='Path to qmake binary')
@@ -98,8 +102,12 @@ def is_debug(fpath):
# bootstrap exception
if coredebug.search(fpath):
return True
- output = subprocess.check_output(['dumpbin', '/imports', fpath])
- return coredebug.search(output.decode(encoding)) != None
+ try:
+ output = subprocess.check_output(['dumpbin', '/imports', fpath])
+ 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):
ignore_patterns = ['.lib', '.pdb', '.exp', '.ilk']
@@ -369,8 +377,8 @@ def main():
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_translations(install_dir, QT_INSTALL_TRANSLATIONS)
- if "LLVM_INSTALL_DIR" in os.environ:
- deploy_libclang(install_dir, os.environ["LLVM_INSTALL_DIR"], chrpath_bin)
+ if args.llvm_path:
+ deploy_libclang(install_dir, args.llvm_path, chrpath_bin)
if args.elfutils_path:
deploy_elfutils(install_dir, chrpath_bin, args)