nokogiri 1.9.1 → 1.15.3

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.

Files changed (226) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +45 -0
  3. data/LICENSE-DEPENDENCIES.md +1636 -1024
  4. data/LICENSE.md +5 -28
  5. data/README.md +203 -89
  6. data/bin/nokogiri +63 -50
  7. data/dependencies.yml +33 -61
  8. data/ext/nokogiri/depend +38 -358
  9. data/ext/nokogiri/extconf.rb +864 -418
  10. data/ext/nokogiri/gumbo.c +594 -0
  11. data/ext/nokogiri/html4_document.c +165 -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_context.c +108 -0
  15. data/ext/nokogiri/html4_sax_push_parser.c +95 -0
  16. data/ext/nokogiri/libxml2_backwards_compat.c +121 -0
  17. data/ext/nokogiri/nokogiri.c +251 -105
  18. data/ext/nokogiri/nokogiri.h +215 -90
  19. data/ext/nokogiri/test_global_handlers.c +40 -0
  20. data/ext/nokogiri/xml_attr.c +17 -17
  21. data/ext/nokogiri/xml_attribute_decl.c +22 -22
  22. data/ext/nokogiri/xml_cdata.c +40 -31
  23. data/ext/nokogiri/xml_comment.c +20 -27
  24. data/ext/nokogiri/xml_document.c +401 -240
  25. data/ext/nokogiri/xml_document_fragment.c +13 -17
  26. data/ext/nokogiri/xml_dtd.c +64 -58
  27. data/ext/nokogiri/xml_element_content.c +63 -55
  28. data/ext/nokogiri/xml_element_decl.c +31 -31
  29. data/ext/nokogiri/xml_encoding_handler.c +54 -21
  30. data/ext/nokogiri/xml_entity_decl.c +37 -35
  31. data/ext/nokogiri/xml_entity_reference.c +17 -19
  32. data/ext/nokogiri/xml_namespace.c +135 -61
  33. data/ext/nokogiri/xml_node.c +1346 -677
  34. data/ext/nokogiri/xml_node_set.c +246 -216
  35. data/ext/nokogiri/xml_processing_instruction.c +18 -20
  36. data/ext/nokogiri/xml_reader.c +347 -212
  37. data/ext/nokogiri/xml_relax_ng.c +86 -77
  38. data/ext/nokogiri/xml_sax_parser.c +149 -124
  39. data/ext/nokogiri/xml_sax_parser_context.c +145 -103
  40. data/ext/nokogiri/xml_sax_push_parser.c +64 -36
  41. data/ext/nokogiri/xml_schema.c +138 -81
  42. data/ext/nokogiri/xml_syntax_error.c +42 -21
  43. data/ext/nokogiri/xml_text.c +36 -26
  44. data/ext/nokogiri/xml_xpath_context.c +366 -178
  45. data/ext/nokogiri/xslt_stylesheet.c +335 -189
  46. data/gumbo-parser/CHANGES.md +63 -0
  47. data/gumbo-parser/Makefile +111 -0
  48. data/gumbo-parser/THANKS +27 -0
  49. data/gumbo-parser/src/Makefile +34 -0
  50. data/gumbo-parser/src/README.md +41 -0
  51. data/gumbo-parser/src/ascii.c +75 -0
  52. data/gumbo-parser/src/ascii.h +115 -0
  53. data/gumbo-parser/src/attribute.c +42 -0
  54. data/gumbo-parser/src/attribute.h +17 -0
  55. data/gumbo-parser/src/char_ref.c +22225 -0
  56. data/gumbo-parser/src/char_ref.h +29 -0
  57. data/gumbo-parser/src/char_ref.rl +2154 -0
  58. data/gumbo-parser/src/error.c +630 -0
  59. data/gumbo-parser/src/error.h +148 -0
  60. data/gumbo-parser/src/foreign_attrs.c +103 -0
  61. data/gumbo-parser/src/foreign_attrs.gperf +27 -0
  62. data/gumbo-parser/src/insertion_mode.h +33 -0
  63. data/gumbo-parser/src/macros.h +91 -0
  64. data/gumbo-parser/src/nokogiri_gumbo.h +944 -0
  65. data/gumbo-parser/src/parser.c +4891 -0
  66. data/gumbo-parser/src/parser.h +41 -0
  67. data/gumbo-parser/src/replacement.h +33 -0
  68. data/gumbo-parser/src/string_buffer.c +103 -0
  69. data/gumbo-parser/src/string_buffer.h +68 -0
  70. data/gumbo-parser/src/string_piece.c +48 -0
  71. data/gumbo-parser/src/svg_attrs.c +174 -0
  72. data/gumbo-parser/src/svg_attrs.gperf +77 -0
  73. data/gumbo-parser/src/svg_tags.c +137 -0
  74. data/gumbo-parser/src/svg_tags.gperf +55 -0
  75. data/gumbo-parser/src/tag.c +223 -0
  76. data/gumbo-parser/src/tag_lookup.c +382 -0
  77. data/gumbo-parser/src/tag_lookup.gperf +170 -0
  78. data/gumbo-parser/src/tag_lookup.h +13 -0
  79. data/gumbo-parser/src/token_buffer.c +79 -0
  80. data/gumbo-parser/src/token_buffer.h +71 -0
  81. data/gumbo-parser/src/token_type.h +17 -0
  82. data/gumbo-parser/src/tokenizer.c +3463 -0
  83. data/gumbo-parser/src/tokenizer.h +112 -0
  84. data/gumbo-parser/src/tokenizer_states.h +339 -0
  85. data/gumbo-parser/src/utf8.c +245 -0
  86. data/gumbo-parser/src/utf8.h +164 -0
  87. data/gumbo-parser/src/util.c +66 -0
  88. data/gumbo-parser/src/util.h +34 -0
  89. data/gumbo-parser/src/vector.c +111 -0
  90. data/gumbo-parser/src/vector.h +45 -0
  91. data/lib/nokogiri/class_resolver.rb +67 -0
  92. data/lib/nokogiri/css/node.rb +10 -8
  93. data/lib/nokogiri/css/parser.rb +397 -377
  94. data/lib/nokogiri/css/parser.y +250 -245
  95. data/lib/nokogiri/css/parser_extras.rb +54 -49
  96. data/lib/nokogiri/css/syntax_error.rb +3 -1
  97. data/lib/nokogiri/css/tokenizer.rb +107 -104
  98. data/lib/nokogiri/css/tokenizer.rex +3 -2
  99. data/lib/nokogiri/css/xpath_visitor.rb +224 -95
  100. data/lib/nokogiri/css.rb +56 -17
  101. data/lib/nokogiri/decorators/slop.rb +9 -7
  102. data/lib/nokogiri/encoding_handler.rb +57 -0
  103. data/lib/nokogiri/extension.rb +32 -0
  104. data/lib/nokogiri/gumbo.rb +15 -0
  105. data/lib/nokogiri/html.rb +38 -27
  106. data/lib/nokogiri/{html → html4}/builder.rb +4 -2
  107. data/lib/nokogiri/html4/document.rb +214 -0
  108. data/lib/nokogiri/html4/document_fragment.rb +54 -0
  109. data/lib/nokogiri/{html → html4}/element_description.rb +3 -1
  110. data/lib/nokogiri/html4/element_description_defaults.rb +2040 -0
  111. data/lib/nokogiri/html4/encoding_reader.rb +121 -0
  112. data/lib/nokogiri/{html → html4}/entity_lookup.rb +4 -2
  113. data/lib/nokogiri/{html → html4}/sax/parser.rb +17 -16
  114. data/lib/nokogiri/html4/sax/parser_context.rb +20 -0
  115. data/lib/nokogiri/{html → html4}/sax/push_parser.rb +12 -11
  116. data/lib/nokogiri/html4.rb +47 -0
  117. data/lib/nokogiri/html5/document.rb +168 -0
  118. data/lib/nokogiri/html5/document_fragment.rb +90 -0
  119. data/lib/nokogiri/html5/node.rb +103 -0
  120. data/lib/nokogiri/html5.rb +392 -0
  121. data/lib/nokogiri/jruby/dependencies.rb +3 -0
  122. data/lib/nokogiri/jruby/nokogiri_jars.rb +43 -0
  123. data/lib/nokogiri/syntax_error.rb +2 -0
  124. data/lib/nokogiri/version/constant.rb +6 -0
  125. data/lib/nokogiri/version/info.rb +223 -0
  126. data/lib/nokogiri/version.rb +3 -108
  127. data/lib/nokogiri/xml/attr.rb +55 -3
  128. data/lib/nokogiri/xml/attribute_decl.rb +6 -2
  129. data/lib/nokogiri/xml/builder.rb +98 -54
  130. data/lib/nokogiri/xml/cdata.rb +3 -1
  131. data/lib/nokogiri/xml/character_data.rb +2 -0
  132. data/lib/nokogiri/xml/document.rb +312 -126
  133. data/lib/nokogiri/xml/document_fragment.rb +93 -48
  134. data/lib/nokogiri/xml/dtd.rb +4 -2
  135. data/lib/nokogiri/xml/element_content.rb +12 -2
  136. data/lib/nokogiri/xml/element_decl.rb +6 -2
  137. data/lib/nokogiri/xml/entity_decl.rb +7 -3
  138. data/lib/nokogiri/xml/entity_reference.rb +2 -0
  139. data/lib/nokogiri/xml/namespace.rb +45 -0
  140. data/lib/nokogiri/xml/node/save_options.rb +23 -8
  141. data/lib/nokogiri/xml/node.rb +1088 -418
  142. data/lib/nokogiri/xml/node_set.rb +173 -63
  143. data/lib/nokogiri/xml/notation.rb +13 -0
  144. data/lib/nokogiri/xml/parse_options.rb +145 -52
  145. data/lib/nokogiri/xml/pp/character_data.rb +9 -6
  146. data/lib/nokogiri/xml/pp/node.rb +42 -30
  147. data/lib/nokogiri/xml/pp.rb +4 -2
  148. data/lib/nokogiri/xml/processing_instruction.rb +4 -1
  149. data/lib/nokogiri/xml/reader.rb +21 -28
  150. data/lib/nokogiri/xml/relax_ng.rb +8 -2
  151. data/lib/nokogiri/xml/sax/document.rb +45 -49
  152. data/lib/nokogiri/xml/sax/parser.rb +39 -36
  153. data/lib/nokogiri/xml/sax/parser_context.rb +8 -3
  154. data/lib/nokogiri/xml/sax/push_parser.rb +6 -5
  155. data/lib/nokogiri/xml/sax.rb +6 -4
  156. data/lib/nokogiri/xml/schema.rb +19 -9
  157. data/lib/nokogiri/xml/searchable.rb +120 -72
  158. data/lib/nokogiri/xml/syntax_error.rb +6 -4
  159. data/lib/nokogiri/xml/text.rb +2 -0
  160. data/lib/nokogiri/xml/xpath/syntax_error.rb +4 -2
  161. data/lib/nokogiri/xml/xpath.rb +15 -4
  162. data/lib/nokogiri/xml/xpath_context.rb +3 -3
  163. data/lib/nokogiri/xml.rb +38 -37
  164. data/lib/nokogiri/xslt/stylesheet.rb +3 -1
  165. data/lib/nokogiri/xslt.rb +101 -22
  166. data/lib/nokogiri.rb +59 -75
  167. data/lib/xsd/xmlparser/nokogiri.rb +29 -25
  168. data/patches/libxml2/0001-Remove-script-macro-support.patch +40 -0
  169. data/patches/libxml2/0002-Update-entities-to-remove-handling-of-ssi.patch +44 -0
  170. data/patches/libxml2/0003-libxml2.la-is-in-top_builddir.patch +25 -0
  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/libxslt/0001-update-config.guess-and-config.sub-for-libxslt.patch +224 -0
  175. data/ports/archives/libxml2-2.11.4.tar.xz +0 -0
  176. data/ports/archives/libxslt-1.1.38.tar.xz +0 -0
  177. metadata +128 -265
  178. data/ext/nokogiri/html_document.c +0 -170
  179. data/ext/nokogiri/html_document.h +0 -10
  180. data/ext/nokogiri/html_element_description.c +0 -279
  181. data/ext/nokogiri/html_element_description.h +0 -10
  182. data/ext/nokogiri/html_entity_lookup.c +0 -32
  183. data/ext/nokogiri/html_entity_lookup.h +0 -8
  184. data/ext/nokogiri/html_sax_parser_context.c +0 -116
  185. data/ext/nokogiri/html_sax_parser_context.h +0 -11
  186. data/ext/nokogiri/html_sax_push_parser.c +0 -87
  187. data/ext/nokogiri/html_sax_push_parser.h +0 -9
  188. data/ext/nokogiri/xml_attr.h +0 -9
  189. data/ext/nokogiri/xml_attribute_decl.h +0 -9
  190. data/ext/nokogiri/xml_cdata.h +0 -9
  191. data/ext/nokogiri/xml_comment.h +0 -9
  192. data/ext/nokogiri/xml_document.h +0 -23
  193. data/ext/nokogiri/xml_document_fragment.h +0 -10
  194. data/ext/nokogiri/xml_dtd.h +0 -10
  195. data/ext/nokogiri/xml_element_content.h +0 -10
  196. data/ext/nokogiri/xml_element_decl.h +0 -9
  197. data/ext/nokogiri/xml_encoding_handler.h +0 -8
  198. data/ext/nokogiri/xml_entity_decl.h +0 -10
  199. data/ext/nokogiri/xml_entity_reference.h +0 -9
  200. data/ext/nokogiri/xml_io.c +0 -61
  201. data/ext/nokogiri/xml_io.h +0 -11
  202. data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
  203. data/ext/nokogiri/xml_libxml2_hacks.h +0 -12
  204. data/ext/nokogiri/xml_namespace.h +0 -14
  205. data/ext/nokogiri/xml_node.h +0 -13
  206. data/ext/nokogiri/xml_node_set.h +0 -12
  207. data/ext/nokogiri/xml_processing_instruction.h +0 -9
  208. data/ext/nokogiri/xml_reader.h +0 -10
  209. data/ext/nokogiri/xml_relax_ng.h +0 -9
  210. data/ext/nokogiri/xml_sax_parser.h +0 -39
  211. data/ext/nokogiri/xml_sax_parser_context.h +0 -10
  212. data/ext/nokogiri/xml_sax_push_parser.h +0 -9
  213. data/ext/nokogiri/xml_schema.h +0 -9
  214. data/ext/nokogiri/xml_syntax_error.h +0 -13
  215. data/ext/nokogiri/xml_text.h +0 -9
  216. data/ext/nokogiri/xml_xpath_context.h +0 -10
  217. data/ext/nokogiri/xslt_stylesheet.h +0 -14
  218. data/lib/nokogiri/html/document.rb +0 -335
  219. data/lib/nokogiri/html/document_fragment.rb +0 -49
  220. data/lib/nokogiri/html/element_description_defaults.rb +0 -671
  221. data/lib/nokogiri/html/sax/parser_context.rb +0 -16
  222. data/patches/libxml2/0001-Revert-Do-not-URI-escape-in-server-side-includes.patch +0 -78
  223. data/patches/libxml2/0002-Fix-nullptr-deref-with-XPath-logic-ops.patch +0 -54
  224. data/patches/libxml2/0003-Fix-infinite-loop-in-LZMA-decompression.patch +0 -50
  225. data/ports/archives/libxml2-2.9.8.tar.gz +0 -0
  226. data/ports/archives/libxslt-1.1.32.tar.gz +0 -0
