nokogiri 1.14.2 → 1.16.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of nokogiri might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +19 -15
- data/README.md +4 -1
- data/dependencies.yml +9 -8
- data/ext/nokogiri/extconf.rb +69 -26
- data/ext/nokogiri/html4_document.c +1 -2
- data/ext/nokogiri/html4_element_description.c +19 -14
- data/ext/nokogiri/html4_sax_parser_context.c +10 -16
- data/ext/nokogiri/html4_sax_push_parser.c +3 -3
- data/ext/nokogiri/nokogiri.c +46 -24
- data/ext/nokogiri/nokogiri.h +23 -5
- data/ext/nokogiri/test_global_handlers.c +1 -1
- data/ext/nokogiri/xml_attr.c +1 -1
- data/ext/nokogiri/xml_cdata.c +30 -17
- data/ext/nokogiri/xml_comment.c +1 -1
- data/ext/nokogiri/xml_document.c +113 -25
- data/ext/nokogiri/xml_document_fragment.c +1 -1
- data/ext/nokogiri/xml_dtd.c +1 -1
- data/ext/nokogiri/xml_element_content.c +32 -29
- data/ext/nokogiri/xml_element_decl.c +5 -5
- data/ext/nokogiri/xml_encoding_handler.c +12 -4
- data/ext/nokogiri/xml_entity_reference.c +1 -1
- data/ext/nokogiri/xml_namespace.c +11 -16
- data/ext/nokogiri/xml_node.c +13 -16
- data/ext/nokogiri/xml_node_set.c +125 -105
- data/ext/nokogiri/xml_processing_instruction.c +1 -1
- data/ext/nokogiri/xml_reader.c +61 -74
- data/ext/nokogiri/xml_relax_ng.c +66 -79
- data/ext/nokogiri/xml_sax_parser.c +24 -5
- data/ext/nokogiri/xml_sax_parser_context.c +50 -25
- data/ext/nokogiri/xml_sax_push_parser.c +30 -9
- data/ext/nokogiri/xml_schema.c +94 -115
- data/ext/nokogiri/xml_syntax_error.c +3 -3
- data/ext/nokogiri/xml_text.c +26 -13
- data/ext/nokogiri/xml_xpath_context.c +153 -83
- data/ext/nokogiri/xslt_stylesheet.c +111 -53
- data/gumbo-parser/Makefile +18 -0
- data/gumbo-parser/src/error.c +8 -4
- data/gumbo-parser/src/foreign_attrs.c +13 -14
- data/gumbo-parser/src/foreign_attrs.gperf +1 -1
- data/gumbo-parser/src/parser.c +21 -5
- data/gumbo-parser/src/tokenizer.c +1 -0
- data/lib/nokogiri/css/parser_extras.rb +1 -1
- data/lib/nokogiri/css/xpath_visitor.rb +3 -23
- data/lib/nokogiri/extension.rb +1 -1
- data/lib/nokogiri/html4/document.rb +1 -1
- data/lib/nokogiri/html4/document_fragment.rb +1 -1
- data/lib/nokogiri/html4/element_description_defaults.rb +1821 -353
- data/lib/nokogiri/html4/encoding_reader.rb +1 -1
- data/lib/nokogiri/html5/document_fragment.rb +1 -1
- data/lib/nokogiri/html5/node.rb +5 -0
- data/lib/nokogiri/html5.rb +0 -63
- data/lib/nokogiri/jruby/nokogiri_jars.rb +9 -9
- data/lib/nokogiri/version/constant.rb +1 -1
- data/lib/nokogiri/version/info.rb +6 -5
- data/lib/nokogiri/xml/attr.rb +2 -2
- data/lib/nokogiri/xml/attribute_decl.rb +4 -2
- data/lib/nokogiri/xml/document.rb +4 -5
- data/lib/nokogiri/xml/document_fragment.rb +3 -3
- data/lib/nokogiri/xml/element_content.rb +10 -2
- data/lib/nokogiri/xml/element_decl.rb +4 -2
- data/lib/nokogiri/xml/entity_decl.rb +4 -2
- data/lib/nokogiri/xml/namespace.rb +1 -2
- data/lib/nokogiri/xml/node/save_options.rb +8 -0
- data/lib/nokogiri/xml/node.rb +53 -37
- data/lib/nokogiri/xml/node_set.rb +3 -3
- data/lib/nokogiri/xml/pp/node.rb +23 -12
- data/lib/nokogiri/xml/reader.rb +10 -9
- data/lib/nokogiri/xml/sax/document.rb +1 -1
- data/lib/nokogiri/xml/searchable.rb +21 -13
- data/lib/nokogiri/xml/syntax_error.rb +1 -1
- data/lib/nokogiri/xml.rb +1 -1
- data/lib/nokogiri/xslt/stylesheet.rb +29 -7
- data/lib/nokogiri/xslt.rb +74 -4
- data/lib/nokogiri.rb +13 -5
- data/lib/xsd/xmlparser/nokogiri.rb +1 -1
- data/patches/libxml2/0010-update-config.guess-and-config.sub-for-libxml2.patch +224 -0
- data/patches/libxml2/0011-rip-out-libxml2-s-libc_single_threaded-support.patch +30 -0
- data/patches/libxslt/0001-update-config.guess-and-config.sub-for-libxslt.patch +224 -0
- data/ports/archives/libxml2-2.12.8.tar.xz +0 -0
- data/ports/archives/libxslt-1.1.39.tar.xz +0 -0
- metadata +16 -12
- data/patches/libxslt/0001-update-automake-files-for-arm64.patch +0 -3037
- data/ports/archives/libxml2-2.10.3.tar.xz +0 -0
- data/ports/archives/libxslt-1.1.37.tar.xz +0 -0
data/lib/nokogiri/xml/reader.rb
CHANGED
@@ -3,9 +3,11 @@
|
|
3
3
|
module Nokogiri
|
4
4
|
module XML
|
5
5
|
###
|
6
|
-
# Nokogiri::XML::Reader parses an XML document similar to the way a cursor
|
7
|
-
#
|
8
|
-
#
|
6
|
+
# Nokogiri::XML::Reader parses an XML document similar to the way a cursor would move. The
|
7
|
+
# Reader is given an XML document, and yields nodes to an each block.
|
8
|
+
#
|
9
|
+
# The Reader parser might be good for when you need the speed and low memory usage of the SAX
|
10
|
+
# parser, but do not want to write a Document handler.
|
9
11
|
#
|
10
12
|
# Here is an example of usage:
|
11
13
|
#
|
@@ -22,13 +24,12 @@ module Nokogiri
|
|
22
24
|
#
|
23
25
|
# end
|
24
26
|
#
|
25
|
-
#
|
26
|
-
#
|
27
|
-
#
|
28
|
-
# need during the first iteration.
|
27
|
+
# ⚠ Nokogiri::XML::Reader#each can only be called once! Once the cursor moves through the entire
|
28
|
+
# document, you must parse the document again. It may be better to capture all information you
|
29
|
+
# need during a single iteration.
|
29
30
|
#
|
30
|
-
#
|
31
|
-
#
|
31
|
+
# ⚠ libxml2 does not support error recovery in the Reader parser. The `RECOVER` ParseOption is
|
32
|
+
# ignored. If a syntax error is encountered during parsing, an exception will be raised.
|
32
33
|
class Reader
|
33
34
|
include Enumerable
|
34
35
|
|
@@ -100,7 +100,7 @@ module Nokogiri
|
|
100
100
|
# +prefix+ is the namespace prefix for the element
|
101
101
|
# +uri+ is the associated namespace URI
|
102
102
|
# +ns+ is a hash of namespace prefix:urls associated with the element
|
103
|
-
def start_element_namespace(name, attrs = [], prefix = nil, uri = nil, ns = [])
|
103
|
+
def start_element_namespace(name, attrs = [], prefix = nil, uri = nil, ns = []) # rubocop:disable Metrics/ParameterLists
|
104
104
|
###
|
105
105
|
# Deal with SAX v1 interface
|
106
106
|
name = [prefix, name].compact.join(":")
|
@@ -36,16 +36,19 @@ module Nokogiri
|
|
36
36
|
# node.search('.//address[@domestic=$value]', nil, {:value => 'Yes'})
|
37
37
|
#
|
38
38
|
# 💡 Custom XPath functions and CSS pseudo-selectors may also be defined. To define custom
|
39
|
-
# functions create a class and implement the function you want to define
|
40
|
-
#
|
41
|
-
#
|
39
|
+
# functions create a class and implement the function you want to define, which will be in the
|
40
|
+
# `nokogiri` namespace in XPath queries.
|
41
|
+
#
|
42
|
+
# The first argument to the method will be the current matching NodeSet. Any other arguments
|
43
|
+
# are ones that you pass in. Note that this class may appear anywhere in the argument
|
44
|
+
# list. For example:
|
42
45
|
#
|
43
46
|
# handler = Class.new {
|
44
47
|
# def regex node_set, regex
|
45
48
|
# node_set.find_all { |node| node['some_attribute'] =~ /#{regex}/ }
|
46
49
|
# end
|
47
50
|
# }.new
|
48
|
-
# node.search('.//title[regex(., "\w+")]', 'div.employee:regex("[0-9]+")', handler)
|
51
|
+
# node.search('.//title[nokogiri:regex(., "\w+")]', 'div.employee:regex("[0-9]+")', handler)
|
49
52
|
#
|
50
53
|
# See Searchable#xpath and Searchable#css for further usage help.
|
51
54
|
def search(*args)
|
@@ -160,16 +163,18 @@ module Nokogiri
|
|
160
163
|
# node.xpath('.//address[@domestic=$value]', nil, {:value => 'Yes'})
|
161
164
|
#
|
162
165
|
# 💡 Custom XPath functions may also be defined. To define custom functions create a class and
|
163
|
-
# implement the function you want to define
|
164
|
-
#
|
165
|
-
#
|
166
|
+
# implement the function you want to define, which will be in the `nokogiri` namespace.
|
167
|
+
#
|
168
|
+
# The first argument to the method will be the current matching NodeSet. Any other arguments
|
169
|
+
# are ones that you pass in. Note that this class may appear anywhere in the argument
|
170
|
+
# list. For example:
|
166
171
|
#
|
167
172
|
# handler = Class.new {
|
168
173
|
# def regex(node_set, regex)
|
169
174
|
# node_set.find_all { |node| node['some_attribute'] =~ /#{regex}/ }
|
170
175
|
# end
|
171
176
|
# }.new
|
172
|
-
# node.xpath('.//title[regex(., "\w+")]', handler)
|
177
|
+
# node.xpath('.//title[nokogiri:regex(., "\w+")]', handler)
|
173
178
|
#
|
174
179
|
def xpath(*args)
|
175
180
|
paths, handler, ns, binds = extract_params(args)
|
@@ -194,7 +199,7 @@ module Nokogiri
|
|
194
199
|
#
|
195
200
|
# Search this node's immediate children using CSS selector +selector+
|
196
201
|
def >(selector) # rubocop:disable Naming/BinaryOperatorParameterName
|
197
|
-
ns =
|
202
|
+
ns = document.root&.namespaces || {}
|
198
203
|
xpath(CSS.xpath_for(selector, prefix: "./", ns: ns).first)
|
199
204
|
end
|
200
205
|
|
@@ -224,7 +229,7 @@ module Nokogiri
|
|
224
229
|
def xpath_impl(node, path, handler, ns, binds)
|
225
230
|
ctx = XPathContext.new(node)
|
226
231
|
ctx.register_namespaces(ns)
|
227
|
-
path = path.gsub(
|
232
|
+
path = path.gsub("xmlns:", " :") unless Nokogiri.uses_libxml?
|
228
233
|
|
229
234
|
binds&.each do |key, value|
|
230
235
|
ctx.register_variable(key.to_s, value)
|
@@ -243,8 +248,11 @@ module Nokogiri
|
|
243
248
|
doctype: document.xpath_doctype,
|
244
249
|
)
|
245
250
|
self.class::IMPLIED_XPATH_CONTEXTS.map do |implied_xpath_context|
|
246
|
-
CSS.xpath_for(rule.to_s, {
|
247
|
-
|
251
|
+
CSS.xpath_for(rule.to_s, {
|
252
|
+
prefix: implied_xpath_context,
|
253
|
+
ns: ns,
|
254
|
+
visitor: visitor,
|
255
|
+
})
|
248
256
|
end.join(" | ")
|
249
257
|
end
|
250
258
|
|
@@ -261,7 +269,7 @@ module Nokogiri
|
|
261
269
|
end
|
262
270
|
ns, binds = hashes.reverse
|
263
271
|
|
264
|
-
ns ||=
|
272
|
+
ns ||= document.root&.namespaces || {}
|
265
273
|
|
266
274
|
[params, handler, ns, binds]
|
267
275
|
end
|
data/lib/nokogiri/xml.rb
CHANGED
@@ -10,15 +10,37 @@ module Nokogiri
|
|
10
10
|
# doc = Nokogiri::XML(File.read('some_file.xml'))
|
11
11
|
# xslt = Nokogiri::XSLT(File.read('some_transformer.xslt'))
|
12
12
|
#
|
13
|
-
#
|
13
|
+
# xslt.transform(doc) # => Nokogiri::XML::Document
|
14
14
|
#
|
15
|
-
#
|
16
|
-
#
|
15
|
+
# Many XSLT transformations include serialization behavior to emit a non-XML document. For these
|
16
|
+
# cases, please take care to invoke the #serialize method on the result of the transformation:
|
17
|
+
#
|
18
|
+
# doc = Nokogiri::XML(File.read('some_file.xml'))
|
19
|
+
# xslt = Nokogiri::XSLT(File.read('some_transformer.xslt'))
|
20
|
+
# xslt.serialize(xslt.transform(doc)) # => String
|
21
|
+
#
|
22
|
+
# or use the #apply_to method, which is a shortcut for `serialize(transform(document))`:
|
23
|
+
#
|
24
|
+
# doc = Nokogiri::XML(File.read('some_file.xml'))
|
25
|
+
# xslt = Nokogiri::XSLT(File.read('some_transformer.xslt'))
|
26
|
+
# xslt.apply_to(doc) # => String
|
27
|
+
#
|
28
|
+
# See Nokogiri::XSLT::Stylesheet#transform for more information and examples.
|
17
29
|
class Stylesheet
|
18
|
-
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
30
|
+
# :call-seq:
|
31
|
+
# apply_to(document, params = []) -> String
|
32
|
+
#
|
33
|
+
# Apply an XSLT stylesheet to an XML::Document and serialize it properly. This method is
|
34
|
+
# equivalent to calling #serialize on the result of #transform.
|
35
|
+
#
|
36
|
+
# [Parameters]
|
37
|
+
# - +document+ is an instance of XML::Document to transform
|
38
|
+
# - +params+ is an array of strings used as XSLT parameters, passed into #transform
|
39
|
+
#
|
40
|
+
# [Returns]
|
41
|
+
# A string containing the serialized result of the transformation.
|
42
|
+
#
|
43
|
+
# See Nokogiri::XSLT::Stylesheet#transform for more information and examples.
|
22
44
|
def apply_to(document, params = [])
|
23
45
|
serialize(transform(document, params))
|
24
46
|
end
|
data/lib/nokogiri/xslt.rb
CHANGED
@@ -20,8 +20,59 @@ module Nokogiri
|
|
20
20
|
# Stylesheet object.
|
21
21
|
module XSLT
|
22
22
|
class << self
|
23
|
-
|
24
|
-
#
|
23
|
+
# :call-seq:
|
24
|
+
# parse(xsl) → Nokogiri::XSLT::Stylesheet
|
25
|
+
# parse(xsl, modules) → Nokogiri::XSLT::Stylesheet
|
26
|
+
#
|
27
|
+
# Parse the stylesheet in +xsl+, registering optional +modules+ as custom class handlers.
|
28
|
+
#
|
29
|
+
# [Parameters]
|
30
|
+
# - +xsl+ (String) XSL content to be parsed into a stylesheet
|
31
|
+
# - +modules+ (Hash<String ⇒ Class>) A hash of URI-to-handler relations for linking a
|
32
|
+
# namespace to a custom function handler.
|
33
|
+
#
|
34
|
+
# ⚠ The XSLT handler classes are registered *globally*.
|
35
|
+
#
|
36
|
+
# Also see Nokogiri::XSLT.register
|
37
|
+
#
|
38
|
+
# *Example*
|
39
|
+
#
|
40
|
+
# xml = Nokogiri.XML(<<~XML)
|
41
|
+
# <nodes>
|
42
|
+
# <node>Foo</node>
|
43
|
+
# <node>Bar</node>
|
44
|
+
# </nodes>
|
45
|
+
# XML
|
46
|
+
#
|
47
|
+
# handler = Class.new do
|
48
|
+
# def reverse(node)
|
49
|
+
# node.text.reverse
|
50
|
+
# end
|
51
|
+
# end
|
52
|
+
#
|
53
|
+
# xsl = <<~XSL
|
54
|
+
# <xsl:stylesheet version="1.0"
|
55
|
+
# xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
56
|
+
# xmlns:myfuncs="http://nokogiri.org/xslt/myfuncs"
|
57
|
+
# extension-element-prefixes="myfuncs">
|
58
|
+
# <xsl:template match="/">
|
59
|
+
# <reversed>
|
60
|
+
# <xsl:for-each select="nodes/node">
|
61
|
+
# <reverse><xsl:copy-of select="myfuncs:reverse(.)"/></reverse>
|
62
|
+
# </xsl:for-each>
|
63
|
+
# </reversed>
|
64
|
+
# </xsl:template>
|
65
|
+
# </xsl:stylesheet>
|
66
|
+
# XSL
|
67
|
+
#
|
68
|
+
# xsl = Nokogiri.XSLT(xsl, "http://nokogiri.org/xslt/myfuncs" => handler)
|
69
|
+
# xsl.transform(xml).to_xml
|
70
|
+
# # => "<?xml version=\"1.0\"?>\n" +
|
71
|
+
# # "<reversed>\n" +
|
72
|
+
# # " <reverse>ooF</reverse>\n" +
|
73
|
+
# # " <reverse>raB</reverse>\n" +
|
74
|
+
# # "</reversed>\n"
|
75
|
+
#
|
25
76
|
def parse(string, modules = {})
|
26
77
|
modules.each do |url, klass|
|
27
78
|
XSLT.register(url, klass)
|
@@ -49,8 +100,8 @@ module Nokogiri
|
|
49
100
|
def quote_params(params)
|
50
101
|
params.flatten.each_slice(2).with_object([]) do |kv, quoted_params|
|
51
102
|
key, value = kv.map(&:to_s)
|
52
|
-
value = if
|
53
|
-
"concat('#{value.gsub(
|
103
|
+
value = if value.include?("'")
|
104
|
+
"concat('#{value.gsub("'", %q{', "'", '})}')"
|
54
105
|
else
|
55
106
|
"'#{value}'"
|
56
107
|
end
|
@@ -58,6 +109,25 @@ module Nokogiri
|
|
58
109
|
quoted_params << value
|
59
110
|
end
|
60
111
|
end
|
112
|
+
|
113
|
+
# call-seq:
|
114
|
+
# register(uri, custom_handler_class)
|
115
|
+
#
|
116
|
+
# Register a class that implements custom XSLT transformation functions.
|
117
|
+
#
|
118
|
+
# ⚠ The XSLT handler classes are registered *globally*.
|
119
|
+
#
|
120
|
+
# [Parameters}
|
121
|
+
# - +uri+ (String) The namespace for the custom handlers
|
122
|
+
# - +custom_handler_class+ (Class) A class with ruby methods that can be called during
|
123
|
+
# transformation
|
124
|
+
#
|
125
|
+
# See Nokogiri::XSLT.parse for usage.
|
126
|
+
#
|
127
|
+
def register(uri, custom_handler_class)
|
128
|
+
# NOTE: this is implemented in the C extension, see ext/nokogiri/xslt_stylesheet.c
|
129
|
+
raise NotImplementedError, "Nokogiri::XSLT.register is not implemented on JRuby"
|
130
|
+
end if Nokogiri.jruby?
|
61
131
|
end
|
62
132
|
end
|
63
133
|
end
|
data/lib/nokogiri.rb
CHANGED
@@ -45,11 +45,19 @@ module Nokogiri
|
|
45
45
|
# Expect an HTML indicator to appear within the first 512
|
46
46
|
# characters of a document. (<?xml ?> + <?xml-stylesheet ?>
|
47
47
|
# shouldn't be that long)
|
48
|
-
Nokogiri.HTML4(
|
49
|
-
|
48
|
+
Nokogiri.HTML4(
|
49
|
+
string,
|
50
|
+
url,
|
51
|
+
encoding,
|
52
|
+
options || XML::ParseOptions::DEFAULT_HTML,
|
53
|
+
)
|
50
54
|
else
|
51
|
-
Nokogiri.XML(
|
52
|
-
|
55
|
+
Nokogiri.XML(
|
56
|
+
string,
|
57
|
+
url,
|
58
|
+
encoding,
|
59
|
+
options || XML::ParseOptions::DEFAULT_XML,
|
60
|
+
)
|
53
61
|
end.tap do |doc|
|
54
62
|
yield doc if block_given?
|
55
63
|
end
|
@@ -86,7 +94,7 @@ module Nokogiri
|
|
86
94
|
|
87
95
|
# :nodoc:
|
88
96
|
def install_default_aliases
|
89
|
-
warn("Nokogiri.install_default_aliases is deprecated
|
97
|
+
warn("Nokogiri.install_default_aliases is deprecated. Please call Nokogiri::EncodingHandler.install_default_aliases instead. This will become an error in Nokogiri v1.17.0.", uplevel: 1, category: :deprecated) # deprecated in v1.14.0, remove in v1.17.0
|
90
98
|
Nokogiri::EncodingHandler.install_default_aliases
|
91
99
|
end
|
92
100
|
end
|
@@ -71,7 +71,7 @@ module XSD
|
|
71
71
|
# +prefix+ is the namespace prefix for the element
|
72
72
|
# +uri+ is the associated namespace URI
|
73
73
|
# +ns+ is a hash of namespace prefix:urls associated with the element
|
74
|
-
def start_element_namespace(name, attrs = [], prefix = nil, uri = nil, ns = [])
|
74
|
+
def start_element_namespace(name, attrs = [], prefix = nil, uri = nil, ns = []) # rubocop:disable Metrics/ParameterLists
|
75
75
|
###
|
76
76
|
# Deal with SAX v1 interface
|
77
77
|
name = [prefix, name].compact.join(":")
|
@@ -0,0 +1,224 @@
|
|
1
|
+
From 27578ad4e4960beb30bfef38bfc23ec2ab9d7ee1 Mon Sep 17 00:00:00 2001
|
2
|
+
From: Wenlong Zhang <zhangwenlong@loongson.cn>
|
3
|
+
Date: Tue, 14 Mar 2023 01:38:58 +0000
|
4
|
+
Subject: [PATCH] update config.guess and config.sub for libxml2
|
5
|
+
|
6
|
+
curl -sL -o config.guess 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD'
|
7
|
+
curl -sL -o config.sub 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD'
|
8
|
+
---
|
9
|
+
config.guess | 46 +++++++++++++++++++++++++++++++++-------------
|
10
|
+
config.sub | 35 ++++++++++++++++++++++++++---------
|
11
|
+
2 files changed, 59 insertions(+), 22 deletions(-)
|
12
|
+
|
13
|
+
diff --git a/config.guess b/config.guess
|
14
|
+
index 7f76b62..69188da 100755
|
15
|
+
--- a/config.guess
|
16
|
+
+++ b/config.guess
|
17
|
+
@@ -1,10 +1,10 @@
|
18
|
+
#! /bin/sh
|
19
|
+
# Attempt to guess a canonical system name.
|
20
|
+
-# Copyright 1992-2022 Free Software Foundation, Inc.
|
21
|
+
+# Copyright 1992-2023 Free Software Foundation, Inc.
|
22
|
+
|
23
|
+
# shellcheck disable=SC2006,SC2268 # see below for rationale
|
24
|
+
|
25
|
+
-timestamp='2022-01-09'
|
26
|
+
+timestamp='2023-01-01'
|
27
|
+
|
28
|
+
# This file is free software; you can redistribute it and/or modify it
|
29
|
+
# under the terms of the GNU General Public License as published by
|
30
|
+
@@ -60,7 +60,7 @@ version="\
|
31
|
+
GNU config.guess ($timestamp)
|
32
|
+
|
33
|
+
Originally written by Per Bothner.
|
34
|
+
-Copyright 1992-2022 Free Software Foundation, Inc.
|
35
|
+
+Copyright 1992-2023 Free Software Foundation, Inc.
|
36
|
+
|
37
|
+
This is free software; see the source for copying conditions. There is NO
|
38
|
+
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
39
|
+
@@ -966,6 +966,12 @@ EOF
|
40
|
+
GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
|
41
|
+
GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC
|
42
|
+
;;
|
43
|
+
+ x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*)
|
44
|
+
+ GUESS="$UNAME_MACHINE-pc-managarm-mlibc"
|
45
|
+
+ ;;
|
46
|
+
+ *:[Mm]anagarm:*:*)
|
47
|
+
+ GUESS="$UNAME_MACHINE-unknown-managarm-mlibc"
|
48
|
+
+ ;;
|
49
|
+
*:Minix:*:*)
|
50
|
+
GUESS=$UNAME_MACHINE-unknown-minix
|
51
|
+
;;
|
52
|
+
@@ -1036,7 +1042,7 @@ EOF
|
53
|
+
k1om:Linux:*:*)
|
54
|
+
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
|
55
|
+
;;
|
56
|
+
- loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*)
|
57
|
+
+ loongarch32:Linux:*:* | loongarch64:Linux:*:*)
|
58
|
+
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
|
59
|
+
;;
|
60
|
+
m32r*:Linux:*:*)
|
61
|
+
@@ -1151,16 +1157,27 @@ EOF
|
62
|
+
;;
|
63
|
+
x86_64:Linux:*:*)
|
64
|
+
set_cc_for_build
|
65
|
+
+ CPU=$UNAME_MACHINE
|
66
|
+
LIBCABI=$LIBC
|
67
|
+
if test "$CC_FOR_BUILD" != no_compiler_found; then
|
68
|
+
- if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
|
69
|
+
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
|
70
|
+
- grep IS_X32 >/dev/null
|
71
|
+
- then
|
72
|
+
- LIBCABI=${LIBC}x32
|
73
|
+
- fi
|
74
|
+
+ ABI=64
|
75
|
+
+ sed 's/^ //' << EOF > "$dummy.c"
|
76
|
+
+ #ifdef __i386__
|
77
|
+
+ ABI=x86
|
78
|
+
+ #else
|
79
|
+
+ #ifdef __ILP32__
|
80
|
+
+ ABI=x32
|
81
|
+
+ #endif
|
82
|
+
+ #endif
|
83
|
+
+EOF
|
84
|
+
+ cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'`
|
85
|
+
+ eval "$cc_set_abi"
|
86
|
+
+ case $ABI in
|
87
|
+
+ x86) CPU=i686 ;;
|
88
|
+
+ x32) LIBCABI=${LIBC}x32 ;;
|
89
|
+
+ esac
|
90
|
+
fi
|
91
|
+
- GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI
|
92
|
+
+ GUESS=$CPU-pc-linux-$LIBCABI
|
93
|
+
;;
|
94
|
+
xtensa*:Linux:*:*)
|
95
|
+
GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
|
96
|
+
@@ -1367,8 +1384,11 @@ EOF
|
97
|
+
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
|
98
|
+
GUESS=i586-pc-haiku
|
99
|
+
;;
|
100
|
+
- x86_64:Haiku:*:*)
|
101
|
+
- GUESS=x86_64-unknown-haiku
|
102
|
+
+ ppc:Haiku:*:*) # Haiku running on Apple PowerPC
|
103
|
+
+ GUESS=powerpc-apple-haiku
|
104
|
+
+ ;;
|
105
|
+
+ *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat)
|
106
|
+
+ GUESS=$UNAME_MACHINE-unknown-haiku
|
107
|
+
;;
|
108
|
+
SX-4:SUPER-UX:*:*)
|
109
|
+
GUESS=sx4-nec-superux$UNAME_RELEASE
|
110
|
+
diff --git a/config.sub b/config.sub
|
111
|
+
index dba16e8..de4259e 100755
|
112
|
+
--- a/config.sub
|
113
|
+
+++ b/config.sub
|
114
|
+
@@ -1,10 +1,10 @@
|
115
|
+
#! /bin/sh
|
116
|
+
# Configuration validation subroutine script.
|
117
|
+
-# Copyright 1992-2022 Free Software Foundation, Inc.
|
118
|
+
+# Copyright 1992-2023 Free Software Foundation, Inc.
|
119
|
+
|
120
|
+
# shellcheck disable=SC2006,SC2268 # see below for rationale
|
121
|
+
|
122
|
+
-timestamp='2022-01-03'
|
123
|
+
+timestamp='2023-01-21'
|
124
|
+
|
125
|
+
# This file is free software; you can redistribute it and/or modify it
|
126
|
+
# under the terms of the GNU General Public License as published by
|
127
|
+
@@ -76,7 +76,7 @@ Report bugs and patches to <config-patches@gnu.org>."
|
128
|
+
version="\
|
129
|
+
GNU config.sub ($timestamp)
|
130
|
+
|
131
|
+
-Copyright 1992-2022 Free Software Foundation, Inc.
|
132
|
+
+Copyright 1992-2023 Free Software Foundation, Inc.
|
133
|
+
|
134
|
+
This is free software; see the source for copying conditions. There is NO
|
135
|
+
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
136
|
+
@@ -145,7 +145,7 @@ case $1 in
|
137
|
+
nto-qnx* | linux-* | uclinux-uclibc* \
|
138
|
+
| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
|
139
|
+
| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
|
140
|
+
- | storm-chaos* | os2-emx* | rtmk-nova*)
|
141
|
+
+ | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*)
|
142
|
+
basic_machine=$field1
|
143
|
+
basic_os=$maybe_os
|
144
|
+
;;
|
145
|
+
@@ -1075,7 +1075,7 @@ case $cpu-$vendor in
|
146
|
+
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
|
147
|
+
cpu=i586
|
148
|
+
;;
|
149
|
+
- pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
|
150
|
+
+ pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
|
151
|
+
cpu=i686
|
152
|
+
;;
|
153
|
+
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
|
154
|
+
@@ -1207,7 +1207,7 @@ case $cpu-$vendor in
|
155
|
+
| k1om \
|
156
|
+
| le32 | le64 \
|
157
|
+
| lm32 \
|
158
|
+
- | loongarch32 | loongarch64 | loongarchx32 \
|
159
|
+
+ | loongarch32 | loongarch64 \
|
160
|
+
| m32c | m32r | m32rle \
|
161
|
+
| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
|
162
|
+
| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
|
163
|
+
@@ -1341,6 +1341,10 @@ EOF
|
164
|
+
kernel=linux
|
165
|
+
os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
|
166
|
+
;;
|
167
|
+
+ managarm*)
|
168
|
+
+ kernel=managarm
|
169
|
+
+ os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
|
170
|
+
+ ;;
|
171
|
+
*)
|
172
|
+
kernel=
|
173
|
+
os=$basic_os
|
174
|
+
@@ -1754,7 +1758,7 @@ case $os in
|
175
|
+
| onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
|
176
|
+
| midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
|
177
|
+
| nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
|
178
|
+
- | fiwix* )
|
179
|
+
+ | fiwix* | mlibc* )
|
180
|
+
;;
|
181
|
+
# This one is extra strict with allowed versions
|
182
|
+
sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
|
183
|
+
@@ -1762,6 +1766,9 @@ case $os in
|
184
|
+
;;
|
185
|
+
none)
|
186
|
+
;;
|
187
|
+
+ kernel* )
|
188
|
+
+ # Restricted further below
|
189
|
+
+ ;;
|
190
|
+
*)
|
191
|
+
echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
|
192
|
+
exit 1
|
193
|
+
@@ -1772,16 +1779,26 @@ esac
|
194
|
+
# (given a valid OS), if there is a kernel.
|
195
|
+
case $kernel-$os in
|
196
|
+
linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
|
197
|
+
- | linux-musl* | linux-relibc* | linux-uclibc* )
|
198
|
+
+ | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* )
|
199
|
+
;;
|
200
|
+
uclinux-uclibc* )
|
201
|
+
;;
|
202
|
+
- -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
|
203
|
+
+ managarm-mlibc* | managarm-kernel* )
|
204
|
+
+ ;;
|
205
|
+
+ -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* )
|
206
|
+
# These are just libc implementations, not actual OSes, and thus
|
207
|
+
# require a kernel.
|
208
|
+
echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
|
209
|
+
exit 1
|
210
|
+
;;
|
211
|
+
+ -kernel* )
|
212
|
+
+ echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2
|
213
|
+
+ exit 1
|
214
|
+
+ ;;
|
215
|
+
+ *-kernel* )
|
216
|
+
+ echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2
|
217
|
+
+ exit 1
|
218
|
+
+ ;;
|
219
|
+
kfreebsd*-gnu* | kopensolaris*-gnu*)
|
220
|
+
;;
|
221
|
+
vxworks-simlinux | vxworks-simwindows | vxworks-spe)
|
222
|
+
--
|
223
|
+
2.33.0
|
224
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
From fb618bd27ac7a9fd32973320016c7ff28dd2f60e Mon Sep 17 00:00:00 2001
|
2
|
+
From: Mike Dalessio <mike.dalessio@gmail.com>
|
3
|
+
Date: Fri, 5 May 2023 10:10:43 -0400
|
4
|
+
Subject: [PATCH] rip out libxml2's libc_single_threaded support
|
5
|
+
|
6
|
+
This is a preventative measure because this feature relies on a glibc
|
7
|
+
version we can't realistically require of users today. We're not yet
|
8
|
+
precompiling on a system with a modern-enough glibc to make this an
|
9
|
+
actual problem, but I'm doing it while all of this context is fresh.
|
10
|
+
---
|
11
|
+
threads.c | 3 ++-
|
12
|
+
1 file changed, 2 insertions(+), 1 deletion(-)
|
13
|
+
|
14
|
+
diff --git a/threads.c b/threads.c
|
15
|
+
index 60dbce4c..eb1c12e5 100644
|
16
|
+
--- a/threads.c
|
17
|
+
+++ b/threads.c
|
18
|
+
@@ -27,7 +27,8 @@
|
19
|
+
|
20
|
+
#if defined(HAVE_POSIX_THREADS) && \
|
21
|
+
defined(__GLIBC__) && \
|
22
|
+
- __GLIBC__ * 100 + __GLIBC_MINOR__ >= 234
|
23
|
+
+ __GLIBC__ * 100 + __GLIBC_MINOR__ >= 234 && \
|
24
|
+
+ !defined(NOKOGIRI_PRECOMPILED_LIBRARIES)
|
25
|
+
|
26
|
+
/*
|
27
|
+
* The modern way available since glibc 2.32.
|
28
|
+
--
|
29
|
+
2.40.1
|
30
|
+
|