def generate(params): # prepare data proj_path = params["proj_path"] target_name = params["target_name"] target_config = config.run(proj_path, target_name, params) build_types = target_config["build_types"] version = util.get_version(params, config) source_files = [] dist_folder = os.path.join(proj_path, const.DIR_NAME_DIST, target_name) # add folders for build_type in build_types: source_files.append( { "path": os.path.join(dist_folder, build_type), "arcname": build_type, } ) # generate pack.generate( proj_path=proj_path, target_name=target_name, version=version, source_files=source_files, )
def run(params): proj_path = params["proj_path"] target_name = params["target_name"] target_config = config.run(proj_path, target_name, params) archs = target_config["archs"] build_types = target_config["build_types"] if archs and len(archs) > 0: for arch in archs: for build_type in build_types: log.info("Building for: {0}/{1}...".format( arch["conan_arch"], build_type)) # conan install build_dir = os.path.join( proj_path, const.DIR_NAME_BUILD, target_name, build_type, arch["conan_arch"], const.DIR_NAME_BUILD_CONAN, ) file.remove_dir(build_dir) file.create_dir(build_dir) run_args = [ "conan", "install", os.path.join( proj_path, const.DIR_NAME_FILES, const.DIR_NAME_FILES_TARGETS, target_name, const.DIR_NAME_FILES_TARGET_CONAN, const.DIR_NAME_FILES_TARGET_CONAN_RECIPE, const.FILE_NAME_FILES_TARGET_CONAN_RECIPE_CONANFILE_PY, ), "--profile", arch["conan_profile"], "-s", "arch={0}".format(arch["conan_arch"]), "-s", "os.version={0}".format(arch["min_version"]), "-s", "build_type={0}".format(build_type), "--build=missing", "--update", ] runner.run(run_args, build_dir) else: log.error( 'Arch list for "{0}" is invalid or empty'.format(target_name))
def run(params): proj_path = params["proj_path"] target_name = params["target_name"] target_config = config.run(proj_path, target_name, params) archs = target_config["archs"] build_types = target_config["build_types"] log.info("Packaging...") if archs and len(archs) > 0: for arch in archs: for build_type in build_types: log.info("Copying for: {0}/{1}...".format( arch["conan_arch"], build_type)) # create folders dist_dir = os.path.join( proj_path, const.DIR_NAME_DIST, target_name, build_type, arch["conan_arch"], ) file.remove_dir(dist_dir) file.create_dir(dist_dir) build_dir = os.path.join( proj_path, const.DIR_NAME_BUILD, target_name, build_type, arch["conan_arch"], const.DIR_NAME_BUILD_TARGET, "bin", ) # copy files file.copy_all_inside(build_dir, dist_dir) log.ok() else: log.error( 'Arch list for "{0}" is invalid or empty'.format(target_name))
def run(params): proj_path = params["proj_path"] target_name = params["target_name"] target_config = config.run(proj_path, target_name, params) archs = target_config["archs"] build_types = target_config["build_types"] param_dry_run = util.list_has_key(params["args"], "--dry-run") if param_dry_run: log.info("Running in dry mode...") if archs and len(archs) > 0: for arch in archs: for build_type in build_types: log.info( "Building for: {0}/{1}...".format(arch["conan_arch"], build_type) ) # conan build build_dir = os.path.join( proj_path, const.DIR_NAME_BUILD, target_name, build_type, arch["conan_arch"], const.DIR_NAME_BUILD_TARGET, ) clean_build_dir = True if param_dry_run and os.path.isdir(build_dir): clean_build_dir = False if clean_build_dir: file.remove_dir(build_dir) file.create_dir(build_dir) run_args = [ "conan", "build", os.path.join( proj_path, const.DIR_NAME_FILES, const.DIR_NAME_FILES_TARGETS, target_name, const.DIR_NAME_FILES_TARGET_CONAN, const.DIR_NAME_FILES_TARGET_CONAN_RECIPE, const.FILE_NAME_FILES_TARGET_CONAN_RECIPE_CONANFILE_PY, ), "--source-folder", os.path.join( proj_path, const.DIR_NAME_FILES, const.DIR_NAME_FILES_TARGETS, target_name, const.DIR_NAME_FILES_TARGET_CMAKE, ), "--build-folder", os.path.join( proj_path, const.DIR_NAME_BUILD, target_name, build_type, arch["conan_arch"], const.DIR_NAME_BUILD_TARGET, ), "--install-folder", os.path.join( proj_path, const.DIR_NAME_BUILD, target_name, build_type, arch["conan_arch"], const.DIR_NAME_BUILD_CONAN, ), ] runner.run(run_args, build_dir) # copy assets if "assets_dir" in target_config: assets_dir = target_config["assets_dir"] assets_dir = os.path.join(proj_path, assets_dir) if os.path.isdir(assets_dir): build_assets_dir = os.path.join( build_dir, "bin", os.path.basename(assets_dir) ) file.remove_dir(build_assets_dir) file.copy_dir(assets_dir, build_assets_dir, symlinks=True) else: log.error('Arch list for "{0}" is invalid or empty'.format(target_name))