nokogiri 1.10.0 → 1.11.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of nokogiri might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +3 -0
- data/LICENSE-DEPENDENCIES.md +1015 -947
- data/README.md +178 -90
- data/dependencies.yml +28 -26
- data/ext/nokogiri/depend +476 -357
- data/ext/nokogiri/extconf.rb +508 -354
- data/ext/nokogiri/html_document.c +79 -78
- data/ext/nokogiri/html_sax_parser_context.c +4 -2
- data/ext/nokogiri/html_sax_push_parser.c +14 -8
- data/ext/nokogiri/nokogiri.c +37 -40
- data/ext/nokogiri/nokogiri.h +26 -17
- data/ext/nokogiri/test_global_handlers.c +41 -0
- data/ext/nokogiri/xml_document.c +18 -4
- data/ext/nokogiri/xml_io.c +8 -6
- data/ext/nokogiri/xml_node.c +23 -6
- data/ext/nokogiri/xml_node_set.c +1 -1
- data/ext/nokogiri/xml_reader.c +6 -17
- data/ext/nokogiri/xml_relax_ng.c +29 -11
- data/ext/nokogiri/xml_sax_parser.c +2 -7
- data/ext/nokogiri/xml_sax_parser_context.c +4 -2
- data/ext/nokogiri/xml_sax_push_parser.c +2 -0
- data/ext/nokogiri/xml_schema.c +84 -13
- data/ext/nokogiri/xml_syntax_error.c +23 -0
- data/ext/nokogiri/xml_syntax_error.h +15 -3
- data/ext/nokogiri/xml_xpath_context.c +80 -4
- data/ext/nokogiri/xslt_stylesheet.c +2 -9
- data/lib/nokogiri.rb +22 -22
- data/lib/nokogiri/css.rb +1 -0
- data/lib/nokogiri/css/node.rb +1 -0
- data/lib/nokogiri/css/parser.rb +63 -62
- data/lib/nokogiri/css/parser.y +2 -2
- data/lib/nokogiri/css/parser_extras.rb +39 -36
- data/lib/nokogiri/css/syntax_error.rb +1 -0
- data/lib/nokogiri/css/tokenizer.rb +105 -103
- data/lib/nokogiri/css/xpath_visitor.rb +73 -43
- data/lib/nokogiri/decorators/slop.rb +1 -0
- data/lib/nokogiri/html.rb +1 -0
- data/lib/nokogiri/html/builder.rb +1 -0
- data/lib/nokogiri/html/document.rb +13 -26
- data/lib/nokogiri/html/document_fragment.rb +1 -0
- data/lib/nokogiri/html/element_description.rb +1 -0
- data/lib/nokogiri/html/element_description_defaults.rb +1 -0
- data/lib/nokogiri/html/entity_lookup.rb +1 -0
- data/lib/nokogiri/html/sax/parser.rb +1 -0
- data/lib/nokogiri/html/sax/parser_context.rb +1 -0
- data/lib/nokogiri/html/sax/push_parser.rb +1 -0
- data/lib/nokogiri/jruby/dependencies.rb +20 -0
- data/lib/nokogiri/syntax_error.rb +1 -0
- data/lib/nokogiri/version.rb +3 -109
- data/lib/nokogiri/version/constant.rb +5 -0
- data/lib/nokogiri/version/info.rb +182 -0
- data/lib/nokogiri/xml.rb +1 -0
- data/lib/nokogiri/xml/attr.rb +1 -0
- data/lib/nokogiri/xml/attribute_decl.rb +1 -0
- data/lib/nokogiri/xml/builder.rb +36 -32
- data/lib/nokogiri/xml/cdata.rb +1 -0
- data/lib/nokogiri/xml/character_data.rb +1 -0
- data/lib/nokogiri/xml/document.rb +21 -16
- data/lib/nokogiri/xml/document_fragment.rb +5 -6
- data/lib/nokogiri/xml/dtd.rb +1 -0
- data/lib/nokogiri/xml/element_content.rb +1 -0
- data/lib/nokogiri/xml/element_decl.rb +1 -0
- data/lib/nokogiri/xml/entity_decl.rb +1 -0
- data/lib/nokogiri/xml/entity_reference.rb +1 -0
- data/lib/nokogiri/xml/namespace.rb +1 -0
- data/lib/nokogiri/xml/node.rb +588 -250
- data/lib/nokogiri/xml/node/save_options.rb +1 -0
- data/lib/nokogiri/xml/node_set.rb +43 -8
- data/lib/nokogiri/xml/notation.rb +1 -0
- data/lib/nokogiri/xml/parse_options.rb +10 -3
- data/lib/nokogiri/xml/pp.rb +1 -0
- data/lib/nokogiri/xml/pp/character_data.rb +1 -0
- data/lib/nokogiri/xml/pp/node.rb +1 -0
- data/lib/nokogiri/xml/processing_instruction.rb +1 -0
- data/lib/nokogiri/xml/reader.rb +7 -3
- data/lib/nokogiri/xml/relax_ng.rb +7 -2
- data/lib/nokogiri/xml/sax.rb +1 -0
- data/lib/nokogiri/xml/sax/document.rb +1 -0
- data/lib/nokogiri/xml/sax/parser.rb +1 -0
- data/lib/nokogiri/xml/sax/parser_context.rb +1 -0
- data/lib/nokogiri/xml/sax/push_parser.rb +1 -0
- data/lib/nokogiri/xml/schema.rb +13 -4
- data/lib/nokogiri/xml/searchable.rb +25 -16
- data/lib/nokogiri/xml/syntax_error.rb +1 -0
- data/lib/nokogiri/xml/text.rb +1 -0
- data/lib/nokogiri/xml/xpath.rb +1 -0
- data/lib/nokogiri/xml/xpath/syntax_error.rb +1 -0
- data/lib/nokogiri/xml/xpath_context.rb +1 -0
- data/lib/nokogiri/xslt.rb +1 -0
- data/lib/nokogiri/xslt/stylesheet.rb +1 -0
- data/lib/xsd/xmlparser/nokogiri.rb +1 -0
- data/patches/libxml2/0002-Remove-script-macro-support.patch +40 -0
- data/patches/libxml2/0003-Update-entities-to-remove-handling-of-ssi.patch +44 -0
- data/patches/libxml2/0004-libxml2.la-is-in-top_builddir.patch +25 -0
- data/patches/libxml2/0005-Fix-infinite-loop-in-xmlStringLenDecodeEntities.patch +32 -0
- data/patches/libxml2/0006-htmlParseComment-treat-as-if-it-closed-the-comment.patch +73 -0
- data/patches/libxml2/0007-use-new-htmlParseLookupCommentEnd-to-find-comment-en.patch +103 -0
- data/patches/libxml2/0008-use-glibc-strlen.patch +53 -0
- data/patches/libxml2/0009-avoid-isnan-isinf.patch +81 -0
- data/ports/archives/libxml2-2.9.10.tar.gz +0 -0
- data/ports/archives/libxslt-1.1.34.tar.gz +0 -0
- metadata +106 -99
- data/ports/archives/libxml2-2.9.9.tar.gz +0 -0
- data/ports/archives/libxslt-1.1.33.tar.gz +0 -0
@@ -0,0 +1,44 @@
|
|
1
|
+
From ffc08467744bd2305d41ca882c37fa30adf3a067 Mon Sep 17 00:00:00 2001
|
2
|
+
From: Kevin Solorio <soloriok@gmail.com>
|
3
|
+
Date: Wed, 27 Feb 2019 14:34:17 -0800
|
4
|
+
Subject: [PATCH 2/2] update entities.c to remove handling of ssi
|
5
|
+
|
6
|
+
---
|
7
|
+
entities.c | 21 ---------------------
|
8
|
+
1 file changed, 21 deletions(-)
|
9
|
+
|
10
|
+
diff --git a/entities.c b/entities.c
|
11
|
+
index 43549bc5..5c4a2a60 100644
|
12
|
+
--- a/entities.c
|
13
|
+
+++ b/entities.c
|
14
|
+
@@ -592,27 +592,6 @@ xmlEncodeEntitiesInternal(xmlDocPtr doc, const xmlChar *input, int attr) {
|
15
|
+
* By default one have to encode at least '<', '>', '"' and '&' !
|
16
|
+
*/
|
17
|
+
if (*cur == '<') {
|
18
|
+
- const xmlChar *end;
|
19
|
+
-
|
20
|
+
- /*
|
21
|
+
- * Special handling of server side include in HTML attributes
|
22
|
+
- */
|
23
|
+
- if (html && attr &&
|
24
|
+
- (cur[1] == '!') && (cur[2] == '-') && (cur[3] == '-') &&
|
25
|
+
- ((end = xmlStrstr(cur, BAD_CAST "-->")) != NULL)) {
|
26
|
+
- while (cur != end) {
|
27
|
+
- *out++ = *cur++;
|
28
|
+
- indx = out - buffer;
|
29
|
+
- if (indx + 100 > buffer_size) {
|
30
|
+
- growBufferReentrant();
|
31
|
+
- out = &buffer[indx];
|
32
|
+
- }
|
33
|
+
- }
|
34
|
+
- *out++ = *cur++;
|
35
|
+
- *out++ = *cur++;
|
36
|
+
- *out++ = *cur++;
|
37
|
+
- continue;
|
38
|
+
- }
|
39
|
+
*out++ = '&';
|
40
|
+
*out++ = 'l';
|
41
|
+
*out++ = 't';
|
42
|
+
--
|
43
|
+
2.16.2
|
44
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
From 0b6ae484761fa01242fe8b67b54e3eb2d282d83d Mon Sep 17 00:00:00 2001
|
2
|
+
From: Mike Dalessio <mike.dalessio@gmail.com>
|
3
|
+
Date: Wed, 4 Dec 2019 08:43:51 -0500
|
4
|
+
Subject: [PATCH] fix libxml2.la's path
|
5
|
+
|
6
|
+
---
|
7
|
+
Makefile.in | 2 +-
|
8
|
+
1 file changed, 1 insertion(+), 1 deletion(-)
|
9
|
+
|
10
|
+
diff --git a/Makefile.in b/Makefile.in
|
11
|
+
index cf96d41..1372d8b 100644
|
12
|
+
--- a/Makefile.in
|
13
|
+
+++ b/Makefile.in
|
14
|
+
@@ -1057,7 +1057,7 @@ clean-noinstLTLIBRARIES:
|
15
|
+
rm -f $${locs}; \
|
16
|
+
}
|
17
|
+
|
18
|
+
-libxml2.la: $(libxml2_la_OBJECTS) $(libxml2_la_DEPENDENCIES) $(EXTRA_libxml2_la_DEPENDENCIES)
|
19
|
+
+$(top_builddir)/libxml2.la: $(libxml2_la_OBJECTS) $(libxml2_la_DEPENDENCIES) $(EXTRA_libxml2_la_DEPENDENCIES)
|
20
|
+
$(AM_V_CCLD)$(libxml2_la_LINK) -rpath $(libdir) $(libxml2_la_OBJECTS) $(libxml2_la_LIBADD) $(LIBS)
|
21
|
+
|
22
|
+
testdso.la: $(testdso_la_OBJECTS) $(testdso_la_DEPENDENCIES) $(EXTRA_testdso_la_DEPENDENCIES)
|
23
|
+
--
|
24
|
+
2.17.1
|
25
|
+
|
@@ -0,0 +1,32 @@
|
|
1
|
+
From 0e1a49c8907645d2e155f0d89d4d9895ac5112b5 Mon Sep 17 00:00:00 2001
|
2
|
+
From: Zhipeng Xie <xiezhipeng1@huawei.com>
|
3
|
+
Date: Thu, 12 Dec 2019 17:30:55 +0800
|
4
|
+
Subject: [PATCH] Fix infinite loop in xmlStringLenDecodeEntities
|
5
|
+
|
6
|
+
When ctxt->instate == XML_PARSER_EOF,xmlParseStringEntityRef
|
7
|
+
return NULL which cause a infinite loop in xmlStringLenDecodeEntities
|
8
|
+
|
9
|
+
Found with libFuzzer.
|
10
|
+
|
11
|
+
Signed-off-by: Zhipeng Xie <xiezhipeng1@huawei.com>
|
12
|
+
---
|
13
|
+
parser.c | 3 ++-
|
14
|
+
1 file changed, 2 insertions(+), 1 deletion(-)
|
15
|
+
|
16
|
+
diff --git a/parser.c b/parser.c
|
17
|
+
index d1c3196..a34bb6c 100644
|
18
|
+
--- a/parser.c
|
19
|
+
+++ b/parser.c
|
20
|
+
@@ -2646,7 +2646,8 @@ xmlStringLenDecodeEntities(xmlParserCtxtPtr ctxt, const xmlChar *str, int len,
|
21
|
+
else
|
22
|
+
c = 0;
|
23
|
+
while ((c != 0) && (c != end) && /* non input consuming loop */
|
24
|
+
- (c != end2) && (c != end3)) {
|
25
|
+
+ (c != end2) && (c != end3) &&
|
26
|
+
+ (ctxt->instate != XML_PARSER_EOF)) {
|
27
|
+
|
28
|
+
if (c == 0) break;
|
29
|
+
if ((c == '&') && (str[1] == '#')) {
|
30
|
+
--
|
31
|
+
2.17.1
|
32
|
+
|
@@ -0,0 +1,73 @@
|
|
1
|
+
From 4f51a6d2b1755ce5b36c524c215aad70d864ac1d Mon Sep 17 00:00:00 2001
|
2
|
+
From: Mike Dalessio <mike.dalessio@gmail.com>
|
3
|
+
Date: Mon, 3 Aug 2020 17:36:05 -0400
|
4
|
+
Subject: [PATCH 1/2] htmlParseComment: treat `--!>` as if it closed the
|
5
|
+
comment
|
6
|
+
|
7
|
+
See guidance provided on incorrectly-closed comments here:
|
8
|
+
|
9
|
+
https://html.spec.whatwg.org/multipage/parsing.html#parse-error-incorrectly-closed-comment
|
10
|
+
---
|
11
|
+
HTMLparser.c | 28 ++++++++++++++++++++--------
|
12
|
+
1 file changed, 20 insertions(+), 8 deletions(-)
|
13
|
+
|
14
|
+
diff --git a/HTMLparser.c b/HTMLparser.c
|
15
|
+
index 7b6d689..4d43479 100644
|
16
|
+
--- a/HTMLparser.c
|
17
|
+
+++ b/HTMLparser.c
|
18
|
+
@@ -3300,6 +3300,7 @@ htmlParseComment(htmlParserCtxtPtr ctxt) {
|
19
|
+
int q, ql;
|
20
|
+
int r, rl;
|
21
|
+
int cur, l;
|
22
|
+
+ int next, nl;
|
23
|
+
xmlParserInputState state;
|
24
|
+
|
25
|
+
/*
|
26
|
+
@@ -3332,6 +3333,21 @@ htmlParseComment(htmlParserCtxtPtr ctxt) {
|
27
|
+
while (IS_CHAR(cur) &&
|
28
|
+
((cur != '>') ||
|
29
|
+
(r != '-') || (q != '-'))) {
|
30
|
+
+ NEXTL(l);
|
31
|
+
+ next = CUR_CHAR(nl);
|
32
|
+
+ if (next == 0) {
|
33
|
+
+ SHRINK;
|
34
|
+
+ GROW;
|
35
|
+
+ next = CUR_CHAR(nl);
|
36
|
+
+ }
|
37
|
+
+
|
38
|
+
+ if ((q == '-') && (r == '-') && (cur == '!') && (next == '>')) {
|
39
|
+
+ htmlParseErr(ctxt, XML_ERR_COMMENT_NOT_FINISHED,
|
40
|
+
+ "Comment incorrectly closed by '--!>'", NULL, NULL);
|
41
|
+
+ cur = '>';
|
42
|
+
+ break;
|
43
|
+
+ }
|
44
|
+
+
|
45
|
+
if (len + 5 >= size) {
|
46
|
+
xmlChar *tmp;
|
47
|
+
|
48
|
+
@@ -3345,18 +3361,14 @@ htmlParseComment(htmlParserCtxtPtr ctxt) {
|
49
|
+
}
|
50
|
+
buf = tmp;
|
51
|
+
}
|
52
|
+
- COPY_BUF(ql,buf,len,q);
|
53
|
+
+ COPY_BUF(ql,buf,len,q);
|
54
|
+
+
|
55
|
+
q = r;
|
56
|
+
ql = rl;
|
57
|
+
r = cur;
|
58
|
+
rl = l;
|
59
|
+
- NEXTL(l);
|
60
|
+
- cur = CUR_CHAR(l);
|
61
|
+
- if (cur == 0) {
|
62
|
+
- SHRINK;
|
63
|
+
- GROW;
|
64
|
+
- cur = CUR_CHAR(l);
|
65
|
+
- }
|
66
|
+
+ cur = next;
|
67
|
+
+ l = nl;
|
68
|
+
}
|
69
|
+
buf[len] = 0;
|
70
|
+
if (IS_CHAR(cur)) {
|
71
|
+
--
|
72
|
+
2.25.1
|
73
|
+
|
@@ -0,0 +1,103 @@
|
|
1
|
+
From b20d746fa7cbb74716171bc49d836af99927e41e Mon Sep 17 00:00:00 2001
|
2
|
+
From: Mike Dalessio <mike.dalessio@gmail.com>
|
3
|
+
Date: Sun, 11 Oct 2020 14:15:37 -0400
|
4
|
+
Subject: [PATCH 2/2] use new htmlParseLookupCommentEnd to find comment ends
|
5
|
+
|
6
|
+
Note that the caret in error messages generated during comment parsing
|
7
|
+
may have moved by one byte.
|
8
|
+
|
9
|
+
See guidance provided on incorrectly-closed comments here:
|
10
|
+
|
11
|
+
https://html.spec.whatwg.org/multipage/parsing.html#parse-error-incorrectly-closed-comment
|
12
|
+
---
|
13
|
+
HTMLparser.c | 46 +++++++++++++++++++++++++++++++++++++---------
|
14
|
+
1 file changed, 37 insertions(+), 9 deletions(-)
|
15
|
+
|
16
|
+
diff --git a/HTMLparser.c b/HTMLparser.c
|
17
|
+
index 4d43479..000dc3d 100644
|
18
|
+
--- a/HTMLparser.c
|
19
|
+
+++ b/HTMLparser.c
|
20
|
+
@@ -5331,6 +5331,39 @@ htmlParseLookupChars(htmlParserCtxtPtr ctxt, const xmlChar * stop,
|
21
|
+
return (-1);
|
22
|
+
}
|
23
|
+
|
24
|
+
+/**
|
25
|
+
+ * htmlParseLookupCommentEnd:
|
26
|
+
+ * @ctxt: an HTML parser context
|
27
|
+
+ *
|
28
|
+
+ * Try to find a comment end tag in the input stream
|
29
|
+
+ * The search includes "-->" as well as WHATWG-recommended incorrectly-closed tags.
|
30
|
+
+ * (See https://html.spec.whatwg.org/multipage/parsing.html#parse-error-incorrectly-closed-comment)
|
31
|
+
+ * This function has a side effect of (possibly) incrementing ctxt->checkIndex
|
32
|
+
+ * to avoid rescanning sequences of bytes, it DOES change the state of the
|
33
|
+
+ * parser, do not use liberally.
|
34
|
+
+ * This wraps to htmlParseLookupSequence()
|
35
|
+
+ *
|
36
|
+
+ * Returns the index to the current parsing point if the full sequence is available, -1 otherwise.
|
37
|
+
+ */
|
38
|
+
+static int
|
39
|
+
+htmlParseLookupCommentEnd(htmlParserCtxtPtr ctxt)
|
40
|
+
+{
|
41
|
+
+ int mark = 0;
|
42
|
+
+ int cur = CUR_PTR - BASE_PTR;
|
43
|
+
+
|
44
|
+
+ while (mark >= 0) {
|
45
|
+
+ mark = htmlParseLookupSequence(ctxt, '-', '-', 0, 1, 1);
|
46
|
+
+ if ((mark < 0) ||
|
47
|
+
+ (NXT(mark+2) == '>') ||
|
48
|
+
+ ((NXT(mark+2) == '!') && (NXT(mark+3) == '>'))) {
|
49
|
+
+ return mark;
|
50
|
+
+ }
|
51
|
+
+ ctxt->checkIndex = cur + mark + 1;
|
52
|
+
+ }
|
53
|
+
+ return mark;
|
54
|
+
+}
|
55
|
+
+
|
56
|
+
+
|
57
|
+
/**
|
58
|
+
* htmlParseTryOrFinish:
|
59
|
+
* @ctxt: an HTML parser context
|
60
|
+
@@ -5507,8 +5540,7 @@ htmlParseTryOrFinish(htmlParserCtxtPtr ctxt, int terminate) {
|
61
|
+
cur = in->cur[0];
|
62
|
+
if ((cur == '<') && (next == '!') &&
|
63
|
+
(in->cur[2] == '-') && (in->cur[3] == '-')) {
|
64
|
+
- if ((!terminate) &&
|
65
|
+
- (htmlParseLookupSequence(ctxt, '-', '-', '>', 1, 1) < 0))
|
66
|
+
+ if ((!terminate) && (htmlParseLookupCommentEnd(ctxt) < 0))
|
67
|
+
goto done;
|
68
|
+
#ifdef DEBUG_PUSH
|
69
|
+
xmlGenericError(xmlGenericErrorContext,
|
70
|
+
@@ -5567,8 +5599,7 @@ htmlParseTryOrFinish(htmlParserCtxtPtr ctxt, int terminate) {
|
71
|
+
next = in->cur[1];
|
72
|
+
if ((cur == '<') && (next == '!') &&
|
73
|
+
(in->cur[2] == '-') && (in->cur[3] == '-')) {
|
74
|
+
- if ((!terminate) &&
|
75
|
+
- (htmlParseLookupSequence(ctxt, '-', '-', '>', 1, 1) < 0))
|
76
|
+
+ if ((!terminate) && (htmlParseLookupCommentEnd(ctxt) < 0))
|
77
|
+
goto done;
|
78
|
+
#ifdef DEBUG_PUSH
|
79
|
+
xmlGenericError(xmlGenericErrorContext,
|
80
|
+
@@ -5614,8 +5645,7 @@ htmlParseTryOrFinish(htmlParserCtxtPtr ctxt, int terminate) {
|
81
|
+
next = in->cur[1];
|
82
|
+
if ((cur == '<') && (next == '!') &&
|
83
|
+
(in->cur[2] == '-') && (in->cur[3] == '-')) {
|
84
|
+
- if ((!terminate) &&
|
85
|
+
- (htmlParseLookupSequence(ctxt, '-', '-', '>', 1, 1) < 0))
|
86
|
+
+ if ((!terminate) && (htmlParseLookupCommentEnd(ctxt) < 0))
|
87
|
+
goto done;
|
88
|
+
#ifdef DEBUG_PUSH
|
89
|
+
xmlGenericError(xmlGenericErrorContext,
|
90
|
+
@@ -5871,9 +5901,7 @@ htmlParseTryOrFinish(htmlParserCtxtPtr ctxt, int terminate) {
|
91
|
+
htmlParseDocTypeDecl(ctxt);
|
92
|
+
} else if ((cur == '<') && (next == '!') &&
|
93
|
+
(in->cur[2] == '-') && (in->cur[3] == '-')) {
|
94
|
+
- if ((!terminate) &&
|
95
|
+
- (htmlParseLookupSequence(
|
96
|
+
- ctxt, '-', '-', '>', 1, 1) < 0))
|
97
|
+
+ if ((!terminate) && (htmlParseLookupCommentEnd(ctxt) < 0))
|
98
|
+
goto done;
|
99
|
+
#ifdef DEBUG_PUSH
|
100
|
+
xmlGenericError(xmlGenericErrorContext,
|
101
|
+
--
|
102
|
+
2.25.1
|
103
|
+
|
@@ -0,0 +1,53 @@
|
|
1
|
+
From c94172d2a4451368530db2186190d70be8a1d9e5 Mon Sep 17 00:00:00 2001
|
2
|
+
From: Ilya Zub <ilya@serpapi.com>
|
3
|
+
Date: Wed, 23 Dec 2020 12:45:29 +0200
|
4
|
+
Subject: Use glibc strlen to speed up xmlStrlen
|
5
|
+
MIME-Version: 1.0
|
6
|
+
Content-Type: text/plain; charset=UTF-8
|
7
|
+
Content-Transfer-Encoding: 8bit
|
8
|
+
|
9
|
+
xmlStrlen (entire HTML file): 926171.936981 μs
|
10
|
+
glibc_xmlStrlen (entire HTML file): 36905.903992 μs
|
11
|
+
delta (xmlStrlen ÷ glibc_xmlStrlen): 25.094584 times
|
12
|
+
|
13
|
+
xmlStrlen (average string): 57479.204010 μs
|
14
|
+
glibc_xmlStrlen (average string): 5802.069000 μs
|
15
|
+
delta (xmlStrlen ÷ glibc_xmlStrlen): 9.905937 times
|
16
|
+
|
17
|
+
xmlStrlen (bigger string): 388056.315979 μs
|
18
|
+
glibc_xmlStrlen (bigger string): 12797.856995 μs
|
19
|
+
delta (xmlStrlen ÷ glibc_xmlStrlen): 30.318382 times
|
20
|
+
|
21
|
+
xmlStrlen (smallest string): 15870.046021 μs
|
22
|
+
glibc_xmlStrlen (smallest string): 6282.208984 μs
|
23
|
+
delta (xmlStrlen ÷ glibc_xmlStrlen): 2.527903 times
|
24
|
+
|
25
|
+
See https://gitlab.gnome.org/GNOME/libxml2/-/issues/212 for reference.
|
26
|
+
---
|
27
|
+
xmlstring.c | 9 ++-------
|
28
|
+
1 file changed, 2 insertions(+), 7 deletions(-)
|
29
|
+
|
30
|
+
diff --git a/xmlstring.c b/xmlstring.c
|
31
|
+
index e8a1e45d..df247dff 100644
|
32
|
+
--- a/xmlstring.c
|
33
|
+
+++ b/xmlstring.c
|
34
|
+
@@ -423,14 +423,9 @@ xmlStrsub(const xmlChar *str, int start, int len) {
|
35
|
+
|
36
|
+
int
|
37
|
+
xmlStrlen(const xmlChar *str) {
|
38
|
+
- int len = 0;
|
39
|
+
-
|
40
|
+
if (str == NULL) return(0);
|
41
|
+
- while (*str != 0) { /* non input consuming */
|
42
|
+
- str++;
|
43
|
+
- len++;
|
44
|
+
- }
|
45
|
+
- return(len);
|
46
|
+
+
|
47
|
+
+ return strlen((const char*)str);
|
48
|
+
}
|
49
|
+
|
50
|
+
/**
|
51
|
+
--
|
52
|
+
2.29.2
|
53
|
+
|
@@ -0,0 +1,81 @@
|
|
1
|
+
This patch is a result of rake-compiler-dock using centos 7 (manylinux2014) to cross-compile.
|
2
|
+
|
3
|
+
Centos, for reasons I have not been able to discern, implements `isnan` and `isinf` as a function
|
4
|
+
and not as a macro. Debian knows how to resolve that function at dynamic-link time (despite using a
|
5
|
+
macro at compile time), but musl-based systems (like alpine) do not. Running `nm` on nokogiri.so
|
6
|
+
created on such a centos system shows:
|
7
|
+
|
8
|
+
```
|
9
|
+
U __isinf@@GLIBC_2.2.5
|
10
|
+
U __isnan@@GLIBC_2.2.5
|
11
|
+
```
|
12
|
+
|
13
|
+
(see https://github.com/sparklemotion/nokogiri/pull/2142 for more info)
|
14
|
+
|
15
|
+
This patch avoids using glibc's `isnan` and `isinf` calls, instead using libxml2's fallback
|
16
|
+
implementation. There's history here, see libxml2 commit 8813f39:
|
17
|
+
|
18
|
+
commit 8813f39
|
19
|
+
Author: Nick Wellnhofer <wellnhofer@aevum.de>
|
20
|
+
Date: 2017-09-21 00:11:26 +0200
|
21
|
+
|
22
|
+
Simplify XPath NaN, inf and -0 handling
|
23
|
+
|
24
|
+
Use C99 macros NAN, INFINITY, isnan, isinf. If they're not available:
|
25
|
+
|
26
|
+
- Assume that (0.0 / 0.0) generates a NaN and !(x == x) tests for NaN.
|
27
|
+
- Use C89's HUGE_VAL for INFINITY.
|
28
|
+
|
29
|
+
Remove manual handling of NaN, infinity and negative zero in functions
|
30
|
+
xmlXPathValueFlipSign and xmlXPathDivValues.
|
31
|
+
|
32
|
+
Remove xmlXPathGetSign. All the tests for negative zero can be replaced
|
33
|
+
with a test for negative or positive zero.
|
34
|
+
|
35
|
+
Simplify xmlXPathRoundFunction.
|
36
|
+
|
37
|
+
Remove Trio dependency.
|
38
|
+
|
39
|
+
This should work on IEEE 754 compliant implementations even if the C99
|
40
|
+
macros aren't available, but will likely break some ancient platforms.
|
41
|
+
If problems arise, my plan is to port the relevant trionan.c solution
|
42
|
+
to xpath.c. Note that non-compliant implementations are impossible
|
43
|
+
to fully support, anyway, since XPath requires IEEE 754.
|
44
|
+
|
45
|
+
This patch would be unnecessary if any of the following was true:
|
46
|
+
|
47
|
+
* centos implements these as macros, and doesn't generate an unresolved symbol for either in the shared library
|
48
|
+
* we had a way to ensure `__isinf` and `__isnan` resolve on musl (e.g., we implement them locally)
|
49
|
+
|
50
|
+
diff --git a/xpath.c b/xpath.c
|
51
|
+
index 9f64ab9..5b6d999 100644
|
52
|
+
--- a/xpath.c
|
53
|
+
+++ b/xpath.c
|
54
|
+
@@ -509,11 +509,7 @@ xmlXPathInit(void) {
|
55
|
+
*/
|
56
|
+
int
|
57
|
+
xmlXPathIsNaN(double val) {
|
58
|
+
-#ifdef isnan
|
59
|
+
- return isnan(val);
|
60
|
+
-#else
|
61
|
+
return !(val == val);
|
62
|
+
-#endif
|
63
|
+
}
|
64
|
+
|
65
|
+
/**
|
66
|
+
@@ -524,15 +520,11 @@ xmlXPathIsNaN(double val) {
|
67
|
+
*/
|
68
|
+
int
|
69
|
+
xmlXPathIsInf(double val) {
|
70
|
+
-#ifdef isinf
|
71
|
+
- return isinf(val) ? (val > 0 ? 1 : -1) : 0;
|
72
|
+
-#else
|
73
|
+
if (val >= INFINITY)
|
74
|
+
return 1;
|
75
|
+
if (val <= -INFINITY)
|
76
|
+
return -1;
|
77
|
+
return 0;
|
78
|
+
-#endif
|
79
|
+
}
|
80
|
+
|
81
|
+
#endif /* SCHEMAS or XPATH */
|
Binary file
|
Binary file
|
metadata
CHANGED
@@ -1,161 +1,164 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nokogiri
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.11.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- Aaron Patterson
|
8
7
|
- Mike Dalessio
|
8
|
+
- Aaron Patterson
|
9
9
|
- Yoko Harada
|
10
|
-
- Tim Elliott
|
11
10
|
- Akinori MUSHA
|
12
11
|
- John Shahid
|
12
|
+
- Karol Bucek
|
13
13
|
- Lars Kanis
|
14
|
+
- Sergio Arbeo
|
15
|
+
- Timothy Elliott
|
16
|
+
- Nobuyoshi Nakada
|
14
17
|
autorequire:
|
15
18
|
bindir: bin
|
16
19
|
cert_chain: []
|
17
|
-
date:
|
20
|
+
date: 2021-01-06 00:00:00.000000000 Z
|
18
21
|
dependencies:
|
19
22
|
- !ruby/object:Gem::Dependency
|
20
|
-
name:
|
23
|
+
name: racc
|
21
24
|
requirement: !ruby/object:Gem::Requirement
|
22
25
|
requirements:
|
23
26
|
- - "~>"
|
24
27
|
- !ruby/object:Gem::Version
|
25
|
-
version:
|
28
|
+
version: '1.4'
|
26
29
|
type: :runtime
|
27
30
|
prerelease: false
|
28
31
|
version_requirements: !ruby/object:Gem::Requirement
|
29
32
|
requirements:
|
30
33
|
- - "~>"
|
31
34
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
35
|
+
version: '1.4'
|
33
36
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
37
|
+
name: mini_portile2
|
35
38
|
requirement: !ruby/object:Gem::Requirement
|
36
39
|
requirements:
|
37
40
|
- - "~>"
|
38
41
|
- !ruby/object:Gem::Version
|
39
|
-
version:
|
40
|
-
type: :
|
42
|
+
version: 2.5.0
|
43
|
+
type: :runtime
|
41
44
|
prerelease: false
|
42
45
|
version_requirements: !ruby/object:Gem::Requirement
|
43
46
|
requirements:
|
44
47
|
- - "~>"
|
45
48
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
49
|
+
version: 2.5.0
|
47
50
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
51
|
+
name: bundler
|
49
52
|
requirement: !ruby/object:Gem::Requirement
|
50
53
|
requirements:
|
51
54
|
- - "~>"
|
52
55
|
- !ruby/object:Gem::Version
|
53
|
-
version: '2.
|
56
|
+
version: '2.2'
|
54
57
|
type: :development
|
55
58
|
prerelease: false
|
56
59
|
version_requirements: !ruby/object:Gem::Requirement
|
57
60
|
requirements:
|
58
61
|
- - "~>"
|
59
62
|
- !ruby/object:Gem::Version
|
60
|
-
version: '2.
|
63
|
+
version: '2.2'
|
61
64
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
65
|
+
name: concourse
|
63
66
|
requirement: !ruby/object:Gem::Requirement
|
64
67
|
requirements:
|
65
68
|
- - "~>"
|
66
69
|
- !ruby/object:Gem::Version
|
67
|
-
version: '
|
70
|
+
version: '0.41'
|
68
71
|
type: :development
|
69
72
|
prerelease: false
|
70
73
|
version_requirements: !ruby/object:Gem::Requirement
|
71
74
|
requirements:
|
72
75
|
- - "~>"
|
73
76
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
77
|
+
version: '0.41'
|
75
78
|
- !ruby/object:Gem::Dependency
|
76
|
-
name: hoe-
|
79
|
+
name: hoe-markdown
|
77
80
|
requirement: !ruby/object:Gem::Requirement
|
78
81
|
requirements:
|
79
82
|
- - "~>"
|
80
83
|
- !ruby/object:Gem::Version
|
81
|
-
version: '1.
|
84
|
+
version: '1.1'
|
82
85
|
type: :development
|
83
86
|
prerelease: false
|
84
87
|
version_requirements: !ruby/object:Gem::Requirement
|
85
88
|
requirements:
|
86
89
|
- - "~>"
|
87
90
|
- !ruby/object:Gem::Version
|
88
|
-
version: '1.
|
91
|
+
version: '1.1'
|
89
92
|
- !ruby/object:Gem::Dependency
|
90
93
|
name: minitest
|
91
94
|
requirement: !ruby/object:Gem::Requirement
|
92
95
|
requirements:
|
93
96
|
- - "~>"
|
94
97
|
- !ruby/object:Gem::Version
|
95
|
-
version: 5.8
|
98
|
+
version: '5.8'
|
96
99
|
type: :development
|
97
100
|
prerelease: false
|
98
101
|
version_requirements: !ruby/object:Gem::Requirement
|
99
102
|
requirements:
|
100
103
|
- - "~>"
|
101
104
|
- !ruby/object:Gem::Version
|
102
|
-
version: 5.8
|
105
|
+
version: '5.8'
|
103
106
|
- !ruby/object:Gem::Dependency
|
104
|
-
name:
|
107
|
+
name: minitest-reporters
|
105
108
|
requirement: !ruby/object:Gem::Requirement
|
106
109
|
requirements:
|
107
110
|
- - "~>"
|
108
111
|
- !ruby/object:Gem::Version
|
109
|
-
version: '
|
112
|
+
version: '1.4'
|
110
113
|
type: :development
|
111
114
|
prerelease: false
|
112
115
|
version_requirements: !ruby/object:Gem::Requirement
|
113
116
|
requirements:
|
114
117
|
- - "~>"
|
115
118
|
- !ruby/object:Gem::Version
|
116
|
-
version: '
|
119
|
+
version: '1.4'
|
117
120
|
- !ruby/object:Gem::Dependency
|
118
|
-
name: rake
|
121
|
+
name: rake
|
119
122
|
requirement: !ruby/object:Gem::Requirement
|
120
123
|
requirements:
|
121
124
|
- - "~>"
|
122
125
|
- !ruby/object:Gem::Version
|
123
|
-
version:
|
126
|
+
version: '13.0'
|
124
127
|
type: :development
|
125
128
|
prerelease: false
|
126
129
|
version_requirements: !ruby/object:Gem::Requirement
|
127
130
|
requirements:
|
128
131
|
- - "~>"
|
129
132
|
- !ruby/object:Gem::Version
|
130
|
-
version:
|
133
|
+
version: '13.0'
|
131
134
|
- !ruby/object:Gem::Dependency
|
132
|
-
name: rake-compiler
|
135
|
+
name: rake-compiler
|
133
136
|
requirement: !ruby/object:Gem::Requirement
|
134
137
|
requirements:
|
135
138
|
- - "~>"
|
136
139
|
- !ruby/object:Gem::Version
|
137
|
-
version:
|
140
|
+
version: '1.1'
|
138
141
|
type: :development
|
139
142
|
prerelease: false
|
140
143
|
version_requirements: !ruby/object:Gem::Requirement
|
141
144
|
requirements:
|
142
145
|
- - "~>"
|
143
146
|
- !ruby/object:Gem::Version
|
144
|
-
version:
|
147
|
+
version: '1.1'
|
145
148
|
- !ruby/object:Gem::Dependency
|
146
|
-
name:
|
149
|
+
name: rake-compiler-dock
|
147
150
|
requirement: !ruby/object:Gem::Requirement
|
148
151
|
requirements:
|
149
152
|
- - "~>"
|
150
153
|
- !ruby/object:Gem::Version
|
151
|
-
version: 1.
|
154
|
+
version: '1.1'
|
152
155
|
type: :development
|
153
156
|
prerelease: false
|
154
157
|
version_requirements: !ruby/object:Gem::Requirement
|
155
158
|
requirements:
|
156
159
|
- - "~>"
|
157
160
|
- !ruby/object:Gem::Version
|
158
|
-
version: 1.
|
161
|
+
version: '1.1'
|
159
162
|
- !ruby/object:Gem::Dependency
|
160
163
|
name: rexical
|
161
164
|
requirement: !ruby/object:Gem::Requirement
|
@@ -171,108 +174,95 @@ dependencies:
|
|
171
174
|
- !ruby/object:Gem::Version
|
172
175
|
version: 1.0.5
|
173
176
|
- !ruby/object:Gem::Dependency
|
174
|
-
name:
|
177
|
+
name: rubocop
|
175
178
|
requirement: !ruby/object:Gem::Requirement
|
176
179
|
requirements:
|
177
180
|
- - "~>"
|
178
181
|
- !ruby/object:Gem::Version
|
179
|
-
version: '
|
182
|
+
version: '1.7'
|
180
183
|
type: :development
|
181
184
|
prerelease: false
|
182
185
|
version_requirements: !ruby/object:Gem::Requirement
|
183
186
|
requirements:
|
184
187
|
- - "~>"
|
185
188
|
- !ruby/object:Gem::Version
|
186
|
-
version: '
|
189
|
+
version: '1.7'
|
187
190
|
- !ruby/object:Gem::Dependency
|
188
|
-
name:
|
191
|
+
name: simplecov
|
189
192
|
requirement: !ruby/object:Gem::Requirement
|
190
193
|
requirements:
|
191
|
-
- - "
|
192
|
-
- !ruby/object:Gem::Version
|
193
|
-
version: '4.0'
|
194
|
-
- - "<"
|
194
|
+
- - "~>"
|
195
195
|
- !ruby/object:Gem::Version
|
196
|
-
version: '
|
196
|
+
version: '0.20'
|
197
197
|
type: :development
|
198
198
|
prerelease: false
|
199
199
|
version_requirements: !ruby/object:Gem::Requirement
|
200
200
|
requirements:
|
201
|
-
- - "
|
202
|
-
- !ruby/object:Gem::Version
|
203
|
-
version: '4.0'
|
204
|
-
- - "<"
|
201
|
+
- - "~>"
|
205
202
|
- !ruby/object:Gem::Version
|
206
|
-
version: '
|
203
|
+
version: '0.20'
|
207
204
|
- !ruby/object:Gem::Dependency
|
208
|
-
name:
|
205
|
+
name: yard
|
209
206
|
requirement: !ruby/object:Gem::Requirement
|
210
207
|
requirements:
|
211
208
|
- - "~>"
|
212
209
|
- !ruby/object:Gem::Version
|
213
|
-
version: '
|
210
|
+
version: '0.9'
|
214
211
|
type: :development
|
215
212
|
prerelease: false
|
216
213
|
version_requirements: !ruby/object:Gem::Requirement
|
217
214
|
requirements:
|
218
215
|
- - "~>"
|
219
216
|
- !ruby/object:Gem::Version
|
220
|
-
version: '
|
221
|
-
description:
|
222
|
-
Nokogiri (鋸)
|
223
|
-
|
224
|
-
|
225
|
-
email:
|
226
|
-
- aaronp@rubyforge.org
|
227
|
-
- mike.dalessio@gmail.com
|
228
|
-
- yokolet@gmail.com
|
229
|
-
- tle@holymonkey.com
|
230
|
-
- knu@idaemons.org
|
231
|
-
- jvshahid@gmail.com
|
232
|
-
- lars@greiz-reinsdorf.de
|
217
|
+
version: '0.9'
|
218
|
+
description: |
|
219
|
+
Nokogiri (鋸) makes it easy and painless to work with XML and HTML from Ruby. It provides a
|
220
|
+
sensible, easy-to-understand API for reading, writing, modifying, and querying documents. It is
|
221
|
+
fast and standards-compliant by relying on native parsers like libxml2 (C) and xerces (Java).
|
222
|
+
email: nokogiri-talk@googlegroups.com
|
233
223
|
executables:
|
234
224
|
- nokogiri
|
235
225
|
extensions:
|
236
226
|
- ext/nokogiri/extconf.rb
|
237
227
|
extra_rdoc_files:
|
238
|
-
-
|
239
|
-
-
|
240
|
-
- README.md
|
241
|
-
- ext/nokogiri/html_document.c
|
242
|
-
- ext/nokogiri/html_element_description.c
|
243
|
-
- ext/nokogiri/html_entity_lookup.c
|
244
|
-
- ext/nokogiri/html_sax_parser_context.c
|
245
|
-
- ext/nokogiri/html_sax_push_parser.c
|
246
|
-
- ext/nokogiri/nokogiri.c
|
228
|
+
- ext/nokogiri/xml_dtd.c
|
229
|
+
- ext/nokogiri/xml_xpath_context.c
|
247
230
|
- ext/nokogiri/xml_attr.c
|
248
|
-
- ext/nokogiri/xml_attribute_decl.c
|
249
|
-
- ext/nokogiri/xml_cdata.c
|
250
231
|
- ext/nokogiri/xml_comment.c
|
251
|
-
- ext/nokogiri/
|
252
|
-
- ext/nokogiri/
|
253
|
-
- ext/nokogiri/
|
232
|
+
- ext/nokogiri/nokogiri.c
|
233
|
+
- ext/nokogiri/xml_sax_parser_context.c
|
234
|
+
- ext/nokogiri/xml_node_set.c
|
235
|
+
- ext/nokogiri/xml_reader.c
|
236
|
+
- ext/nokogiri/xml_libxml2_hacks.c
|
237
|
+
- ext/nokogiri/xml_cdata.c
|
254
238
|
- ext/nokogiri/xml_element_content.c
|
239
|
+
- ext/nokogiri/html_entity_lookup.c
|
240
|
+
- ext/nokogiri/xml_namespace.c
|
241
|
+
- ext/nokogiri/xml_io.c
|
242
|
+
- ext/nokogiri/xml_document.c
|
255
243
|
- ext/nokogiri/xml_element_decl.c
|
244
|
+
- ext/nokogiri/xml_schema.c
|
245
|
+
- ext/nokogiri/html_document.c
|
246
|
+
- ext/nokogiri/xml_processing_instruction.c
|
247
|
+
- ext/nokogiri/xml_text.c
|
248
|
+
- ext/nokogiri/xml_syntax_error.c
|
249
|
+
- ext/nokogiri/xml_document_fragment.c
|
250
|
+
- ext/nokogiri/xml_sax_push_parser.c
|
256
251
|
- ext/nokogiri/xml_encoding_handler.c
|
252
|
+
- ext/nokogiri/html_sax_push_parser.c
|
253
|
+
- ext/nokogiri/xml_relax_ng.c
|
257
254
|
- ext/nokogiri/xml_entity_decl.c
|
258
|
-
- ext/nokogiri/
|
259
|
-
- ext/nokogiri/xml_io.c
|
260
|
-
- ext/nokogiri/xml_libxml2_hacks.c
|
261
|
-
- ext/nokogiri/xml_namespace.c
|
255
|
+
- ext/nokogiri/test_global_handlers.c
|
262
256
|
- ext/nokogiri/xml_node.c
|
263
|
-
- ext/nokogiri/
|
264
|
-
- ext/nokogiri/xml_processing_instruction.c
|
265
|
-
- ext/nokogiri/xml_reader.c
|
266
|
-
- ext/nokogiri/xml_relax_ng.c
|
267
|
-
- ext/nokogiri/xml_sax_parser.c
|
268
|
-
- ext/nokogiri/xml_sax_parser_context.c
|
269
|
-
- ext/nokogiri/xml_sax_push_parser.c
|
270
|
-
- ext/nokogiri/xml_schema.c
|
271
|
-
- ext/nokogiri/xml_syntax_error.c
|
272
|
-
- ext/nokogiri/xml_text.c
|
273
|
-
- ext/nokogiri/xml_xpath_context.c
|
257
|
+
- ext/nokogiri/xml_entity_reference.c
|
274
258
|
- ext/nokogiri/xslt_stylesheet.c
|
259
|
+
- ext/nokogiri/html_sax_parser_context.c
|
260
|
+
- ext/nokogiri/xml_sax_parser.c
|
261
|
+
- ext/nokogiri/xml_attribute_decl.c
|
262
|
+
- ext/nokogiri/html_element_description.c
|
263
|
+
- README.md
|
275
264
|
files:
|
265
|
+
- Gemfile
|
276
266
|
- LICENSE-DEPENDENCIES.md
|
277
267
|
- LICENSE.md
|
278
268
|
- README.md
|
@@ -292,6 +282,7 @@ files:
|
|
292
282
|
- ext/nokogiri/html_sax_push_parser.h
|
293
283
|
- ext/nokogiri/nokogiri.c
|
294
284
|
- ext/nokogiri/nokogiri.h
|
285
|
+
- ext/nokogiri/test_global_handlers.c
|
295
286
|
- ext/nokogiri/xml_attr.c
|
296
287
|
- ext/nokogiri/xml_attr.h
|
297
288
|
- ext/nokogiri/xml_attribute_decl.c
|
@@ -369,8 +360,11 @@ files:
|
|
369
360
|
- lib/nokogiri/html/sax/parser.rb
|
370
361
|
- lib/nokogiri/html/sax/parser_context.rb
|
371
362
|
- lib/nokogiri/html/sax/push_parser.rb
|
363
|
+
- lib/nokogiri/jruby/dependencies.rb
|
372
364
|
- lib/nokogiri/syntax_error.rb
|
373
365
|
- lib/nokogiri/version.rb
|
366
|
+
- lib/nokogiri/version/constant.rb
|
367
|
+
- lib/nokogiri/version/info.rb
|
374
368
|
- lib/nokogiri/xml.rb
|
375
369
|
- lib/nokogiri/xml/attr.rb
|
376
370
|
- lib/nokogiri/xml/attribute_decl.rb
|
@@ -412,12 +406,25 @@ files:
|
|
412
406
|
- lib/nokogiri/xslt/stylesheet.rb
|
413
407
|
- lib/xsd/xmlparser/nokogiri.rb
|
414
408
|
- patches/libxml2/0001-Revert-Do-not-URI-escape-in-server-side-includes.patch
|
415
|
-
-
|
416
|
-
-
|
417
|
-
|
409
|
+
- patches/libxml2/0002-Remove-script-macro-support.patch
|
410
|
+
- patches/libxml2/0003-Update-entities-to-remove-handling-of-ssi.patch
|
411
|
+
- patches/libxml2/0004-libxml2.la-is-in-top_builddir.patch
|
412
|
+
- patches/libxml2/0005-Fix-infinite-loop-in-xmlStringLenDecodeEntities.patch
|
413
|
+
- patches/libxml2/0006-htmlParseComment-treat-as-if-it-closed-the-comment.patch
|
414
|
+
- patches/libxml2/0007-use-new-htmlParseLookupCommentEnd-to-find-comment-en.patch
|
415
|
+
- patches/libxml2/0008-use-glibc-strlen.patch
|
416
|
+
- patches/libxml2/0009-avoid-isnan-isinf.patch
|
417
|
+
- ports/archives/libxml2-2.9.10.tar.gz
|
418
|
+
- ports/archives/libxslt-1.1.34.tar.gz
|
419
|
+
homepage: https://nokogiri.org
|
418
420
|
licenses:
|
419
421
|
- MIT
|
420
|
-
metadata:
|
422
|
+
metadata:
|
423
|
+
homepage_uri: https://nokogiri.org
|
424
|
+
bug_tracker_uri: https://github.com/sparklemotion/nokogiri/issues
|
425
|
+
documentation_uri: https://nokogiri.org/rdoc/index.html
|
426
|
+
changelog_uri: https://nokogiri.org/CHANGELOG.html
|
427
|
+
source_code_uri: https://github.com/sparklemotion/nokogiri
|
421
428
|
post_install_message:
|
422
429
|
rdoc_options:
|
423
430
|
- "--main"
|
@@ -428,15 +435,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
428
435
|
requirements:
|
429
436
|
- - ">="
|
430
437
|
- !ruby/object:Gem::Version
|
431
|
-
version: 2.
|
438
|
+
version: 2.5.0
|
432
439
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
433
440
|
requirements:
|
434
441
|
- - ">="
|
435
442
|
- !ruby/object:Gem::Version
|
436
443
|
version: '0'
|
437
444
|
requirements: []
|
438
|
-
rubygems_version: 3.
|
445
|
+
rubygems_version: 3.1.4
|
439
446
|
signing_key:
|
440
447
|
specification_version: 4
|
441
|
-
summary: Nokogiri (鋸)
|
448
|
+
summary: Nokogiri (鋸) makes it easy and painless to work with XML and HTML from Ruby.
|
442
449
|
test_files: []
|