Exemplo n.º 1
0
def main():
    arguments = parse_arguments()
    tempdir_base = tempfile.mkdtemp()
    tempdir = os.path.join(tempdir_base,
                           os.path.basename(arguments.binary_directory))
    try:
        common.copytree(arguments.binary_directory,
                        tempdir,
                        symlinks=True,
                        ignore=common.is_debug)
        if common.is_mac_platform():
            app_path = [
                app for app in os.listdir(tempdir) if app.endswith('.app')
            ][0]
            common.codesign(os.path.join(tempdir, app_path))
        os.symlink('/Applications', os.path.join(tempdir, 'Applications'))
        shutil.copy(
            os.path.join(arguments.source_directory, 'LICENSE.GPL3-EXCEPT'),
            tempdir)
        dmg_cmd = [
            'hdiutil', 'create', '-srcfolder', tempdir, '-volname',
            arguments.dmg_volumename, '-format', 'UDBZ',
            arguments.target_diskimage, '-ov', '-scrub', '-size', '1500m',
            '-verbose'
        ]
        subprocess.check_call(dmg_cmd)
        # sleep a few seconds to make sure disk image is fully unmounted etc
        time.sleep(5)
    finally:
        shutil.rmtree(tempdir_base)
Exemplo n.º 2
0
def deploy_qt(args, paths):
    if common.is_mac_platform():
        script = os.path.join(paths.src, 'scripts', 'deployqtHelper_mac.sh')
        app = os.path.join(paths.install, args.app_target)
        # TODO this is wrong if Qt is set up non-standard
        # TODO integrate deployqtHelper_mac.sh into deployqt.py, finally
        qt_bins = os.path.join(paths.qt, 'bin')
        qt_translations = os.path.join(paths.qt, 'translations')
        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,
                                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)
Exemplo n.º 3
0
def package_qtcreator(args, paths):
    if not args.no_zip:
        common.check_print_call([
            '7z', 'a', '-mmt2',
            os.path.join(paths.result, 'qtcreator.7z'), '*'
        ], paths.install)
        common.check_print_call([
            '7z', 'a', '-mmt2',
            os.path.join(paths.result, 'qtcreator_dev.7z'), '*'
        ], paths.dev_install)
        if common.is_windows_platform():
            common.check_print_call([
                '7z', 'a', '-mmt2',
                os.path.join(paths.result, 'wininterrupt.7z'), '*'
            ], paths.wininterrupt_install)
            if not args.no_cdb:
                common.check_print_call([
                    '7z', 'a', '-mmt2',
                    os.path.join(paths.result, 'qtcreatorcdbext.7z'), '*'
                ], paths.qtcreatorcdbext_install)

    if common.is_mac_platform():
        if args.keychain_unlock_script:
            common.check_print_call([args.keychain_unlock_script],
                                    paths.install)
        if not args.no_dmg:
            common.check_print_call([
                'python', '-u',
                os.path.join(paths.src, 'scripts', 'makedmg.py'),
                'qt-creator.dmg', 'Qt Creator', paths.src, paths.install
            ], paths.result)
Exemplo n.º 4
0
def get_args():
    parser = argparse.ArgumentParser(description='Deploy Qt Creator dependencies for packaging')
    parser.add_argument('-i', '--ignore-errors', help='For backward compatibility',
                        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 (or the app bundle on macOS)')
    parser.add_argument('qmake_binary', help='Path to qmake binary')

    args = parser.parse_args()

    args.qtcreator_binary = os.path.abspath(args.qtcreator_binary)
    if common.is_mac_platform():
        if not args.qtcreator_binary.lower().endswith(".app"):
            args.qtcreator_binary = args.qtcreator_binary + ".app"
        check = os.path.isdir
    else:
        check = os.path.isfile
        if common.is_windows_platform() and not args.qtcreator_binary.lower().endswith(".exe"):
            args.qtcreator_binary = args.qtcreator_binary + ".exe"

    if not check(args.qtcreator_binary):
        print('Cannot find Qt Creator binary.')
        sys.exit(1)

    args.qmake_binary = which(args.qmake_binary)
    if not args.qmake_binary:
        print('Cannot find qmake binary.')
        sys.exit(2)

    return args
Exemplo n.º 5
0
def get_arguments():
    parser = argparse.ArgumentParser(description='Build Qt Creator for packaging')
    parser.add_argument('--src', help='path to sources', required=True)
    parser.add_argument('--build', help='path that should be used for building', required=True)
    parser.add_argument('--qt-path', help='Path to Qt', required=True)

    parser.add_argument('--build-type', help='Build type to pass to CMake (defaults to RelWithDebInfo)',
                        default='RelWithDebInfo')

    # clang codemodel
    parser.add_argument('--llvm-path', help='Path to LLVM installation for Clang code model',
                        default=os.environ.get('LLVM_INSTALL_DIR'))

    # perfparser
    parser.add_argument('--elfutils-path',
                        help='Path to elfutils installation for use by perfprofiler (Windows, Linux)')

    # signing
    parser.add_argument('--keychain-unlock-script',
                        help='Path to script for unlocking the keychain used for signing (macOS)')

    # cdbextension
    parser.add_argument('--python-path',
                        help='Path to python libraries for use by cdbextension (Windows)')

    parser.add_argument('--app-target', help='File name of the executable / app bundle',
                        default=('Qt Creator.app' if common.is_mac_platform()
                                 else 'qtcreator'))
    parser.add_argument('--python3', help='File path to python3 executable for generating translations',
                        default=default_python3())

    parser.add_argument('--no-cdb',
                        help='Skip cdbextension and the python dependency packaging step (Windows)',
                        action='store_true', default=(not common.is_windows_platform()))
    parser.add_argument('--no-docs', help='Skip documentation generation',
                        action='store_true', default=False)
    parser.add_argument('--no-build-date', help='Does not show build date in about dialog, for reproducible builds',
                        action='store_true', default=False)
    parser.add_argument('--no-dmg', help='Skip disk image creation (macOS)',
                        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-path', help='Prepends a CMAKE_PREFIX_PATH to the build',
                        action='append', dest='prefix_paths', default=[])
    parser.add_argument('--add-module-path', help='Prepends a CMAKE_MODULE_PATH to the build',
                        action='append', dest='module_paths', default=[])
    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='')
    args = parser.parse_args()
    args.with_debug_info = args.build_type == 'RelWithDebInfo'
    return args
Exemplo n.º 6
0
def get_arguments():
    parser = argparse.ArgumentParser(
        description='Build Qt Creator for packaging')
    parser.add_argument('--src', help='path to sources', required=True)
    parser.add_argument('--build',
                        help='path that should be used for building',
                        required=True)
    parser.add_argument('--qt-path', help='Path to Qt', required=True)

    parser.add_argument('--debug',
                        help='Enable debug builds',
                        action='store_true',
                        default=False)

    # clang codemodel
    parser.add_argument('--llvm-path',
                        help='Path to LLVM installation for Clang code model',
                        default=os.environ.get('LLVM_INSTALL_DIR'))

    # perfparser
    parser.add_argument(
        '--elfutils-path',
        help=
        'Path to elfutils installation for use by perfprofiler (Windows, Linux)'
    )

    # signing
    parser.add_argument(
        '--keychain-unlock-script',
        help=
        'Path to script for unlocking the keychain used for signing (macOS)')

    # cdbextension
    parser.add_argument(
        '--python-path',
        help='Path to python libraries for use by cdbextension (Windows)')

    parser.add_argument('--app-target',
                        help='File name of the executable / app bundle',
                        default=('Qt Creator.app'
                                 if common.is_mac_platform() else 'qtcreator'))
    parser.add_argument(
        '--python3',
        help='File path to python3 executable for generating translations',
        default=default_python3())

    parser.add_argument(
        '--no-cdb',
        help=
        'Skip cdbextension and the python dependency packaging step (Windows)',
        action='store_true',
        default=(not common.is_windows_platform()))
    parser.add_argument('--no-docs',
                        help='Skip documentation generation',
                        action='store_true',
                        default=False)
    return parser.parse_args()
