diff options
| author | Tristan Partin <tristan@partin.io> | 2024-07-11 10:18:34 -0500 |
|---|---|---|
| committer | Eli Schwartz <eschwartz93@gmail.com> | 2024-07-15 14:14:19 -0400 |
| commit | b1f4e1495d4f03f4ef68d59535bd954686def3af (patch) | |
| tree | 9a1629e9d26918d015229abf15902d5e5dcf4ee4 /test cases/linuxlike/13 cmake dependency | |
| parent | 44323fffead913d0a3c52647ba63a236924c7b78 (diff) | |
| download | meson-b1f4e1495d4f03f4ef68d59535bd954686def3af.tar.gz | |
Fix failing tests for zlib-ng
Fedora, at the very least, now packages zlib-ng as zlib. This means the
version reported for the dependency is now X.Y.Z.zlib-ng by pkgconfig
whereas the test expected X.Y.Z. Make the version check work for both
regular zlib and zlib-ng.
Diffstat (limited to 'test cases/linuxlike/13 cmake dependency')
| -rw-r--r-- | test cases/linuxlike/13 cmake dependency/prog-checkver.c | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/test cases/linuxlike/13 cmake dependency/prog-checkver.c b/test cases/linuxlike/13 cmake dependency/prog-checkver.c index ea1ed32f4..fe705d45d 100644 --- a/test cases/linuxlike/13 cmake dependency/prog-checkver.c +++ b/test cases/linuxlike/13 cmake dependency/prog-checkver.c @@ -1,11 +1,38 @@ #include <zlib.h> +#include <stdbool.h> #include <stdio.h> #include <string.h> +static bool check_version(const char *zlib_ver, const char *found_zlib) { +#ifdef ZLIBNG_VERSION + const char *ptr = strstr(zlib_ver, found_zlib); + + // If the needle isn't found or the needle isn't at the start, fail. + if (ptr == NULL || ptr != zlib_ver) + return false; + + /* In zlib-ng, ZLIB_VERSION is of the form X.Y.Z.zlib-ng. This will move the + * pointer to the start of the suffix, .zlib-ng. We know that at this point + * that FOUND_ZLIB is the start of ZLIB_VERSION, so compare the rest. + */ + ptr += strlen(found_zlib); + if (strcmp(ptr, ".zlib-ng") != 0) + return false; +#else + if (strcmp(zlib_ver, found_zlib) != 0) + return false; +#endif + + return true; +} + int main(void) { void * something = deflate; - if(strcmp(ZLIB_VERSION, FOUND_ZLIB) != 0) { + if (!check_version(ZLIB_VERSION, FOUND_ZLIB)) { printf("Meson found '%s' but zlib is '%s'\n", FOUND_ZLIB, ZLIB_VERSION); +#ifdef ZLIBNG_VERSION + puts("Note that in the case of zlib-ng, a version suffix of .zlib-ng is expected\n"); +#endif return 2; } if(something != 0) |
