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