nokogiri 1.14.2 → 1.16.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
|