diff options
author | Alan Wu <XrXr@users.noreply.github.com> | 2022-04-04 14:10:29 -0400 |
---|---|---|
committer | git <svn-admin@ruby-lang.org> | 2022-04-05 08:56:21 +0900 |
commit | 18044f4fbbfdef27b1e41c109d63c276026008c5 (patch) | |
tree | 47933f5e6f50c72b2cfe93f49e4fa946eec44202 | |
parent | a19b2d59fc85abbb064d3923211161ba158c2fcb (diff) | |
download | ruby-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.rb | 14 |
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 |