def installed_packages(self): packages = [] with open('/var/lib/portage/world') as fp: for line in fp: if line.startswith('g-octave/'): packages.append(line.strip()) return packages
def create_env(json_files=False): """returns a tuple with the *g_octave.config* object and the path of the temporary config and directory """ config_file = tempfile.mkstemp(suffix='.cfg')[1] directory = tempfile.mkdtemp() current_dir = os.path.dirname(os.path.abspath(__file__)) db = os.path.join(current_dir, 'files') overlay = os.path.join(directory, 'overlay') cp = configparser.ConfigParser() cp.add_section('main') cp.set('main', 'db', db) cp.set('main', 'overlay', overlay) with open(config_file, 'w') as fp: cp.write(fp) conf = config.Config( fetch_phase = not json_files, config_file = config_file, create_dirs = True ) return conf, config_file, directory
def create_env(json_files=False): """returns a tuple with the *g_octave.config* object and the path of the temporary config and directory """ config_file = tempfile.mkstemp(suffix='.cfg')[1] directory = tempfile.mkdtemp() current_dir = os.path.dirname(os.path.abspath(__file__)) db = os.path.join(current_dir, 'files') overlay = os.path.join(directory, 'overlay') cp = configparser.ConfigParser() cp.add_section('main') cp.set('main', 'db', db) cp.set('main', 'overlay', overlay) with open(config_file, 'w') as fp: cp.write(fp) conf = config.Config(fetch_phase=not json_files, config_file=config_file, create_dirs=True) return conf, config_file, directory
def main(argv): if len(argv) <= 1: print('one argument required: the json file.', file=sys.stderr) return 1 # init portage stuff settings, trees, mtimedb = load_emerge_config() root_config = trees[settings['ROOT']]['root_config'] s = search(root_config, False, False, False, False, False) desc_tree = description_tree.DescriptionTree(parse_sysreq=False) # identifier => list of dependencies dependencies = dict() # list of licenses licenses = list() for pkg in desc_tree.packages(): try: desc = desc_tree[pkg] except exception.DescriptionTreeException as err: print('DescriptionTree error: %s' % err, file=sys.stderr) return 1 if desc.license not in licenses: licenses.append(desc.license) deps = [] if desc.systemrequirements is not None: deps += [i.strip() for i in desc.systemrequirements.split(',')] if desc.buildrequires is not None: deps += [i.strip() for i in desc.buildrequires.split(',')] for dep in deps: match = description.re_depends.match(dep) if match is not None: my_dep = match.group(1) my_match = my_dep.split('-')[0] if my_match not in dependencies: dependencies[my_match] = [my_dep] else: dependencies[my_match].append(my_dep) json_dict = dict( dependencies=dict(), licenses=dict(), ) try: with open(argv[1], 'r') as fp: json_dict = json.load(fp) except: pass print('***** Dependencies *****\n') for dep in dependencies: s.execute(dep) print(dep) temp = [] for i in range(len(s.matches['pkg'])): print(' %i: %s' % (i, s.matches['pkg'][i][0])) temp.append(s.matches['pkg'][i][0]) if dependencies[dep][0] in json_dict['dependencies']: if py3k: select = input('Select a package [%s]: ' % \ json_dict['dependencies'][dependencies[dep][0]]) else: select = raw_input('Select a package [%s]: ' % \ json_dict['dependencies'][dependencies[dep][0]]) else: if py3k: select = input('Select a package: ') else: select = raw_input('Select a package: ') try: for dep_name in dependencies[dep]: json_dict['dependencies'][dep_name] = temp[int(select)] except: if select != '' or dependencies[dep][0] not in json_dict[ 'dependencies']: for dep_name in dependencies[dep]: json_dict['dependencies'][dep_name] = select print('Selected: %s' % json_dict['dependencies'][dependencies[dep][0]]) print() print('***** Licenses *****\n') for lic in licenses: if lic in json_dict['licenses']: if py3k: temp = input('%s [%s]: ' % ( lic, json_dict['licenses'][lic], )) else: temp = raw_input('%s [%s]: ' % ( lic, json_dict['licenses'][lic], )) if temp != '': json_dict['licenses'][lic] = temp else: if py3k: json_dict['licenses'][lic] = input('%s: ' % lic) else: json_dict['licenses'][lic] = raw_input('%s: ' % lic) print('Selected: %s' % json_dict['licenses'][lic]) print() try: with open(argv[1], 'w') as fp: json.dump(json_dict, fp, sort_keys=True, indent=4) except: print('failed to save the json file.', file=sys.stderr) return 1 return 0
def main(argv): if len(argv) <= 1: print('one argument required: the json file.', file=sys.stderr) return 1 # init portage stuff settings, trees, mtimedb = load_emerge_config() root_config = trees[settings['ROOT']]['root_config'] s = search(root_config, False, False, False, False, False) desc_tree = description_tree.DescriptionTree(parse_sysreq = False) # identifier => list of dependencies dependencies = dict() # list of licenses licenses = list() for pkg in desc_tree.packages(): try: desc = desc_tree[pkg] except exception.DescriptionTreeException as err: print('DescriptionTree error: %s' % err, file=sys.stderr) return 1 if desc.license not in licenses: licenses.append(desc.license) deps = [] if desc.systemrequirements is not None: deps += [i.strip() for i in desc.systemrequirements.split(',')] if desc.buildrequires is not None: deps += [i.strip() for i in desc.buildrequires.split(',')] for dep in deps: match = description.re_depends.match(dep) if match is not None: my_dep = match.group(1) my_match = my_dep.split('-')[0] if my_match not in dependencies: dependencies[my_match] = [my_dep] else: dependencies[my_match].append(my_dep) json_dict = dict( dependencies = dict(), licenses = dict(), ) try: with open(argv[1], 'r') as fp: json_dict = json.load(fp) except: pass print('***** Dependencies *****\n') for dep in dependencies: s.execute(dep) print(dep) temp = [] for i in range(len(s.matches['pkg'])): print(' %i: %s' % (i, s.matches['pkg'][i][0])) temp.append(s.matches['pkg'][i][0]) if dependencies[dep][0] in json_dict['dependencies']: if py3k: select = input('Select a package [%s]: ' % \ json_dict['dependencies'][dependencies[dep][0]]) else: select = raw_input('Select a package [%s]: ' % \ json_dict['dependencies'][dependencies[dep][0]]) else: if py3k: select = input('Select a package: ') else: select = raw_input('Select a package: ') try: for dep_name in dependencies[dep]: json_dict['dependencies'][dep_name] = temp[int(select)] except: if select != '' or dependencies[dep][0] not in json_dict['dependencies']: for dep_name in dependencies[dep]: json_dict['dependencies'][dep_name] = select print('Selected: %s' % json_dict['dependencies'][dependencies[dep][0]]) print() print('***** Licenses *****\n') for lic in licenses: if lic in json_dict['licenses']: if py3k: temp = input( '%s [%s]: ' % ( lic, json_dict['licenses'][lic], ) ) else: temp = raw_input( '%s [%s]: ' % ( lic, json_dict['licenses'][lic], ) ) if temp != '': json_dict['licenses'][lic] = temp else: if py3k: json_dict['licenses'][lic] = input('%s: ' % lic) else: json_dict['licenses'][lic] = raw_input('%s: ' % lic) print('Selected: %s' % json_dict['licenses'][lic]) print() try: with open(argv[1], 'w') as fp: json.dump(json_dict, fp, sort_keys=True, indent=4) except: print('failed to save the json file.', file=sys.stderr) return 1 return 0