mirror of
https://github.com/denoland/deno.git
synced 2024-11-25 15:29:32 -05:00
build: don't clobber rust depfile mtime when fixing its paths
This avoids ninja unnecessarily rebuilding rust targets. Add a check for problems like these to be run on appveyor.
This commit is contained in:
parent
42e7b7b3e7
commit
3640ea4c0d
2 changed files with 15 additions and 1 deletions
|
@ -310,7 +310,9 @@ build_script:
|
||||||
# Attempt to work around multiple rustc instances messing with the same file
|
# Attempt to work around multiple rustc instances messing with the same file
|
||||||
# when building in parallel.
|
# when building in parallel.
|
||||||
# TODO: fix this properly.
|
# TODO: fix this properly.
|
||||||
- ninja -C out\debug -j 1 build_extra/rust:winapi build_extra/rust:winapi-0.2
|
- ps: ninja -C $env:DENO_BUILD_PATH -j 1
|
||||||
|
build_extra/rust:winapi build_extra/rust:winapi-0.2
|
||||||
|
|
||||||
- python tools\build.py
|
- python tools\build.py
|
||||||
- ps: Set-FilesNeeded -Auto -Reason "Build finished"
|
- ps: Set-FilesNeeded -Auto -Reason "Build finished"
|
||||||
|
|
||||||
|
@ -321,3 +323,11 @@ test_script:
|
||||||
after_test:
|
after_test:
|
||||||
# Remove stale files and empty dirs from the build directory.
|
# Remove stale files and empty dirs from the build directory.
|
||||||
- ps: Stop-TraceFilesNeeded
|
- ps: Stop-TraceFilesNeeded
|
||||||
|
|
||||||
|
# Verify that the build is fully up-to-date. Running ninja should be a no-op.
|
||||||
|
# This catches erroneous file cleanup, and incorrectly set up build deps.
|
||||||
|
- ps: |-
|
||||||
|
$out = ninja -C $env:DENO_BUILD_PATH -n -d explain :all
|
||||||
|
if ($out -notcontains "ninja: no work to do.") {
|
||||||
|
throw "Build should be up-to-date but isnt't."
|
||||||
|
}
|
||||||
|
|
|
@ -14,6 +14,9 @@ import util
|
||||||
# Updates the path of the main target in the depfile to the relative path
|
# Updates the path of the main target in the depfile to the relative path
|
||||||
# from base_path build_output_path
|
# from base_path build_output_path
|
||||||
def fix_depfile(depfile_path, base_path, build_output_path):
|
def fix_depfile(depfile_path, base_path, build_output_path):
|
||||||
|
# It's important that the fixed-up depfile has the same mtime as before.
|
||||||
|
# Ninja relies on it to decide whether to rebuild the target it belongs to.
|
||||||
|
stat = os.stat(depfile_path)
|
||||||
with open(depfile_path, "r") as depfile:
|
with open(depfile_path, "r") as depfile:
|
||||||
content = depfile.read()
|
content = depfile.read()
|
||||||
content_split = content.split(': ', 1)
|
content_split = content.split(': ', 1)
|
||||||
|
@ -21,6 +24,7 @@ def fix_depfile(depfile_path, base_path, build_output_path):
|
||||||
new_content = "%s: %s" % (target_path, content_split[1])
|
new_content = "%s: %s" % (target_path, content_split[1])
|
||||||
with open(depfile_path, "w") as depfile:
|
with open(depfile_path, "w") as depfile:
|
||||||
depfile.write(new_content)
|
depfile.write(new_content)
|
||||||
|
os.utime(depfile_path, (stat.st_atime, stat.st_mtime))
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|
Loading…
Reference in a new issue