Exemplo n.º 7
0
def main():
    args = get_args()
    if common.is_mac_platform():
        deploy_mac(args)
        return

    (qt_install_info, qt_install) = get_qt_install_info(args.qmake_binary)

    qtcreator_binary_path = os.path.dirname(args.qtcreator_binary)
    install_dir = os.path.abspath(os.path.join(qtcreator_binary_path, '..'))
    if common.is_linux_platform():
        qt_deploy_prefix = os.path.join(install_dir, 'lib', 'Qt')
    else:
        qt_deploy_prefix = os.path.join(install_dir, 'bin')

    chrpath_bin = None
    if common.is_linux_platform():
        chrpath_bin = which('chrpath')
        if chrpath_bin == None:
            print("Cannot find required binary 'chrpath'.")
            sys.exit(2)

    plugins = [
        'assetimporters', 'accessible', 'codecs', 'designer', 'iconengines',
        'imageformats', 'platformthemes', 'platforminputcontexts', 'platforms',
        'printsupport', 'qmltooling', 'sqldrivers', 'styles',
        'xcbglintegrations', 'wayland-decoration-client',
        'wayland-graphics-integration-client', 'wayland-shell-integration',
        'tls'
    ]

    if common.is_windows_platform():
        global debug_build
        debug_build = is_debug(args.qtcreator_binary)

    if common.is_windows_platform():
        copy_qt_libs(qt_deploy_prefix, qt_install.bin, qt_install.bin,
                     qt_install.plugins, qt_install.qml, plugins)
    else:
        copy_qt_libs(qt_deploy_prefix, qt_install.bin, qt_install.lib,
                     qt_install.plugins, qt_install.qml, plugins)
    copy_translations(install_dir, qt_install.translations)
    if args.llvm_path:
        deploy_libclang(install_dir, args.llvm_path, chrpath_bin)

    if args.elfutils_path:
        deploy_elfutils(install_dir, chrpath_bin, args)
    if not common.is_windows_platform():
        print("fixing rpaths...")
        common.fix_rpaths(install_dir, os.path.join(qt_deploy_prefix, 'lib'),
                          qt_install_info, chrpath_bin)
        add_qt_conf(os.path.join(install_dir, 'libexec', 'qtcreator'),
                    qt_deploy_prefix)  # e.g. for qml2puppet
        add_qt_conf(os.path.join(qt_deploy_prefix, 'bin'),
                    qt_deploy_prefix)  # e.g. qtdiag
    add_qt_conf(os.path.join(install_dir, 'bin'), qt_deploy_prefix)
Exemplo n.º 8
0
def deploy_elfutils(qtc_install_dir, chrpath_bin, args):
    if common.is_mac_platform():
        return

    def lib_name(name, version):
        return ('lib' + name + '.so.' +
                version if common.is_linux_platform() else name + '.dll')

    version = '1'
    libs = ['elf', 'dw']
    elfutils_lib_path = os.path.join(args.elfutils_path, 'lib')
    if common.is_linux_platform():
        install_path = os.path.join(qtc_install_dir, 'lib', 'elfutils')
        backends_install_path = install_path
    elif common.is_windows_platform():
        install_path = os.path.join(qtc_install_dir, 'bin')
        backends_install_path = os.path.join(qtc_install_dir, 'lib',
                                             'elfutils')
        libs.append('eu_compat')
    if not os.path.exists(install_path):
        os.makedirs(install_path)
    if not os.path.exists(backends_install_path):
        os.makedirs(backends_install_path)
    # copy main libs
    libs = [
        os.path.join(elfutils_lib_path, lib_name(lib, version)) for lib in libs
    ]
    for lib in libs:
        print(lib, '->', install_path)
        shutil.copy(lib, install_path)
    # fix rpath
    if common.is_linux_platform():
        relative_path = os.path.relpath(backends_install_path, install_path)
        subprocess.check_call([
            chrpath_bin, '-r',
            os.path.join('$ORIGIN', relative_path),
            os.path.join(install_path, lib_name('dw', version))
        ])
    # copy backend files
    # only non-versioned, we never dlopen the versioned ones
    files = glob(os.path.join(elfutils_lib_path, 'elfutils', '*ebl_*.*'))
    versioned_files = glob(
        os.path.join(elfutils_lib_path, 'elfutils', '*ebl_*.*-*.*.*'))
    unversioned_files = [file for file in files if file not in versioned_files]
    for file in unversioned_files:
        print(file, '->', backends_install_path)
        shutil.copy(file, backends_install_path)
