mpdcron: fix build by correcting a C function conflict in nokogiri

`nokogiri` defines a C function called `canonicalize` which conflicts
with another function defined in glibc. Upstream has fixed this
issue [1], but in a much newer version. And because the affected
file has changed since the merged patch [2], it isn't directly
applicable to the old gem version `mpdcron` depends on.

[1]: https://github.com/sparklemotion/nokogiri/issues/2105
[2]: 7a74cdbe45
This commit is contained in:
Manuel Frischknecht 2023-11-28 20:40:15 +01:00
parent a54350357e
commit 37517db1de
2 changed files with 35 additions and 0 deletions

View file

@ -0,0 +1,22 @@
diff --git a/ext/nokogiri/xml_document.c b/ext/nokogiri/xml_document.c
index 1d2119c8..c1c87713 100644
--- a/ext/nokogiri/xml_document.c
+++ b/ext/nokogiri/xml_document.c
@@ -492,7 +492,7 @@ static int block_caller(void * ctx, xmlNodePtr _node, xmlNodePtr _parent)
* The block must return a non-nil, non-false value if the +obj+ passed in
* should be included in the canonicalized document.
*/
-static VALUE canonicalize(int argc, VALUE* argv, VALUE self)
+static VALUE nokogiri_xml_document_canonicalize(int argc, VALUE* argv, VALUE self)
{
VALUE mode;
VALUE incl_ns;
@@ -573,7 +573,7 @@ void init_xml_document()
rb_define_method(klass, "encoding", encoding, 0);
rb_define_method(klass, "encoding=", set_encoding, 1);
rb_define_method(klass, "version", version, 0);
- rb_define_method(klass, "canonicalize", canonicalize, -1);
+ rb_define_method(klass, "nokogiri_xml_document_canonicalize", canonicalize, -1);
rb_define_method(klass, "dup", duplicate_document, -1);
rb_define_method(klass, "url", url, 0);
rb_define_method(klass, "create_entity", create_entity, -1);

View file

@ -18,6 +18,19 @@
sha256 = "02bjydih0j515szfv9mls195cvpyidh6ixm7dwbl3s2sbaxxk5s4";
type = "gem";
};
dontBuild = false;
patches = [
# Fixes a naming conflict of nokogiri's `canonicalize` function
# with one defined in glibc. This has been fixed upstream in 2020
# in a much newer version (1.15.5), but through the divergence
# of the affected file, the commit isn't directly applicable to
# the one packaged here:
#
# https://github.com/sparklemotion/nokogiri/pull/2106/commits/7a74cdbe4538e964023e5a0fdca58d8af708b91e
# https://github.com/sparklemotion/nokogiri/issues/2105
./fix-canonicalize-conflict-with-glibc.patch
];
version = "1.10.3";
};
}