libutil/file-system.hh redefines standard #defines if a Lix internal HAVE_ isn't provided #455
Labels
No labels
Area/build-packaging
Area/cli
Area/evaluator
Area/fetching
Area/flakes
Area/language
Area/profiles
Area/protocol
Area/releng
Area/remote-builds
Area/repl
Area/store
bug
crash 💥
Cross Compilation
devx
docs
Downstream Dependents
E/easy
E/hard
E/help wanted
E/reproducible
E/requires rearchitecture
imported
Needs Langver
OS/Linux
OS/macOS
performance
regression
release-blocker
RFD
stability
Status
blocked
Status
invalid
Status
postponed
Status
wontfix
testing
testing/flakey
ux
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lix-project/lix#455
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Describe the bug
Trying to include (directly or transitively) libutil/file-system.hh from outside Lix causes warnings about DT_UNKNOWN, DT_REG, ... being redefined. This is because the header tries to define them #ifndef HAVE_STRUCT_DIRENT_D_TYPE, which will of course usually not be defined outside Lix.
This requires a bunch of workarounds in downstream projects and I really see no reason why such hacks should be in public headers - in fact, file-system.hh itself does not use the DT_* it defines, so at the very least those redefines are in the wrong place.
See for reference this workaround in n-e-j: https://git.lix.systems/lix-project/nix-eval-jobs/src/branch/main/src/meson.build#L14
(I'm copy-pasting it in Hydra too, which is the trigger for me filing this bug...)
This issue was mentioned on Gerrit on the following CLs: