Skip to content

CFE-3882: Added date binary inside cfengine - #2450

Merged
larsewi merged 1 commit into
cfengine:masterfrom
victormlg:parsedate
Aug 25, 2026
Merged

CFE-3882: Added date binary inside cfengine#2450
larsewi merged 1 commit into
cfengine:masterfrom
victormlg:parsedate

Conversation

@victormlg

@victormlg victormlg commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

No description provided.

@victormlg victormlg changed the title Back CFE-3882: Added date binary inside cfengine CFE-3882: Added date binary inside cfengine Aug 21, 2026
@cf-bottom

Copy link
Copy Markdown

Thanks for submitting a PR! Maybe @craigcomstock can review this?

@nickanderson nickanderson left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems reasonable, though I still wish we didn't have to exec out

Comment thread deps-packaging/coreutils/mingw/compat-include/pwd.h Outdated
Added /var/cfengine/bin/date from coreutils, in a similar way to diff, to be able to parse date and time

Signed-off-by: Victor Moene <victor.moene@northern.tech>
Comment on lines +95 to +100
+/* Resolving a user/group spec requires looking it up via the system's
+ user and group databases, so the code below needs <pwd.h> and
+ <grp.h>. On platforms that lack these headers (e.g. native Windows),
+ omit it entirely rather than fake up the lookups: if some program
+ actually needs it, it will fail to link, which is preferable to
+ silently linking in a passwd/group lookup that can never work. */

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

People reading this in the future will have no context of the fake look-ups that used to be there.

Comment on lines +6 to +23
We only build the "date" program out of coreutils, but the build compiles
every gnulib lib/*.c file into a single lib/libcoreutils.a used by all
coreutils programs, regardless of whether "date" actually needs them.

lib/idcache.c and lib/userspec.c unconditionally include <pwd.h> and
<grp.h> to resolve uids/gids via the system's user and group databases.
Native Windows (mingw-w64) ships neither header, so compiling
lib/libcoreutils.a for date.exe failed there even though date.exe never
references any symbol from these two files.

Guard the includes, and the function bodies that depend on them, with
the HAVE_PWD_H/HAVE_GRP_H macros that configure already defines via
AC_CHECK_HEADERS. This way the two files compile down to empty
translation units on platforms lacking these headers. If some other
coreutils program actually needs the passwd/group lookups these files
provide, linking that program will now fail with an undefined
reference, surfacing the problem at build time instead of silently
linking in stub declarations that could never work.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This you could probably explain with a few sentences.

@larsewi
larsewi merged commit 7adbae2 into cfengine:master Aug 25, 2026
31 of 34 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

5 participants