sof/scripts/cmake
Marc Herbert b4edab69de Revert "cmake: make sure sha1 is computed without filters"
Commit 3315681c69 ("cmake: make sure sha1 is computed without
filters") added the `--no-filters` option to the `git hash-object`
invocation used to produce a `src/` checksum embedded in all firmware
binaries and .ldc files.

This fixed a small mismatch for the (very few) people using the
_asymmetric_ `autocrlf = input`. However it created a huge mismatch for
the numerous people using the _symetric_ `autocrlf = true`.

So revert that commit, remove `--no-filters` and replace it with a build
time warning.

`--no-filters` produces a checksum of the files as they are on the
filesystem, as opposed to how they would be input into git after
optional CRLF -> LF conversion.

When `--no-filters` was added, no one was compiling in Windows. Most
developers were not performing any conversion because there is no
`autocrlf` conversion by default on Linux.  Files were identical inside
and outside of git and life was simple.

Simple life except for at least one indomitable Linux developer who had
the _asymmetric_ `autocrlf = input` setting. Also, the SOF git repo
always had two exceptional (and generated) files with CRLF end of lines;
see issue #5917 for details (all other files have LF end of lines). So
for that "asymmetric" developer only and these two files only, `autocrlf
= input` converted these 2 files to LF before hashing and this caused a
different checksum. `--no-filters` stopped that conversion and "solved"
that mismatch.

But now Windows has entered the stage. On Windows, the default is
usually (and unfortunately) the symmetric `autocrlf = true`. It is the
default for Github's Windows runner. This symmetric default converts ALL
other files to CRLF when extracting them out of git. This causes `git
hash-object --no-filters` to produce a _different hash for all but 2
files on Windows_!

The only solution is to:

1. Drop the `--no-filters` to align everything on what is _stored in
   git_. What is stored in git is the only thing we are sure all users have
   in common.

2. Request users to use only _symmetric_ `autocrlf` settings so any
   optional input+output conversion cancels itself out.

3. Convert odd files and make sure they all have LF end of lines.

4. In the future, drop this entire git hash-object technique which is
   flawed in multiple ways and has been causing multiple issues. Much,
   much more work than this very small revert though.

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2023-01-18 12:17:51 +00:00
..
defconfigs.cmake cmake: generate the complete .config at configuration time. 2021-03-03 22:33:53 +00:00
dist.cmake dist.cmake: add 'rebuild_cache' warning. 2020-07-10 15:41:18 +01:00
git-hooks.cmake cmake: add spdx license identifier 2019-06-02 16:38:17 +01:00
git-submodules.cmake cmake: stop sneakily downloading missing submodules at build time 2022-08-31 10:40:04 +01:00
kconfig.cmake cmake: generate the complete .config at configuration time. 2021-03-03 22:33:53 +00:00
misc.cmake cmake: generate the complete .config at configuration time. 2021-03-03 22:33:53 +00:00
version-build-counter.cmake CMake: require version 3.13 2021-09-10 17:19:29 +01:00
version.cmake Revert "cmake: make sure sha1 is computed without filters" 2023-01-18 12:17:51 +00:00
xtensa-platform.cmake cmake: add spdx license identifier 2019-06-02 16:38:17 +01:00
xtensa-toolchain.cmake cmake: print some error messages when XTENSA_TOOLS_ROOT is wrong 2021-03-08 12:05:08 +00:00