I have a script coming up that can remove virtual/libc dependencies from
ebuilds automatically but can this be done safely for all ebuilds are
are there ebuilds in system that really need this dep for stage building
etc? Are there other deps to like this that could be removed? At least
sys-libs/zlib could be one. Attached is a version that prints a unified
diff for the changes my script would make.

Regards,
Petteri
#!/usr/bin/python
from __future__ import with_statement
import portage
from fnmatch import filter
import os
import re
import sys
from contextlib import nested
from difflib import unified_diff

dep_start = re.compile('^R?DEPEND.*')
ws_re = re.compile('^\s*$')
dep_end = re.compile('.*"$')

for root, dirs, files in os.walk(portage.settings['PORTDIR']):
        for ebuild in filter(files, '*.ebuild'):
                path = os.path.join(root, ebuild)
                print path
                with nested(open(path), os.tmpfile()) as (f,tmp):
                        in_dep = False
                        lines = f.readlines()
                        new = []
                        for line in lines:
                                if dep_start.match(line):
                                        in_dep = True
                                if in_dep:
                                        if dep_end.match(line):
                                                in_dep = False
                                        if line.find('virtual/libc') is not -1:
                                                line = 
line.replace('virtual/libc','')
                                                if not ws_re.match(line):
                                                        tmp.write(line)
                                                        new.append(line)
                                        else:
                                                tmp.write(line)
                                                new.append(line)
                                else:
                                        tmp.write(line)
                                        new.append(line)

                        sys.stdout.writelines(unified_diff(lines, new))

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to