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