You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

96 lines
3.2 KiB

7 years ago
adjust install_avr function to use unzip for broader compatibility (#4596) On a laptop with god knows what mandatory security software (Cylance?), running up-to-date Windows 10 with msys2 mingw-64, attempting to install the AVR toolkit results in the following error: ``` 1 [main] 7z (13316) C:\msys32\usr\lib\p7zip\7z.exe: *** fatal error - cygheap base mismatch detected - 0x612A5410/0x2375410. This problem is probably due to using incompatible versions of the cygwin DLL. Search for cygwin1.dll using the Windows Start->Find/Search facility and delete all but the most recent version. The most recent version *should* reside in x:\cygwin\bin, where 'x' is the drive on which you have installed the cygwin distribution. Rebooting is also suggested if you are unable to find another cygwin DLL. ``` This appears to be related in some way, based on my research, to ASLR functionality in security software. Since I'm unable to override whatever is enforcing ASLR on my system, after trying several other approaches (removing other copies of msys-2.0.dll, which is what this is apparently actually referencing, rebasing that file in Windows to address 0x61000000, a few other things) I simply edited the installation shell script to use `unzip` instead of 7zip; `unzip`'s binary does not provoke a mismatch error and the installation proceeds as it should. I'm not aware of the reason why some parts of the install script use `unzip` (e.g. `install_arm`) and others use 7zip, but it seems that for broader compatibility and sparing users on locked down machines the 120 minutes or so of futzing this took me to fix, it might be better to just use `unzip` in all cases. Note: There is another function that uses 7zip, `extract_flip`. The line is `7z -oflip x FlipInstaller.exe`. I'm not sure what this is doing, or whether it's possible to do it with `unzip`, but it produces the same error. I haven't attempted to fix that in this PR, but it might be good to fix it for the same reason.
5 years ago
  1. #!/bin/bash
  2. dir=$(cd -P -- "$(dirname -- "$0")" && pwd -P)
  3. download_dir=~/qmk_utils
  4. avrtools=avr8-gnu-toolchain
  5. armtools=gcc-arm-none-eabi
  6. util_dir=$(dirname "$0")
  7. echo "Installing dependencies needed for the installation (quazip)"
  8. pacman --needed --noconfirm --disable-download-timeout -Sy base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-clang git mingw-w64-x86_64-python3-pip unzip
  9. source "$dir/win_shared_install.sh"
  10. function install_avr {
  11. rm -f -r "$avrtools"
  12. wget "https://blog.zakkemble.net/download/avr-gcc-8.3.0-x86-mingw.zip"
  13. echo "Extracting AVR toolchain..."
  14. unzip -q -d . avr-gcc-8.3.0-x86-mingw.zip
  15. mv avr-gcc-8.3.0-x86-mingw avr8-gnu-toolchain
  16. rm avr8-gnu-toolchain/bin/make.exe
  17. rm avr-gcc-8.3.0-x86-mingw.zip
  18. # FIXME: As of 2020-05-19, the MSYS2 avrdude cannot flash USBaspLoader devices, for some reason
  19. # (warning: cannot set sck period)
  20. # However, the avr-gcc toolchain above contains an avrdude which can, so let's just not install this for now
  21. #pacman --needed --disable-download-timeout -S mingw-w64-x86_64-avrdude
  22. }
  23. function install_arm {
  24. rm -f -r "$armtools"
  25. wget -O gcc-arm-none-eabi-8-2019-q3-update-win32.zip "https://developer.arm.com/-/media/Files/downloads/gnu-rm/8-2019q3/RC1.1/gcc-arm-none-eabi-8-2019-q3-update-win32.zip"
  26. echo "Extracting ARM toolchain..."
  27. unzip -q -d gcc-arm-none-eabi gcc-arm-none-eabi-8-2019-q3-update-win32.zip
  28. rm gcc-arm-none-eabi-8-2019-q3-update-win32.zip
  29. }
  30. pushd "$download_dir"
  31. if [ ! -d "$avrtools" ]; then
  32. echo
  33. echo "The AVR toolchain is not installed."
  34. echo "This is needed for building AVR based keyboards."
  35. install_avr
  36. else
  37. while true; do
  38. echo
  39. echo "The AVR toolchain is already installed"
  40. read -p "Do you want to reinstall? (Y/N) " res
  41. case $res in
  42. [Yy]* ) install_avr; break;;
  43. [Nn]* ) break;;
  44. * ) echo "Invalid answer";;
  45. esac
  46. done
  47. fi
  48. if [ ! -d "$armtools" ]; then
  49. echo
  50. echo "The ARM toolchain is not installed."
  51. echo "This is needed for building ARM based keyboards."
  52. install_arm
  53. else
  54. while true; do
  55. echo
  56. echo "The ARM toolchain is already installed"
  57. read -p "Do you want to reinstall? (Y/N) " res
  58. case $res in
  59. [Yy]* ) install_arm; break;;
  60. [Nn]* ) break;;
  61. * ) echo "Invalid answer";;
  62. esac
  63. done
  64. fi
  65. popd
  66. pip3 install -r "${util_dir}/../requirements.txt"
  67. cp -f "$dir/activate_msys2.sh" "$download_dir/"
  68. if grep "^source ~/qmk_utils/activate_msys2.sh$" ~/.bashrc
  69. then
  70. echo
  71. echo "The line source ~/qmk_utils/activate_msys2.sh is already added to your /.bashrc"
  72. echo "Not adding it twice!"
  73. else
  74. echo
  75. echo "Adding 'source ~/qmk_utils/activate_msys2.sh' to the end of your"
  76. echo ".bashrc file. Without this make won't find the needed utils."
  77. echo "source ~/qmk_utils/activate_msys2.sh" >> ~/.bashrc;
  78. fi
  79. echo
  80. echo "******************************************************************************"
  81. echo "Installation completed!"
  82. echo "Please close this Window and restart MSYS2 MinGW"
  83. echo "******************************************************************************"