only write the file once, not on every (re)build