def install_qt(args): download_packages_work = ThreadedWork('get and extract Qt 5 binaries') need_to_install_qt = not os.path.lexists(args.qt_path) if need_to_install_qt: download_packages_work.addTaskObject( bldinstallercommon.create_qt_download_task(args.qt_modules, args.qt_path, args.temp_path, args)) # run task if needed if download_packages_work.taskNumber != 0: download_packages_work.run() bldinstallercommon.patch_qt(args.qt_path)
def create_qt_download_task(module_urls, target_qt5_path, temp_path, caller_arguments): qt_task = Task('download and extract Qt to "{0}"'.format(target_qt5_path)) download_work = ThreadedWork( 'download Qt packages to "{0}"'.format(temp_path)) unzip_task = Task('extracting packages to "{0}"'.format(target_qt5_path)) # add Qt modules for module_url in module_urls: if is_content_url_valid(module_url): (download_task, extract_task) = create_download_and_extract_tasks( module_url, target_qt5_path, temp_path, caller_arguments) download_work.addTaskObject(download_task) unzip_task.addFunction(extract_task.do) else: print('warning: could not find "{0}" for download'.format( module_url)) # add icu, d3dcompiler, opengl32, openssl target_path = os.path.join(target_qt5_path, 'bin' if is_win_platform() else 'lib') if not is_mac_platform() and hasattr(caller_arguments, 'icu7z') and caller_arguments.icu7z: (download_task, extract_task) = create_download_and_extract_tasks( caller_arguments.icu7z, target_path, temp_path, caller_arguments) download_work.addTaskObject(download_task) unzip_task.addFunction(extract_task.do) if is_win_platform(): if hasattr(caller_arguments, 'd3dcompiler7z') and caller_arguments.d3dcompiler7z: (download_task, extract_task) = create_download_and_extract_tasks( caller_arguments.d3dcompiler7z, target_path, temp_path, caller_arguments) download_work.addTaskObject(download_task) unzip_task.addFunction(extract_task.do) if hasattr(caller_arguments, 'opengl32sw7z') and caller_arguments.opengl32sw7z: (download_task, extract_task) = create_download_and_extract_tasks( caller_arguments.opengl32sw7z, target_path, temp_path, caller_arguments) download_work.addTaskObject(download_task) unzip_task.addFunction(extract_task.do) if hasattr(caller_arguments, 'openssl7z') and caller_arguments.openssl7z: (download_task, extract_task) = create_download_and_extract_tasks( caller_arguments.openssl7z, target_path, temp_path, caller_arguments) download_work.addTaskObject(download_task) unzip_task.addFunction(extract_task.do) qt_task.addFunction(download_work.run) qt_task.addFunction(unzip_task.do) return qt_task
def create_qt_download_task(module_urls, target_qt5_path, temp_path, caller_arguments): qt_task = Task('download and extract Qt to "{0}"'.format(target_qt5_path)) download_work = ThreadedWork('download Qt packages to "{0}"'.format(temp_path)) unzip_task = Task('extracting packages to "{0}"'.format(target_qt5_path)) # add Qt modules for module_url in module_urls: if is_content_url_valid(module_url): (download_task, extract_task) = create_download_and_extract_tasks(module_url, target_qt5_path, temp_path, caller_arguments) download_work.addTaskObject(download_task) unzip_task.addFunction(extract_task.do) else: print('warning: could not find "{0}" for download'.format(module_url)) # add icu, d3dcompiler, opengl32, openssl target_path = os.path.join(target_qt5_path, 'bin' if is_win_platform() else 'lib') if not is_mac_platform() and hasattr(caller_arguments, 'icu7z') and caller_arguments.icu7z: (download_task, extract_task) = create_download_and_extract_tasks(caller_arguments.icu7z, target_path, temp_path, caller_arguments) download_work.addTaskObject(download_task) unzip_task.addFunction(extract_task.do) if is_win_platform(): if hasattr(caller_arguments, 'd3dcompiler7z') and caller_arguments.d3dcompiler7z: (download_task, extract_task) = create_download_and_extract_tasks(caller_arguments.d3dcompiler7z, target_path, temp_path, caller_arguments) download_work.addTaskObject(download_task) unzip_task.addFunction(extract_task.do) if hasattr(caller_arguments, 'opengl32sw7z') and caller_arguments.opengl32sw7z: (download_task, extract_task) = create_download_and_extract_tasks(caller_arguments.opengl32sw7z, target_path, temp_path, caller_arguments) download_work.addTaskObject(download_task) unzip_task.addFunction(extract_task.do) if hasattr(caller_arguments, 'openssl7z') and caller_arguments.openssl7z: (download_task, extract_task) = create_download_and_extract_tasks(caller_arguments.openssl7z, target_path, temp_path, caller_arguments) download_work.addTaskObject(download_task) unzip_task.addFunction(extract_task.do) qt_task.addFunction(download_work.run) qt_task.addFunction(unzip_task.do) return qt_task
bldinstallercommon.remove_tree(qtCreatorBuildDirectory) bldinstallercommon.remove_tree(qtCreatorInstallDirectory) if bldinstallercommon.is_win_platform(): bldinstallercommon.remove_tree(cdbextBuildDirectory) bldinstallercommon.remove_tree(cdbextInstallDirectory) bldinstallercommon.remove_tree(wininterruptBuildDirectory) bldinstallercommon.remove_tree(wininterruptInstallDirectory) bldinstallercommon.remove_tree(tempPath) qmakeBinary = qmake_binary(callerArguments.qt5path) download_packages_work = ThreadedWork("get and extract Qt 5 binaries") need_to_install_qt = not os.path.lexists(callerArguments.qt5path) if need_to_install_qt: download_packages_work.addTaskObject( bldinstallercommon.create_qt_download_task( callerArguments.qt_modules, callerArguments.qt5path, tempPath, callerArguments)) # run get Qt 5 tasks if download_packages_work.taskNumber != 0: download_packages_work.run() if need_to_install_qt: patch_qt_pri_files(callerArguments.qt5path) bldinstallercommon.patch_qt(callerArguments.qt5path) ### lets start building environment = get_common_environment(callerArguments.qt5path, callerArguments) environment["INSTALL_BASENAME"] = "qt-creator"
def build_plugins(caller_arguments): (basename, _) = os.path.splitext(os.path.basename(caller_arguments.target_7zfile)) Paths = collections.namedtuple('Paths', [ 'qt5', 'temp', 'qtc_dev', 'qtc_build', 'source', 'build', 'target', 'dev_target' ]) paths = Paths(qt5=os.path.join(caller_arguments.build_path, basename + '-qt5'), temp=os.path.join(caller_arguments.build_path, basename + '-temp'), qtc_dev=caller_arguments.qtc_dev, qtc_build=caller_arguments.qtc_build, source=caller_arguments.plugin_path, build=os.path.join(caller_arguments.build_path, basename + '-build'), target=os.path.join(caller_arguments.build_path, basename + '-target'), dev_target=os.path.join(caller_arguments.build_path, basename + '-tempdev')) if caller_arguments.clean: bldinstallercommon.remove_tree(paths.qt5) bldinstallercommon.remove_tree(paths.temp) if caller_arguments.qtc_dev_url: bldinstallercommon.remove_tree(paths.qtc_dev) if caller_arguments.qtc_build_url: bldinstallercommon.remove_tree(paths.qtc_build) bldinstallercommon.remove_tree(paths.build) bldinstallercommon.remove_tree(paths.target) bldinstallercommon.remove_tree(paths.dev_target) download_packages_work = ThreadedWork( 'Get and extract all needed packages') need_to_install_qt = not os.path.exists(paths.qt5) if need_to_install_qt: download_packages_work.addTaskObject( bldinstallercommon.create_qt_download_task( caller_arguments.qt_modules, paths.qt5, paths.temp, caller_arguments)) if caller_arguments.qtc_build_url and not os.path.exists(paths.qtc_build): download_packages_work.addTaskObject( bldinstallercommon.create_download_extract_task( caller_arguments.qtc_build_url, paths.qtc_build, paths.temp, caller_arguments)) if caller_arguments.qtc_dev_url and not os.path.exists(paths.qtc_dev): download_packages_work.addTaskObject( bldinstallercommon.create_download_extract_task( caller_arguments.qtc_dev_url, paths.qtc_dev, paths.temp, caller_arguments)) if download_packages_work.taskNumber != 0: download_packages_work.run() if need_to_install_qt: patch_qt_pri_files(paths.qt5) bldinstallercommon.patch_qt(paths.qt5) # qmake arguments qmake_filepath = qmake_binary(paths.qt5) common_qmake_arguments = get_common_qmake_arguments( paths, caller_arguments) # environment environment = get_common_environment(paths.qt5, caller_arguments) # build plugins print('------------') print('Building plugin "{0}" in "{1}" ...'.format(paths.source, paths.build)) qmake_command = [qmake_filepath] qmake_command.append(paths.source) qmake_command.extend(common_qmake_arguments) runCommand(qmake_command, paths.build, callerArguments=caller_arguments, init_environment=environment) runBuildCommand(currentWorkingDirectory=paths.build, callerArguments=caller_arguments, init_environment=environment) runBuildCommand("docs", currentWorkingDirectory=paths.build, callerArguments=caller_arguments, init_environment=environment) # run custom deploy script if caller_arguments.deploy_command: custom_deploy_command = caller_arguments.deploy_command + [ paths.qt5, paths.target ] runCommand(custom_deploy_command, currentWorkingDirectory=paths.target) if caller_arguments.deploy: runInstallCommand(["deploy"], currentWorkingDirectory=paths.build, callerArguments=caller_arguments, init_environment=environment) sevenzip_filepath = '7z.exe' if bldinstallercommon.is_win_platform( ) else '7z' if hasattr(caller_arguments, 'sevenzippath') and caller_arguments.sevenzippath: sevenzip_filepath = os.path.join(caller_arguments.sevenzippath, sevenzip_filepath) # deploy and zip up deploy_command = [ 'python', '-u', os.path.join(paths.qtc_dev, 'scripts', 'packagePlugins.py'), '--qmake_binary', os.path.join(paths.qt5, 'bin', 'qmake'), '--7z', sevenzip_filepath ] deploy_command.extend([paths.target, caller_arguments.target_7zfile]) runCommand(deploy_command, paths.temp, callerArguments=caller_arguments, init_environment=environment) if caller_arguments.target_dev7zfile: dev_command = [ 'python', '-u', os.path.join(paths.qtc_dev, 'scripts', 'createDevPackage.py'), '--source', paths.source, '--build', paths.build, '--7z', sevenzip_filepath, '--7z_out', caller_arguments.target_dev7zfile, paths.dev_target ] runCommand(dev_command, paths.temp, callerArguments=caller_arguments, init_environment=environment)
tempPath = os.path.abspath(os.path.join(os.path.dirname(__file__), 'temp')) # clone module repo if callerArguments.module_url != '': bldinstallercommon.init_common_module(os.getcwd()) bldinstallercommon.create_dirs(MODULE_SRC_DIR) bldinstallercommon.clone_repository( callerArguments.module_url, callerArguments.module_branch, os.path.join(os.path.dirname(__file__), MODULE_SRC_DIR_NAME)) qtModuleSourceDirectory = MODULE_SRC_DIR elif callerArguments.module7z != '': bldinstallercommon.create_dirs(MODULE_SRC_DIR) myGetQtModule = ThreadedWork("get and extract module src") myGetQtModule.addTaskObject( bldinstallercommon.create_download_extract_task( callerArguments.module7z, MODULE_SRC_DIR, tempPath, callerArguments)) myGetQtModule.run() qtModuleSourceDirectory = MODULE_SRC_DIR else: print(("Using local copy of {0}").format(callerArguments.module_name)) qtModuleSourceDirectory = callerArguments.module_dir # install directory qtModuleInstallDirectory = qtModuleSourceDirectory + '_install' if bldinstallercommon.is_win_platform(): # rip out drive letter from path on Windows qtModuleInstallDirectory = qtModuleInstallDirectory[2:] # check whether this is a QNX build if any('qnx' in qt5_url.lower() for qt5_url in callerArguments.qt5_module_urls):
bldinstallercommon.remove_tree(qtCreatorBuildDirectory) bldinstallercommon.remove_tree(qtCreatorInstallDirectory) bldinstallercommon.remove_tree(tempPath) if not os.path.lexists(callerArguments.qt5path) and not callerArguments.qt_modules: parser.print_help() print(("error: You have to pass the --qt-module argument if the {0} does not exist" + os.linesep + os.linesep).format(callerArguments.qt5path)) sys.exit(1) qmakeBinary = qmake_binary(callerArguments.qt5path) download_packages_work = ThreadedWork("get and extract Qt 5 binaries") need_to_install_qt = not os.path.lexists(callerArguments.qt5path) if need_to_install_qt: download_packages_work.addTaskObject(bldinstallercommon.create_qt_download_task( callerArguments.qt_modules, callerArguments.qt5path, tempPath, callerArguments)) # run get Qt 5 tasks if download_packages_work.taskNumber != 0: download_packages_work.run() if need_to_install_qt: patch_qt_pri_files(callerArguments.qt5path) bldinstallercommon.patch_qt(callerArguments.qt5path) ### lets start building environment = get_common_environment(callerArguments.qt5path, callerArguments) environment["INSTALL_BASENAME"] = "qt-creator" environment["INSTALLER_ARCHIVE"] = "qtcreator.7z" if callerArguments.debug:
def build_plugins(caller_arguments): (basename,_) = os.path.splitext(os.path.basename(caller_arguments.target_7zfile)) Paths = collections.namedtuple('Paths', ['qt5', 'temp', 'qtc_dev', 'qtc_build', 'source', 'build', 'target', 'dev_target']) paths = Paths(qt5 = os.path.join(caller_arguments.build_path, basename + '-qt5'), temp = os.path.join(caller_arguments.build_path, basename + '-temp'), qtc_dev = caller_arguments.qtc_dev, qtc_build = caller_arguments.qtc_build, source = caller_arguments.plugin_path, build = os.path.join(caller_arguments.build_path, basename + '-build'), target = os.path.join(caller_arguments.build_path, basename + '-target'), dev_target = os.path.join(caller_arguments.build_path, basename + '-tempdev')) if caller_arguments.clean: bldinstallercommon.remove_tree(paths.qt5) bldinstallercommon.remove_tree(paths.temp) if caller_arguments.qtc_dev_url: bldinstallercommon.remove_tree(paths.qtc_dev) if caller_arguments.qtc_build_url: bldinstallercommon.remove_tree(paths.qtc_build) bldinstallercommon.remove_tree(paths.build) bldinstallercommon.remove_tree(paths.target) bldinstallercommon.remove_tree(paths.dev_target) download_packages_work = ThreadedWork('Get and extract all needed packages') need_to_install_qt = not os.path.exists(paths.qt5) if need_to_install_qt: download_packages_work.addTaskObject(bldinstallercommon.create_qt_download_task( caller_arguments.qt_modules, paths.qt5, paths.temp, caller_arguments)) if caller_arguments.qtc_build_url and not os.path.exists(paths.qtc_build): download_packages_work.addTaskObject(bldinstallercommon.create_download_extract_task(caller_arguments.qtc_build_url, paths.qtc_build, paths.temp, caller_arguments)) if caller_arguments.qtc_dev_url and not os.path.exists(paths.qtc_dev): download_packages_work.addTaskObject(bldinstallercommon.create_download_extract_task(caller_arguments.qtc_dev_url, paths.qtc_dev, paths.temp, caller_arguments)) if download_packages_work.taskNumber != 0: download_packages_work.run() if need_to_install_qt: patch_qt_pri_files(paths.qt5) bldinstallercommon.patch_qt(paths.qt5) # qmake arguments qmake_filepath = qmake_binary(paths.qt5) common_qmake_arguments = get_common_qmake_arguments(paths, caller_arguments) # environment environment = get_common_environment(paths.qt5, caller_arguments) # build plugins print('------------') print('Building plugin "{0}" in "{1}" ...'.format(paths.source, paths.build)) qmake_command = [qmake_filepath] qmake_command.append(paths.source) qmake_command.extend(common_qmake_arguments) runCommand(qmake_command, paths.build, callerArguments = caller_arguments, init_environment = environment) runBuildCommand(currentWorkingDirectory = paths.build, callerArguments = caller_arguments, init_environment = environment) # run custom deploy script if caller_arguments.deploy_command: custom_deploy_command = caller_arguments.deploy_command + [paths.qt5, paths.target] runCommand(custom_deploy_command, currentWorkingDirectory = paths.target) sevenzip_filepath = '7z.exe' if bldinstallercommon.is_win_platform() else '7z' if hasattr(caller_arguments, 'sevenzippath') and caller_arguments.sevenzippath: sevenzip_filepath = os.path.join(caller_arguments.sevenzippath, sevenzip_filepath) # deploy and zip up deploy_command = ['python', '-u', os.path.join(paths.qtc_dev, 'scripts', 'packagePlugins.py'), '--qmake_binary', os.path.join(paths.qt5, 'bin', 'qmake'), '--7z', sevenzip_filepath] deploy_command.extend([paths.target, caller_arguments.target_7zfile]) runCommand(deploy_command, paths.temp, callerArguments = caller_arguments, init_environment = environment) if caller_arguments.target_dev7zfile: dev_command = ['python', '-u', os.path.join(paths.qtc_dev, 'scripts', 'createDevPackage.py'), '--source', paths.source, '--build', paths.build, '--7z', sevenzip_filepath, '--7z_out', caller_arguments.target_dev7zfile, paths.dev_target] runCommand(dev_command, paths.temp, callerArguments = caller_arguments, init_environment = environment)
if not callerArguments.module_name: callerArguments.module_name = os.environ['MODULE_NAME'] tempPath = os.path.abspath(os.path.join(os.path.dirname(__file__), 'temp')) # clone module repo if callerArguments.module_url != '': bldinstallercommon.init_common_module(os.getcwd()) bldinstallercommon.create_dirs(MODULE_SRC_DIR) bldinstallercommon.clone_repository(callerArguments.module_url, callerArguments.module_branch, os.path.join(os.path.dirname(__file__), MODULE_SRC_DIR_NAME)) qtModuleSourceDirectory = MODULE_SRC_DIR elif callerArguments.module7z != '': bldinstallercommon.create_dirs(MODULE_SRC_DIR) myGetQtModule = ThreadedWork("get and extract module src") myGetQtModule.addTaskObject(bldinstallercommon.create_download_extract_task(callerArguments.module7z, MODULE_SRC_DIR, tempPath, callerArguments)) myGetQtModule.run() qtModuleSourceDirectory = MODULE_SRC_DIR else: print(("Using local copy of {0}").format(callerArguments.module_name)) qtModuleSourceDirectory = callerArguments.module_dir # install directory qtModuleInstallDirectory = qtModuleSourceDirectory + '_install' if bldinstallercommon.is_win_platform(): # rip out drive letter from path on Windows qtModuleInstallDirectory = qtModuleInstallDirectory[2:] # check whether this is a QNX build if any('qnx' in qt5_url.lower() for qt5_url in callerArguments.qt5_module_urls): # apply the workaround from QTBUG-38555 qtModuleInstallDirectory = qtModuleInstallDirectory.replace('\\','/').replace('/', '\\', 1)