1#! /usr/bin/env python3 2# 3# Copyright OpenEmbedded Contributors 4# 5# SPDX-License-Identifier: GPL-2.0-only 6# 7 8import sys 9try: 10 import xml.etree.cElementTree as etree 11except: 12 import xml.etree.ElementTree as etree 13 14def child (elem, name): 15 for e in elem.getchildren(): 16 if e.tag == name: 17 return e 18 return None 19 20def children (elem, name=None): 21 l = elem.getchildren() 22 if name: 23 l = [e for e in l if e.tag == name] 24 return l 25 26if len(sys.argv) < 2 or sys.argv[1] in ('-h', '--help'): 27 print('oe-trim-schemas: error: the following arguments are required: schema\n' 28 'Usage: oe-trim-schemas schema\n\n' 29 'OpenEmbedded trim schemas - remove unneeded schema locale translations\n' 30 ' from gconf schema files\n\n' 31 'arguments:\n' 32 ' schema gconf schema file to trim\n') 33 sys.exit(2) 34 35xml = etree.parse(sys.argv[1]) 36 37for schema in child(xml.getroot(), "schemalist").getchildren(): 38 e = child(schema, "short") 39 if e is not None: 40 schema.remove(e) 41 42 e = child(schema, "long") 43 if e is not None: 44 schema.remove(e) 45 46 for locale in children(schema, "locale"): 47 # One locale must exist so leave C locale... 48 a = locale.attrib.get("name") 49 if a == 'C': 50 continue 51 e = child(locale, "default") 52 if e is None: 53 schema.remove(locale) 54 else: 55 e = child(locale, "short") 56 if e is not None: 57 locale.remove(e) 58 e = child(locale, "long") 59 if e is not None: 60 locale.remove(e) 61 62xml.write(sys.stdout, "UTF-8") 63 64