data/LICENSE.md CHANGED
@@ -1,32 +1,9 @@
1
- (The MIT License)
1
+ The MIT License
2
2
 
3
- Copyright (c) 2008 - 2018:
3
+ Copyright 2008 -- 2023 by Mike Dalessio, Aaron Patterson, Yoko Harada, Akinori MUSHA, John Shahid, Karol Bucek, Sam Ruby, Craig Barnes, Stephen Checkoway, Lars Kanis, Sergio Arbeo, Timothy Elliott, Nobuyoshi Nakada, Charles Nutter, Patrick Mahoney.
4
4
 
5
- * [Aaron Patterson](http://tenderlovemaking.com)
6
- * [Mike Dalessio](http://mike.daless.io)
7
- * [Charles Nutter](http://blog.headius.com)
8
- * [Sergio Arbeo](http://www.serabe.com)
9
- * [Patrick Mahoney](http://polycrystal.org)
10
- * [Yoko Harada](http://yokolet.blogspot.com)
11
- * [Akinori MUSHA](https://akinori.org)
12
- * [John Shahid](https://github.com/jvshahid)
13
- * [Lars Kanis](https://github.com/larskanis)
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
14
6
 
15
- Permission is hereby granted, free of charge, to any person obtaining
16
- a copy of this software and associated documentation files (the
17
- 'Software'), to deal in the Software without restriction, including
18
- without limitation the rights to use, copy, modify, merge, publish,
19
- distribute, sublicense, and/or sell copies of the Software, and to
20
- permit persons to whom the Software is furnished to do so, subject to
21
- the following conditions:
7
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
22
8
 
23
- The above copyright notice and this permission notice shall be
24
- included in all copies or substantial portions of the Software.
25
-
26
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
27
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
28
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
29
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
30
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
31
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
32
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
9
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -1,89 +1,168 @@
1
+ <div><img src="https://nokogiri.org/images/nokogiri-serif-black.png" align="right"/></div>
2
+
1
3
  # Nokogiri
2
4
 
3
- ## Description
5
+ Nokogiri (鋸) makes it easy and painless to work with XML and HTML from Ruby. It provides a sensible, easy-to-understand API for [reading](https://nokogiri.org/tutorials/parsing_an_html_xml_document.html), writing, [modifying](https://nokogiri.org/tutorials/modifying_an_html_xml_document.html), and [querying](https://nokogiri.org/tutorials/searching_a_xml_html_document.html) documents. It is fast and standards-compliant by relying on native parsers like libxml2, libgumbo, and xerces.
6
+
7
+ ## Guiding Principles
8
+
9
+ Some guiding principles Nokogiri tries to follow:
10
+
11
+ - be secure-by-default by treating all documents as **untrusted** by default
12
+ - be a **thin-as-reasonable layer** on top of the underlying parsers, and don't attempt to fix behavioral differences between the parsers
13
+
14
+
15
+ ## Features Overview
16
+
17
+ - DOM Parser for XML, HTML4, and HTML5
18
+ - SAX Parser for XML and HTML4
19
+ - Push Parser for XML and HTML4
20
+ - Document search via XPath 1.0
21
+ - Document search via CSS3 selectors, with some jquery-like extensions
22
+ - XSD Schema validation
23
+ - XSLT transformation
24
+ - "Builder" DSL for XML and HTML documents
25
+
26
+
27
+ ## Status
28
+
29
+ [![Github Actions CI](https://github.com/sparklemotion/nokogiri/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/sparklemotion/nokogiri/actions/workflows/ci.yml)
30
+ [![Appveyor CI](https://ci.appveyor.com/api/projects/status/xj2pqwvlxwuwgr06/branch/main?svg=true)](https://ci.appveyor.com/project/flavorjones/nokogiri/branch/main)
31
+
32
+ [![Gem Version](https://badge.fury.io/rb/nokogiri.svg)](https://rubygems.org/gems/nokogiri)
33
+ [![SemVer compatibility](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=nokogiri&package-manager=bundler&previous-version=1.11.7&new-version=1.12.5)](https://docs.github.com/en/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/about-dependabot-security-updates#about-compatibility-scores)
34
+
35
+ [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/5344/badge)](https://bestpractices.coreinfrastructure.org/projects/5344)
36
+ [![Tidelift dependencies](https://tidelift.com/badges/package/rubygems/nokogiri)](https://tidelift.com/subscription/pkg/rubygems-nokogiri?utm_source=rubygems-nokogiri&utm_medium=referral&utm_campaign=readme)
37
+
38
+
39
+ ## Support, Getting Help, and Reporting Issues
40
+
41
+ All official documentation is posted at https://nokogiri.org (the source for which is at https://github.com/sparklemotion/nokogiri.org/, and we welcome contributions).
42
+
43
+ ### Reading
44
+
45
+ Your first stops for learning more about Nokogiri should be:
46
+
47
+ - [API Documentation](https://nokogiri.org/rdoc/index.html)
48
+ - [Tutorials](https://nokogiri.org/tutorials/toc.html)
49
+ - An excellent community-maintained [Cheat Sheet](https://github.com/sparklemotion/nokogiri/wiki/Cheat-sheet)
50
+
51
+
52
+ ### Ask For Help
53
+
54
+ There are a few ways to ask exploratory questions:
4
55
 
5
- Nokogiri (鋸) is an HTML, XML, SAX, and Reader parser. Among
6
- Nokogiri's many features is the ability to search documents via XPath
7
- or CSS3 selectors.
56
+ - The Nokogiri mailing list is active at https://groups.google.com/group/nokogiri-talk
57
+ - Open an issue using the "Help Request" template at https://github.com/sparklemotion/nokogiri/issues
8
58
 
9
- ## Links
59
+ Please do not mail the maintainers at their personal addresses.
10
60
 
11
- * http://nokogiri.org
12
- * [Installation Help](http://nokogiri.org/tutorials/installing_nokogiri.html)
13
- * [Tutorials](http://nokogiri.org)
14
- * [GitHub](https://github.com/sparklemotion/nokogiri)
15
- * [Mailing List](https://groups.google.com/group/nokogiri-talk)
16
- * [Bug Reports](https://github.com/sparklemotion/nokogiri/issues)
17
- * [Chat/Gitter](https://gitter.im/sparklemotion/nokogiri)
18
61
 
19
- [![Concourse CI](https://ci.nokogiri.org/api/v1/teams/nokogiri-core/pipelines/nokogiri/jobs/ruby-2.4-system/badge)](https://ci.nokogiri.org/teams/nokogiri-core/pipelines/nokogiri?groups=master)
20
- [![Code Climate](https://codeclimate.com/github/sparklemotion/nokogiri.svg)](https://codeclimate.com/github/sparklemotion/nokogiri)
21
- [![Join the chat at https://gitter.im/sparklemotion/nokogiri](https://badges.gitter.im/sparklemotion/nokogiri.svg)](https://gitter.im/sparklemotion/nokogiri?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
62
+ ### Report A Bug
22
63
 
64
+ The Nokogiri bug tracker is at https://github.com/sparklemotion/nokogiri/issues
23
65
 
24
- ## Features
66
+ Please use the "Bug Report" or "Installation Difficulties" templates.
25
67
 
26
- * XML/HTML DOM parser which handles broken HTML
27
- * XML/HTML SAX parser
28
- * XML/HTML Push parser
29
- * XPath 1.0 support for document searching
30
- * CSS3 selector support for document searching
31
- * XML/HTML builder
32
- * XSLT transformer
33
68
 
34
- Nokogiri parses and searches XML/HTML using native libraries (either C
35
- or Java, depending on your Ruby), which means it's fast and
36
- standards-compliant.
69
+ ### Security and Vulnerability Reporting
70
+
71
+ Please report vulnerabilities at https://hackerone.com/nokogiri
72
+
73
+ Full information and description of our security policy is in [`SECURITY.md`](SECURITY.md)
74
+
75
+
76
+ ### Semantic Versioning Policy
77
+
78
+ Nokogiri follows [Semantic Versioning](https://semver.org/) (since 2017 or so). [![Dependabot's SemVer compatibility score for Nokogiri](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=nokogiri&package-manager=bundler&previous-version=1.11.7&new-version=1.12.5)](https://docs.github.com/en/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/about-dependabot-security-updates#about-compatibility-scores)
79
+
80
+ We bump `Major.Minor.Patch` versions following this guidance:
81
+
82
+ `Major`: (we've never done this)
83
+
84
+ - Significant backwards-incompatible changes to the public API that would require rewriting existing application code.
85
+ - Some examples of backwards-incompatible changes we might someday consider for a Major release are at [`ROADMAP.md`](ROADMAP.md).
86
+
87
+ `Minor`:
88
+
89
+ - Features and bugfixes.
90
+ - Updating packaged libraries for non-security-related reasons.
91
+ - Dropping support for EOLed Ruby versions. [Some folks find this objectionable](https://github.com/sparklemotion/nokogiri/issues/1568), but [SemVer says this is OK if the public API hasn't changed](https://semver.org/#what-should-i-do-if-i-update-my-own-dependencies-without-changing-the-public-api).
92
+ - Backwards-incompatible changes to internal or private methods and constants. These are detailed in the "Changes" section of each changelog entry.
93
+
94
+ `Patch`:
95
+
96
+ - Bugfixes.
97
+ - Security updates.
98
+ - Updating packaged libraries for security-related reasons.
99
+
100
+
101
+ ### Sponsorship
102
+
103
+ You can help sponsor the maintainers of this software through one of these organizations:
104
+
105
+ - [github.com/sponsors/flavorjones](https://github.com/sponsors/flavorjones)
106
+ - [opencollective.com/nokogiri](https://opencollective.com/nokogiri)
107
+ - [tidelift.com/subscription/pkg/rubygems-nokogiri](https://tidelift.com/subscription/pkg/rubygems-nokogiri?utm_source=rubygems-nokogiri&utm_medium=referral&utm_campaign=readme)
37
108
 
38
109
 
39
110
  ## Installation
40
111
 
41
- If this doesn't work:
112
+ Requirements:
42
113
 
43
- ```
44
- gem install nokogiri
45
- ```
114
+ - Ruby >= 2.7
115
+ - JRuby >= 9.4.0.0
46
116
 
47
- then please start troubleshooting here:
48
117
 
49
- > http://www.nokogiri.org/tutorials/installing_nokogiri.html
118
+ ### Native Gems: Faster, more reliable installation
50
119
 
51
- There are currently 1,237 Stack Overflow questions about Nokogiri
52
- installation. The vast majority of them are out of date and therefore
53
- incorrect. __Please do not use Stack Overflow.__
120
+ "Native gems" contain pre-compiled libraries for a specific machine architecture. On supported platforms, this removes the need for compiling the C extension and the packaged libraries, or for system dependencies to exist. This results in **much faster installation** and **more reliable installation**, which as you probably know are the biggest headaches for Nokogiri users.
54
121
 
55
- Instead, [tell us](http://nokogiri.org/tutorials/getting_help.html)
56
- when the above instructions don't work for you. This allows us to both
57
- help you directly and improve the documentation.
122
+ ### Supported Platforms
58
123
 
124
+ Nokogiri ships pre-compiled, "native" gems for the following platforms:
59
125
 
60
- ### Binary packages
126
+ - Linux:
127
+ - `x86-linux` and `x86_64-linux` (req: `glibc >= 2.17`)
128
+ - `aarch64-linux` and `arm-linux` (req: `glibc >= 2.29`)
129
+ - Note that musl platforms like Alpine **are** supported
130
+ - Darwin/MacOS: `x86_64-darwin` and `arm64-darwin`
131
+ - Windows: `x86-mingw32`, `x64-mingw32`, and `x64-mingw-ucrt`
132
+ - Java: any platform running JRuby 9.4 or higher
61
133
 
62
- Binary packages are available for some distributions.
134
+ To determine whether your system supports one of these gems, look at the output of `bundle platform` or `ruby -e 'puts Gem::Platform.local.to_s'`.
63
135
 
64
- * Debian: https://packages.debian.org/sid/ruby-nokogiri
65
- * SuSE: https://download.opensuse.org/repositories/devel:/languages:/ruby:/extensions/
66
- * Fedora: http://s390.koji.fedoraproject.org/koji/packageinfo?packageID=6756
136
+ If you're on a supported platform, either `gem install` or `bundle install` should install a native gem without any additional action on your part. This installation should only take a few seconds, and your output should look something like:
67
137
 
138
+ ``` sh
139
+ $ gem install nokogiri
140
+ Fetching nokogiri-1.11.0-x86_64-linux.gem
141
+ Successfully installed nokogiri-1.11.0-x86_64-linux
142
+ 1 gem installed
143
+ ```
68
144
 
69
- ## Support
70
145
 
71
- There are open-source tutorials (to which we invite contributions!) here: http://nokogiri.org/tutorials
146
+ ### Other Installation Options
72
147
 
73
- * The Nokogiri mailing list is active: https://groups.google.com/group/nokogiri-talk
74
- * The Nokogiri bug tracker is here: https://github.com/sparklemotion/nokogiri/issues
75
- * Before filing a bug report, please read our submission guidelines: http://nokogiri.org/tutorials/getting_help.html
76
- * The IRC channel is #nokogiri on freenode.
148
+ Because Nokogiri is a C extension, it requires that you have a C compiler toolchain, Ruby development header files, and some system dependencies installed.
77
149
 
150
+ The following may work for you if you have an appropriately-configured system:
151
+
152
+ ``` bash
153
+ gem install nokogiri
154
+ ```
155
+
156
+ If you have any issues, please visit [Installing Nokogiri](https://nokogiri.org/tutorials/installing_nokogiri.html) for more complete instructions and troubleshooting.
78
157
 
79
- ## Security and Vulnerability Reporting
80
158
 
81
- See [`SECURITY.md`](SECURITY.md)
159
+ ## How To Use Nokogiri
82
160
 
161
+ Nokogiri is a large library, and so it's challenging to briefly summarize it. We've tried to provide long, real-world examples at [Tutorials](https://nokogiri.org/tutorials/toc.html).
83
162
 
84
- ## Synopsis
163
+ ### Parsing and Querying
85
164
 
86
- Nokogiri is a large library, but here is example usage for parsing and examining a document:
165
+ Here is example usage for parsing and querying a document:
87
166
 
88
167
  ```ruby
89
168
  #! /usr/bin/env ruby
@@ -92,51 +171,26 @@ require 'nokogiri'
92
171
  require 'open-uri'
93
172
 
94
173
  # Fetch and parse HTML document
95
- doc = Nokogiri::HTML(open('http://www.nokogiri.org/tutorials/installing_nokogiri.html'))
174
+ doc = Nokogiri::HTML(URI.open('https://nokogiri.org/tutorials/installing_nokogiri.html'))
96
175
 
97
- puts "### Search for nodes by css"
176
+ # Search for nodes by css
98
177
  doc.css('nav ul.menu li a', 'article h2').each do |link|
99
178
  puts link.content
100
179
  end
101
180
 
102
- puts "### Search for nodes by xpath"
181
+ # Search for nodes by xpath
103
182
  doc.xpath('//nav//ul//li/a', '//article//h2').each do |link|
104
183
  puts link.content
105
184
  end
106
185
 
107
- puts "### Or mix and match."
186
+ # Or mix and match
108
187
  doc.search('nav ul.menu li a', '//article//h2').each do |link|
109
188
  puts link.content
110
189
  end
111
190
  ```
112
191
 
113
192
 
114
- ## Requirements
115
-
116
- * Ruby 2.1.0 or higher, including any development packages necessary
117
- to compile native extensions.
118
-
119
- * In Nokogiri 1.6.0 and later libxml2 and libxslt are bundled with the
120
- gem, but if you want to use the system versions:
121
-
122
- * First, check out [the long list](http://www.xmlsoft.org/news.html)
123
- of fixes and changes between releases before deciding to use any
124
- version older than is bundled with Nokogiri.
125
-
126
- * At install time, set the environment variable
127
- `NOKOGIRI_USE_SYSTEM_LIBRARIES` or else use the
128
- `--use-system-libraries` argument. (See
129
- http://nokogiri.org/tutorials/installing_nokogiri.html#using_your_system_libraries
130
- for specifics.)
131
-
132
- * libxml2 >=2.6.21 with iconv support
133
- (libxml2-dev/-devel is also required)
134
-
135
- * libxslt, built with and supported by the given libxml2
136
- (libxslt-dev/-devel is also required)
137
-
138
-
139
- ## Encoding
193
+ ### Encoding
140
194
 
141
195
  Strings are always stored as UTF-8 internally. Methods that return
142
196
  text values will always return UTF-8 encoded strings. Methods that
@@ -161,13 +215,73 @@ explicitly setting the encoding to EUC-JP on the parser:
161
215
  doc = Nokogiri.XML('<foo><bar /></foo>', nil, 'EUC-JP')
162
216
  ```
163
217
 
164
- ## Development
165
218
 
166
- ```bash
167
- bundle install
168
- bundle exec rake
169
- ```
219
+ ## Technical Overview
220
+
221
+ ### Guiding Principles
222
+
223
+ As noted above, two guiding principles of the software are:
224
+
225
+ - be secure-by-default by treating all documents as **untrusted** by default
226
+ - be a **thin-as-reasonable layer** on top of the underlying parsers, and don't attempt to fix behavioral differences between the parsers
227
+
228
+ Notably, despite all parsers being standards-compliant, there are behavioral inconsistencies between the parsers used in the CRuby and JRuby implementations, and Nokogiri does not and should not attempt to remove these inconsistencies. Instead, we surface these differences in the test suite when they are important/semantic; or we intentionally write tests to depend only on the important/semantic bits (omitting whitespace from regex matchers on results, for example).
229
+
230
+
231
+ ### CRuby
232
+
233
+ The Ruby (a.k.a., CRuby, MRI, YARV) implementation is a C extension that depends on libxml2 and libxslt (which in turn depend on zlib and possibly libiconv).
234
+
235
+ These dependencies are met by default by Nokogiri's packaged versions of the libxml2 and libxslt source code, but a configuration option `--use-system-libraries` is provided to allow specification of alternative library locations. See [Installing Nokogiri](https://nokogiri.org/tutorials/installing_nokogiri.html) for full documentation.
236
+
237
+ We provide native gems by pre-compiling libxml2 and libxslt (and potentially zlib and libiconv) and packaging them into the gem file. In this case, no compilation is necessary at installation time, which leads to faster and more reliable installation.
238
+
239
+ See [`LICENSE-DEPENDENCIES.md`](LICENSE-DEPENDENCIES.md) for more information on which dependencies are provided in which native and source gems.
240
+
241
+
242
+ ### JRuby
243
+
244
+ The Java (a.k.a. JRuby) implementation is a Java extension that depends primarily on Xerces and NekoHTML for parsing, though additional dependencies are on `isorelax`, `nekodtd`, `jing`, `serializer`, `xalan-j`, and `xml-apis`.
245
+
246
+ These dependencies are provided by pre-compiled jar files packaged in the `java` platform gem.
247
+
248
+ See [`LICENSE-DEPENDENCIES.md`](LICENSE-DEPENDENCIES.md) for more information on which dependencies are provided in which native and source gems.
249
+
250
+
251
+ ## Contributing
252
+
253
+ See [`CONTRIBUTING.md`](CONTRIBUTING.md) for an intro guide to developing Nokogiri.
254
+
255
+
256
+ ## Code of Conduct
257
+
258
+ We've adopted the Contributor Covenant code of conduct, which you can read in full in [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md).
259
+
170
260
 
171
261
  ## License
172
262
 
173
- MIT. See [`LICENSE.md`](LICENSE.md).
263
+ This project is licensed under the terms of the MIT license.
264
+
265
+ See this license at [`LICENSE.md`](LICENSE.md).
266
+
267
+
268
+ ### Dependencies
269
+
270
+ Some additional libraries may be distributed with your version of Nokogiri. Please see [`LICENSE-DEPENDENCIES.md`](LICENSE-DEPENDENCIES.md) for a discussion of the variations as well as the licenses thereof.
271
+
272
+
273
+ ## Authors
274
+
275
+ - Mike Dalessio
276
+ - Aaron Patterson
277
+ - Yoko Harada
278
+ - Akinori MUSHA
279
+ - John Shahid
280
+ - Karol Bucek
281
+ - Sam Ruby
282
+ - Craig Barnes
283
+ - Stephen Checkoway
284
+ - Lars Kanis
285
+ - Sergio Arbeo
286
+ - Timothy Elliott
287
+ - Nobuyoshi Nakada
data/bin/nokogiri CHANGED
@@ -1,61 +1,77 @@
1
1
  #!/usr/bin/env ruby
2
- require 'optparse'
3
- require 'open-uri'
4
- require 'uri'
5
- require 'rubygems'
6
- require 'nokogiri'
7
- autoload :IRB, 'irb'
2
+ # frozen_string_literal: true
3
+
4
+ require "optparse"
5
+ require "open-uri"
6
+ require "uri"
7
+ require "rubygems"
8
+ require "nokogiri"
9
+ autoload :IRB, "irb"
8
10
 
9
11
  parse_class = Nokogiri
10
12
  encoding = nil
11
13
 
12
14
  # This module provides some tunables with the nokogiri CLI for use in
13
15
  # your ~/.nokogirirc.
14
- module Nokogiri::CLI
15
- class << self
16
- # Specify the console engine, defaulted to IRB.
17
- #
18
- # call-seq:
19
- # require 'pry'
20
- # Nokogiri::CLI.console = Pry
21
- attr_writer :console
22
-
23
- def console
24
- case @console
25
- when Symbol
26
- Kernel.const_get(@console)
27
- else
28
- @console
16
+ module Nokogiri
17
+ module CLI
18
+ class << self
19
+ # Specify the console engine, defaulted to IRB.
20
+ #
21
+ # call-seq:
22
+ # require 'pry'
23
+ # Nokogiri::CLI.console = Pry
24
+ attr_writer :console
25
+
26
+ def console
27
+ case @console
28
+ when Symbol
29
+ Kernel.const_get(@console)
30
+ else
31
+ @console
32
+ end
29
33
  end
34
+
35
+ attr_accessor :rcfile
30
36
  end
31
37
 
32
- attr_accessor :rcfile
38
+ self.rcfile = File.expand_path("~/.nokogirirc")
39
+ self.console = :IRB
33
40
  end
41
+ end
34
42
 
35
- self.rcfile = File.expand_path('~/.nokogirirc')
36
- self.console = :IRB
43
+ def safe_read(uri_or_path)
44
+ uri = URI.parse(uri_or_path)
45
+ case uri
46
+ when URI::HTTP
47
+ uri.read
48
+ when URI::File
49
+ File.read(uri.path)
50
+ else
51
+ File.read(uri_or_path)
52
+ end
37
53
  end
38
54
 
39
55
  opts = OptionParser.new do |opts|
40
56
  opts.banner = "Nokogiri: an HTML, XML, SAX, and Reader parser"
41
- opts.define_head "Usage: nokogiri <uri|path> [options]"
42
- opts.separator ""
43
- opts.separator "Examples:"
44
- opts.separator " nokogiri https://www.ruby-lang.org/"
45
- opts.separator " nokogiri ./public/index.html"
46
- opts.separator " curl -s http://www.nokogiri.org | nokogiri -e'p $_.css(\"h1\").length'"
47
- opts.separator ""
48
- opts.separator "Options:"
57
+ opts.define_head("Usage: nokogiri <uri|path> [options]")
58
+ opts.separator("")
59
+ opts.separator("Examples:")
60
+ opts.separator(" nokogiri https://www.ruby-lang.org/")
61
+ opts.separator(" nokogiri ./public/index.html")
62
+ opts.separator(" curl -s http://www.nokogiri.org | nokogiri -e'p $_.css(\"h1\").length'")
63
+ opts.separator("")
64
+ opts.separator("Options:")
49
65
 
50
66
  opts.on("--type type", "Parse as type: xml or html (default: auto)", [:xml, :html]) do |v|
51
- parse_class = {:xml => Nokogiri::XML, :html => Nokogiri::HTML}[v]
67
+ parse_class = { xml: Nokogiri::XML, html: Nokogiri::HTML }[v]
52
68
  end
53
69
 
54
70
  opts.on("-C file", "Specifies initialization file to load (default #{Nokogiri::CLI.rcfile})") do |v|
55
71
  Nokogiri::CLI.rcfile = v
56
72
  end
57
73
 
58
- opts.on("-E", "--encoding encoding", "Read as encoding (default: #{encoding || 'none'})") do |v|
74
+ opts.on("-E", "--encoding encoding", "Read as encoding (default: #{encoding || "none"})") do |v|
59
75
  encoding = v
60
76
  end
61
77
 
@@ -64,7 +80,7 @@ opts = OptionParser.new do |opts|
64
80
  end
65
81
 
66
82
  opts.on("--rng <uri|path>", "Validate using this rng file.") do |v|
67
- @rng = open(v) {|f| Nokogiri::XML::RelaxNG(f)}
83
+ @rng = Nokogiri::XML::RelaxNG(safe_read(v))
68
84
  end
69
85
 
70
86
  opts.on_tail("-?", "--help", "Show this message") do
@@ -90,15 +106,10 @@ if File.file?(Nokogiri::CLI.rcfile)
90
106
  load Nokogiri::CLI.rcfile
91
107
  end
92
108
 
93
- if url || $stdin.tty?
94
- case uri = (URI(url) rescue url)
95
- when URI::HTTP
96
- @doc = parse_class.parse(uri.read, url, encoding)
97
- else
98
- @doc = parse_class.parse(open(url).read, nil, encoding)
99
- end
109
+ @doc = if url || $stdin.tty?
110
+ parse_class.parse(safe_read(url), url, encoding)
100
111
  else
101
- @doc = parse_class.parse($stdin, nil, encoding)
112
+ parse_class.parse($stdin, nil, encoding)
102
113
  end
103
114
 
104
115
  $_ = @doc
@@ -107,12 +118,14 @@ if @rng
107
118
  @rng.validate(@doc).each do |error|
108
119
  puts error.message
109
120
  end
110
- else
111
- if @script
112
- eval @script, binding, '<main>'
113
- else
114
- puts "Your document is stored in @doc..."
115
- Nokogiri::CLI.console.start
121
+ elsif @script
122
+ begin
123
+ eval(@script, binding, "<main>") # rubocop:disable Security/Eval
124
+ rescue Exception => e # rubocop:disable Lint/RescueException
125
+ warn("ERROR: Exception raised while evaluating '#{@script}'")
126
+ raise e
116
127
  end
128
+ else
129
+ puts "Your document is stored in @doc..."
130
+ Nokogiri::CLI.console.start
117
131
  end
118
-
data/dependencies.yml CHANGED
@@ -1,69 +1,41 @@
1
1
  libxml2:
2
- version: "2.9.8"
3
- sha256: "0b74e51595654f958148759cfef0993114ddccccbb6f31aee018f3558e8e2732"
4
- # manually verified checksum:
5
- #
6
- # $ gpg --verify libxml2-2.9.8.tar.gz.asc ./ports/archives/libxml2-2.9.8.tar.gz
7
- # gpg: Signature made Mon 05 Mar 2018 11:07:45 AM EST using RSA key ID 596BEA5D
8
- # gpg: Good signature from "Daniel Veillard (Red Hat work email) <veillard@redhat.com>"
9
- # gpg: aka "Daniel Veillard <Daniel.Veillard@w3.org>"
10
- # gpg: WARNING: This key is not certified with a trusted signature!
11
- # gpg: There is no indication that the signature belongs to the owner.
12
- # Primary key fingerprint: C744 15BA 7C9C 7F78 F02E 1DC3 4606 B8A5 DE95 BC1F
13
- # Subkey fingerprint: DB46 681B B91A DCEA 170F A2D4 1558 8B26 596B EA5D
14
- #
15
- # using this pgp signature:
16
- # -----BEGIN PGP SIGNATURE-----
17
- #
18
- # iQEcBAABAgAGBQJanWtRAAoJEBVYiyZZa+pdV7oIAJWdFahwt+reN/Zt2RPmjjcr
19
- # eSsY7UV1RXjScnNjTzJT1h2hJ7SnUjCkqjR6VdtKDUIzpuX+S2U83joafJH6mxUb
20
- # yw2nO4RfjYTPxpz5JkvqT7jmgEIaD81BuwcMehqpMpIfiKa2NgO1DSfZxgs8a9E2
21
- # +ehc/kZWuI5gmNGrd84EEWUqpYW/Xx7jy02osioJuU5IMPjzZKNR3maXp9oAKeBc
22
- # S2QNa1ID/pUk3K3M/5nlwNgAtQ7lxQrqhrSma2dsKt/IpL6VXomxuD4Bh1r2MZhX
23
- # uZ456X/xJN8UmPewLZWGBU1MK9wqu3Zx5Qwz64H6UdlYIzXZ2jXj2YWZa6xkxPA=
24
- # =69xn
25
- # -----END PGP SIGNATURE-----
26
- #
2
+ version: "2.11.4"
3
+ sha256: "737e1d7f8ab3f139729ca13a2494fd17bf30ddb4b7a427cf336252cab57f57f7"
4
+ # sha-256 hash provided in https://download.gnome.org/sources/libxml2/2.11/libxml2-2.11.4.sha256sum
27
5
 
28
6
  libxslt:
29
- version: "1.1.32"
30
- sha256: "526ecd0abaf4a7789041622c3950c0e7f2c4c8835471515fd77eec684a355460"
31
- # manually verified checksum:
32
- #
33
- # $ gpg --verify libxslt-1.1.32.tar.gz.asc libxslt-1.1.32.tar.gz
34
- # gpg: Signature made Thu 02 Nov 2017 04:35:04 PM EDT using RSA key ID 596BEA5D
35
- # gpg: Good signature from "Daniel Veillard (Red Hat work email) <veillard@redhat.com>"
36
- # gpg: aka "Daniel Veillard <Daniel.Veillard@w3.org>"
37
- # gpg: WARNING: This key is not certified with a trusted signature!
38
- # gpg: There is no indication that the signature belongs to the owner.
39
- # Primary key fingerprint: C744 15BA 7C9C 7F78 F02E 1DC3 4606 B8A5 DE95 BC1F
40
- # Subkey fingerprint: DB46 681B B91A DCEA 170F A2D4 1558 8B26 596B EA5D
41
- #
42
- # using this pgp signature:
43
- #
44
- # -----BEGIN PGP SIGNATURE-----
45
- #
46
- # iQEcBAABAgAGBQJZ+4F4AAoJEBVYiyZZa+pdy1IIAMX1DpzYGdnv6GCPSKeZ0woD
47
- # sHmSkygJep0/sUQD1cYunNsNZnGDgWhnsLAvHOn3opJgsiaZhmhJ8Uo7QNlT+ni1
48
- # AvRFgQoSXLWSF5kkun4u7RvnpDI6jYfCuYSwb9SO4EAYFAQQJXQaKCeFq71gad+p
49
- # XGHJFAy2TqUVLNZ5I1mQz/oBeDsJ7RzHpYqaBxsLDqrCzRQ9ai23q+dFGS3jvLBr
50
- # 0gXw0MK73ceOwW12L5aLj4erNbATWmMFMDYZZwftysv3bgx2YfiOoZUTzufrB/Bc
51
- # MG8hP76aYBwIKNbhiDFGa2qdHGZGF7YQ4mi1/ZDX1K1G2tKKeEYxscM13JwiGb8=
52
- # =NuQO
53
- # -----END PGP SIGNATURE-----
54
- #
7
+ version: "1.1.38"
8
+ sha256: "1f32450425819a09acaff2ab7a5a7f8a2ec7956e505d7beeb45e843d0e1ecab1"
9
+ # sha-256 hash provided in https://download.gnome.org/sources/libxslt/1.1/libxslt-1.1.38.sha256sum
55
10
 
56
11
  zlib:
57
- version: "1.2.11"
58
- sha256: "c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1"
12
+ version: "1.2.13"
13
+ sha256: "b3a24de97a8fdbc835b9833169501030b8977031bcb54b3b3ac13740f846ab30"
59
14
  # SHA-256 hash provided on http://zlib.net/
60
15
 
61
16
  libiconv:
62
- version: "1.15"
63
- sha256: "ccf536620a45458d26ba83887a983b96827001e92a13847b45e4925cc8913178"
64
- # gpg: Signature made Fri Feb 3 00:38:12 2017 CET
65
- # gpg: using RSA key 4F494A942E4616C2
66
- # gpg: Good signature from "Bruno Haible (Open Source Development) <bruno@clisp.org>" [unknown]
67
- # gpg: WARNING: This key is not certified with a trusted signature!
68
- # gpg: There is no indication that the signature belongs to the owner.
69
- # Primary key fingerprint: 68D9 4D8A AEEA D48A E7DC 5B90 4F49 4A94 2E46 16C2
17
+ version: "1.17"
18
+ sha256: "8f74213b56238c85a50a5329f77e06198771e70dd9a739779f4c02f65d971313"
19
+ # signature verified by following this path:
20
+ # - release announced at https://savannah.gnu.org/forum/forum.php?forum_id=10175
21
+ # - which links to https://savannah.gnu.org/users/haible as the releaser
22
+ # - which links to https://savannah.gnu.org/people/viewgpg.php?user_id=1871 as the gpg key
23
+ #
24
+ # So:
25
+ # - wget -q -O - https://savannah.gnu.org/people/viewgpg.php?user_id=1871 | gpg --import
26
+ # gpg: key F5BE8B267C6A406D: 1 signature not checked due to a missing key
27
+ # gpg: key F5BE8B267C6A406D: public key "Bruno Haible (Open Source Development) <bruno@clisp.org>" imported
28
+ # gpg: Total number processed: 1
29
+ # gpg: imported: 1
30
+ # gpg: marginals needed: 3 completes needed: 1 trust model: pgp
31
+ # gpg: depth: 0 valid: 4 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 4u
32
+ # gpg: next trustdb check due at 2024-05-09
33
+ # - gpg --verify libiconv-1.17.tar.gz.sig ports/archives/libiconv-1.17.tar.gz
34
+ # gpg: Signature made Sun 15 May 2022 11:26:42 AM EDT
35
+ # gpg: using RSA key 9001B85AF9E1B83DF1BDA942F5BE8B267C6A406D
36
+ # gpg: Good signature from "Bruno Haible (Open Source Development) <bruno@clisp.org>" [unknown]
37
+ # gpg: WARNING: This key is not certified with a trusted signature!
38
+ # gpg: There is no indication that the signature belongs to the owner.
39
+ # Primary key fingerprint: 9001 B85A F9E1 B83D F1BD A942 F5BE 8B26 7C6A 406D
40
+ #
41
+ # And this sha256sum is calculated from that verified tarball.