[rubygems/rubygems] Fix misleading error if compact index cannot be copied
Previously if ~/.bundle/cache/compact_index/rubygems.org.*/version
were owned by root with read-only access, bundle install would fail
with a misleading error message. For example:
There was an error while trying to write to `/tmp/bundler-compact-index-20220711-1823-npllre/versions`. It is
likely that you need to grant write permissions for that path.
This happened because the EACCESS error was caught by SharedHelpers.filesystem_access, which makes it look like the target
directory is at fault instead of the source.
We can't simply drop this guard because that causes the opposite
problem: the permission error appears to come from the source instead of
the target, since CompactIndexClient::Cache#lines also wraps read
access errors.
Instead, bring a minimal implementation of FileUtils.cp and nest calls
to SharedHelpers.filesystem_access properly.
[rubygems/rubygems] Fix misleading error if compact index cannot be copied
Previously if
~/.bundle/cache/compact_index/rubygems.org.*/version
were owned by root with read-only access,
bundle install
would failwith a misleading error message. For example:
This happened because the EACCESS error was caught by
SharedHelpers.filesystem_access
, which makes it look like the targetdirectory is at fault instead of the source.
We can't simply drop this guard because that causes the opposite
problem: the permission error appears to come from the source instead of
the target, since
CompactIndexClient::Cache#lines
also wraps readaccess errors.
Instead, bring a minimal implementation of
FileUtils.cp
and nest callsto
SharedHelpers.filesystem_access
properly.https://github.com/rubygems/rubygems/commit/320822c070
Co-authored-by: Stan Hu [email protected]