Exemplo n.º 9
0
def main():
    arguments = parse_arguments()
    tempdir_base = tempfile.mkdtemp()
    tempdir = os.path.join(tempdir_base, os.path.basename(arguments.binary_directory))
    try:
        common.copytree(arguments.binary_directory, tempdir, symlinks=True, ignore=common.is_debug)
        if common.is_mac_platform():
            app_path = [app for app in os.listdir(tempdir) if app.endswith('.app')][0]
            common.codesign(os.path.join(tempdir, app_path))
        os.symlink('/Applications', os.path.join(tempdir, 'Applications'))
        shutil.copy(os.path.join(arguments.source_directory, 'LICENSE.GPL3-EXCEPT'), tempdir)
        dmg_cmd = ['hdiutil', 'create', '-srcfolder', tempdir, '-volname', arguments.dmg_volumename,
            '-format', 'UDBZ', arguments.target_diskimage, '-ov', '-scrub', '-size', '1g', '-verbose']
        subprocess.check_call(dmg_cmd)
        # sleep a few seconds to make sure disk image is fully unmounted etc
        time.sleep(5)
    finally:
        shutil.rmtree(tempdir_base)
Exemplo n.º 10
0
def package_qtcreator(args, paths):
    if not args.no_zip:
        if not args.no_qtcreator:
            common.check_print_call([
                '7z', 'a', '-mmt' + args.zip_threads,
                os.path.join(paths.result,
                             'qtcreator' + args.zip_infix + '.7z'),
                zipPatternForApp(paths)
            ], paths.install)
            common.check_print_call([
                '7z', 'a', '-mmt' + args.zip_threads,
                os.path.join(paths.result,
                             'qtcreator' + args.zip_infix + '_dev.7z'), '*'
            ], paths.dev_install)
            if args.with_debug_info:
                common.check_print_call([
                    '7z', 'a', '-mmt' + args.zip_threads,
                    os.path.join(paths.result, 'qtcreator' + args.zip_infix +
                                 '-debug.7z'), '*'
                ], paths.debug_install)
        if common.is_windows_platform():
            common.check_print_call([
                '7z', 'a', '-mmt' + args.zip_threads,
                os.path.join(paths.result,
                             'wininterrupt' + args.zip_infix + '.7z'), '*'
            ], paths.wininterrupt_install)
            if not args.no_cdb:
                common.check_print_call([
                    '7z', 'a', '-mmt' + args.zip_threads,
                    os.path.join(paths.result, 'qtcreatorcdbext' +
                                 args.zip_infix + '.7z'), '*'
                ], paths.qtcreatorcdbext_install)

    if common.is_mac_platform() and not args.no_dmg and not args.no_qtcreator:
        if args.keychain_unlock_script:
            common.check_print_call([args.keychain_unlock_script],
                                    paths.install)
        common.check_print_call([
            'python', '-u',
            os.path.join(paths.src, 'scripts', 'makedmg.py'), 'qt-creator' +
            args.zip_infix + '.dmg', 'Qt Creator', paths.src, paths.install
        ], paths.result)
Exemplo n.º 11
0
def deploy_qt(args, paths):
    if common.is_mac_platform():
        script = os.path.join(paths.src, 'scripts', 'deployqtHelper_mac.sh')
        app = os.path.join(paths.install, args.app_target)
        # TODO this is wrong if Qt is set up non-standard
        # TODO integrate deployqtHelper_mac.sh into deployqt.py, finally
        qt_bins = os.path.join(paths.qt, 'bin')
        qt_translations = os.path.join(paths.qt, 'translations')
        qt_plugins = os.path.join(paths.qt, 'plugins')
        qt_imports = os.path.join(paths.qt, 'imports')
        qt_qml = os.path.join(paths.qt, 'qml')
        common.check_print_call([
            script, app, qt_bins, qt_translations, qt_plugins, qt_imports,
            qt_qml
        ], paths.build)
    else:
        exe = os.path.join(paths.install, 'bin', args.app_target)
        common.check_print_call([
            'python', '-u',
            os.path.join(paths.src, 'scripts', 'deployqt.py'), '-i', exe,
            os.path.join(paths.qt, 'bin', 'qmake')
        ], paths.build)
Exemplo n.º 12
0
    plugins = ['egldeviceintegrations', 'iconengines', 'imageformats', 'platforms', 'printsupport', 'sqldrivers', 'xcbglintegrations']
    #OPENMV-DIFF#
    imports = ['Qt', 'QtWebKit']

    if common.is_windows_platform():
        global debug_build
        debug_build = is_debug_build(install_dir)

    if common.is_windows_platform():
        copy_qt_libs(qt_deploy_prefix, QT_INSTALL_BINS, QT_INSTALL_PLUGINS, QT_INSTALL_IMPORTS, QT_INSTALL_QML, plugins, imports)
    else:
        copy_qt_libs(qt_deploy_prefix, 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 not common.is_windows_platform():
        print "fixing rpaths..."
        common.fix_rpaths(install_dir, os.path.join(qt_deploy_prefix, 'lib'), qt_install_info, chrpath_bin)
        #OPENMV-DIFF#
        #add_qt_conf(os.path.join(install_dir, 'libexec', 'qtcreator'), qt_deploy_prefix) # e.g. for qml2puppet
        #OPENMV-DIFF#
    add_qt_conf(os.path.join(install_dir, 'bin'), qt_deploy_prefix)

if __name__ == "__main__":
    if common.is_mac_platform():
        print "Mac OS is not supported by this script, please use macqtdeploy!"
        sys.exit(2)
    else:
        main()
Exemplo n.º 13
0
def zipPatternForApp(paths):
    # workaround for QTBUG-95845
    if not common.is_mac_platform():
        return '*'
    apps = [d for d in os.listdir(paths.install) if d.endswith('.app')]
    return apps[0] if apps else '*'
Exemplo n.º 14
0
               'wayland-graphics-integration-client',
               'wayland-shell-integration',
               ]
    imports = ['Qt', 'QtWebKit']

    if common.is_windows_platform():
        global debug_build
        debug_build = is_debug(qtcreator_binary)

    if common.is_windows_platform():
        copy_qt_libs(qt_deploy_prefix, QT_INSTALL_BINS, QT_INSTALL_BINS, QT_INSTALL_PLUGINS, QT_INSTALL_IMPORTS, QT_INSTALL_QML, plugins, imports)
    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 not common.is_windows_platform():
        print("fixing rpaths...")
        common.fix_rpaths(install_dir, os.path.join(qt_deploy_prefix, 'lib'), qt_install_info, chrpath_bin)
        add_qt_conf(os.path.join(install_dir, 'libexec', 'qtcreator'), qt_deploy_prefix) # e.g. for qml2puppet
        add_qt_conf(os.path.join(qt_deploy_prefix, 'bin'), qt_deploy_prefix) # e.g. qtdiag
    add_qt_conf(os.path.join(install_dir, 'bin'), qt_deploy_prefix)

if __name__ == "__main__":
    if common.is_mac_platform():
        print("macOS is not supported by this script, please use macqtdeploy!")
        sys.exit(2)
    else:
        main()
