From 83f9d80c0b0b7752e490abb45145073d8d0e656d Mon Sep 17 00:00:00 2001 From: Alan Wu Date: Thu, 27 Jul 2023 17:09:08 -0400 Subject: [PATCH] downloader.rb: unlink broken symlink before caching to fix ENOENT On GitHub CI, the downloader's cache is shared across different jobs. For some systems, the cached config.guess ends up being a symlink to /usr/share/autoconf/build-aux/config.guess and containers that don't have that file end up consuming the cache anyways, leading to ENOENT when trying to cache the downloaded file. This error happened on forks: - https://github.com/XrXr/ruby/actions/runs/5675262636/job/15380232344 - https://github.com/peterzhu2118/ruby/actions/runs/5684765421/job/15408188728 --- tool/downloader.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/tool/downloader.rb b/tool/downloader.rb index 0bcd8f31c3..2398fd7b04 100644 --- a/tool/downloader.rb +++ b/tool/downloader.rb @@ -270,6 +270,7 @@ class Downloader end dest = (cache_save && cache && !cache.exist? ? cache : file) dest.parent.mkpath + dest.unlink if dest.symlink? && !dest.exist? dest.open("wb", 0600) do |f| f.write(data) f.chmod(mode_for(data))