33 import xml.etree.ElementTree
as etree
35 import elementtree.ElementTree
as etree
40 addon_base = os.getenv(
'GRASS_ADDON_PATH')
42 grass.fatal(_(
"%s not defined") %
"GRASS_ADDON_PATH")
43 fXML = os.path.join(addon_base,
'modules.xml')
44 if not os.path.exists(fXML):
50 tree = etree.fromstring(fo.read())
51 except StandardError, e:
52 grass.error(_(
"Unable to parse metadata file: %s") % e)
58 libgis_rev = grass.version()[
'libgis_revision']
60 for tnode
in tree.findall(
'task'):
61 gnode = tnode.find(
'libgis')
62 if gnode
is not None and \
63 gnode.get(
'revision',
'') != libgis_rev:
64 ret.append(tnode.get(
'name'))
70 extensions = grass.read_command(
'g.extension.py',
71 quiet =
True, flags =
'a').splitlines()
76 grass.info(_(
"Nothing to rebuild."))
79 for ext
in extensions:
80 grass.message(
'-' * 60)
81 grass.message(_(
"Reinstalling extension <%s>...") % ext)
82 grass.message(
'-' * 60)
83 grass.run_command(
'g.extension.py',
88 if __name__ ==
"__main__":
89 options, flags = grass.parser()