Exemplo n.º 15
0
def build(args, paths):
    if not os.path.exists(paths.build):
        os.makedirs(paths.build)
    if not os.path.exists(paths.result):
        os.makedirs(paths.result)
    prefix_paths = [os.path.abspath(fp) for fp in args.prefix_paths] + [paths.qt_creator, paths.qt]
    if common.is_mac_platform():
        # --qtc-path may be
        # "/path/Qt Creator.app/Contents/Resources",
        # "/path/Qt Creator.app", or
        # "/path",
        # so add some variants to the prefix path
        prefix_paths += [os.path.join(paths.qt_creator, 'Contents', 'Resources'),
                         os.path.join(paths.qt_creator, 'Qt Creator.app', 'Contents', 'Resources')]
    prefix_paths = [common.to_posix_path(fp) for fp in prefix_paths]
    separate_debug_info_option = 'ON' if args.with_debug_info else 'OFF'
    cmake_args = ['cmake',
                  '-DCMAKE_PREFIX_PATH=' + ';'.join(prefix_paths),
                  '-DCMAKE_BUILD_TYPE=' + args.build_type,
                  '-DQTC_SEPARATE_DEBUG_INFO=' + separate_debug_info_option,
                  '-DCMAKE_INSTALL_PREFIX=' + common.to_posix_path(paths.install),
                  '-G', 'Ninja']

    # force MSVC on Windows, because it looks for GCC in the PATH first,
    # 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']

    # TODO this works around a CMake bug https://gitlab.kitware.com/cmake/cmake/issues/20119
    cmake_args += ['-DBUILD_WITH_PCH=OFF']

    if args.with_docs:
        cmake_args += ['-DWITH_DOCS=ON']

    ide_revision = common.get_commit_SHA(paths.src)
    if ide_revision:
        cmake_args += ['-DQTC_PLUGIN_REVISION=' + ide_revision]
        with open(os.path.join(paths.result, args.name + '.7z.git_sha'), 'w') as f:
            f.write(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:
        build_args += ['--'] + args.make_args
    common.check_print_call(build_args, paths.build)
    if args.with_docs:
        common.check_print_call(['cmake', '--build', '.', '--target', 'docs'], paths.build)
    common.check_print_call(['cmake', '--install', '.', '--prefix', paths.install, '--strip'],
                            paths.build)
    if args.with_docs:
        common.check_print_call(['cmake', '--install', '.', '--prefix', paths.install,
                                 '--component', 'qch_docs'],
                                paths.build)
        common.check_print_call(['cmake', '--install', '.', '--prefix', paths.install,
                                 '--component', 'html_docs'],
                                paths.build)
    if args.deploy:
        common.check_print_call(['cmake', '--install', '.', '--prefix', paths.install,
                                 '--component', 'Dependencies'],
                                paths.build)
    common.check_print_call(['cmake', '--install', '.', '--prefix', paths.dev_install,
                             '--component', 'Devel'],
                            paths.build)
    if args.with_debug_info:
        common.check_print_call(['cmake', '--install', '.', '--prefix', paths.debug_install,
                                 '--component', 'DebugInfo'],
                                 paths.build)
Exemplo n.º 16
0
def package_qtcreator(args, paths):
    if not args.no_zip:
        if not args.no_qtcreator:
            common.check_print_call([
                '7z', 'a', '-mmt' + args.zip_threads,
                os.path.join(paths.result,
                             'qtcreator' + args.zip_infix + '.7z'),
                zipPatternForApp(paths)
            ], paths.install)
            common.check_print_call([
                '7z', 'a', '-mmt' + args.zip_threads,
                os.path.join(paths.result,
                             'qtcreator' + args.zip_infix + '_dev.7z'), '*'
            ], paths.dev_install)
            if args.with_debug_info:
                common.check_print_call([
                    '7z', 'a', '-mmt' + args.zip_threads,
                    os.path.join(paths.result, 'qtcreator' + args.zip_infix +
                                 '-debug.7z'), '*'
                ], paths.debug_install)
        if common.is_windows_platform():
            common.check_print_call([
                '7z', 'a', '-mmt' + args.zip_threads,
                os.path.join(paths.result,
                             'wininterrupt' + args.zip_infix + '.7z'), '*'
            ], paths.wininterrupt_install)
            if not args.no_cdb:
                common.check_print_call([
                    '7z', 'a', '-mmt' + args.zip_threads,
                    os.path.join(paths.result, 'qtcreatorcdbext' +
                                 args.zip_infix + '.7z'), '*'
                ], paths.qtcreatorcdbext_install)

    if common.is_mac_platform() and not args.no_qtcreator:
        if args.keychain_unlock_script:
            common.check_print_call([args.keychain_unlock_script],
                                    paths.install)
        if os.environ.get('SIGNING_IDENTITY'):
            signed_install_path = paths.install + '-signed'
            common.copytree(paths.install, signed_install_path, symlinks=True)
            apps = [
                d for d in os.listdir(signed_install_path)
                if d.endswith('.app')
            ]
            if apps:
                app = apps[0]
                common.codesign(os.path.join(signed_install_path, app))
                if not args.no_zip:
                    common.check_print_call([
                        '7z', 'a', '-mmt' + args.zip_threads,
                        os.path.join(
                            paths.result,
                            'qtcreator' + args.zip_infix + '-signed.7z'), app
                    ], signed_install_path)
        if not args.no_dmg:
            common.check_print_call([
                'python', '-u',
                os.path.join(paths.src, 'scripts', 'makedmg.py'),
                'qt-creator' + args.zip_infix + '.dmg', 'Qt Creator',
                paths.src, paths.install
            ], paths.result)