InfiniTimeOrg / InfiniTime

Firmware for Pinetime smartwatch written in C++ and based on FreeRTOS
GNU General Public License v3.0
2.63k stars 901 forks source link

Fix EOL related build issues on Windows #2077

Open madmini opened 1 week ago

madmini commented 1 week ago

Proper fix for #1275 that does no longer require manual intervention.

On Windows, git has core.autocrlf=true set at system level, hence any Windows user who has not changed their global git config will checkout all text files with CRLF line endings. For some files this seems to cause build issues.

With this change, I can build using docker on Windows 11 as follows:

git clone https://github.com/madmini/InfiniTime.git --branch fix/eol-on-windows
cd InfiniTime
git submodule update --init
docker run --rm -it -v ${PWD}:/sources infinitime/infinitime-build

Without the change, the build fails with an error that matches the one described in #1275:

...
[ 34%] Linking C static library libnimble.a
[ 34%] Built target nimble
gmake: *** [Makefile:91: all] Error 2

Note: when changing between branches with varying .gitattributes with checkout instead of directly cloning with --branch, resetting the line endings is more complicated:

git clone https://github.com/madmini/InfiniTime.git
# CRLF line endings
git checkout fix/eol-on-windows
# still CRLF line endings
git rm --cached -r .
git reset --hard
# LF line endings
github-actions[bot] commented 1 week ago

Build checks have not completed. Possible reasons for this are:

  1. The checks need to be approved by a maintainer
  2. The branch has conflicts
  3. The firmware build has failed