Open kanavin opened 10 months ago
For completeness, we're going to patch rpm to ignore the braces if GLOB_BRACE is absent, and if failures occur on musl systems, then they would be separately fixed - so far none have been found:
From f78e05544fb5ae9ef688963f19666f1af34c3d5c Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex@linutronix.de>
Date: Tue, 16 Jan 2024 09:59:26 +0100
Subject: [PATCH] rpmio/rpmglob.c: avoid using GLOB_BRACE if undefined by C
library
This addresses musl failures; if there is code out there relying on
those braces, it needs to be fixed when used on musl.
This is unlikely to be trivially fixable upstream.
Upstream-Status: Inappropriate [reported at https://github.com/rpm-software-management/rpm/issues/2844]
Signed-off-by: Alexander Kanavin <alex@linutronix.de>
---
rpmio/rpmglob.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/rpmio/rpmglob.c b/rpmio/rpmglob.c
index 243568766..43c27074a 100644
--- a/rpmio/rpmglob.c
+++ b/rpmio/rpmglob.c
@@ -33,6 +33,12 @@
#include "debug.h"
+/* Don't fail if the standard C library
++ * doesn't provide brace expansion */
+#ifndef GLOB_BRACE
+#define GLOB_BRACE 0
+#endif
+
/* Return 1 if pattern contains a magic char, see glob(7) for a list */
static int ismagic(const char *pattern)
{
Yup, we recently refactored quite a bit of code related to glob handling, and mostly went with the GNU glob(3)
implementation, meaning that at least GLOB_BRACE
is indeed used now. Previously, we had our own implementation of brace expansion, IIRC.
I'll have a closer look but it's possible this could actually be fixed upstream. Thanks for the report!
FWIW, I think it's most easily fixable by relying on gnulib implementation? https://github.com/coreutils/gnulib/blob/master/lib/glob.c
When building 4.19.1 with musl C library, the following error happens:
I appreciate that fixing this isn't easy (unless one wants to break all usages of braces in calls to the function).
Full log (it's large, and doesn't contain anything else that would be relevant): https://autobuilder.yoctoproject.org/typhoon/#/builders/45/builds/8466/steps/11/logs/stdio