12 assert len(lst
) == 1, lst
16 def write_file_atomically(filename
, data
):
17 tmp_filename
= "%s.tmp" % filename
18 fh
= open(tmp_filename
, "w")
21 os
.rename(tmp_filename
, filename
)
25 xml
= lxml
.etree
.parse(open(deps_file
))
26 for mod
in xml
.xpath(".//module"):
27 path
= get1(mod
.xpath(".//path"))
28 proc
= subprocess
.Popen(
29 ["git", "rev-parse", "HEAD"], cwd
=path
.attrib
["dir"],
30 stdout
=subprocess
.PIPE
)
31 stdout
= proc
.communicate()[0]
32 assert proc
.wait() == 0
33 commit
= stdout
.rstrip()
34 rev
= get1(mod
.xpath(".//rev"))
35 rev
.attrib
["commit"] = commit
36 print commit
, mod
.attrib
["name"]
37 write_file_atomically(deps_file
, lxml
.etree
.tostring(xml
) + "\n")
40 if __name__
== "__main__":