Rich Felker writes: > On Sun, Nov 06, 2022 at 06:18:22PM -0500, Dmitry Bogatov wrote: >> Hello. >> >> While trying to building gsasl statically with musl library as part of >> Nixpkgs distribution, I noticed that test built from tests/version.c >> fails when built with musl library. After a bit of troubleshooting, I >> can pinpoint the reason -- different behaviour of "strverscmp" from >> glibc and musl. >> >> Example code: >> >> #include >> #include >> >> int main() >> { >> int value = strverscmp("UNKNOWN", "2.2.0"); >> printf("%d\n", value); >> return 0; >> } >> >> Under glibc value "35" is printed (positive), under musl value "-1" is >> printed (negative). Not sure what is the correct solution for the >> issue, so I cross-post into two lists. >> >> For now I plan to patch-out this particular test. Thank you. > > It looks like we're neglecting to honor the exception case to "longer > digit sequence is greater" when one of the sequences is degenerate (no > digits). Thanks for the report Dmitry (dropping cc because your email adressed was reject by exim -- '550 restricted characters in address'). Right, I think this is a musl bug that gnulib doesn't detect and work around. I ran into it earlier on Alpine, but must have forgotten to report it (or I found earlier bug reports about it). Ignoring the self-test failure is the right solution. I believe strverscmp is a glibc-specified interface, so musl should be compatible with it, right? I'm inclined to add this test vector to the gnulib self-test for strverscmp, so at least we know where the problem comes from. Detecting the issue and working around it seems like a lot of complexity (which is a source for other bugs) and requires time and energy to support, for what appears to be little gain, so I'm not sure it is worth it. /Simon