nokogiri 1.10.9 → 1.18.3

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.

Files changed (230) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +38 -0
  3. data/LICENSE-DEPENDENCIES.md +1632 -1022
  4. data/LICENSE.md +1 -1
  5. data/README.md +190 -95
  6. data/bin/nokogiri +63 -50
  7. data/dependencies.yml +34 -66
  8. data/ext/nokogiri/depend +38 -358
  9. data/ext/nokogiri/extconf.rb +909 -422
  10. data/ext/nokogiri/gumbo.c +610 -0
  11. data/ext/nokogiri/html4_document.c +171 -0
  12. data/ext/nokogiri/html4_element_description.c +299 -0
  13. data/ext/nokogiri/html4_entity_lookup.c +37 -0
  14. data/ext/nokogiri/html4_sax_parser.c +40 -0
  15. data/ext/nokogiri/html4_sax_parser_context.c +98 -0
  16. data/ext/nokogiri/html4_sax_push_parser.c +96 -0
  17. data/ext/nokogiri/libxml2_polyfill.c +114 -0
  18. data/ext/nokogiri/nokogiri.c +258 -105
  19. data/ext/nokogiri/nokogiri.h +207 -90
  20. data/ext/nokogiri/test_global_handlers.c +40 -0
  21. data/ext/nokogiri/xml_attr.c +18 -18
  22. data/ext/nokogiri/xml_attribute_decl.c +22 -22
  23. data/ext/nokogiri/xml_cdata.c +33 -33
  24. data/ext/nokogiri/xml_comment.c +19 -31
  25. data/ext/nokogiri/xml_document.c +499 -323
  26. data/ext/nokogiri/xml_document_fragment.c +17 -36
  27. data/ext/nokogiri/xml_dtd.c +65 -59
  28. data/ext/nokogiri/xml_element_content.c +63 -55
  29. data/ext/nokogiri/xml_element_decl.c +31 -31
  30. data/ext/nokogiri/xml_encoding_handler.c +54 -21
  31. data/ext/nokogiri/xml_entity_decl.c +37 -35
  32. data/ext/nokogiri/xml_entity_reference.c +17 -19
  33. data/ext/nokogiri/xml_namespace.c +131 -61
  34. data/ext/nokogiri/xml_node.c +1429 -723
  35. data/ext/nokogiri/xml_node_set.c +257 -225
  36. data/ext/nokogiri/xml_processing_instruction.c +18 -20
  37. data/ext/nokogiri/xml_reader.c +340 -231
  38. data/ext/nokogiri/xml_relax_ng.c +87 -99
  39. data/ext/nokogiri/xml_sax_parser.c +269 -176
  40. data/ext/nokogiri/xml_sax_parser_context.c +286 -152
  41. data/ext/nokogiri/xml_sax_push_parser.c +111 -64
  42. data/ext/nokogiri/xml_schema.c +132 -140
  43. data/ext/nokogiri/xml_syntax_error.c +52 -23
  44. data/ext/nokogiri/xml_text.c +37 -30
  45. data/ext/nokogiri/xml_xpath_context.c +373 -185
  46. data/ext/nokogiri/xslt_stylesheet.c +342 -191
  47. data/gumbo-parser/CHANGES.md +63 -0
  48. data/gumbo-parser/Makefile +129 -0
  49. data/gumbo-parser/THANKS +27 -0
  50. data/gumbo-parser/src/Makefile +34 -0
  51. data/gumbo-parser/src/README.md +41 -0
  52. data/gumbo-parser/src/ascii.c +75 -0
  53. data/gumbo-parser/src/ascii.h +115 -0
  54. data/gumbo-parser/src/attribute.c +42 -0
  55. data/gumbo-parser/src/attribute.h +17 -0
  56. data/gumbo-parser/src/char_ref.c +22225 -0
  57. data/gumbo-parser/src/char_ref.h +29 -0
  58. data/gumbo-parser/src/char_ref.rl +2154 -0
  59. data/gumbo-parser/src/error.c +658 -0
  60. data/gumbo-parser/src/error.h +152 -0
  61. data/gumbo-parser/src/foreign_attrs.c +103 -0
  62. data/gumbo-parser/src/foreign_attrs.gperf +27 -0
  63. data/gumbo-parser/src/insertion_mode.h +33 -0
  64. data/gumbo-parser/src/macros.h +91 -0
  65. data/gumbo-parser/src/nokogiri_gumbo.h +953 -0
  66. data/gumbo-parser/src/parser.c +4932 -0
  67. data/gumbo-parser/src/parser.h +41 -0
  68. data/gumbo-parser/src/replacement.h +33 -0
  69. data/gumbo-parser/src/string_buffer.c +103 -0
  70. data/gumbo-parser/src/string_buffer.h +68 -0
  71. data/gumbo-parser/src/string_piece.c +48 -0
  72. data/gumbo-parser/src/svg_attrs.c +174 -0
  73. data/gumbo-parser/src/svg_attrs.gperf +77 -0
  74. data/gumbo-parser/src/svg_tags.c +137 -0
  75. data/gumbo-parser/src/svg_tags.gperf +55 -0
  76. data/gumbo-parser/src/tag.c +223 -0
  77. data/gumbo-parser/src/tag_lookup.c +382 -0
  78. data/gumbo-parser/src/tag_lookup.gperf +170 -0
  79. data/gumbo-parser/src/tag_lookup.h +13 -0
  80. data/gumbo-parser/src/token_buffer.c +79 -0
  81. data/gumbo-parser/src/token_buffer.h +71 -0
  82. data/gumbo-parser/src/token_type.h +17 -0
  83. data/gumbo-parser/src/tokenizer.c +3464 -0
  84. data/gumbo-parser/src/tokenizer.h +112 -0
  85. data/gumbo-parser/src/tokenizer_states.h +339 -0
  86. data/gumbo-parser/src/utf8.c +245 -0
  87. data/gumbo-parser/src/utf8.h +164 -0
  88. data/gumbo-parser/src/util.c +66 -0
  89. data/gumbo-parser/src/util.h +34 -0
  90. data/gumbo-parser/src/vector.c +111 -0
  91. data/gumbo-parser/src/vector.h +45 -0
  92. data/lib/nokogiri/class_resolver.rb +67 -0
  93. data/lib/nokogiri/css/node.rb +14 -8
  94. data/lib/nokogiri/css/parser.rb +399 -377
  95. data/lib/nokogiri/css/parser.y +250 -245
  96. data/lib/nokogiri/css/parser_extras.rb +16 -71
  97. data/lib/nokogiri/css/selector_cache.rb +38 -0
  98. data/lib/nokogiri/css/syntax_error.rb +3 -1
  99. data/lib/nokogiri/css/tokenizer.rb +7 -5
  100. data/lib/nokogiri/css/tokenizer.rex +11 -9
  101. data/lib/nokogiri/css/xpath_visitor.rb +242 -96
  102. data/lib/nokogiri/css.rb +122 -17
  103. data/lib/nokogiri/decorators/slop.rb +11 -11
  104. data/lib/nokogiri/encoding_handler.rb +57 -0
  105. data/lib/nokogiri/extension.rb +32 -0
  106. data/lib/nokogiri/gumbo.rb +15 -0
  107. data/lib/nokogiri/html.rb +38 -27
  108. data/lib/nokogiri/{html → html4}/builder.rb +4 -2
  109. data/lib/nokogiri/html4/document.rb +235 -0
  110. data/lib/nokogiri/html4/document_fragment.rb +166 -0
  111. data/lib/nokogiri/{html → html4}/element_description.rb +3 -1
  112. data/lib/nokogiri/html4/element_description_defaults.rb +2040 -0
  113. data/lib/nokogiri/html4/encoding_reader.rb +121 -0
  114. data/lib/nokogiri/{html → html4}/entity_lookup.rb +4 -2
  115. data/lib/nokogiri/html4/sax/parser.rb +48 -0
  116. data/lib/nokogiri/html4/sax/parser_context.rb +15 -0
  117. data/lib/nokogiri/{html → html4}/sax/push_parser.rb +12 -11
  118. data/lib/nokogiri/html4.rb +42 -0
  119. data/lib/nokogiri/html5/builder.rb +40 -0
  120. data/lib/nokogiri/html5/document.rb +199 -0
  121. data/lib/nokogiri/html5/document_fragment.rb +200 -0
  122. data/lib/nokogiri/html5/node.rb +103 -0
  123. data/lib/nokogiri/html5.rb +368 -0
  124. data/lib/nokogiri/jruby/dependencies.rb +3 -0
  125. data/lib/nokogiri/jruby/nokogiri_jars.rb +43 -0
  126. data/lib/nokogiri/syntax_error.rb +2 -0
  127. data/lib/nokogiri/version/constant.rb +6 -0
  128. data/lib/nokogiri/version/info.rb +224 -0
  129. data/lib/nokogiri/version.rb +3 -108
  130. data/lib/nokogiri/xml/attr.rb +55 -3
  131. data/lib/nokogiri/xml/attribute_decl.rb +6 -2
  132. data/lib/nokogiri/xml/builder.rb +83 -35
  133. data/lib/nokogiri/xml/cdata.rb +3 -1
  134. data/lib/nokogiri/xml/character_data.rb +2 -0
  135. data/lib/nokogiri/xml/document.rb +359 -130
  136. data/lib/nokogiri/xml/document_fragment.rb +170 -54
  137. data/lib/nokogiri/xml/dtd.rb +4 -2
  138. data/lib/nokogiri/xml/element_content.rb +12 -2
  139. data/lib/nokogiri/xml/element_decl.rb +6 -2
  140. data/lib/nokogiri/xml/entity_decl.rb +7 -3
  141. data/lib/nokogiri/xml/entity_reference.rb +2 -0
  142. data/lib/nokogiri/xml/namespace.rb +44 -0
  143. data/lib/nokogiri/xml/node/save_options.rb +23 -8
  144. data/lib/nokogiri/xml/node.rb +1168 -420
  145. data/lib/nokogiri/xml/node_set.rb +145 -67
  146. data/lib/nokogiri/xml/notation.rb +13 -0
  147. data/lib/nokogiri/xml/parse_options.rb +145 -52
  148. data/lib/nokogiri/xml/pp/character_data.rb +9 -6
  149. data/lib/nokogiri/xml/pp/node.rb +47 -30
  150. data/lib/nokogiri/xml/pp.rb +4 -2
  151. data/lib/nokogiri/xml/processing_instruction.rb +4 -1
  152. data/lib/nokogiri/xml/reader.rb +68 -41
  153. data/lib/nokogiri/xml/relax_ng.rb +60 -17
  154. data/lib/nokogiri/xml/sax/document.rb +198 -111
  155. data/lib/nokogiri/xml/sax/parser.rb +144 -67
  156. data/lib/nokogiri/xml/sax/parser_context.rb +119 -6
  157. data/lib/nokogiri/xml/sax/push_parser.rb +9 -5
  158. data/lib/nokogiri/xml/sax.rb +54 -4
  159. data/lib/nokogiri/xml/schema.rb +116 -39
  160. data/lib/nokogiri/xml/searchable.rb +139 -95
  161. data/lib/nokogiri/xml/syntax_error.rb +29 -5
  162. data/lib/nokogiri/xml/text.rb +2 -0
  163. data/lib/nokogiri/xml/xpath/syntax_error.rb +4 -2
  164. data/lib/nokogiri/xml/xpath.rb +15 -4
  165. data/lib/nokogiri/xml/xpath_context.rb +15 -4
  166. data/lib/nokogiri/xml.rb +45 -55
  167. data/lib/nokogiri/xslt/stylesheet.rb +32 -8
  168. data/lib/nokogiri/xslt.rb +103 -30
  169. data/lib/nokogiri.rb +59 -75
  170. data/lib/xsd/xmlparser/nokogiri.rb +32 -29
  171. data/patches/libxml2/0009-allow-wildcard-namespaces.patch +77 -0
  172. data/patches/libxml2/0010-update-config.guess-and-config.sub-for-libxml2.patch +224 -0
  173. data/patches/libxml2/0011-rip-out-libxml2-s-libc_single_threaded-support.patch +30 -0
  174. data/patches/libxml2/0019-xpath-Use-separate-static-hash-table-for-standard-fu.patch +244 -0
  175. data/patches/libxslt/0001-update-config.guess-and-config.sub-for-libxslt.patch +224 -0
  176. data/ports/archives/libxml2-2.13.6.tar.xz +0 -0
  177. data/ports/archives/libxslt-1.1.42.tar.xz +0 -0
  178. metadata +123 -295
  179. data/ext/nokogiri/html_document.c +0 -170
  180. data/ext/nokogiri/html_document.h +0 -10
  181. data/ext/nokogiri/html_element_description.c +0 -279
  182. data/ext/nokogiri/html_element_description.h +0 -10
  183. data/ext/nokogiri/html_entity_lookup.c +0 -32
  184. data/ext/nokogiri/html_entity_lookup.h +0 -8
  185. data/ext/nokogiri/html_sax_parser_context.c +0 -116
  186. data/ext/nokogiri/html_sax_parser_context.h +0 -11
  187. data/ext/nokogiri/html_sax_push_parser.c +0 -87
  188. data/ext/nokogiri/html_sax_push_parser.h +0 -9
  189. data/ext/nokogiri/xml_attr.h +0 -9
  190. data/ext/nokogiri/xml_attribute_decl.h +0 -9
  191. data/ext/nokogiri/xml_cdata.h +0 -9
  192. data/ext/nokogiri/xml_comment.h +0 -9
  193. data/ext/nokogiri/xml_document.h +0 -23
  194. data/ext/nokogiri/xml_document_fragment.h +0 -10
  195. data/ext/nokogiri/xml_dtd.h +0 -10
  196. data/ext/nokogiri/xml_element_content.h +0 -10
  197. data/ext/nokogiri/xml_element_decl.h +0 -9
  198. data/ext/nokogiri/xml_encoding_handler.h +0 -8
  199. data/ext/nokogiri/xml_entity_decl.h +0 -10
  200. data/ext/nokogiri/xml_entity_reference.h +0 -9
  201. data/ext/nokogiri/xml_io.c +0 -61
  202. data/ext/nokogiri/xml_io.h +0 -11
  203. data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
  204. data/ext/nokogiri/xml_libxml2_hacks.h +0 -12
  205. data/ext/nokogiri/xml_namespace.h +0 -14
  206. data/ext/nokogiri/xml_node.h +0 -13
  207. data/ext/nokogiri/xml_node_set.h +0 -12
  208. data/ext/nokogiri/xml_processing_instruction.h +0 -9
  209. data/ext/nokogiri/xml_reader.h +0 -10
  210. data/ext/nokogiri/xml_relax_ng.h +0 -9
  211. data/ext/nokogiri/xml_sax_parser.h +0 -39
  212. data/ext/nokogiri/xml_sax_parser_context.h +0 -10
  213. data/ext/nokogiri/xml_sax_push_parser.h +0 -9
  214. data/ext/nokogiri/xml_schema.h +0 -9
  215. data/ext/nokogiri/xml_syntax_error.h +0 -13
  216. data/ext/nokogiri/xml_text.h +0 -9
  217. data/ext/nokogiri/xml_xpath_context.h +0 -10
  218. data/ext/nokogiri/xslt_stylesheet.h +0 -14
  219. data/lib/nokogiri/html/document.rb +0 -335
  220. data/lib/nokogiri/html/document_fragment.rb +0 -49
  221. data/lib/nokogiri/html/element_description_defaults.rb +0 -671
  222. data/lib/nokogiri/html/sax/parser.rb +0 -62
  223. data/lib/nokogiri/html/sax/parser_context.rb +0 -16
  224. data/patches/libxml2/0001-Revert-Do-not-URI-escape-in-server-side-includes.patch +0 -78
  225. data/patches/libxml2/0004-libxml2.la-is-in-top_builddir.patch +0 -25
  226. data/patches/libxml2/0005-Fix-infinite-loop-in-xmlStringLenDecodeEntities.patch +0 -32
  227. data/ports/archives/libxml2-2.9.10.tar.gz +0 -0
  228. data/ports/archives/libxslt-1.1.34.tar.gz +0 -0
  229. /data/patches/libxml2/{0002-Remove-script-macro-support.patch → 0001-Remove-script-macro-support.patch} +0 -0
  230. /data/patches/libxml2/{0003-Update-entities-to-remove-handling-of-ssi.patch → 0002-Update-entities-to-remove-handling-of-ssi.patch} +0 -0
