nokogiri 1.16.8-x86-mingw32 → 1.17.0-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of nokogiri might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +11 -21
- data/README.md +4 -0
- data/dependencies.yml +6 -6
- data/ext/nokogiri/extconf.rb +191 -137
- data/ext/nokogiri/gumbo.c +69 -53
- data/ext/nokogiri/html4_document.c +10 -4
- data/ext/nokogiri/html4_element_description.c +18 -18
- data/ext/nokogiri/html4_sax_parser.c +40 -0
- data/ext/nokogiri/html4_sax_parser_context.c +48 -58
- data/ext/nokogiri/html4_sax_push_parser.c +25 -24
- data/ext/nokogiri/include/libexslt/exsltconfig.h +3 -3
- data/ext/nokogiri/include/libxml2/libxml/HTMLparser.h +12 -19
- data/ext/nokogiri/include/libxml2/libxml/c14n.h +1 -12
- data/ext/nokogiri/include/libxml2/libxml/debugXML.h +1 -1
- data/ext/nokogiri/include/libxml2/libxml/encoding.h +9 -0
- data/ext/nokogiri/include/libxml2/libxml/entities.h +12 -1
- data/ext/nokogiri/include/libxml2/libxml/hash.h +19 -0
- data/ext/nokogiri/include/libxml2/libxml/list.h +2 -2
- data/ext/nokogiri/include/libxml2/libxml/nanohttp.h +17 -0
- data/ext/nokogiri/include/libxml2/libxml/parser.h +60 -54
- data/ext/nokogiri/include/libxml2/libxml/parserInternals.h +9 -1
- data/ext/nokogiri/include/libxml2/libxml/pattern.h +6 -0
- data/ext/nokogiri/include/libxml2/libxml/tree.h +32 -12
- data/ext/nokogiri/include/libxml2/libxml/uri.h +11 -0
- data/ext/nokogiri/include/libxml2/libxml/valid.h +29 -2
- data/ext/nokogiri/include/libxml2/libxml/xinclude.h +7 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlIO.h +21 -4
- data/ext/nokogiri/include/libxml2/libxml/xmlerror.h +14 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlexports.h +111 -15
- data/ext/nokogiri/include/libxml2/libxml/xmlmemory.h +8 -45
- data/ext/nokogiri/include/libxml2/libxml/xmlreader.h +2 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlsave.h +5 -0
- data/ext/nokogiri/include/libxml2/libxml/xmlunicode.h +165 -1
- data/ext/nokogiri/include/libxml2/libxml/xmlversion.h +7 -171
- data/ext/nokogiri/include/libxml2/libxml/xmlwriter.h +1 -0
- data/ext/nokogiri/include/libxml2/libxml/xpath.h +4 -0
- data/ext/nokogiri/include/libxslt/xsltInternals.h +3 -0
- data/ext/nokogiri/include/libxslt/xsltconfig.h +4 -37
- data/ext/nokogiri/libxml2_polyfill.c +114 -0
- data/ext/nokogiri/nokogiri.c +9 -2
- data/ext/nokogiri/nokogiri.h +18 -33
- data/ext/nokogiri/xml_attr.c +1 -1
- data/ext/nokogiri/xml_cdata.c +2 -10
- data/ext/nokogiri/xml_comment.c +3 -8
- data/ext/nokogiri/xml_document.c +163 -156
- data/ext/nokogiri/xml_document_fragment.c +10 -25
- data/ext/nokogiri/xml_dtd.c +1 -1
- data/ext/nokogiri/xml_element_content.c +9 -9
- data/ext/nokogiri/xml_encoding_handler.c +4 -4
- data/ext/nokogiri/xml_namespace.c +6 -6
- data/ext/nokogiri/xml_node.c +130 -104
- data/ext/nokogiri/xml_node_set.c +46 -44
- data/ext/nokogiri/xml_reader.c +54 -58
- data/ext/nokogiri/xml_relax_ng.c +35 -56
- data/ext/nokogiri/xml_sax_parser.c +156 -88
- data/ext/nokogiri/xml_sax_parser_context.c +213 -131
- data/ext/nokogiri/xml_sax_push_parser.c +68 -49
- data/ext/nokogiri/xml_schema.c +50 -85
- data/ext/nokogiri/xml_syntax_error.c +19 -11
- data/ext/nokogiri/xml_text.c +2 -4
- data/ext/nokogiri/xml_xpath_context.c +2 -2
- data/ext/nokogiri/xslt_stylesheet.c +8 -8
- data/lib/nokogiri/3.0/nokogiri.so +0 -0
- data/lib/nokogiri/3.1/nokogiri.so +0 -0
- data/lib/nokogiri/3.2/nokogiri.so +0 -0
- data/lib/nokogiri/3.3/nokogiri.so +0 -0
- data/lib/nokogiri/class_resolver.rb +1 -1
- data/lib/nokogiri/css/node.rb +6 -2
- data/lib/nokogiri/css/parser.rb +6 -4
- data/lib/nokogiri/css/parser.y +2 -2
- data/lib/nokogiri/css/parser_extras.rb +6 -66
- data/lib/nokogiri/css/selector_cache.rb +38 -0
- data/lib/nokogiri/css/tokenizer.rb +4 -4
- data/lib/nokogiri/css/tokenizer.rex +9 -8
- data/lib/nokogiri/css/xpath_visitor.rb +42 -6
- data/lib/nokogiri/css.rb +86 -20
- data/lib/nokogiri/decorators/slop.rb +3 -5
- data/lib/nokogiri/encoding_handler.rb +2 -2
- data/lib/nokogiri/html4/document.rb +44 -23
- data/lib/nokogiri/html4/document_fragment.rb +124 -12
- data/lib/nokogiri/html4/encoding_reader.rb +1 -1
- data/lib/nokogiri/html4/sax/parser.rb +23 -38
- data/lib/nokogiri/html4/sax/parser_context.rb +4 -9
- data/lib/nokogiri/html4.rb +9 -14
- data/lib/nokogiri/html5/builder.rb +40 -0
- data/lib/nokogiri/html5/document.rb +61 -30
- data/lib/nokogiri/html5/document_fragment.rb +130 -20
- data/lib/nokogiri/html5/node.rb +4 -4
- data/lib/nokogiri/html5.rb +114 -72
- data/lib/nokogiri/version/constant.rb +1 -1
- data/lib/nokogiri/xml/builder.rb +8 -1
- data/lib/nokogiri/xml/document.rb +70 -26
- data/lib/nokogiri/xml/document_fragment.rb +84 -13
- data/lib/nokogiri/xml/node.rb +82 -11
- data/lib/nokogiri/xml/node_set.rb +9 -7
- data/lib/nokogiri/xml/parse_options.rb +1 -1
- data/lib/nokogiri/xml/pp/node.rb +6 -1
- data/lib/nokogiri/xml/reader.rb +46 -13
- data/lib/nokogiri/xml/relax_ng.rb +57 -20
- data/lib/nokogiri/xml/sax/document.rb +174 -83
- data/lib/nokogiri/xml/sax/parser.rb +115 -41
- data/lib/nokogiri/xml/sax/parser_context.rb +116 -8
- data/lib/nokogiri/xml/sax/push_parser.rb +3 -0
- data/lib/nokogiri/xml/sax.rb +48 -0
- data/lib/nokogiri/xml/schema.rb +112 -45
- data/lib/nokogiri/xml/searchable.rb +6 -8
- data/lib/nokogiri/xml/syntax_error.rb +22 -0
- data/lib/nokogiri/xml.rb +13 -24
- data/lib/nokogiri/xslt.rb +3 -9
- data/lib/xsd/xmlparser/nokogiri.rb +3 -4
- metadata +8 -4
- data/ext/nokogiri/libxml2_backwards_compat.c +0 -121
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d55129f6b28d89babc3e1217000cd212df1957f9287fb1ab1a702b3e583ab70
|
4
|
+
data.tar.gz: b010784b0678e8534f4adb59018bd13f05088825bc79e605809cb94369cd0be2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: beb6724b136b9e3d84c89f5e32069011894a1f3633e3e5b74d96b61c3e111feb60f0a50989b22e61e9ac9409b3939c6174ac49109d5e2c73048639b4b7cc9134
|
7
|
+
data.tar.gz: 16d6a88767d1f38332cea6d93a1d7b2c4b8768cb6b12503714780b7da0785506503bde78f84866135b26659e1c519d3ce1010614d59adccca7be82278743ffe5
|
data/Gemfile
CHANGED
@@ -5,44 +5,34 @@ source "https://rubygems.org"
|
|
5
5
|
gemspec
|
6
6
|
|
7
7
|
group :development do
|
8
|
-
# ruby 3.4.0-dev removed some gems from the default set
|
9
|
-
#
|
10
|
-
# TODO: we should be able to remove these as our gem dependencies sort it out and we pull them in
|
11
|
-
# transitively.
|
12
|
-
gem "mutex_m"
|
13
|
-
|
14
8
|
# bootstrapping
|
15
9
|
gem "bundler", "~> 2.3"
|
16
|
-
gem "rake", "13.1
|
10
|
+
gem "rake", "13.2.1"
|
17
11
|
|
18
12
|
# building extensions
|
19
|
-
gem "rake-compiler", "1.2.
|
20
|
-
gem "rake-compiler-dock", "1.
|
13
|
+
gem "rake-compiler", "1.2.8"
|
14
|
+
gem "rake-compiler-dock", "1.5.2"
|
21
15
|
|
22
16
|
# parser generator
|
23
|
-
gem "rexical", "
|
17
|
+
gem "rexical", "1.0.8"
|
24
18
|
|
25
19
|
# tests
|
26
|
-
gem "minitest", "5.
|
20
|
+
gem "minitest", "5.25.2"
|
27
21
|
gem "minitest-parallel_fork", "2.0.0"
|
28
|
-
gem "ruby_memcheck", "
|
22
|
+
gem "ruby_memcheck", "3.0.0"
|
29
23
|
gem "rubyzip", "~> 2.3.2"
|
30
24
|
gem "simplecov", "= 0.21.2"
|
31
25
|
|
32
26
|
# rubocop
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
gem "rubocop-performance", "1.20.2"
|
38
|
-
gem "rubocop-rake", "= 0.6.0"
|
39
|
-
gem "rubocop-shopify", "2.14.0"
|
40
|
-
end
|
27
|
+
gem "standard", "1.42.1"
|
28
|
+
gem "rubocop-minitest", "0.36.0"
|
29
|
+
gem "rubocop-packaging", "0.5.2"
|
30
|
+
gem "rubocop-rake", "0.6.0"
|
41
31
|
end
|
42
32
|
|
43
33
|
# If Psych doesn't build, you can disable this group locally by running
|
44
34
|
# `bundle config set --local without rdoc`
|
45
35
|
# Then re-run `bundle install`.
|
46
36
|
group :rdoc do
|
47
|
-
gem "rdoc", "6.
|
37
|
+
gem "rdoc", "6.8.1"
|
48
38
|
end
|
data/README.md
CHANGED
@@ -117,6 +117,10 @@ Requirements:
|
|
117
117
|
- Ruby >= 3.0
|
118
118
|
- JRuby >= 9.4.0.0
|
119
119
|
|
120
|
+
If you are compiling the native extension against a system version of libxml2:
|
121
|
+
|
122
|
+
- libxml2 >= 2.9.2 (recommended >= 2.12.0)
|
123
|
+
|
120
124
|
|
121
125
|
### Native Gems: Faster, more reliable installation
|
122
126
|
|
data/dependencies.yml
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
---
|
2
2
|
libxml2:
|
3
|
-
version: "2.
|
4
|
-
sha256: "
|
5
|
-
# sha-256 hash provided in https://download.gnome.org/sources/libxml2/2.
|
3
|
+
version: "2.13.5"
|
4
|
+
sha256: "74fc163217a3964257d3be39af943e08861263c4231f9ef5b496b6f6d4c7b2b6"
|
5
|
+
# sha-256 hash provided in https://download.gnome.org/sources/libxml2/2.13/libxml2-2.13.5.sha256sum
|
6
6
|
|
7
7
|
libxslt:
|
8
|
-
version: "1.1.
|
9
|
-
sha256: "
|
10
|
-
# sha-256 hash provided in https://download.gnome.org/sources/libxslt/1.1/libxslt-1.1.
|
8
|
+
version: "1.1.42"
|
9
|
+
sha256: "85ca62cac0d41fc77d3f6033da9df6fd73d20ea2fc18b0a3609ffb4110e1baeb"
|
10
|
+
# sha-256 hash provided in https://download.gnome.org/sources/libxslt/1.1/libxslt-1.1.42.sha256sum
|
11
11
|
|
12
12
|
zlib:
|
13
13
|
version: "1.3.1"
|
data/ext/nokogiri/extconf.rb
CHANGED
@@ -12,8 +12,8 @@ require "pathname"
|
|
12
12
|
|
13
13
|
# helpful constants
|
14
14
|
PACKAGE_ROOT_DIR = File.expand_path(File.join(File.dirname(__FILE__), "..", ".."))
|
15
|
-
REQUIRED_LIBXML_VERSION = "2.
|
16
|
-
RECOMMENDED_LIBXML_VERSION = "2.
|
15
|
+
REQUIRED_LIBXML_VERSION = "2.9.2"
|
16
|
+
RECOMMENDED_LIBXML_VERSION = "2.12.0"
|
17
17
|
|
18
18
|
REQUIRED_MINI_PORTILE_VERSION = "~> 2.8.2" # keep this version in sync with the one in the gemspec
|
19
19
|
REQUIRED_PKG_CONFIG_VERSION = "~> 1.1"
|
@@ -57,30 +57,6 @@ NOKOGIRI_HELP_MESSAGE = <<~HELP
|
|
57
57
|
Look for headers in DIRECTORY.
|
58
58
|
|
59
59
|
|
60
|
-
Related to zlib:
|
61
|
-
|
62
|
-
--with-zlib-dir=DIRECTORY
|
63
|
-
Look for zlib headers and library in DIRECTORY.
|
64
|
-
|
65
|
-
--with-zlib-lib=DIRECTORY
|
66
|
-
Look for zlib library in DIRECTORY.
|
67
|
-
|
68
|
-
--with-zlib-include=DIRECTORY
|
69
|
-
Look for zlib headers in DIRECTORY.
|
70
|
-
|
71
|
-
|
72
|
-
Related to iconv:
|
73
|
-
|
74
|
-
--with-iconv-dir=DIRECTORY
|
75
|
-
Look for iconv headers and library in DIRECTORY.
|
76
|
-
|
77
|
-
--with-iconv-lib=DIRECTORY
|
78
|
-
Look for iconv library in DIRECTORY.
|
79
|
-
|
80
|
-
--with-iconv-include=DIRECTORY
|
81
|
-
Look for iconv headers in DIRECTORY.
|
82
|
-
|
83
|
-
|
84
60
|
Related to libxml2:
|
85
61
|
|
86
62
|
--with-xml2-dir=DIRECTORY
|
@@ -95,6 +71,10 @@ NOKOGIRI_HELP_MESSAGE = <<~HELP
|
|
95
71
|
--with-xml2-source-dir=DIRECTORY
|
96
72
|
(dev only) Build libxml2 from the source code in DIRECTORY
|
97
73
|
|
74
|
+
--disable-xml2-legacy
|
75
|
+
Do not build libxml2 with zlib, liblzma, or HTTP support. This will become the default
|
76
|
+
in a future version of Nokogiri.
|
77
|
+
|
98
78
|
|
99
79
|
Related to libxslt:
|
100
80
|
|
@@ -123,6 +103,30 @@ NOKOGIRI_HELP_MESSAGE = <<~HELP
|
|
123
103
|
Look for exslt headers in DIRECTORY.
|
124
104
|
|
125
105
|
|
106
|
+
Related to iconv:
|
107
|
+
|
108
|
+
--with-iconv-dir=DIRECTORY
|
109
|
+
Look for iconv headers and library in DIRECTORY.
|
110
|
+
|
111
|
+
--with-iconv-lib=DIRECTORY
|
112
|
+
Look for iconv library in DIRECTORY.
|
113
|
+
|
114
|
+
--with-iconv-include=DIRECTORY
|
115
|
+
Look for iconv headers in DIRECTORY.
|
116
|
+
|
117
|
+
|
118
|
+
Related to zlib (ignored if `--disable-xml2-legacy` is used):
|
119
|
+
|
120
|
+
--with-zlib-dir=DIRECTORY
|
121
|
+
Look for zlib headers and library in DIRECTORY.
|
122
|
+
|
123
|
+
--with-zlib-lib=DIRECTORY
|
124
|
+
Look for zlib library in DIRECTORY.
|
125
|
+
|
126
|
+
--with-zlib-include=DIRECTORY
|
127
|
+
Look for zlib headers in DIRECTORY.
|
128
|
+
|
129
|
+
|
126
130
|
Flags only used when building and using the packaged libraries:
|
127
131
|
|
128
132
|
--disable-static
|
@@ -137,6 +141,9 @@ NOKOGIRI_HELP_MESSAGE = <<~HELP
|
|
137
141
|
NOKOGIRI_USE_SYSTEM_LIBRARIES
|
138
142
|
Equivalent to `--enable-system-libraries` when set, even if nil or blank.
|
139
143
|
|
144
|
+
AR
|
145
|
+
Use this path to invoke the library archiver instead of `RbConfig::CONFIG['AR']`
|
146
|
+
|
140
147
|
CC
|
141
148
|
Use this path to invoke the compiler instead of `RbConfig::CONFIG['CC']`
|
142
149
|
|
@@ -146,6 +153,9 @@ NOKOGIRI_HELP_MESSAGE = <<~HELP
|
|
146
153
|
CFLAGS
|
147
154
|
If this string is accepted by the compiler, add it to the flags passed to the compiler
|
148
155
|
|
156
|
+
LD
|
157
|
+
Use this path to invoke the linker instead of `RbConfig::CONFIG['LD']`
|
158
|
+
|
149
159
|
LDFLAGS
|
150
160
|
If this string is accepted by the linker, add it to the flags passed to the linker
|
151
161
|
|
@@ -175,6 +185,10 @@ def config_system_libraries?
|
|
175
185
|
end
|
176
186
|
end
|
177
187
|
|
188
|
+
def config_with_xml2_legacy?
|
189
|
+
enable_config("xml2-legacy", true)
|
190
|
+
end
|
191
|
+
|
178
192
|
def windows?
|
179
193
|
RbConfig::CONFIG["target_os"].match?(/mingw|mswin/)
|
180
194
|
end
|
@@ -195,10 +209,14 @@ def aix?
|
|
195
209
|
RbConfig::CONFIG["target_os"].include?("aix")
|
196
210
|
end
|
197
211
|
|
198
|
-
def
|
212
|
+
def unix?
|
199
213
|
!(windows? || solaris? || darwin?)
|
200
214
|
end
|
201
215
|
|
216
|
+
def nix?
|
217
|
+
ENV.key?("NIX_CC")
|
218
|
+
end
|
219
|
+
|
202
220
|
def truffle?
|
203
221
|
RUBY_ENGINE == "truffleruby"
|
204
222
|
end
|
@@ -626,12 +644,22 @@ if openbsd? && !config_system_libraries?
|
|
626
644
|
append_cppflags "-I/usr/local/include"
|
627
645
|
end
|
628
646
|
|
647
|
+
if ENV["AR"]
|
648
|
+
RbConfig::CONFIG["AR"] = RbConfig::MAKEFILE_CONFIG["AR"] = ENV["AR"]
|
649
|
+
end
|
650
|
+
|
629
651
|
if ENV["CC"]
|
630
652
|
RbConfig::CONFIG["CC"] = RbConfig::MAKEFILE_CONFIG["CC"] = ENV["CC"]
|
631
653
|
end
|
632
654
|
|
633
|
-
|
655
|
+
if ENV["LD"]
|
656
|
+
RbConfig::CONFIG["LD"] = RbConfig::MAKEFILE_CONFIG["LD"] = ENV["LD"]
|
657
|
+
end
|
658
|
+
|
659
|
+
# use same toolchain for libxml and libxslt
|
660
|
+
ENV["AR"] = RbConfig::CONFIG["AR"]
|
634
661
|
ENV["CC"] = RbConfig::CONFIG["CC"]
|
662
|
+
ENV["LD"] = RbConfig::CONFIG["LD"]
|
635
663
|
|
636
664
|
if arg_config("--prevent-strip")
|
637
665
|
old_cflags = $CFLAGS.split.join(" ")
|
@@ -646,9 +674,9 @@ if arg_config("--prevent-strip")
|
|
646
674
|
end
|
647
675
|
|
648
676
|
# adopt environment config
|
649
|
-
append_cflags(ENV["CFLAGS"]
|
650
|
-
append_cppflags(ENV["CPPFLAGS"]
|
651
|
-
append_ldflags(ENV["LDFLAGS"]
|
677
|
+
append_cflags(ENV["CFLAGS"]) unless ENV["CFLAGS"].nil?
|
678
|
+
append_cppflags(ENV["CPPFLAGS"]) unless ENV["CPPFLAGS"].nil?
|
679
|
+
append_ldflags(ENV["LDFLAGS"]) unless ENV["LDFLAGS"].nil?
|
652
680
|
$LIBS = concat_flags($LIBS, ENV["LIBS"])
|
653
681
|
|
654
682
|
# libgumbo uses C90/C99 features, see #2302
|
@@ -666,12 +694,9 @@ append_cflags("-Winline")
|
|
666
694
|
# good to have no matter what Ruby was compiled with
|
667
695
|
append_cflags("-Wmissing-noreturn")
|
668
696
|
|
669
|
-
# check integer loss of precision
|
670
|
-
|
671
|
-
|
672
|
-
else
|
673
|
-
append_cflags("-Wconversion -Wno-sign-conversion")
|
674
|
-
end
|
697
|
+
# check integer loss of precision. this flag won't generally work until Ruby 3.4.
|
698
|
+
# see https://bugs.ruby-lang.org/issues/20507
|
699
|
+
append_cflags("-Wconversion")
|
675
700
|
|
676
701
|
# handle clang variations, see #1101
|
677
702
|
if darwin?
|
@@ -684,7 +709,7 @@ end
|
|
684
709
|
|
685
710
|
# Add SDK-specific include path for macOS and brew versions before v2.2.12 (2020-04-08) [#1851, #1801]
|
686
711
|
macos_mojave_sdk_include_path = "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/libxml2"
|
687
|
-
if config_system_libraries? && darwin? && Dir.exist?(macos_mojave_sdk_include_path)
|
712
|
+
if config_system_libraries? && darwin? && Dir.exist?(macos_mojave_sdk_include_path) && !nix?
|
688
713
|
append_cppflags("-I#{macos_mojave_sdk_include_path}")
|
689
714
|
end
|
690
715
|
|
@@ -694,13 +719,15 @@ append_cppflags(' "-Idummypath"') if windows?
|
|
694
719
|
|
695
720
|
if config_system_libraries?
|
696
721
|
message "Building nokogiri using system libraries.\n"
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
722
|
+
if config_with_xml2_legacy?
|
723
|
+
ensure_package_configuration(
|
724
|
+
opt: "zlib",
|
725
|
+
pc: "zlib",
|
726
|
+
lib: "z",
|
727
|
+
headers: "zlib.h",
|
728
|
+
func: "gzdopen",
|
729
|
+
)
|
730
|
+
end
|
704
731
|
ensure_package_configuration(
|
705
732
|
opt: "xml2",
|
706
733
|
pc: "libxml-2.0",
|
@@ -744,58 +771,60 @@ else
|
|
744
771
|
require "yaml"
|
745
772
|
dependencies = YAML.load_file(File.join(PACKAGE_ROOT_DIR, "dependencies.yml"))
|
746
773
|
|
747
|
-
dir_config("zlib")
|
774
|
+
dir_config("zlib") if config_with_xml2_legacy?
|
748
775
|
|
749
776
|
if cross_build_p || windows?
|
750
|
-
|
751
|
-
|
752
|
-
|
753
|
-
|
754
|
-
|
755
|
-
|
756
|
-
|
757
|
-
|
758
|
-
|
759
|
-
|
760
|
-
|
761
|
-
|
762
|
-
|
763
|
-
|
764
|
-
|
765
|
-
|
766
|
-
|
767
|
-
|
777
|
+
if config_with_xml2_legacy?
|
778
|
+
zlib_recipe = process_recipe("zlib", dependencies["zlib"]["version"], static_p, cross_build_p) do |recipe|
|
779
|
+
recipe.files = [{
|
780
|
+
url: zlib_source(recipe.version),
|
781
|
+
sha256: dependencies["zlib"]["sha256"],
|
782
|
+
}]
|
783
|
+
if windows?
|
784
|
+
class << recipe
|
785
|
+
attr_accessor :cross_build_p
|
786
|
+
|
787
|
+
def configure
|
788
|
+
Dir.chdir(work_path) do
|
789
|
+
mk = File.read("win32/Makefile.gcc")
|
790
|
+
File.open("win32/Makefile.gcc", "wb") do |f|
|
791
|
+
f.puts "BINARY_PATH = #{path}/bin"
|
792
|
+
f.puts "LIBRARY_PATH = #{path}/lib"
|
793
|
+
f.puts "INCLUDE_PATH = #{path}/include"
|
794
|
+
mk.sub!(/^PREFIX\s*=\s*$/, "PREFIX = #{host}-") if cross_build_p
|
795
|
+
f.puts mk
|
796
|
+
end
|
768
797
|
end
|
769
798
|
end
|
770
|
-
end
|
771
799
|
|
772
|
-
|
773
|
-
|
774
|
-
|
800
|
+
def configured?
|
801
|
+
Dir.chdir(work_path) do
|
802
|
+
!!(File.read("win32/Makefile.gcc") =~ /^BINARY_PATH/)
|
803
|
+
end
|
775
804
|
end
|
776
|
-
end
|
777
805
|
|
778
|
-
|
779
|
-
|
780
|
-
|
806
|
+
def compile
|
807
|
+
execute("compile", "make -f win32/Makefile.gcc")
|
808
|
+
end
|
781
809
|
|
782
|
-
|
783
|
-
|
810
|
+
def install
|
811
|
+
execute("install", "make -f win32/Makefile.gcc install")
|
812
|
+
end
|
784
813
|
end
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
|
797
|
-
|
798
|
-
|
814
|
+
recipe.cross_build_p = cross_build_p
|
815
|
+
else
|
816
|
+
class << recipe
|
817
|
+
def configure
|
818
|
+
env = {}
|
819
|
+
env["CFLAGS"] = concat_flags(ENV["CFLAGS"], "-fPIC", "-g")
|
820
|
+
env["CHOST"] = host
|
821
|
+
execute("configure", ["./configure", "--static", configure_prefix], { env: env })
|
822
|
+
if darwin?
|
823
|
+
# needed as of zlib 1.2.13
|
824
|
+
Dir.chdir(work_path) do
|
825
|
+
makefile = File.read("Makefile").gsub(/^AR=.*$/, "AR=#{host}-libtool")
|
826
|
+
File.open("Makefile", "w") { |m| m.write(makefile) }
|
827
|
+
end
|
799
828
|
end
|
800
829
|
end
|
801
830
|
end
|
@@ -803,7 +832,7 @@ else
|
|
803
832
|
end
|
804
833
|
end
|
805
834
|
|
806
|
-
unless
|
835
|
+
unless unix?
|
807
836
|
libiconv_recipe = process_recipe(
|
808
837
|
"libiconv",
|
809
838
|
dependencies["libiconv"]["version"],
|
@@ -888,6 +917,10 @@ else
|
|
888
917
|
cppflags = concat_flags(cppflags, "-DNOKOGIRI_PRECOMPILED_LIBRARIES")
|
889
918
|
end
|
890
919
|
|
920
|
+
if config_with_xml2_legacy?
|
921
|
+
recipe.configure_options << "--with-legacy"
|
922
|
+
end
|
923
|
+
|
891
924
|
if zlib_recipe
|
892
925
|
recipe.configure_options << "--with-zlib=#{zlib_recipe.path}"
|
893
926
|
end
|
@@ -899,7 +932,8 @@ else
|
|
899
932
|
end
|
900
933
|
|
901
934
|
if darwin? && !cross_build_p
|
902
|
-
recipe.configure_options
|
935
|
+
recipe.configure_options << "RANLIB=/usr/bin/ranlib" unless ENV.key?("RANLIB")
|
936
|
+
recipe.configure_options << "AR=/usr/bin/ar" unless ENV.key?("AR")
|
903
937
|
end
|
904
938
|
|
905
939
|
if windows?
|
@@ -940,7 +974,8 @@ else
|
|
940
974
|
cflags = concat_flags(ENV["CFLAGS"], "-O2", "-U_FORTIFY_SOURCE", "-g")
|
941
975
|
|
942
976
|
if darwin? && !cross_build_p
|
943
|
-
recipe.configure_options
|
977
|
+
recipe.configure_options << "RANLIB=/usr/bin/ranlib" unless ENV.key?("RANLIB")
|
978
|
+
recipe.configure_options << "AR=/usr/bin/ar" unless ENV.key?("AR")
|
944
979
|
end
|
945
980
|
|
946
981
|
if windows?
|
@@ -1031,62 +1066,81 @@ else
|
|
1031
1066
|
ensure_func("exsltFuncRegister", "libexslt/exslt.h")
|
1032
1067
|
end
|
1033
1068
|
|
1034
|
-
|
1035
|
-
|
1069
|
+
if arg_config("--gumbo-dev")
|
1070
|
+
message("DEV MODE ENABLED: build libgumbo as packaged source")
|
1071
|
+
ext_dir = File.dirname(__FILE__)
|
1072
|
+
Dir.chdir(ext_dir) do
|
1073
|
+
$srcs = Dir["*.c", "../../gumbo-parser/src/*.c"]
|
1074
|
+
$hdrs = Dir["*.h", "../../gumbo-parser/src/*.h"]
|
1075
|
+
end
|
1076
|
+
$INCFLAGS << " -I$(srcdir)/../../gumbo-parser/src"
|
1077
|
+
$VPATH << "$(srcdir)/../../gumbo-parser/src"
|
1078
|
+
find_header("nokogiri_gumbo.h") || abort("nokogiri_gumbo.h not found")
|
1079
|
+
else
|
1080
|
+
libgumbo_recipe = process_recipe("libgumbo", "1.0.0-nokogiri", static_p, cross_build_p, false) do |recipe|
|
1081
|
+
recipe.configure_options = []
|
1036
1082
|
|
1037
|
-
|
1038
|
-
|
1039
|
-
|
1040
|
-
|
1083
|
+
class << recipe
|
1084
|
+
def downloaded?
|
1085
|
+
true
|
1086
|
+
end
|
1041
1087
|
|
1042
|
-
|
1043
|
-
|
1044
|
-
|
1045
|
-
|
1046
|
-
|
1047
|
-
|
1088
|
+
def extract
|
1089
|
+
target = File.join(tmp_path, "gumbo-parser")
|
1090
|
+
output("Copying gumbo-parser files into #{target}...")
|
1091
|
+
FileUtils.mkdir_p(target)
|
1092
|
+
FileUtils.cp(Dir.glob(File.join(PACKAGE_ROOT_DIR, "gumbo-parser/src/*")), target)
|
1093
|
+
end
|
1048
1094
|
|
1049
|
-
|
1050
|
-
|
1051
|
-
|
1095
|
+
def configured?
|
1096
|
+
true
|
1097
|
+
end
|
1052
1098
|
|
1053
|
-
|
1054
|
-
|
1055
|
-
|
1056
|
-
|
1057
|
-
|
1058
|
-
|
1059
|
-
|
1099
|
+
def install
|
1100
|
+
lib_dir = File.join(port_path, "lib")
|
1101
|
+
inc_dir = File.join(port_path, "include")
|
1102
|
+
FileUtils.mkdir_p([lib_dir, inc_dir])
|
1103
|
+
FileUtils.cp(File.join(work_path, "libgumbo.a"), lib_dir)
|
1104
|
+
FileUtils.cp(Dir.glob(File.join(work_path, "*.h")), inc_dir)
|
1105
|
+
end
|
1060
1106
|
|
1061
|
-
|
1062
|
-
|
1107
|
+
def compile
|
1108
|
+
cflags = concat_flags(ENV["CFLAGS"], "-fPIC", "-O2", "-g")
|
1063
1109
|
|
1064
|
-
|
1065
|
-
|
1066
|
-
|
1067
|
-
|
1068
|
-
|
1069
|
-
|
1070
|
-
|
1110
|
+
env = { "CC" => gcc_cmd, "CFLAGS" => cflags }
|
1111
|
+
if config_cross_build?
|
1112
|
+
if host.include?("darwin")
|
1113
|
+
env["AR"] = "#{host}-libtool"
|
1114
|
+
env["ARFLAGS"] = "-o"
|
1115
|
+
else
|
1116
|
+
env["AR"] = "#{host}-ar"
|
1117
|
+
end
|
1118
|
+
env["RANLIB"] = "#{host}-ranlib"
|
1119
|
+
if windows?
|
1120
|
+
# NOTE: that in any particular windows gem package, we only ever compile against either
|
1121
|
+
# msvcrt (ruby <= 3.0) or ucrt (ruby > 3.0), so even though this gets evaluated only once
|
1122
|
+
# per gem (and not per-version-of-ruby), it's OK.
|
1123
|
+
env["CFLAGS"] = if RbConfig::CONFIG["RUBY_SO_NAME"].include?("msvcrt")
|
1124
|
+
concat_flags(env["CFLAGS"], "-D_RUBY_MSVCRT")
|
1125
|
+
else
|
1126
|
+
concat_flags(env["CFLAGS"], "-D_RUBY_UCRT")
|
1127
|
+
end
|
1128
|
+
end
|
1071
1129
|
end
|
1072
|
-
env["RANLIB"] = "#{host}-ranlib"
|
1073
|
-
end
|
1074
1130
|
|
1075
|
-
|
1131
|
+
execute("compile", make_cmd, { env: env })
|
1132
|
+
end
|
1076
1133
|
end
|
1077
1134
|
end
|
1135
|
+
append_cppflags("-I#{File.join(libgumbo_recipe.path, "include")}")
|
1136
|
+
$libs = $libs + " " + File.join(libgumbo_recipe.path, "lib", "libgumbo.a")
|
1137
|
+
$LIBPATH = $LIBPATH | [File.join(libgumbo_recipe.path, "lib")]
|
1138
|
+
ensure_func("gumbo_parse_with_options", "nokogiri_gumbo.h")
|
1078
1139
|
end
|
1079
|
-
|
1080
|
-
|
1081
|
-
|
1082
|
-
|
1083
|
-
|
1084
|
-
have_func("xmlHasFeature") || abort("xmlHasFeature() is missing.") # introduced in libxml 2.6.21
|
1085
|
-
have_func("xmlFirstElementChild") # introduced in libxml 2.7.3
|
1086
|
-
have_func("xmlRelaxNGSetParserStructuredErrors") # introduced in libxml 2.6.24
|
1087
|
-
have_func("xmlRelaxNGSetValidStructuredErrors") # introduced in libxml 2.6.21
|
1088
|
-
have_func("xmlSchemaSetValidStructuredErrors") # introduced in libxml 2.6.23
|
1089
|
-
have_func("xmlSchemaSetParserStructuredErrors") # introduced in libxml 2.6.23
|
1140
|
+
|
1141
|
+
have_func("xmlCtxtSetOptions") # introduced in libxml2 2.13.0
|
1142
|
+
have_func("xmlCtxtGetOptions") # introduced in libxml2 2.14.0
|
1143
|
+
have_func("xmlSwitchEncodingName") # introduced in libxml2 2.13.0
|
1090
1144
|
have_func("rb_category_warning") # introduced in Ruby 3.0
|
1091
1145
|
|
1092
1146
|
other_library_versions_string = OTHER_LIBRARY_VERSIONS.map { |k, v| [k, v].join(":") }.join(",")
|
@@ -1118,7 +1172,7 @@ if config_clean?
|
|
1118
1172
|
mk.print(<<~EOF)
|
1119
1173
|
|
1120
1174
|
all: clean-ports
|
1121
|
-
clean-ports: $(
|
1175
|
+
clean-ports: $(TARGET_SO)
|
1122
1176
|
\t-$(Q)$(RUBY) $(srcdir)/extconf.rb --clean --#{static_p ? "enable" : "disable"}-static
|
1123
1177
|
EOF
|
1124
1178
|
end
|