aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Wu <XrXr@users.noreply.github.com>2022-04-04 14:10:29 -0400
committergit <svn-admin@ruby-lang.org>2022-04-05 08:56:21 +0900
commit18044f4fbbfdef27b1e41c109d63c276026008c5 (patch)
tree47933f5e6f50c72b2cfe93f49e4fa946eec44202
parenta19b2d59fc85abbb064d3923211161ba158c2fcb (diff)
downloadruby-18044f4fbbfdef27b1e41c109d63c276026008c5.tar.gz
[ruby/psych] Improve libyaml source downloading error messages
People trying to build CRuby by following the instructions in its [README] have been running into [errors] due to missing `libyaml` on their system. Let's try to present a better error message when it happens. [README]: https://github.com/ruby/ruby/tree/fb5aa31e2d20ea8e1425432672f4de4c8ca2c26b#how-to-compile-and-install [errors]: https://github.com/ruby/psych/issues/552 https://github.com/ruby/psych/commit/20a633028e
-rw-r--r--ext/psych/extconf.rb14
1 files changed, 10 insertions, 4 deletions
diff --git a/ext/psych/extconf.rb b/ext/psych/extconf.rb
index 795a0506ff..b9cd12033d 100644
--- a/ext/psych/extconf.rb
+++ b/ext/psych/extconf.rb
@@ -19,10 +19,16 @@ if yaml_source == true
# search the latest libyaml source under $srcdir
yaml_source = Dir.glob("#{$srcdir}/yaml{,-*}/").max_by {|n| File.basename(n).scan(/\d+/).map(&:to_i)}
unless yaml_source
- require_relative '../../tool/extlibs.rb'
- extlibs = ExtLibs.new(cache_dir: File.expand_path("../../tmp/download_cache", $srcdir))
- unless extlibs.process_under($srcdir)
- raise "failed to download libyaml source"
+ download_failure = "failed to download libyaml source"
+ begin
+ require_relative '../../tool/extlibs.rb'
+ extlibs = ExtLibs.new(cache_dir: File.expand_path("../../tmp/download_cache", $srcdir))
+ unless extlibs.process_under($srcdir)
+ raise download_failure
+ end
+ rescue
+ # Implicitly captures Exception#cause. Newer rubies show it in the backtrace.
+ raise download_failure
end
yaml_source, = Dir.glob("#{$srcdir}/yaml-*/")
raise "libyaml not found" unless yaml_source