Beispiel #1
0
 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
Beispiel #2
0
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
Beispiel #3
0
 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
Beispiel #4
0
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
Beispiel #5
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
Beispiel #6
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