@@ -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
+
@@ -0,0 +1,244 @@
1
+ From d3e3526111097560cf7c002613e2cb1d469b59e0 Mon Sep 17 00:00:00 2001
2
+ From: Nick Wellnhofer <wellnhofer@aevum.de>
3
+ Date: Sat, 21 Dec 2024 16:03:46 +0100
4
+ Subject: [PATCH] xpath: Use separate static hash table for standard functions
5
+
6
+ This avoids registering standard functions when creating an XPath
7
+ context.
8
+
9
+ Lookup of extension functions is a bit slower now, but ultimately, all
10
+ function lookups should be moved to the compilation phase.
11
+
12
+ (cherry picked from commit bf5fcf6e646bb51a0f6a3655a1d64bea97274867)
13
+ ---
14
+ xpath.c | 170 ++++++++++++++++++++++++++++++++------------------------
15
+ 1 file changed, 98 insertions(+), 72 deletions(-)
16
+
17
+ diff --git a/xpath.c b/xpath.c
18
+ index 485d7747..21711653 100644
19
+ --- a/xpath.c
20
+ +++ b/xpath.c
21
+ @@ -136,11 +136,48 @@
22
+
23
+ #if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
24
+
25
+ -/************************************************************************
26
+ - * *
27
+ - * Floating point stuff *
28
+ - * *
29
+ - ************************************************************************/
30
+ +static void
31
+ +xmlXPathNameFunction(xmlXPathParserContextPtr ctxt, int nargs);
32
+ +
33
+ +static const struct {
34
+ + const char *name;
35
+ + xmlXPathFunction func;
36
+ +} xmlXPathStandardFunctions[] = {
37
+ + { "boolean", xmlXPathBooleanFunction },
38
+ + { "ceiling", xmlXPathCeilingFunction },
39
+ + { "count", xmlXPathCountFunction },
40
+ + { "concat", xmlXPathConcatFunction },
41
+ + { "contains", xmlXPathContainsFunction },
42
+ + { "id", xmlXPathIdFunction },
43
+ + { "false", xmlXPathFalseFunction },
44
+ + { "floor", xmlXPathFloorFunction },
45
+ + { "last", xmlXPathLastFunction },
46
+ + { "lang", xmlXPathLangFunction },
47
+ + { "local-name", xmlXPathLocalNameFunction },
48
+ + { "not", xmlXPathNotFunction },
49
+ + { "name", xmlXPathNameFunction },
50
+ + { "namespace-uri", xmlXPathNamespaceURIFunction },
51
+ + { "normalize-space", xmlXPathNormalizeFunction },
52
+ + { "number", xmlXPathNumberFunction },
53
+ + { "position", xmlXPathPositionFunction },
54
+ + { "round", xmlXPathRoundFunction },
55
+ + { "string", xmlXPathStringFunction },
56
+ + { "string-length", xmlXPathStringLengthFunction },
57
+ + { "starts-with", xmlXPathStartsWithFunction },
58
+ + { "substring", xmlXPathSubstringFunction },
59
+ + { "substring-before", xmlXPathSubstringBeforeFunction },
60
+ + { "substring-after", xmlXPathSubstringAfterFunction },
61
+ + { "sum", xmlXPathSumFunction },
62
+ + { "true", xmlXPathTrueFunction },
63
+ + { "translate", xmlXPathTranslateFunction }
64
+ +};
65
+ +
66
+ +#define NUM_STANDARD_FUNCTIONS \
67
+ + (sizeof(xmlXPathStandardFunctions) / sizeof(xmlXPathStandardFunctions[0]))
68
+ +
69
+ +#define SF_HASH_SIZE 64
70
+ +
71
+ +static unsigned char xmlXPathSFHash[SF_HASH_SIZE];
72
+
73
+ double xmlXPathNAN = 0.0;
74
+ double xmlXPathPINF = 0.0;
75
+ @@ -156,6 +193,18 @@ xmlXPathInit(void) {
76
+ xmlInitParser();
77
+ }
78
+
79
+ +ATTRIBUTE_NO_SANITIZE_INTEGER
80
+ +static unsigned
81
+ +xmlXPathSFComputeHash(const xmlChar *name) {
82
+ + unsigned hashValue = 5381;
83
+ + const xmlChar *ptr;
84
+ +
85
+ + for (ptr = name; *ptr; ptr++)
86
+ + hashValue = hashValue * 33 + *ptr;
87
+ +
88
+ + return(hashValue);
89
+ +}
90
+ +
91
+ /**
92
+ * xmlInitXPathInternal:
93
+ *
94
+ @@ -164,6 +213,8 @@ xmlXPathInit(void) {
95
+ ATTRIBUTE_NO_SANITIZE("float-divide-by-zero")
96
+ void
97
+ xmlInitXPathInternal(void) {
98
+ + size_t i;
99
+ +
100
+ #if defined(NAN) && defined(INFINITY)
101
+ xmlXPathNAN = NAN;
102
+ xmlXPathPINF = INFINITY;
103
+ @@ -175,8 +226,34 @@ xmlInitXPathInternal(void) {
104
+ xmlXPathPINF = 1.0 / zero;
105
+ xmlXPathNINF = -xmlXPathPINF;
106
+ #endif
107
+ +
108
+ + /*
109
+ + * Initialize hash table for standard functions
110
+ + */
111
+ +
112
+ + for (i = 0; i < SF_HASH_SIZE; i++)
113
+ + xmlXPathSFHash[i] = UCHAR_MAX;
114
+ +
115
+ + for (i = 0; i < NUM_STANDARD_FUNCTIONS; i++) {
116
+ + const char *name = xmlXPathStandardFunctions[i].name;
117
+ + int bucketIndex = xmlXPathSFComputeHash(BAD_CAST name) % SF_HASH_SIZE;
118
+ +
119
+ + while (xmlXPathSFHash[bucketIndex] != UCHAR_MAX) {
120
+ + bucketIndex += 1;
121
+ + if (bucketIndex >= SF_HASH_SIZE)
122
+ + bucketIndex = 0;
123
+ + }
124
+ +
125
+ + xmlXPathSFHash[bucketIndex] = i;
126
+ + }
127
+ }
128
+
129
+ +/************************************************************************
130
+ + * *
131
+ + * Floating point stuff *
132
+ + * *
133
+ + ************************************************************************/
134
+ +
135
+ /**
136
+ * xmlXPathIsNaN:
137
+ * @val: a double value
138
+ @@ -3979,18 +4056,6 @@ xmlXPathRegisterFuncLookup (xmlXPathContextPtr ctxt,
139
+ */
140
+ xmlXPathFunction
141
+ xmlXPathFunctionLookup(xmlXPathContextPtr ctxt, const xmlChar *name) {
142
+ - if (ctxt == NULL)
143
+ - return (NULL);
144
+ -
145
+ - if (ctxt->funcLookupFunc != NULL) {
146
+ - xmlXPathFunction ret;
147
+ - xmlXPathFuncLookupFunc f;
148
+ -
149
+ - f = ctxt->funcLookupFunc;
150
+ - ret = f(ctxt->funcLookupData, name, NULL);
151
+ - if (ret != NULL)
152
+ - return(ret);
153
+ - }
154
+ return(xmlXPathFunctionLookupNS(ctxt, name, NULL));
155
+ }
156
+
157
+ @@ -4015,6 +4080,22 @@ xmlXPathFunctionLookupNS(xmlXPathContextPtr ctxt, const xmlChar *name,
158
+ if (name == NULL)
159
+ return(NULL);
160
+
161
+ + if (ns_uri == NULL) {
162
+ + int bucketIndex = xmlXPathSFComputeHash(name) % SF_HASH_SIZE;
163
+ +
164
+ + while (xmlXPathSFHash[bucketIndex] != UCHAR_MAX) {
165
+ + int funcIndex = xmlXPathSFHash[bucketIndex];
166
+ +
167
+ + if (strcmp(xmlXPathStandardFunctions[funcIndex].name,
168
+ + (char *) name) == 0)
169
+ + return(xmlXPathStandardFunctions[funcIndex].func);
170
+ +
171
+ + bucketIndex += 1;
172
+ + if (bucketIndex >= SF_HASH_SIZE)
173
+ + bucketIndex = 0;
174
+ + }
175
+ + }
176
+ +
177
+ if (ctxt->funcLookupFunc != NULL) {
178
+ xmlXPathFuncLookupFunc f;
179
+
180
+ @@ -13494,61 +13575,6 @@ xmlXPathEscapeUriFunction(xmlXPathParserContextPtr ctxt, int nargs) {
181
+ void
182
+ xmlXPathRegisterAllFunctions(xmlXPathContextPtr ctxt)
183
+ {
184
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"boolean",
185
+ - xmlXPathBooleanFunction);
186
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"ceiling",
187
+ - xmlXPathCeilingFunction);
188
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"count",
189
+ - xmlXPathCountFunction);
190
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"concat",
191
+ - xmlXPathConcatFunction);
192
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"contains",
193
+ - xmlXPathContainsFunction);
194
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"id",
195
+ - xmlXPathIdFunction);
196
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"false",
197
+ - xmlXPathFalseFunction);
198
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"floor",
199
+ - xmlXPathFloorFunction);
200
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"last",
201
+ - xmlXPathLastFunction);
202
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"lang",
203
+ - xmlXPathLangFunction);
204
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"local-name",
205
+ - xmlXPathLocalNameFunction);
206
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"not",
207
+ - xmlXPathNotFunction);
208
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"name",
209
+ - xmlXPathNameFunction);
210
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"namespace-uri",
211
+ - xmlXPathNamespaceURIFunction);
212
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"normalize-space",
213
+ - xmlXPathNormalizeFunction);
214
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"number",
215
+ - xmlXPathNumberFunction);
216
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"position",
217
+ - xmlXPathPositionFunction);
218
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"round",
219
+ - xmlXPathRoundFunction);
220
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"string",
221
+ - xmlXPathStringFunction);
222
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"string-length",
223
+ - xmlXPathStringLengthFunction);
224
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"starts-with",
225
+ - xmlXPathStartsWithFunction);
226
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"substring",
227
+ - xmlXPathSubstringFunction);
228
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"substring-before",
229
+ - xmlXPathSubstringBeforeFunction);
230
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"substring-after",
231
+ - xmlXPathSubstringAfterFunction);
232
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"sum",
233
+ - xmlXPathSumFunction);
234
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"true",
235
+ - xmlXPathTrueFunction);
236
+ - xmlXPathRegisterFunc(ctxt, (const xmlChar *)"translate",
237
+ - xmlXPathTranslateFunction);
238
+ -
239
+ xmlXPathRegisterFuncNS(ctxt, (const xmlChar *)"escape-uri",
240
+ (const xmlChar *)"http://www.w3.org/2002/08/xquery-functions",
241
+ xmlXPathEscapeUriFunction);
242
+ --
243
+ 2.47.1
244
+