Skip to content

Commit

Permalink
mpdcron: fix build by correcting a C function conflict in nokogiri
Browse files Browse the repository at this point in the history
`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]: sparklemotion/nokogiri#2105
[2]: sparklemotion/nokogiri@7a74cdb

(cherry picked from commit 37517db)
  • Loading branch information
mfrischknecht authored and github-actions[bot] committed Dec 2, 2023
1 parent f74804e commit a8c199b
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -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);
13 changes: 13 additions & 0 deletions pkgs/tools/audio/mpdcron/gemset.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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";
};
}

0 comments on commit a8c199b

Please sign in to comment.