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:
Eike Ziller
2020-06-17 15:15:18 +02:00
parent 5b53ac9661
commit bc4c2f8a15
4 changed files with 192 additions and 103 deletions

View File

@@ -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)
execute_process(
COMMAND ${{ steps.cmake_and_ninja.outputs.cmake_dir }}/cmake --build build
RESULT_VARIABLE result
)
if ("x${{ matrix.config.environment_script }}" STREQUAL "x")
set(CDB_OPTION "--no-cdb")
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)
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: 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
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/qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
- name: Upload Devel
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/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:
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

View File

@@ -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():
if not os.environ.get('CC') and not os.environ.get('CXX'):
cmake_args += ['-DCMAKE_C_COMPILER=cl',
'-DCMAKE_CXX_COMPILER=cl',
'-DBUILD_EXECUTABLE_WIN32INTERRUPT=OFF',
'-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()

View File

@@ -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

View File

@@ -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
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)