Пример #1
0
def make_package(repo, root_dir, abi, login, password):
    common.color_print('Process {} [{}]...'.format(repo['name'], abi), False,
                       'LBLUE')
    repo_dir = os.path.join(root_dir, repo['name'])
    # Create build dir
    build_dir = os.path.join(root_dir, 'build',
                             repo['name'] + '_' + str(int(time.time())))
    os.mkdir(build_dir)
    os.chdir(build_dir)

    # Configure
    run_args = ['cmake']
    run_args.extend(base_opts)
    run_args.append('-DANDROID_ABI=' + abi)
    run_args.extend(repo['args'])
    run_args.append(repo_dir)
    if run((run_args)) == False:
        exit('Failed to configure')

    # Make
    if run(('cmake', '--build', '.', '--config', 'Release', '--',
            '-j8')) == False:
        exit('Failed to make')

    # Pack
    if run(('cpack')) == False:
        exit('Failed to pack')

    # Send to repka
    repka_release.do_work(repo_dir, build_dir, login, password)

    # Delete dir
    shutil.rmtree(build_dir)
Пример #2
0
def organize_sources(dst_name, dst_path=None):
    if dst_path is None:
        os.chdir(os.path.join(os.getcwd(), os.pardir, os.pardir))
        repo_root = os.getcwd()
        dst_path = os.path.join(repo_root, dst_name)

    if not os.path.exists(dst_path):
        exit('Destination path ' + dst_path + ' not exists')
    organize_file_path = os.path.join(dst_path, 'opt', organize_file)
    if not os.path.exists(organize_file_path):
        exit('Organize file ' + organize_file_path + ' not exists')

    sources_dir = args.src
    if not os.path.exists(sources_dir):
        exit('Source path ' + sources_dir + ' not exists')

    mappings = read_mappings(organize_file_path)

    for row in mappings:
        action = row['action']
        exts = row['ext2keep']
        if exts is not None:
            exts = exts.split(',')

        # Process name with [a-c]
        append_values = []
        for i, val in enumerate(exts):
            beg = val.find('[')
            end = val.find(']')
            if beg != -1 and end != -1:
                name_range = val[beg + 1:end]
                range_values = name_range.split('-')
                for i in range(int(range_values[0]), int(range_values[1])):
                    append_values.append(val[:beg] + str(i) + val[end + 1:])

        exts.extend(append_values)

        if row['old'] is None or row['old'] == '':
            from_folder = sources_dir
        else:
            from_folder = os.path.join(sources_dir, row['old'])

        if row['new'] is None or row['new'] == '':
            to_folder = dst_path
        else:
            to_folder = os.path.join(dst_path, row['new'])

        if os.path.exists(from_folder):
            if action == 'skip':
                common.color_print(from_folder + ' ... skip', False, 'LBLUE')
                continue
            else:
                copy_dir(from_folder, to_folder, exts)
                common.color_print(from_folder + ' ... processed', False,
                                   'LYELLOW')

    postprocess_path = os.path.join(dst_path, 'opt', 'postprocess.py')
    if os.path.exists(postprocess_path):
        os.chdir(os.path.join(dst_path, 'opt'))
        run(('python', 'postprocess.py', sources_dir))
Пример #3
0
def git_clone():
    os.chdir(os.path.join(os.getcwd(), os.pardir, os.pardir))
    for repository in repositories:
        common.color_print('clone ' + repository['url'], True, 'LCYAN')
        if sys.platform == 'win32':
            run(('git', 'clone', '--depth', '1', 'https://github.com/nextgis-borsch/' + repository['url'] + '.git'))
        else:
            run(('git', 'clone', '--depth', '1', '[email protected]:nextgis-borsch/' + repository['url'] + '.git'))
Пример #4
0
def git_push():
    os.chdir(os.path.join(os.getcwd(), os.pardir, os.pardir))
    for repository in repositories:
        common.color_print('push ' + repository['url'], True, 'LCYAN')
        try:
            os.chdir(repository['url'])
            run(('git', 'push'))
            os.chdir(os.path.join(os.getcwd(), os.pardir))
        except:
            pass
Пример #5
0
def git_status():
    os.chdir(os.path.join(os.getcwd(), os.pardir, os.pardir))
    for repository in repositories:
        common.color_print('status ' + repository['url'], True, 'LGREEN')
        try:
            os.chdir(repository['url'])
            run(('git', 'status'))
            os.chdir(os.path.join(os.getcwd(), os.pardir))
        except:
            pass
Пример #6
0
def git_commit(message):
    os.chdir(os.path.join(os.getcwd(), os.pardir, os.pardir))
    for repository in repositories:
        common.color_print('commit to ' + repository['url'] + ' with message: ' + message, True, 'LCYAN')
        try:
            os.chdir(repository['url'])
            if run(('git', 'commit', '-a', '-m', message)):
                common.color_print('All is OK', True, 'LMAGENTA')
            os.chdir(os.path.join(os.getcwd(), os.pardir))
        except:
            pass
Пример #7
0
def update_scripts(script):
    os.chdir(os.path.join(os.getcwd(), os.pardir, os.pardir))
    repo_root = os.getcwd()
    script_path = os.path.join(repo_root, 'borsch', 'cmake', script)

    for repository in repositories:
        common.color_print('update ' + repository['url'], False, 'LYELLOW')
        if repository['url'] == 'borsch':
            continue
        repo_cmake_path = os.path.join(repo_root, repository['url'], repository['cmake_dir'], script)
        if os.path.exists(repo_cmake_path):
            shutil.copyfile(script_path, repo_cmake_path)
            common.color_print('OK', True, 'LCYAN')
Пример #8
0
def make_versions():
    os.chdir(os.path.join(os.getcwd(), os.pardir, os.pardir))
    root_dir = os.getcwd()
    for repository in repositories:
        repo_build_dir = os.path.join(root_dir, repository['url'], 'build')
        version_file_path = os.path.join(repo_build_dir, 'version.str')
        if not os.path.exists(version_file_path):
            common.color_print(repository['url'] + ' - unknown', False, 'LRED')
        else:
            with open(version_file_path) as f:
                content = f.readlines()
                version_str = content[0].rstrip()
                common.color_print(repository['url'] + ' - ' + version_str, False, 'LGREEN')
Пример #9
0
def clean_all(repositories):
    os.chdir(os.path.join(os.getcwd(), os.pardir, os.pardir))
    repo_root = os.getcwd()

    for repository in repositories:
        check_os = get_os()

        if check_os in repository['build']:
            common.color_print('remove build for ' + repository['url'], True, 'LRED')
            repo_dir = os.path.join(repo_root, repository['url'])
            repo_build_dir = os.path.join(repo_dir, 'build')

            shutil.rmtree(repo_build_dir)

        os.chdir(repo_root)
Пример #10
0
def make_package(repositories, generator, toolset):
    os.chdir(os.path.join(os.getcwd(), os.pardir, os.pardir))
    repo_root = os.getcwd()

    for repository in repositories:
        run_args = ['cmake']
        run_args.append('-DSUPPRESS_VERBOSE_OUTPUT=ON')
        run_args.append('-DCMAKE_BUILD_TYPE=Release')
        run_args.append('-DSKIP_DEFAULTS=ON')
        build_args = ''
        if sys.platform == 'darwin':
            run_args.append('-DOSX_FRAMEWORK=ON')
            run_args.append('-DREGISTER_PACKAGE=ON')
            run_args.append('-DCMAKE_OSX_SYSROOT=' + mac_os_sdks_path +
                            '/MacOSX.sdk')
            run_args.append('-DCMAKE_OSX_DEPLOYMENT_TARGET=' +
                            max_os_min_version)
            build_args = '-j' + str(multiprocessing.cpu_count())
        elif sys.platform == 'win32':
            if generator is not None:
                run_args.append('-G')
                run_args.append(generator)
                if toolset is not None:
                    run_args.append('-T')
                    run_args.append(toolset)
            run_args.append('-DREGISTER_PACKAGE=ON')
            run_args.append('-DBUILD_SHARED_LIBS=TRUE')
            build_args = '/m:' + str(multiprocessing.cpu_count())

        check_os = get_os()
        if check_os in repository['build']:
            common.color_print('make ' + repository['url'], True, 'LRED')
            repo_dir = os.path.join(repo_root, repository['url'])
            repo_build_dir = os.path.join(repo_dir, 'build')
            repo_inst_dir = os.path.join(repo_dir, install_dir)
            run_args.append('-DCMAKE_INSTALL_PREFIX=' + repo_inst_dir)
            if not os.path.exists(repo_build_dir):
                os.makedirs(repo_build_dir)
            if not os.path.exists(repo_inst_dir):
                os.makedirs(repo_inst_dir)
            os.chdir(repo_build_dir)
            for repo_build_arg in repository['args']:
                run_args.append(repo_build_arg)
            run_args.append('..')
            common.color_print('configure ' + repository['url'], False,
                               'LBLUE')
            if run((run_args)):
                common.color_print('build ' + repository['url'], False,
                                   'LBLUE')
                if run(('cmake', '--build', '.', '--config', 'release', '--',
                        build_args)):
                    common.color_print('install ' + repository['url'], False,
                                       'LBLUE')
                    run(('cmake', '--build', '.', '--config', 'release',
                         '--target', 'install'))
                else:
                    sys.exit("Build %s error!" % repository['url'])
            else:
                sys.exit("Configure %s error!" % repository['url'])
            # Special case to build JPEG12 package
            if repository['url'] == 'lib_jpeg':
                common.color_print(
                    'Special case for ' + repository['url'] + '12', False,
                    'LBLUE')
                common.color_print('make ' + repository['url'] + '12', True,
                                   'LRED')
                repo_build_dir = os.path.join(repo_dir, 'build12')
                if not os.path.exists(repo_build_dir):
                    os.makedirs(repo_build_dir)
                run_args.insert(4, '-DBUILD_JPEG_12=ON')
                if not os.path.exists(repo_build_dir):
                    os.makedirs(repo_build_dir)
                os.chdir(repo_build_dir)
                if run((run_args)):
                    if run(('cmake', '--build', '.', '--config', 'release',
                            '--', build_args)):
                        run(('cmake', '--build', '.', '--config', 'release',
                             '--target', 'install'))

        os.chdir(repo_root)