If a user manually changes a generated file, don't ever overwrite it.
That way the user can modify an auto-generated 'compile' script, for example, and it'll stay modified. If they delete the file, we can then generate it for them again. Also, we have to warn whenever we're doing this, or people might think it's a bug.
This commit is contained in:
parent
0126f6be1e
commit
f6d11d5411
4 changed files with 44 additions and 11 deletions
17
builder.py
17
builder.py
|
|
@ -42,6 +42,10 @@ def _try_stat(filename):
|
|||
raise
|
||||
|
||||
|
||||
def warn_override(name):
|
||||
warn('%s - you modified it; skipping\n' % name)
|
||||
|
||||
|
||||
class ImmediateReturn(Exception):
|
||||
def __init__(self, rv):
|
||||
Exception.__init__(self, "immediate return with exit code %d" % rv)
|
||||
|
|
@ -69,6 +73,16 @@ class BuildJob:
|
|||
return self._after2(0)
|
||||
except ImmediateReturn, e:
|
||||
return self._after2(e.rv)
|
||||
newstamp = sf.read_stamp()
|
||||
if (sf.is_generated and
|
||||
not sf.failed_runid and
|
||||
newstamp != state.STAMP_MISSING and
|
||||
(sf.stamp != newstamp or sf.is_override)):
|
||||
warn_override(_nice(t))
|
||||
sf.set_override()
|
||||
sf.set_checked()
|
||||
sf.save()
|
||||
return self._after2(0)
|
||||
if (os.path.exists(t) and not os.path.exists(t + '/.')
|
||||
and not sf.is_generated):
|
||||
# an existing source file that was not generated by us.
|
||||
|
|
@ -87,7 +101,6 @@ class BuildJob:
|
|||
(dofile, basename, ext) = _find_do_file(sf)
|
||||
if not dofile:
|
||||
if os.path.exists(t):
|
||||
sf.is_generated = False
|
||||
sf.set_static()
|
||||
sf.save()
|
||||
return self._after2(0)
|
||||
|
|
@ -176,7 +189,7 @@ class BuildJob:
|
|||
else:
|
||||
unlink(tmpname)
|
||||
sf = self.sf
|
||||
sf.is_generated=True
|
||||
sf.is_generated = True
|
||||
sf.update_stamp()
|
||||
sf.set_changed()
|
||||
sf.save()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue