On Fri, Jun 07, 2024 at 12:19:28AM +0500, Andrey Rakhmatullin wrote: > We recently increased the time_t size on certain architectures and some > packages started failing to build because they were using a format > specifier too narrow for the wider time_t, e.g. #1067829. > But the only reason those package FTBFS is they enable either -Werror or > some more specific non-default switch like -Werror=format=2, so I suspect > much more packages contain similar code but gained only a warning. Isn't > this a bad thing? Should we enable at least some combination of -Wformat* > switches by default? Should we at least add a new flag to dpkg-buildflags > and do some test rebuilds with it enabled?
It wasn't quite clear to me what -Werror=format=2 actually means. According to the gcc documentation[1], -Wformat=2 currently means: -Wformat -Wformat-nonliteral -Wformat-security -Wformat-y2k. Of these, we already enable -Werror=format-security, but not the other ones. It is not clear to me, which of these actually catches the the type mismatches. Would you do more research here? It also is unclear how this impacts the archive and yes, I'd recommend a rebuild. Note though that we likely need this rebuild both on a 64bit architecture and a 32bit architecture that is not i386 (due to how t64 works). A partial archive rebuild may work to gauge the size of the problem. I note that this kind of change affects cross builds, so performing cross builds for armhf on amd64 will likely show many of these failures (in addition to all the regular cross build failures). I recommend doing more research before moving forward with this. In particular a MBF about introduced problems would be prudent before doing the switch and even if we don't switch, such a MBF bears value on its own. Helmut [1] https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html