* [Buildroot] [PATCH 1/1] package/s6-dns: fix uclibc build
@ 2024-07-25 13:26 Dario Binacchi
2024-07-25 15:53 ` Thomas Petazzoni via buildroot
0 siblings, 1 reply; 3+ messages in thread
From: Dario Binacchi @ 2024-07-25 13:26 UTC (permalink / raw)
To: buildroot; +Cc: Eric Le Bihan, Dario Binacchi
Fix the following build failure:
src/libs6dns/s6dns_hosts_init.c: In function 's6dns_hosts_init':
src/libs6dns/s6dns_hosts_init.c:34:27: error: 'struct stat' has no member named 'st_mtim'; did you mean 'st_mtime'?
34 | if (timespec_cmp(&stc.st_mtim, &str.st_mtim) > 0) goto useit ;
| ^~~~~~~
| st_mtime
src/libs6dns/s6dns_hosts_init.c:34:41: error: 'struct stat' has no member named 'st_mtim'; did you mean 'st_mtime'?
34 | if (timespec_cmp(&stc.st_mtim, &str.st_mtim) > 0) goto useit ;
| ^~~~~~~
| st_mtime
Fixes:
- http://autobuild.buildroot.org/results/f97634e33c4ed94d6ab382a7c266288d814cfa0b
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
---
package/s6-dns/s6-dns.mk | 1 +
1 file changed, 1 insertion(+)
diff --git a/package/s6-dns/s6-dns.mk b/package/s6-dns/s6-dns.mk
index 8e175431a4b9..ecd7764add35 100644
--- a/package/s6-dns/s6-dns.mk
+++ b/package/s6-dns/s6-dns.mk
@@ -12,6 +12,7 @@ S6_DNS_INSTALL_STAGING = YES
S6_DNS_DEPENDENCIES = skalibs
S6_DNS_CONF_OPTS = \
+ CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE" \
--prefix=/ \
--with-sysdeps=$(STAGING_DIR)/lib/skalibs/sysdeps \
--with-include=$(STAGING_DIR)/include \
--
2.43.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [Buildroot] [PATCH 1/1] package/s6-dns: fix uclibc build
2024-07-25 13:26 [Buildroot] [PATCH 1/1] package/s6-dns: fix uclibc build Dario Binacchi
@ 2024-07-25 15:53 ` Thomas Petazzoni via buildroot
2024-07-25 15:59 ` Thomas Petazzoni via buildroot
0 siblings, 1 reply; 3+ messages in thread
From: Thomas Petazzoni via buildroot @ 2024-07-25 15:53 UTC (permalink / raw)
To: Dario Binacchi; +Cc: Eric Le Bihan, Fabrice Fontaine, buildroot
Hello Dario,
+Fabrice in Cc.
On Thu, 25 Jul 2024 15:26:41 +0200
Dario Binacchi <dario.binacchi@amarulasolutions.com> wrote:
> diff --git a/package/s6-dns/s6-dns.mk b/package/s6-dns/s6-dns.mk
> index 8e175431a4b9..ecd7764add35 100644
> --- a/package/s6-dns/s6-dns.mk
> +++ b/package/s6-dns/s6-dns.mk
> @@ -12,6 +12,7 @@ S6_DNS_INSTALL_STAGING = YES
> S6_DNS_DEPENDENCIES = skalibs
>
> S6_DNS_CONF_OPTS = \
> + CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE" \
Fabrice suggested a similar fix for the tipidee package
in https://patchwork.ozlabs.org/project/buildroot/patch/20240724115554.2270864-1-fontaine.fabrice@gmail.com/.
And (as usual?), I am wondering if this is the correct fix.
man 3 stat tells us:
/* Since POSIX.1-2008, this structure supports nanosecond
precision for the following timestamp fields.
For the details before POSIX.1-2008, see VERSIONS. */
struct timespec st_atim; /* Time of last access */
struct timespec st_mtim; /* Time of last modification */
struct timespec st_ctim; /* Time of last status change */
#define st_atime st_atim.tv_sec /* Backward compatibility */
#define st_mtime st_mtim.tv_sec
#define st_ctime st_ctim.tv_sec
Feature Test Macro Requirements for glibc (see fea‐
ture_test_macros(7)):
st_atim, st_mtim, st_ctim:
Since glibc 2.12:
_POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700
glibc 2.19 and earlier:
_BSD_SOURCE || _SVID_SOURCE
So it looks like _GNU_SOURCE is probably not the most accurate thing to
use. Also, why aren't glibc builds affected? The fields are also inside
a conditional in the stat.h from glibc:
# ifdef __USE_XOPEN2K8
/* Nanosecond resolution timestamps are stored in a format
equivalent to 'struct timespec'. This is the type used
whenever possible but the Unix namespace rules do not allow the
identifier 'timespec' to appear in the <sys/stat.h> header.
Therefore we have to handle the use of this header in strictly
standard-compliant sources special. */
struct timespec st_atim; /* Time of last access. */
struct timespec st_mtim; /* Time of last modification. */
struct timespec st_ctim; /* Time of last status change. */
# define st_atime st_atim.tv_sec /* Backward compatibility. */
# define st_mtime st_mtim.tv_sec
# define st_ctime st_ctim.tv_sec
In any case, it should be the package source code/build system's
responsibility to pass those flags properly. Passing them in Buildroot
is really a work-around.
I believe the C files using st_mtim should #define one of those feature
macros before including any of the header files.
Could you have a look into this? And same Fabrice for tipidee?
Thomas
--
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Buildroot] [PATCH 1/1] package/s6-dns: fix uclibc build
2024-07-25 15:53 ` Thomas Petazzoni via buildroot
@ 2024-07-25 15:59 ` Thomas Petazzoni via buildroot
0 siblings, 0 replies; 3+ messages in thread
From: Thomas Petazzoni via buildroot @ 2024-07-25 15:59 UTC (permalink / raw)
To: Dario Binacchi; +Cc: Eric Le Bihan, Fabrice Fontaine, buildroot
Hello Dario,
On Thu, 25 Jul 2024 17:53:48 +0200
Thomas Petazzoni <thomas.petazzoni@bootlin.com> wrote:
> In any case, it should be the package source code/build system's
> responsibility to pass those flags properly. Passing them in Buildroot
> is really a work-around.
>
> I believe the C files using st_mtim should #define one of those feature
> macros before including any of the header files.
Also, to add to the complexity, s6-dns relies on skalibs, which has its
own stat.h header file which does this:
#ifndef SKALIBS_STAT_H
#define SKALIBS_STAT_H
/*
This header must always be paired with skalibs/bsdsnowflake.h
(which must always come first).
If you #include <sys/stat.h> before bsdsnowflake, the
workaround will not work.
*/
#include <skalibs/sysdeps.h>
#include <sys/stat.h>
#if !defined(SKALIBS_HASSTATIM) && defined(SKALIBS_HASSTATIMESPEC)
#define st_atim st_atimespec
#define st_mtim st_mtimespec
#define st_ctim st_ctimespec
#endif
#endif
I guess the easiest is probably to report the bug to upstream s6-dns
developers and see what they say.
Thomas
--
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-07-25 15:59 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-25 13:26 [Buildroot] [PATCH 1/1] package/s6-dns: fix uclibc build Dario Binacchi
2024-07-25 15:53 ` Thomas Petazzoni via buildroot
2024-07-25 15:59 ` Thomas Petazzoni via buildroot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.