def create_rpm_list_to_copy_in_iso(build_install_option): base_path = os.path.dirname(build_install_option) json_wrapper_option_list = JsonWrapper(build_install_option) option_list_json = json_wrapper_option_list.read() options_sorted = option_list_json.items() packages = [] for install_option in options_sorted: file_path = os.path.join(base_path, install_option[1]["file"]) json_wrapper_package_list = JsonWrapper(file_path) package_list_json = json_wrapper_package_list.read() packages = packages + package_list_json["packages"] return packages
def create_pkg_list_to_copy_to_iso(build_install_option, output_data_path): json_wrapper_option_list = JsonWrapper(build_install_option) option_list_json = json_wrapper_option_list.read() options_sorted = option_list_json.items() packages = [] for install_option in options_sorted: if install_option[0] != "iso": file_path = os.path.join(output_data_path, install_option[1]["file"]) json_wrapper_package_list = JsonWrapper(file_path) package_list_json = json_wrapper_package_list.read() packages = packages + package_list_json["packages"] return packages
def create_rpm_list_to_copy_in_iso(build_install_option, output_data_path): json_wrapper_option_list = JsonWrapper(build_install_option) option_list_json = json_wrapper_option_list.read() options_sorted = option_list_json.items() packages = [] for install_option in options_sorted: if install_option[0] != "iso": file_path = os.path.join(output_data_path, install_option[1]["file"]) json_wrapper_package_list = JsonWrapper(file_path) package_list_json = json_wrapper_package_list.read() packages = packages + package_list_json["packages"] return packages
def main(): usage = os.path.basename(__file__) + "--input-type=[json/pkg/who-needs] --pkg=[pkg_name] --file=<JSON_FILE_NAME> --disp=[tree/list/json]" parser = OptionParser(usage) parser.add_option("-i", "--input-type", dest="input_type", default=DEFAULT_INPUT_TYPE) parser.add_option("-p", "--pkg", dest="pkg") parser.add_option("-f", "--file", dest="json_file", default="packages_minimal.json") parser.add_option("-d", "--disp", dest="display_option", default=DEFAULT_DISPLAY_OPTION) parser.add_option("-s", "--spec-dir", dest="spec_dir", default=SPEC_FILE_DIR) parser.add_option("-t", "--stage-dir", dest="stage_dir", default="../../stage") parser.add_option("-a", "--input-data-dir", dest="input_data_dir", default="../../common/data/") (options, args) = parser.parse_args() if(False == options.input_data_dir.endswith('/')): options.input_data_dir += '/' specDeps = SerializedSpecObjects(options.input_data_dir, options.stage_dir) displayOption = options.display_option abs_path = os.path.abspath(__file__) dir_name = os.path.dirname(abs_path) os.chdir(dir_name) if(options.input_type == "pkg" or options.input_type == "who-needs"): # To display/print package dependencies on console targetName = options.pkg specDeps.readSpecsAndConvertToSerializableObjects(options.spec_dir, options.input_type, targetName, displayOption) elif(options.input_type == "json"):# Generate the expanded package dependencies json file based on package_list_file json_wrapper_option_list = JsonWrapper(options.json_file) option_list_json = json_wrapper_option_list.read() options_sorted = option_list_json.items() for install_option in options_sorted: if displayOption == "tree" and install_option[1]["title"] == "ISO Packages": continue specDeps.readSpecsAndConvertToSerializableObjects(options.spec_dir, options.input_type, install_option[1]["file"], displayOption) sys.exit(0)
def _copy_rpms(self): """ Prepare RPM list and copy rpms """ # prepare the RPMs list json_pkg_to_rpm_map = JsonWrapper(self.install_config["pkg_to_rpm_map_file"]) pkg_to_rpm_map = json_pkg_to_rpm_map.read() self.rpms_tobeinstalled = [] selected_packages = self.install_config['packages'] for pkg in selected_packages: versionindex = pkg.rfind("-") if versionindex == -1: raise Exception("Invalid pkg name: " + pkg) package = pkg[:versionindex] if pkg in pkg_to_rpm_map: if pkg_to_rpm_map[pkg]['rpm'] is not None: name = pkg_to_rpm_map[pkg]['rpm'] basename = os.path.basename(name) self.rpms_tobeinstalled.append({'filename': basename, 'path': name, 'package' : package}) # Copy the rpms for rpm in self.rpms_tobeinstalled: shutil.copy(rpm['path'], self.photon_root + '/RPMS/')
def load_package_list(self, options_file): json_wrapper_option_list = JsonWrapper(options_file) option_list_json = json_wrapper_option_list.read() options_sorted = option_list_json.items() self.package_menu_items = [] base_path = os.path.dirname(options_file) package_list = [] default_selected = 0 visible_options_cnt = 0 for install_option in options_sorted: if install_option[1]["visible"] == True: package_list = PackageSelector.get_packages_to_install(install_option[1], base_path) additional_files = PackageSelector.get_additional_files_to_copy_in_iso( install_option, base_path) self.package_menu_items.append((install_option[1]["title"], self.exit_function, [install_option[0], package_list, additional_files])) if install_option[0] == 'minimal': default_selected = visible_options_cnt visible_options_cnt = visible_options_cnt + 1 self.package_menu = Menu(self.menu_starty, self.maxx, self.package_menu_items, default_selected=default_selected, tab_enable=False)
def load_package_list(self, options_file): json_wrapper_option_list = JsonWrapper(options_file) option_list_json = json_wrapper_option_list.read() options_sorted = option_list_json.items() self.package_menu_items = [] base_path = os.path.dirname(options_file) package_list = [] default_selected = 0 visible_options_cnt = 0 for install_option in options_sorted: if install_option[1]["visible"] == True: package_list = PackageSelector.get_packages_to_install(options_sorted, install_option[0], base_path) additional_files = PackageSelector.get_additional_files_to_copy_in_iso( options_sorted, base_path, install_option[0]) self.package_menu_items.append((install_option[1]["title"], self.exit_function, [install_option[0], package_list, additional_files])) if install_option[0] == 'minimal': default_selected = visible_options_cnt visible_options_cnt = visible_options_cnt + 1 self.package_menu = Menu(self.menu_starty, self.maxx, self.package_menu_items, default_selected=default_selected, tab_enable=False)
def create_rpm_list_to_be_copied_to_iso(pkg_to_rpm_map_file, build_install_option, copy_flags, output_data_path): packages = [] if build_install_option is None: packages = [] else: packages = create_pkg_list_to_copy_to_iso(build_install_option, output_data_path) rpm_list = [] json_pkg_to_rpm_map = JsonWrapper(pkg_to_rpm_map_file) pkg_to_rpm_map = json_pkg_to_rpm_map.read() for k in pkg_to_rpm_map: if build_install_option is None or k in packages: if not pkg_to_rpm_map[k]['rpm'] is None and bool(copy_flags & 1): filename = pkg_to_rpm_map[k]['rpm'] rpm_list.append(get_file_name_with_last_folder(filename)) if not pkg_to_rpm_map[k]['debugrpm'] is None and bool(copy_flags & 2): filename = pkg_to_rpm_map[k]['debugrpm'] rpm_list.append(get_file_name_with_last_folder(filename)) if not pkg_to_rpm_map[k]['sourcerpm'] is None and bool(copy_flags & 4): rpm_list.append(pkg_to_rpm_map[k]['sourcerpm']) return rpm_list
def load_package_list(self): json_wrapper_package_list = JsonWrapper("packages_full.json"); package_list_json = json_wrapper_package_list.read() for package in package_list_json["packages"]: self.menu_items.append((package, self.exit_function)) self.package_menu = Menu(self.menu_starty, self.maxx, self.menu_items, height = 18, selector_menu = True)
def _copy_rpms(self): """ Prepare RPM list and copy rpms """ # prepare the RPMs list json_pkg_to_rpm_map = JsonWrapper( self.install_config["pkg_to_rpm_map_file"]) pkg_to_rpm_map = json_pkg_to_rpm_map.read() self.rpms_tobeinstalled = [] selected_packages = self.install_config['packages'] for pkg in selected_packages: if pkg in pkg_to_rpm_map: if pkg_to_rpm_map[pkg]['rpm'] is not None: name = pkg_to_rpm_map[pkg]['rpm'] basename = os.path.basename(name) self.rpms_tobeinstalled.append({ 'filename': basename, 'path': name, 'package': pkg }) # Copy the rpms for rpm in self.rpms_tobeinstalled: shutil.copy(rpm['path'], self.photon_root + '/RPMS/')
def load_package_list(self, options_file): json_wrapper_option_list = JsonWrapper(options_file) option_list_json = json_wrapper_option_list.read() options_sorted = option_list_json.items() self.package_menu_items = [] base_path = os.path.dirname(options_file) package_list = [] if len(options_sorted) == 1: if 'packagelist_file' not in self.install_config: self.install_config['packagelist_file'] = list( options_sorted)[0][1]['packagelist_file'] list(options_sorted)[0][1]['visible'] = True default_selected = 0 visible_options_cnt = 0 for install_option in options_sorted: if install_option[1]["visible"] == True: package_list = PackageSelector.get_packages_to_install( install_option[1], base_path) self.package_menu_items.append( (install_option[1]["title"], self.exit_function, [install_option[0], package_list])) if install_option[0] == 'minimal': default_selected = visible_options_cnt visible_options_cnt = visible_options_cnt + 1 self.package_menu = Menu(self.menu_starty, self.maxx, self.package_menu_items, default_selected=default_selected, tab_enable=False)
def main(): usage = "Usage: %prog [options]" parser = ArgumentParser(usage) parser.add_argument("-i", "--input-type", dest="input_type", default=DEFAULT_INPUT_TYPE) parser.add_argument("-p", "--pkg", dest="pkg") parser.add_argument("-f", "--file", dest="json_file", default="packages_minimal.json") parser.add_argument("-d", "--disp", dest="display_option", default=DEFAULT_DISPLAY_OPTION) parser.add_argument("-s", "--spec-dir", dest="spec_dir", default=SPEC_FILE_DIR) parser.add_argument("-l", "--log-dir", dest="log_dir", default=LOG_FILE_DIR) parser.add_argument("-t", "--stage-dir", dest="stage_dir", default="../../stage") parser.add_argument("-a", "--input-data-dir", dest="input_data_dir", default="../../common/data/") parser.add_argument("-o", "--output-dir", dest="output_dir", default="../../stage/common/data") options = parser.parse_args() constants.setSpecPath(options.spec_dir) constants.setLogPath(options.log_dir) constants.initialize() cmdUtils = CommandUtils() if not os.path.isdir(options.output_dir): cmdUtils.runCommandInShell2("mkdir -p "+options.output_dir) if not options.input_data_dir.endswith('/'): options.input_data_dir += '/' try: specDeps = SpecDependencyGenerator() # To display/print package dependencies on console if (options.input_type == "pkg" or options.input_type == "who-needs" or options.input_type == "who-needs-build"): specDeps.process(options.input_type, options.pkg, options.display_option) elif options.input_type == "json": list_json_files = options.json_file.split("\n") # Generate the expanded package dependencies json file based on package_list_file for json_file in list_json_files: shutil.copy2(json_file, options.output_dir) json_wrapper_option_list = JsonWrapper(json_file) option_list_json = json_wrapper_option_list.read() options_sorted = option_list_json.items() for install_option in options_sorted: output_file = None input_value = os.path.join(os.path.dirname(json_file), install_option[1]["file"]) if options.display_option == "tree" and install_option[1]["title"] == "ISO Packages": continue if options.display_option == "json": output_file = os.path.join(options.output_dir, install_option[1]["file"]) print ("Generating the install time dependency list for " + json_file) specDeps.process(options.input_type, input_value, options.display_option, output_file) except Exception as e: traceback.print_exc() sys.stderr.write(str(e)) sys.stderr.write("Failed to generate dependency lists from spec files\n") sys.exit(1) sys.stderr.write("Successfully generated dependency lists from spec files\n") sys.exit(0)
def create_additional_file_list_to_copy_in_iso(base_path, build_install_option): json_wrapper_option_list = JsonWrapper(build_install_option) option_list_json = json_wrapper_option_list.read() options_sorted = option_list_json.items() file_list = [] for install_option in options_sorted: if install_option[1].has_key("additional-files"): file_list = file_list + map(lambda filename: os.path.join(base_path, filename), install_option[1].get("additional-files")) return file_list
def exit_function(self, selected_indexes): json_wrapper_package_list = JsonWrapper("packages_minimal.json"); package_list_json = json_wrapper_package_list.read() selected_items = [] for index in selected_indexes: selected_items.append(self.menu_items[index][0]) self.install_config['packages'] = package_list_json["packages"] + selected_items return ActionResult(True, None)
def get_live_cd_status_string(build_install_option): json_wrapper_option_list = JsonWrapper(build_install_option) option_list_json = json_wrapper_option_list.read() options_sorted = option_list_json.items() file_list = [] for install_option in options_sorted: if install_option[1].has_key("live-cd"): if install_option[1].get("live-cd") == True: return "true" return "false"
def exit_function(self, selected_indexes): json_wrapper_package_list = JsonWrapper("packages_minimal.json") package_list_json = json_wrapper_package_list.read() selected_items = [] for index in selected_indexes: selected_items.append(self.menu_items[index][0]) self.install_config[ 'packages'] = package_list_json["packages"] + selected_items return ActionResult(True, None)
def get_packages_to_install(option, output_data_path): if 'packagelist_file' in option: json_wrapper_package_list = JsonWrapper(os.path.join(output_data_path, option['packagelist_file'])) package_list_json = json_wrapper_package_list.read() return package_list_json["packages"] elif 'packages' in option: return option["packages"] else: raise Exception("Install option '" + option['title'] + "' must have 'packagelist_file' or 'packages' property")
def get_packages_to_install(options, config_type): package_list = [] install_option = options[config_type] for include_type in install_option["include"]: package_list = package_list + get_packages_to_install(options, include_type) json_wrapper_package_list = JsonWrapper(install_option["file"]) package_list_json = json_wrapper_package_list.read() package_list = package_list + package_list_json["packages"] return package_list
def ks_install(self, options_file, rpm_path, ks_config): install_config = ks_config install_config['iso_system'] = False if self.is_vmware_virtualization( ) and 'install_linux_esx' not in install_config: install_config['install_linux_esx'] = True json_wrapper_option_list = JsonWrapper( "build_install_options_all.json") option_list_json = json_wrapper_option_list.read() options_sorted = option_list_json.items() base_path = os.path.dirname("build_install_options_all.json") package_list = [] package_list = PackageSelector.get_packages_to_install( options_sorted, install_config['type'], base_path) if 'additional_packages' in install_config: package_list.extend(install_config['additional_packages']) install_config['packages'] = package_list if 'partitions' in install_config: partitions = install_config['partitions'] else: partitions = modules.commons.default_partitions install_config['disk'] = modules.commons.partition_disk( install_config['disk'], partitions) if "hostname" in install_config: evalhostname = os.popen( 'printf ' + install_config["hostname"].strip(" ")).readlines() install_config['hostname'] = evalhostname[0] if "hostname" not in install_config or install_config['hostname'] == "": random_id = '%12x' % random.randrange(16**12) install_config['hostname'] = "photon-" + random_id.strip() # crypt the password if needed if install_config['password']['crypted']: install_config['password'] = install_config['password']['text'] else: install_config['password'] = crypt.crypt( install_config['password']['text'], "$6$" + "".join([ random.choice(string.ascii_letters + string.digits) for _ in range(16) ])) installer = InstallerContainer(install_config, self.maxy, self.maxx, True, rpm_path=rpm_path, log_path="/var/log") installer.install(None)
def load_package_list(self): json_wrapper_package_list = JsonWrapper("package_list.json"); self.package_list_json = json_wrapper_package_list.read() self.package_menu_items = [ ('1. Photon OS (Micro)', self.exit_function, ['micro', self.package_list_json["micro_packages"]]), ('2. Photon Container OS (Minimal)', self.exit_function, ['minimal', self.package_list_json["minimal_packages"]]), ('3. Photon Full OS (All)', self.exit_function, ['full', self.package_list_json["minimal_packages"] + self.package_list_json["optional_packages"]]), ('4. Photon Custom OS', self.custom_packages, ['custom', None]) ] self.package_menu = Menu(self.menu_starty, self.maxx, self.package_menu_items)
def get_packages_to_install(options, config_type): package_list = [] install_option = options[config_type] for include_type in install_option["include"]: package_list = package_list + get_packages_to_install( options, include_type) json_wrapper_package_list = JsonWrapper(install_option["file"]) package_list_json = json_wrapper_package_list.read() package_list = package_list + package_list_json["packages"] return package_list
def get_packages_to_install(options, config_type, output_data_path): package_list = [] for install_option in options: if install_option[0] == config_type: for include_type in install_option[1]["include"]: package_list = package_list + PackageSelector.get_packages_to_install(options, include_type, output_data_path) json_wrapper_package_list = JsonWrapper(os.path.join(output_data_path, install_option[1]["file"])) package_list_json = json_wrapper_package_list.read() package_list = package_list + package_list_json["packages"] break return package_list
def load_package_list(self): json_wrapper_package_list = JsonWrapper("package_list.json") self.package_list_json = json_wrapper_package_list.read() for package in self.package_list_json["optional_packages"]: self.menu_items.append((package, self.exit_function)) self.package_menu = Menu(self.menu_starty, self.maxx, self.menu_items, height=18, selector_menu=True)
def get_packages_to_install(options, base_path, config_type): package_list = [] for install_option in options: if install_option[0] == config_type: if install_option[1]["include"] != "none": for include_type in install_option[1]["include"].split(','): package_list = package_list + PackageSelector.get_packages_to_install(options, base_path, include_type) json_wrapper_package_list = JsonWrapper(os.path.join(base_path, install_option[1]["file"])) package_list_json = json_wrapper_package_list.read() package_list = package_list + package_list_json["packages"] break return package_list
def load_package_list(self, options_file): json_wrapper_option_list = JsonWrapper(options_file) option_list_json = json_wrapper_option_list.read() options_sorted = option_list_json.items() self.package_menu_items = [] base_path = os.path.dirname(options_file) package_list = [] for install_option in options_sorted: if install_option[1]["visible"] == True: package_list = PackageSelector.get_packages_to_install(options_sorted, base_path, install_option[0]) self.package_menu_items.append((install_option[1]["title"], self.exit_function, [install_option[0], package_list] )) self.package_menu = Menu(self.menu_starty, self.maxx, self.package_menu_items)
def load_package_list(self): json_wrapper_package_list = JsonWrapper("package_list.json") self.package_list_json = json_wrapper_package_list.read() self.package_menu_items = [ ('1. Photon OS (Micro)', self.exit_function, ['micro', self.package_list_json["micro_packages"]]), ('2. Photon Container OS (Minimal)', self.exit_function, ['minimal', self.package_list_json["minimal_packages"]]), ('3. Photon Full OS (All)', self.exit_function, [ 'full', self.package_list_json["minimal_packages"] + self.package_list_json["optional_packages"] ]), ('4. Photon Custom OS', self.custom_packages, ['custom', None]) ] self.package_menu = Menu(self.menu_starty, self.maxx, self.package_menu_items)
def ks_config(self, options_file, ks_config): """Load configuration from file""" del options_file install_config = ks_config install_config['iso_system'] = False if self.is_vmware_virtualization() and 'install_linux_esx' not in install_config: install_config['install_linux_esx'] = True json_wrapper_option_list = JsonWrapper("build_install_options_all.json") option_list_json = json_wrapper_option_list.read() options_sorted = option_list_json.items() base_path = os.path.dirname("build_install_options_all.json") package_list = [] package_list = PackageSelector.get_packages_to_install(options_sorted, install_config['type'], base_path) if 'additional_packages' in install_config: package_list.extend(install_config['additional_packages']) install_config['packages'] = package_list if 'partitions' in install_config: partitions = install_config['partitions'] else: partitions = modules.commons.default_partitions install_config['disk'] = modules.commons.partition_disk(install_config['disk'], partitions) if "hostname" in install_config: evalhostname = os.popen('printf ' + install_config["hostname"].strip(" ")).readlines() install_config['hostname'] = evalhostname[0] if "hostname" not in install_config or install_config['hostname'] == "": install_config['hostname'] = "photon-" + self.random_id.strip() # crypt the password if needed if install_config['password']['crypted']: install_config['password'] = install_config['password']['text'] else: install_config['password'] = crypt.crypt( install_config['password']['text'], "$6$" + "".join([random.choice( string.ascii_letters + string.digits) for _ in range(16)])) return install_config
def create_rpm_list_to_be_copied_to_iso(pkg_to_rpm_map_file, build_install_option, copy_flags, output_data_path): packages = [] if build_install_option is None: packages = [] else: packages = create_pkg_list_to_copy_to_iso(build_install_option, output_data_path) rpm_list = [] json_pkg_to_rpm_map = JsonWrapper(pkg_to_rpm_map_file) pkg_to_rpm_map = json_pkg_to_rpm_map.read() for k in pkg_to_rpm_map: if build_install_option is None or k in packages: if not pkg_to_rpm_map[k]['rpm'] is None and bool(copy_flags & 1): filename = pkg_to_rpm_map[k]['rpm'] rpm_list.append(get_file_name_with_last_folder(filename)) if not pkg_to_rpm_map[k]['debugrpm'] is None and bool(copy_flags & 2): filename = pkg_to_rpm_map[k]['debugrpm'] rpm_list.append(pkg_to_rpm_map[k]['debugrpm']) if not pkg_to_rpm_map[k]['sourcerpm'] is None and bool(copy_flags & 4): rpm_list.append(pkg_to_rpm_map[k]['sourcerpm']) return rpm_list
def _create_installrpms_list(self): """ Prepare RPM list and copy rpms """ # prepare the RPMs list json_pkg_to_rpm_map = JsonWrapper(self.install_config["pkg_to_rpm_map_file"]) pkg_to_rpm_map = json_pkg_to_rpm_map.read() self.rpms_tobeinstalled = [] selected_packages = self.install_config['packages'] for pkg in selected_packages: versionindex = pkg.rfind("-") if versionindex == -1: raise Exception("Invalid pkg name: " + pkg) package = pkg[:versionindex] if pkg in pkg_to_rpm_map: if pkg_to_rpm_map[pkg]['rpm'] is not None: name = pkg_to_rpm_map[pkg]['rpm'] basename = os.path.basename(name) self.rpms_tobeinstalled.append({'filename': basename, 'path': name, 'package' : package})
def _copy_rpms(self): """ Prepare RPM list and copy rpms """ # prepare the RPMs list json_pkg_to_rpm_map = JsonWrapper(self.install_config["pkg_to_rpm_map_file"]) pkg_to_rpm_map = json_pkg_to_rpm_map.read() self.rpms_tobeinstalled = [] selected_packages = self.install_config['packages'] for pkg in selected_packages: if pkg in pkg_to_rpm_map: if pkg_to_rpm_map[pkg]['rpm'] is not None: name = pkg_to_rpm_map[pkg]['rpm'] basename = os.path.basename(name) self.rpms_tobeinstalled.append({'filename': basename, 'path': name, 'package' : pkg}) # Copy the rpms for rpm in self.rpms_tobeinstalled: shutil.copy(rpm['path'], self.photon_root + '/RPMS/')
def load_package_list(self, options_file): json_wrapper_option_list = JsonWrapper(options_file) option_list_json = json_wrapper_option_list.read() options_sorted = option_list_json.items() self.package_menu_items = [] base_path = os.path.dirname(options_file) package_list = [] if len(options_sorted) == 1: self.inactive_screen = True list(options_sorted)[0][1]['visible'] = True if platform.machine() == "aarch64" and 'realtime' in dict( options_sorted): dict(options_sorted)['realtime']['visible'] = False default_selected = 0 visible_options_cnt = 0 for install_option in options_sorted: if install_option[1]["visible"] == True: package_list = PackageSelector.get_packages_to_install( install_option[1], base_path) self.package_menu_items.append( (install_option[1]["title"], self.exit_function, [install_option[0], package_list])) if install_option[0] == 'minimal': default_selected = visible_options_cnt visible_options_cnt = visible_options_cnt + 1 if self.inactive_screen: self.exit_function(self.package_menu_items[0][2]) else: self.package_menu = Menu(self.menu_starty, self.maxx, self.package_menu_items, default_selected=default_selected, tab_enable=False)
config['vmdk_install'] = False if 'password' in config: # crypt the password if needed if config['password']['crypted']: config['password'] = config['password']['text'] else: config['password'] = crypt.crypt( config['password']['text'], "$6$" + "".join([ random.choice(string.ascii_letters + string.digits) for _ in range(16) ])) # Check the installation type json_wrapper_option_list = JsonWrapper(options.package_list_file) option_list_json = json_wrapper_option_list.read() options_sorted = option_list_json.items() packages = [] packages = PackageSelector.get_packages_to_install( options_sorted, config['type'], options.output_data_path) config['packages'] = packages if (os.path.isdir(options.working_directory)): process = subprocess.Popen( ['rm', '-rf', options.working_directory]) retval = process.wait() process = subprocess.Popen([ 'mkdir', '-p',
def main(): usage = "Usage: %prog [options]" parser = ArgumentParser(usage) parser.add_argument("-i", "--input-type", dest="input_type", default=DEFAULT_INPUT_TYPE) parser.add_argument("-p", "--pkg", dest="pkg") parser.add_argument("-f", "--file", dest="json_file", default="packages_minimal.json") parser.add_argument("-d", "--display-option", dest="display_option", default=DEFAULT_DISPLAY_OPTION) parser.add_argument("-s", "--spec-path", dest="spec_path", default=SPEC_FILE_DIR) parser.add_argument("-l", "--log-path", dest="log_path", default=LOG_FILE_DIR) parser.add_argument("-y", "--log-level", dest="log_level", default="info") parser.add_argument("-t", "--stage-dir", dest="stage_dir", default="../../stage") parser.add_argument("-a", "--input-data-dir", dest="input_data_dir", default="../../common/data/") parser.add_argument("-o", "--output-dir", dest="output_dir", default="../../stage/common/data") options = parser.parse_args() constants.setSpecPath(options.spec_path) constants.setLogPath(options.log_path) constants.setLogLevel(options.log_level) constants.initialize() cmdUtils = CommandUtils() logger = Logger.getLogger("SpecDeps", options.log_path, options.log_level) if not os.path.isdir(options.output_dir): cmdUtils.runCommandInShell2("mkdir -p "+options.output_dir) if not options.input_data_dir.endswith('/'): options.input_data_dir += '/' try: specDeps = SpecDependencyGenerator(options.log_path, options.log_level) if options.input_type == "remove-upward-deps": whoNeedsList = specDeps.process("get-upward-deps", options.pkg, options.display_option) logger.info("Removing upward dependencies: " + str(whoNeedsList)) for pkg in whoNeedsList: package, version = StringUtils.splitPackageNameAndVersion(pkg) release = SPECS.getData().getRelease(package, version) for p in SPECS.getData().getPackages(package,version): buildarch=SPECS.getData().getBuildArch(p, version) rpmFile = "stage/RPMS/" + buildarch + "/" + p + "-" + version + "-" + release + ".*" + buildarch+".rpm" cmdUtils.runCommandInShell2("rm -f "+rpmFile) elif options.input_type == "print-upward-deps": whoNeedsList = specDeps.process("get-upward-deps", options.pkg, options.display_option) logger.info("Upward dependencies: " + str(whoNeedsList)) # To display/print package dependencies on console elif (options.input_type == "pkg" or options.input_type == "who-needs"): specDeps.process(options.input_type, options.pkg, options.display_option) elif options.input_type == "json": list_json_files = options.json_file.split("\n") # Generate the expanded package dependencies json file based on package_list_file logger.info("Generating the install time dependency list for all json files") for json_file in list_json_files: shutil.copy2(json_file, options.output_dir) json_wrapper_option_list = JsonWrapper(json_file) option_list_json = json_wrapper_option_list.read() options_sorted = option_list_json.items() for install_option in options_sorted: output_file = None input_value = os.path.join(os.path.dirname(json_file), install_option[1]["file"]) if options.display_option == "tree" and install_option[1]["title"] == "ISO Packages": continue if options.display_option == "json": output_file = os.path.join(options.output_dir, install_option[1]["file"]) specDeps.process(options.input_type, input_value, options.display_option, output_file) except Exception as e: traceback.print_exc() sys.stderr.write(str(e)) sys.stderr.write("Failed to generate dependency lists from spec files\n") sys.exit(1) sys.exit(0)
def main(): usage = "Usage: %prog [options]" parser = ArgumentParser(usage) parser.add_argument("-i", "--input-type", dest="input_type", default=DEFAULT_INPUT_TYPE) parser.add_argument("-p", "--pkg", dest="pkg") parser.add_argument("-f", "--file", dest="json_file", default="packages_minimal.json") parser.add_argument("-d", "--disp", dest="display_option", default=DEFAULT_DISPLAY_OPTION) parser.add_argument("-s", "--spec-dir", dest="spec_dir", default=SPEC_FILE_DIR) parser.add_argument("-t", "--stage-dir", dest="stage_dir", default="../../stage") parser.add_argument("-a", "--input-data-dir", dest="input_data_dir", default="../../common/data/") options = parser.parse_args() if not options.input_data_dir.endswith('/'): options.input_data_dir += '/' try: specDeps = SerializedSpecObjects(options.input_data_dir, options.stage_dir) displayOption = options.display_option abs_path = os.path.abspath(__file__) dir_name = os.path.dirname(abs_path) os.chdir(dir_name) # To display/print package dependencies on console if (options.input_type == "pkg" or options.input_type == "who-needs" or options.input_type == "who-needs-build"): targetName = options.pkg specDeps.readSpecsAndConvertToSerializableObjects( options.spec_dir, options.input_type, targetName, displayOption) elif options.input_type == "json": # Generate the expanded package dependencies json file based on package_list_file json_wrapper_option_list = JsonWrapper(options.json_file) option_list_json = json_wrapper_option_list.read() options_sorted = option_list_json.items() for install_option in options_sorted: if displayOption == "tree" and install_option[1][ "title"] == "ISO Packages": continue specDeps.readSpecsAndConvertToSerializableObjects( options.spec_dir, options.input_type, install_option[1]["file"], displayOption) except Exception as _: sys.stderr.write( "Failed to generate dependency lists from spec files\n") sys.exit(1) sys.stderr.write( "Successfully generated dependency lists from spec files\n") sys.exit(0)
# Read the conf file config = (JsonWrapper(args[0])).read() config['iso_system'] = False if 'password' in config: # crypt the password if needed if config['password']['crypted']: config['password'] = config['password']['text'] else: config['password'] = crypt.crypt(config['password']['text'], "$6$" + "".join([random.choice(string.ascii_letters + string.digits) for _ in range(16)])) # Check the installation type json_wrapper_option_list = JsonWrapper(options.package_list_file) option_list_json = json_wrapper_option_list.read() options_sorted = option_list_json.items() base_path = os.path.dirname(options.package_list_file) packages = [] if config['iso_system'] == True: for install_option in options_sorted: if install_option[0] == "iso": json_wrapper_package_list = JsonWrapper(os.path.join(base_path, install_option[1]["file"])) package_list_json = json_wrapper_package_list.read() packages = package_list_json["packages"] else: packages = PackageSelector.get_packages_to_install(options_sorted, base_path, config['type']) config['packages'] = packages
config = (JsonWrapper(options.configfile)).read() config['iso_system'] = False config['vmdk_install'] = False config["pkg_to_rpm_map_file"] = options.pkg_to_rpm_map_file if 'password' in config: # crypt the password if needed if config['password']['crypted']: config['password'] = config['password']['text'] else: config['password'] = crypt.crypt(config['password']['text'], "$6$" + "".join([random.choice(string.ascii_letters + string.digits) for _ in range(16)])) # Check the installation type json_wrapper_option_list = JsonWrapper(options.package_list_file) option_list_json = json_wrapper_option_list.read() options_sorted = option_list_json.items() packages = [] packages = PackageSelector.get_packages_to_install(options_sorted, config['type'], options.output_data_path) config['packages'] = packages if (os.path.isdir(options.working_directory)): process = subprocess.Popen(['rm', '-rf', options.working_directory]) retval = process.wait() process = subprocess.Popen(['mkdir', '-p', os.path.join(options.working_directory, "photon-chroot")]) retval = process.wait() config['working_directory'] = options.working_directory
# Read the conf file config = (JsonWrapper(args[0])).read() config['iso_system'] = False config['vmdk_install'] = False if 'password' in config: # crypt the password if needed if config['password']['crypted']: config['password'] = config['password']['text'] else: config['password'] = crypt.crypt(config['password']['text'], "$6$" + "".join([random.choice(string.ascii_letters + string.digits) for _ in range(16)])) # Check the installation type json_wrapper_option_list = JsonWrapper(options.package_list_file) option_list_json = json_wrapper_option_list.read() options_sorted = option_list_json.items() base_path = os.path.dirname(options.package_list_file) packages = [] additional_files_to_copy_from_stage_to_iso = [] if config['iso_system'] == True: for install_option in options_sorted: if install_option[0] == "iso": json_wrapper_package_list = JsonWrapper(os.path.join(base_path, install_option[1]["file"])) package_list_json = json_wrapper_package_list.read() packages = package_list_json["packages"] else: packages = PackageSelector.get_packages_to_install(options_sorted, config['type'], options.output_data_path) config['packages'] = packages
config['iso_system'] = False if 'password' in config: # crypt the password if needed if config['password']['crypted']: config['password'] = config['password']['text'] else: config['password'] = crypt.crypt( config['password']['text'], "$6$" + "".join([ random.choice(string.ascii_letters + string.digits) for _ in range(16) ])) # Check the installation type json_wrapper_option_list = JsonWrapper(options.package_list_file) option_list_json = json_wrapper_option_list.read() options_sorted = option_list_json.items() base_path = os.path.dirname(options.package_list_file) packages = [] additional_files_to_copy_from_stage_to_iso = [] if config['iso_system'] == True: for install_option in options_sorted: if install_option[0] == "iso": json_wrapper_package_list = JsonWrapper( os.path.join(base_path, install_option[1]["file"])) package_list_json = json_wrapper_package_list.read() packages = package_list_json["packages"] else: packages = PackageSelector.get_packages_to_install( options_sorted, config['type'], options.output_data_path)
def get_packages_to_install(packagelist_file, output_data_path): json_wrapper_package_list = JsonWrapper( os.path.join(output_data_path, packagelist_file)) package_list_json = json_wrapper_package_list.read() return package_list_json["packages"]
def main(): usage = "Usage: %prog [options]" parser = ArgumentParser(usage) parser.add_argument("-i", "--input-type", dest="input_type", default=DEFAULT_INPUT_TYPE) parser.add_argument("-p", "--pkg", dest="pkg") parser.add_argument("-f", "--file", dest="json_file", default="packages_minimal.json") parser.add_argument("-d", "--disp", dest="display_option", default=DEFAULT_DISPLAY_OPTION) parser.add_argument("-s", "--spec-dir", dest="spec_dir", default=SPEC_FILE_DIR) parser.add_argument("-l", "--log-dir", dest="log_dir", default=LOG_FILE_DIR) parser.add_argument("-t", "--stage-dir", dest="stage_dir", default="../../stage") parser.add_argument("-a", "--input-data-dir", dest="input_data_dir", default="../../common/data/") parser.add_argument("-o", "--output-dir", dest="output_dir", default="../../stage/common/data") options = parser.parse_args() constants.setSpecPath(options.spec_dir) constants.setLogPath(options.log_dir) constants.initialize() cmdUtils = CommandUtils() if not os.path.isdir(options.output_dir): cmdUtils.runCommandInShell2("mkdir -p " + options.output_dir) if not options.input_data_dir.endswith('/'): options.input_data_dir += '/' try: specDeps = SpecDependencyGenerator() # To display/print package dependencies on console if (options.input_type == "pkg" or options.input_type == "who-needs" or options.input_type == "who-needs-build"): specDeps.process(options.input_type, options.pkg, options.display_option) elif options.input_type == "json": list_json_files = options.json_file.split("\n") # Generate the expanded package dependencies json file based on package_list_file for json_file in list_json_files: shutil.copy2(json_file, options.output_dir) json_wrapper_option_list = JsonWrapper(json_file) option_list_json = json_wrapper_option_list.read() options_sorted = option_list_json.items() for install_option in options_sorted: output_file = None input_value = os.path.join(os.path.dirname(json_file), install_option[1]["file"]) if options.display_option == "tree" and install_option[1][ "title"] == "ISO Packages": continue if options.display_option == "json": output_file = os.path.join(options.output_dir, install_option[1]["file"]) print("Generating the install time dependency list for " + json_file) specDeps.process(options.input_type, input_value, options.display_option, output_file) except Exception as e: traceback.print_exc() sys.stderr.write(str(e)) sys.stderr.write( "Failed to generate dependency lists from spec files\n") sys.exit(1) sys.stderr.write( "Successfully generated dependency lists from spec files\n") sys.exit(0)