]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
musl: introduce dummy function for gnu_get_libc_version()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 8 Jun 2025 01:07:54 +0000 (10:07 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 13 Nov 2025 19:59:03 +0000 (04:59 +0900)
As the header gnu/libc-version.h and gnu_get_libc_version() function
are glibc specific, and musl does not provide them.

src/include/musl/gnu/libc-version.h [new file with mode: 0644]
src/test/test-condition.c

diff --git a/src/include/musl/gnu/libc-version.h b/src/include/musl/gnu/libc-version.h
new file mode 100644 (file)
index 0000000..328b53e
--- /dev/null
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+#pragma once
+
+#include <stddef.h>
+
+static inline const char* gnu_get_libc_version(void) {
+        return "";
+}
index 11b3a4241891ccb0ba9ca5fbbf5c46c59a49f256..1bae2e3dd83bf0c217fec97d1df40d79e841f5a0 100644 (file)
@@ -669,12 +669,14 @@ TEST(condition_test_version) {
         condition_free(condition);
 
         /* Test glibc version */
+        bool has = !isempty(gnu_get_libc_version());
+
         ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "glibc > 1", false, false)));
-        ASSERT_OK_POSITIVE(condition_test(condition, environ));
+        ASSERT_OK_EQ(condition_test(condition, environ), has);
         condition_free(condition);
 
         ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "glibc < 2", false, false)));
-        ASSERT_OK_ZERO(condition_test(condition, environ));
+        ASSERT_OK_EQ(condition_test(condition, environ), !has);
         condition_free(condition);
 
         ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "glibc < 9999", false, false)));
@@ -686,15 +688,27 @@ TEST(condition_test_version) {
         condition_free(condition);
 
         v = strjoina("glibc = ", gnu_get_libc_version());
-
         ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, v, false, false)));
-        ASSERT_OK_POSITIVE(condition_test(condition, environ));
+        if (has)
+                ASSERT_OK_POSITIVE(condition_test(condition, environ));
+        else
+                ASSERT_ERROR(condition_test(condition, environ), EINVAL);
         condition_free(condition);
 
         v = strjoina("glibc != ", gnu_get_libc_version());
-
         ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, v, false, false)));
-        ASSERT_OK_ZERO(condition_test(condition, environ));
+        if (has)
+                ASSERT_OK_ZERO(condition_test(condition, environ));
+        else
+                ASSERT_ERROR(condition_test(condition, environ), EINVAL);
+        condition_free(condition);
+
+        ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "glibc $= ?*", false, false)));
+        ASSERT_OK_EQ(condition_test(condition, environ), has);
+        condition_free(condition);
+
+        ASSERT_NOT_NULL((condition = condition_new(CONDITION_VERSION, "glibc !$= ?*", false, false)));
+        ASSERT_OK_EQ(condition_test(condition, environ), !has);
         condition_free(condition);
 }