def build_bdist_deb(): built_packages = set() def build_deb(package_name, dependencies): dependecies_str = format_dependency_string(dependencies) msg = "Building package {}, with dependencies: {}".format(package_name, dependencies) logger.info(msg) execute( "/usr/bin/python setup.py --command-packages=stdeb.command sdist_dsc --package={}".format( get_deb_package_name(package_name) ) + dependecies_str ) package_dir = sorted([item for item in glob.glob(os.path.join("deb_dist", "*")) if os.path.isdir(item)])[-1] with change_directory_context(package_dir): execute("dpkg-buildpackage -b") def copy_deb_to_parts(egg_dir): from infi.os_info import get_platform_string for debfile in glob.glob(os.path.join(egg_dir, "deb_dist", "*.deb")): basename = os.path.basename(debfile.replace("_all", "-" + get_platform_string())) basename = basename.replace("_amd64", "-" + get_platform_string()) basename = basename.replace("_i386", "-" + get_platform_string()) shutil.copy(debfile, os.path.join("parts", basename)) def build_dependency(package_name): dependencies = get_level1_dependencies(package_name) if package_name != get_name(): deb_package_name = get_deb_package_name(package_name) # if package_in_apt_cache(deb_package_name): # return compressed_egg_path = find_pacakge_in_cache_dist(package_name) temp_dir = tempfile.gettempdir() if compressed_egg_path.endswith(".egg"): compressed_egg_path = convert_egg_to_tar_gz(compressed_egg_path) extracted_egg_dir = os.path.join(temp_dir, os.path.basename(remove_zip_extension(compressed_egg_path))) if os.path.exists(extracted_egg_dir): shutil.rmtree(extracted_egg_dir) unzip(compressed_egg_path, temp_dir) with change_directory_context(extracted_egg_dir): remove_pyc_files() build_deb(package_name, dependencies) copy_deb_to_parts(extracted_egg_dir) built_packages.add(package_name.lower()) else: build_deb(package_name, dependencies) copy_deb_to_parts(".") for package, dep, version_specific_dep in dependencies: if not dep.lower() in built_packages: build_dependency(dep) utils.download_setuptools(os.path.join(".cache", "dist")) utils.download_buildout(os.path.join(".cache", "dist")) build_dependency(get_name())
def install(self): with self.with_most_mortem(): self.delete_non_production_packages_from_cache_dist() self.signtool = self.get_signtool() self.write_bootstrap_for_production() self.write_buildout_configuration_file_for_production() utils.download_buildout(self.get_download_cache_dist()) utils.download_setuptools(self.get_download_cache_dist()) silent_launcher = self.get_silent_launcher() if self.get_add_remove_programs_icon() and not self.icons_already_set(): self.set_icon_in_all_executables_in_project() utils.rcedit.set_icon_in_executable(silent_launcher, self.get_add_remove_programs_icon()) self.mark_icons_set() if self.should_sign_files() and not self.already_signed(): self.sign_all_executables_in_project() self.signtool.sign_file(silent_launcher) self.mark_signed() package = self.build_package(silent_launcher) logger.debug("Built {}".format(package)) if self.should_sign_files(): self.signtool.sign_file(package) logger.debug("Signed {}".format(package)) return [package, ]