summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2022-03-29 18:42:00 +0900
committergit <svn-admin@ruby-lang.org>2022-03-29 20:57:58 +0900
commitc67088dbae9e61a4c07742ceee7fb46597589d95 (patch)
tree0100c6d3162f05221528131319af55a561cde480 /ext
parentc8e1ae4db770634693129266dea4e1d334d057c2 (diff)
[ruby/psych] Try bundled libyaml source if pre-installed is unavailable
https://github.com/ruby/psych/commit/f78e1dba89
Diffstat (limited to 'ext')
-rw-r--r--ext/psych/extconf.rb16
1 files changed, 10 insertions, 6 deletions
diff --git a/ext/psych/extconf.rb b/ext/psych/extconf.rb
index 17c0deee96..78456b5687 100644
--- a/ext/psych/extconf.rb
+++ b/ext/psych/extconf.rb
@@ -7,7 +7,16 @@ if $mswin or $mingw or $cygwin
end
yaml_source = with_config("libyaml-source-dir") || enable_config("bundled-libyaml", false)
+unless yaml_source # default to pre-installed libyaml
+ pkg_config('yaml-0.1')
+ dir_config('libyaml')
+ unless find_header('yaml.h') && find_library('yaml', 'yaml_get_version')
+ yaml_source = true # fallback to the bundled source if exists
+ end
+end
+
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'
@@ -16,6 +25,7 @@ if yaml_source == true
raise "failed to download libyaml source"
end
yaml_source, = Dir.glob("#{$srcdir}/yaml-*/")
+ raise "libyaml not found" unless yaml_source
end
elsif yaml_source
yaml_source = yaml_source.gsub(/\$\((\w+)\)|\$\{(\w+)\}/) {ENV[$1||$2]}
@@ -41,12 +51,6 @@ if yaml_source
Logging.message("INCLFAG=#$INCLFAG\n")
libyaml = "#{yaml}/src/.libs/libyaml.#$LIBEXT"
$LOCAL_LIBS.prepend("$(LIBYAML) ")
-else
- pkg_config('yaml-0.1')
- dir_config('libyaml')
- unless find_header('yaml.h') && find_library('yaml', 'yaml_get_version')
- raise "libyaml not found"
- end
end
create_makefile 'psych' do |mk|