Having to do this in a kernel build is simply annoying
By joe
- 1 minutes read - 179 wordsSo there are some macros, DATE and TIME that the gcc compiler knows about. And some people inject these into their kernel module builds, because, well, why not. The issue is that they can make “reproducible builds” harder. Well, no, they really don’t. That’s a side issue.
And of course, modern kernel builds use -Wall -Werror which converts warnings like
macro "__TIME__" might prevent reproducible builds [-Werror=date-time]
into real honest-to-goodness errors. Ok, they aren’t real errors. Its just a compiler being somewhat pissy with me. And I had to work around it. I could disable the -Wall -Werror, but that is not what I wanted to do.
So I hand-preprocessed the code. In the makefile include. Before starting the compile.
Because.
__D__=$(shell date +%x)
__T__=$(shell date +%R)
target_prep: source.c
sed -i 's|__DATE__|"${__D__}"|g' source.c
sed -i 's|__TIME__|"${__T__}"|g' source.c
touch target_prep
Which, I dunno … sorta … kinda … blows chunks … mebbe ? Working around an issue by not fixing what was broke, but instead introducing a new path so I don’t subvert the intentions of the kernel build system?