From b663abf1600230f96303232c0b8d68740b1d5da9 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Fri, 12 Feb 2021 20:12:37 +0100 Subject: [PATCH 01/34] Add MK404 support Indentations --- MK404-build.sh | 135 ++++++ PF-build.sh | 1128 +++++++++++++++++++++++++----------------------- 2 files changed, 718 insertions(+), 545 deletions(-) create mode 100755 MK404-build.sh diff --git a/MK404-build.sh b/MK404-build.sh new file mode 100755 index 000000000..7a9cde51a --- /dev/null +++ b/MK404-build.sh @@ -0,0 +1,135 @@ +#!/bin/bash +# This bash script is used to compile automatically the MK404 simulator +# +# Supported OS: Linux64 bit +# +# Linux: +# Linux Ubuntu +# 1. Follow these instructions +# 2. Open Ubuntu bash and get latest updates with 'sudo apt-get update' +# 3. Install latest updates with 'sudo apt-get upgrade' +# 4. +# +# Version: 0.1-Build_1 +# Change log: +# 11 Feb 2021, 3d-gussner, Inital +# 11 Feb 2021, 3d-gussner, Optional flags to check for updates + + +while getopts c:u:?h flag + do + case "${flag}" in + c) check_flag=${OPTARG};; + u) update_flag=${OPTARG};; + ?) help_flag=1;; + h) help_flag=1;; + esac + done +echo "$check_flag" +echo "$update_flag" + + +#### Start check if OSTYPE is supported +OS_FOUND=$( command -v uname) + +case $( "${OS_FOUND}" | tr '[:upper:]' '[:lower:]') in + linux*) + TARGET_OS="linux" + ;; + *) + TARGET_OS='unknown' + ;; +esac +# Linux +if [ $TARGET_OS == "linux" ]; then + if [ $(uname -m) == "x86_64" ]; then + echo "$(tput setaf 2)Linux 64-bit found$(tput sgr0)" + Processor="64" + #elif [[ $(uname -m) == "i386" || $(uname -m) == "i686" ]]; then + # echo "$(tput setaf 2)Linux 32-bit found$(tput sgr0)" + # Processor="32" + else + echo "$(tput setaf 1)Unsupported OS: Linux $(uname -m)" + echo "Please refer to the notes of build.sh$(tput sgr0)" + exit 1 + fi +else + echo "$(tput setaf 1)This script doesn't support your Operating system!" + echo "Please use Linux 64-bit" + echo "Read the notes of build.sh$(tput sgr0)" + exit 1 +fi +sleep 2 +#### End check if OSTYPE is supported + +#### Check MK404 dependencies +packages=( +"libelf-dev" +"gcc-7" +"gcc-avr" +"libglew-dev" +"freeglut3-dev" +"libsdl-sound1.2-dev" +"libpng-dev" +"cmake" +"zip" +"wget" +"git" +"build-essential" +"lcov" +"mtools" +) + +for check_package in ${packages[@]}; do + if dpkg-query -W -f'${db:Status-Abbrev}\n' $check_package 2>/dev/null \ + | grep -q '^.i $'; then + echo "$(tput setaf 2)$check_package: Installed$(tput sgr0)" + else + echo "$(tput setaf 1)$check_package: Not installed use $(tput setaf 3)'sudo apt install $check_package'$(tput setaf 1) to install missing package$(tput sgr0)" + not_installed=1; + fi +done + +if [ "$not_installed" = "1" ]; then + exit 4 +fi +#### End Check MK404 dependencies + +#### Set build environment +SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )" +MK404_URL="https://github.com/vintagepc/MK404.git" +MK404_PATH="$SCRIPT_PATH/../MK404" +MK404_BUILD_PATH="$MK404_PATH/build" + + +# List few useful data +echo +echo "Script path :" $SCRIPT_PATH +echo "OS :" $OS +echo "OS type :" $TARGET_OS +echo "" +echo "MK404 path :" $MK404_PATH + +if [ ! -d $MK404_PATH ]; then + git clone $MK404_URL $MK404_PATH +fi + + cd $MK404_PATH + git submodule init + git submodule update + + +mkdir -p $MK404_BUILD_PATH +if [ ! -f "$MK404_BUILD_PATH/Makefile" ]; then + cmake -B $MK404_BUILD_PATH +fi + +cd $MK404_BUILD_PATH +if [ ! -f "$MK404_BUILD_PATH/MK404" ]; then + make +fi + +if [ "$check_flag" == "1" ]; then + current_version=$( command ./MK404 --version | grep "MK404" | cut -f 4 -d " ") + echo "Current version: $current_version" +fi \ No newline at end of file diff --git a/PF-build.sh b/PF-build.sh index 5b0979e2a..57c49c698 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -91,7 +91,7 @@ # 13 Mar 2019, 3d-gussner, MKbel updated the Linux build environment to version 1.0.2 with an Fix maximum firmware flash size. # So did I # 11 Jul 2019, deliopoulos,Updated to v1.0.6 as Prusa needs a new board definition for Firmware 3.8.x86_64 -# - Split the Download of Windows Arduino IDE 1.8.5 and Prusa specific part +# - Split the Download of Windows Arduino IDE 1.8.5 and Prusa specific part # --> less download volume needed and saves some time # # 13 Jul 2019, deliopoulos,Splitting of Arduino IDE and Prusa parts also for Linux64 @@ -136,6 +136,8 @@ # 08 Jan 2021, 3d-gussner, Comment out 'sudo' auto installation # Add '-?' '-h' help option # 27 Jan 2021, 3d-gussner, Add `-c`, `-p` and `-n` options +# 12 Feb 2021, 3d-gussner, Add MK404-build.sh +# 13 Feb 2021, 3d-gussner, Indentations #### Start check if OSTYPE is supported OS_FOUND=$( command -v uname) @@ -157,35 +159,35 @@ case $( "${OS_FOUND}" | tr '[:upper:]' '[:lower:]') in esac # Windows if [ $TARGET_OS == "windows" ]; then - if [ $(uname -m) == "x86_64" ]; then - echo "$(tput setaf 2)Windows 64-bit found$(tput sgr0)" - Processor="64" - elif [ $(uname -m) == "i386" ]; then - echo "$(tput setaf 2)Windows 32-bit found$(tput sgr0)" - Processor="32" - else - echo "$(tput setaf 1)Unsupported OS: Windows $(uname -m)" - echo "Please refer to the notes of build.sh$(tput sgr0)" - exit 1 - fi + if [ $(uname -m) == "x86_64" ]; then + echo "$(tput setaf 2)Windows 64-bit found$(tput sgr0)" + Processor="64" + elif [ $(uname -m) == "i386" ]; then + echo "$(tput setaf 2)Windows 32-bit found$(tput sgr0)" + Processor="32" + else + echo "$(tput setaf 1)Unsupported OS: Windows $(uname -m)" + echo "Please refer to the notes of build.sh$(tput sgr0)" + exit 1 + fi # Linux elif [ $TARGET_OS == "linux" ]; then - if [ $(uname -m) == "x86_64" ]; then - echo "$(tput setaf 2)Linux 64-bit found$(tput sgr0)" - Processor="64" - elif [[ $(uname -m) == "i386" || $(uname -m) == "i686" ]]; then - echo "$(tput setaf 2)Linux 32-bit found$(tput sgr0)" - Processor="32" - else - echo "$(tput setaf 1)Unsupported OS: Linux $(uname -m)" - echo "Please refer to the notes of build.sh$(tput sgr0)" - exit 1 - fi + if [ $(uname -m) == "x86_64" ]; then + echo "$(tput setaf 2)Linux 64-bit found$(tput sgr0)" + Processor="64" + elif [[ $(uname -m) == "i386" || $(uname -m) == "i686" ]]; then + echo "$(tput setaf 2)Linux 32-bit found$(tput sgr0)" + Processor="32" + else + echo "$(tput setaf 1)Unsupported OS: Linux $(uname -m)" + echo "Please refer to the notes of build.sh$(tput sgr0)" + exit 1 + fi else - echo "$(tput setaf 1)This script doesn't support your Operating system!" - echo "Please use Linux 64-bit or Windows 10 64-bit with Linux subsystem / git-bash" - echo "Read the notes of build.sh$(tput sgr0)" - exit 1 + echo "$(tput setaf 1)This script doesn't support your Operating system!" + echo "Please use Linux 64-bit or Windows 10 64-bit with Linux subsystem / git-bash" + echo "Read the notes of build.sh$(tput sgr0)" + exit 1 fi sleep 2 #### End check if OSTYPE is supported @@ -193,52 +195,52 @@ sleep 2 #### Prepare bash environment and check if wget, zip and other needed things are available # Check wget if ! type wget > /dev/null; then - echo "$(tput setaf 1)Missing 'wget' which is important to run this script" - echo "Please follow these instructions https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058 to install wget$(tput sgr0)" - exit 2 + echo "$(tput setaf 1)Missing 'wget' which is important to run this script" + echo "Please follow these instructions https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058 to install wget$(tput sgr0)" + exit 2 fi # Check for zip if ! type zip > /dev/null; then - if [ $TARGET_OS == "windows" ]; then - echo "$(tput setaf 1)Missing 'zip' which is important to run this script" - echo "Download and install 7z-zip from its official website https://www.7-zip.org/" - echo "By default, it is installed under the directory /c/Program Files/7-Zip in Windows 10 as my case." - echo "Run git Bash under Administrator privilege and" - echo "navigate to the directory /c/Program Files/Git/mingw64/bin," - echo "you can run the command $(tput setaf 2)ln -s /c/Program Files/7-Zip/7z.exe zip.exe$(tput sgr0)" - exit 3 - elif [ $TARGET_OS == "linux" ]; then - echo "$(tput setaf 1)Missing 'zip' which is important to run this script" - echo "install it with the command $(tput setaf 2)'sudo apt-get install zip'$(tput sgr0)" - #sudo apt-get update && apt-get install zip - exit 3 - fi + if [ $TARGET_OS == "windows" ]; then + echo "$(tput setaf 1)Missing 'zip' which is important to run this script" + echo "Download and install 7z-zip from its official website https://www.7-zip.org/" + echo "By default, it is installed under the directory /c/Program Files/7-Zip in Windows 10 as my case." + echo "Run git Bash under Administrator privilege and" + echo "navigate to the directory /c/Program Files/Git/mingw64/bin," + echo "you can run the command $(tput setaf 2)ln -s /c/Program Files/7-Zip/7z.exe zip.exe$(tput sgr0)" + exit 3 + elif [ $TARGET_OS == "linux" ]; then + echo "$(tput setaf 1)Missing 'zip' which is important to run this script" + echo "install it with the command $(tput setaf 2)'sudo apt-get install zip'$(tput sgr0)" + #sudo apt-get update && apt-get install zip + exit 3 + fi fi # Check python ... needed during language build if ! type python > /dev/null; then - if [ $TARGET_OS == "windows" ]; then - echo "$(tput setaf 1)Missing 'python3' which is important to run this script" - exit 4 - elif [ $TARGET_OS == "linux" ]; then - echo "$(tput setaf 1)Missing 'python' which is important to run this script" - echo "As Python 2.x will not be maintained from 2020 please," - echo "install it with the command $(tput setaf 2)'sudo apt-get install python3'." - echo "Check which version of Python3 has been installed using 'ls /usr/bin/python3*'" - echo "Use 'sudo ln -sf /usr/bin/python3.x /usr/bin/python' (where 'x' is your version number) to make it default.$(tput sgr0)" - #sudo apt-get update && apt-get install python3 && ln -sf /usr/bin/python3 /usr/bin/python - exit 4 - fi + if [ $TARGET_OS == "windows" ]; then + echo "$(tput setaf 1)Missing 'python3' which is important to run this script" + exit 4 + elif [ $TARGET_OS == "linux" ]; then + echo "$(tput setaf 1)Missing 'python' which is important to run this script" + echo "As Python 2.x will not be maintained from 2020 please," + echo "install it with the command $(tput setaf 2)'sudo apt-get install python3'." + echo "Check which version of Python3 has been installed using 'ls /usr/bin/python3*'" + echo "Use 'sudo ln -sf /usr/bin/python3.x /usr/bin/python' (where 'x' is your version number) to make it default.$(tput sgr0)" + #sudo apt-get update && apt-get install python3 && ln -sf /usr/bin/python3 /usr/bin/python + exit 4 + fi fi # Check gawk ... needed during language build if ! type gawk > /dev/null; then - if [ $TARGET_OS == "linux" ]; then - echo "$(tput setaf 1)Missing 'gawk' which is important to run this script" - echo "install it with the command $(tput setaf 2)'sudo apt-get install gawk'." - #sudo apt-get update && apt-get install gawk - exit 4 - fi + if [ $TARGET_OS == "linux" ]; then + echo "$(tput setaf 1)Missing 'gawk' which is important to run this script" + echo "install it with the command $(tput setaf 2)'sudo apt-get install gawk'." + #sudo apt-get update && apt-get install gawk + exit 4 + fi fi #### End prepare bash / Linux environment @@ -287,157 +289,157 @@ BUILD_ENV_PATH="$( cd "$(dirname "$0")" ; pwd -P )" # Check if PF-build-env- exists and downloads + creates it if not # The build environment is based on the supported Arduino IDE portable version with some changes if [ ! -d "../PF-build-env-$BUILD_ENV" ]; then - echo "$(tput setaf 6)PF-build-env-$BUILD_ENV is missing ... creating it now for you$(tput sgr 0)" - mkdir ../PF-build-env-$BUILD_ENV - sleep 5 + echo "$(tput setaf 6)PF-build-env-$BUILD_ENV is missing ... creating it now for you$(tput sgr 0)" + mkdir ../PF-build-env-$BUILD_ENV + sleep 5 fi # Download and extract supported Arduino IDE depending on OS # Windows if [ $TARGET_OS == "windows" ]; then - if [ ! -f "arduino-$ARDUINO_ENV-windows.zip" ]; then - echo "$(tput setaf 6)Downloading Windows 32/64-bit Arduino IDE portable...$(tput setaf 2)" - sleep 2 - wget https://downloads.arduino.cc/arduino-$ARDUINO_ENV-windows.zip || exit 7 - echo "$(tput sgr 0)" - fi - if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then - echo "$(tput setaf 6)Unzipping Windows 32/64-bit Arduino IDE portable...$(tput setaf 2)" - sleep 2 - unzip arduino-$ARDUINO_ENV-windows.zip -d ../PF-build-env-$BUILD_ENV || exit 7 - mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor - echo "# arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt - echo "$(tput sgr0)" - fi + if [ ! -f "arduino-$ARDUINO_ENV-windows.zip" ]; then + echo "$(tput setaf 6)Downloading Windows 32/64-bit Arduino IDE portable...$(tput setaf 2)" + sleep 2 + wget https://downloads.arduino.cc/arduino-$ARDUINO_ENV-windows.zip || exit 7 + echo "$(tput sgr 0)" + fi + if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then + echo "$(tput setaf 6)Unzipping Windows 32/64-bit Arduino IDE portable...$(tput setaf 2)" + sleep 2 + unzip arduino-$ARDUINO_ENV-windows.zip -d ../PF-build-env-$BUILD_ENV || exit 7 + mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor + echo "# arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt + echo "$(tput sgr0)" + fi fi # Linux if [ $TARGET_OS == "linux" ]; then # 32 or 64 bit version - if [ ! -f "arduino-$ARDUINO_ENV-linux$Processor.tar.xz" ]; then - echo "$(tput setaf 6)Downloading Linux $Processor Arduino IDE portable...$(tput setaf 2)" - sleep 2 - wget --no-check-certificate https://downloads.arduino.cc/arduino-$ARDUINO_ENV-linux$Processor.tar.xz || exit 8 - echo "$(tput sgr 0)" - fi - if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then - echo "$(tput setaf 6)Unzipping Linux $Processor Arduino IDE portable...$(tput setaf 2)" - sleep 2 - tar -xvf arduino-$ARDUINO_ENV-linux$Processor.tar.xz -C ../PF-build-env-$BUILD_ENV/ || exit 8 - mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor - echo "# arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt - echo "$(tput sgr0)" - fi + if [ ! -f "arduino-$ARDUINO_ENV-linux$Processor.tar.xz" ]; then + echo "$(tput setaf 6)Downloading Linux $Processor Arduino IDE portable...$(tput setaf 2)" + sleep 2 + wget --no-check-certificate https://downloads.arduino.cc/arduino-$ARDUINO_ENV-linux$Processor.tar.xz || exit 8 + echo "$(tput sgr 0)" + fi + if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then + echo "$(tput setaf 6)Unzipping Linux $Processor Arduino IDE portable...$(tput setaf 2)" + sleep 2 + tar -xvf arduino-$ARDUINO_ENV-linux$Processor.tar.xz -C ../PF-build-env-$BUILD_ENV/ || exit 8 + mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor + echo "# arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt + echo "$(tput sgr0)" + fi fi # Make Arduino IDE portable if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/ + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/ fi if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable fi if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/output/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/output + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/output fi if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages fi if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook fi if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook/libraries/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook/libraries + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook/libraries fi if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/staging/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/staging + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/staging fi # Change Arduino IDE preferences if [ ! -e ../PF-build-env-$BUILD_ENV/Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt ]; then - echo "$(tput setaf 6)Setting $ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor Arduino IDE preferences for portable GUI usage...$(tput setaf 2)" - sleep 2 - echo "update.check" - sed -i 's/update.check = true/update.check = false/g' ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt - echo "board" - sed -i "s/board = uno/board = $BOARD/g" ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt - echo "editor.linenumbers" - sed -i 's/editor.linenumbers = false/editor.linenumbers = true/g' ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt - echo "boardsmanager.additional.urls" - echo "boardsmanager.additional.urls=$BOARD_URL" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt - echo "build.verbose=true" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt - echo "compiler.cache_core=false" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt - echo "compiler.warning_level=all" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt - echo "# Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt - echo "$(tput sgr0)" + echo "$(tput setaf 6)Setting $ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor Arduino IDE preferences for portable GUI usage...$(tput setaf 2)" + sleep 2 + echo "update.check" + sed -i 's/update.check = true/update.check = false/g' ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt + echo "board" + sed -i "s/board = uno/board = $BOARD/g" ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt + echo "editor.linenumbers" + sed -i 's/editor.linenumbers = false/editor.linenumbers = true/g' ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt + echo "boardsmanager.additional.urls" + echo "boardsmanager.additional.urls=$BOARD_URL" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt + echo "build.verbose=true" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt + echo "compiler.cache_core=false" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt + echo "compiler.warning_level=all" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt + echo "# Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt + echo "$(tput sgr0)" fi # Download and extract Prusa Firmware related parts # Download and extract PrusaResearchRambo board if [ ! -f "$BOARD_FILENAME-$BOARD_VERSION.tar.bz2" ]; then - echo "$(tput setaf 6)Downloading Prusa Research AVR MK3 RAMBo EINSy build environment...$(tput setaf 2)" - sleep 2 - wget $BOARD_FILE_URL || exit 9 + echo "$(tput setaf 6)Downloading Prusa Research AVR MK3 RAMBo EINSy build environment...$(tput setaf 2)" + sleep 2 + wget $BOARD_FILE_URL || exit 9 fi if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr/$BOARD_VERSION" || ! -e "../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then - echo "$(tput setaf 6)Unzipping $BOARD_PACKAGE_NAME Arduino IDE portable...$(tput setaf 2)" - sleep 2 - tar -xvf $BOARD_FILENAME-$BOARD_VERSION.tar.bz2 -C ../PF-build-env-$BUILD_ENV/ || exit 10 - if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME - fi - if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME - fi - if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware - fi - if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr - fi - - mv ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr/$BOARD_VERSION - echo "# $BOARD_FILENAME-$BOARD_VERSION" >> ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt + echo "$(tput setaf 6)Unzipping $BOARD_PACKAGE_NAME Arduino IDE portable...$(tput setaf 2)" + sleep 2 + tar -xvf $BOARD_FILENAME-$BOARD_VERSION.tar.bz2 -C ../PF-build-env-$BUILD_ENV/ || exit 10 + if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME ]; then + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME + fi + if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME ]; then + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME + fi + if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware ]; then + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware + fi + if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr ]; then + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr + fi + + mv ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr/$BOARD_VERSION + echo "# $BOARD_FILENAME-$BOARD_VERSION" >> ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt - echo "$(tput sgr 0)" -fi + echo "$(tput sgr 0)" +fi # Download and extract Prusa Firmware specific library files if [ ! -f "PF-build-env-WinLin-$BUILD_ENV.zip" ]; then - echo "$(tput setaf 6)Downloading Prusa Firmware build environment...$(tput setaf 2)" - sleep 2 - wget $PF_BUILD_FILE_URL || exit 11 - echo "$(tput sgr 0)" + echo "$(tput setaf 6)Downloading Prusa Firmware build environment...$(tput setaf 2)" + sleep 2 + wget $PF_BUILD_FILE_URL || exit 11 + echo "$(tput sgr 0)" fi if [ ! -e "../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]; then - echo "$(tput setaf 6)Unzipping Prusa Firmware build environment...$(tput setaf 2)" - sleep 2 - unzip -o PF-build-env-WinLin-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || exit 12 - echo "# PF-build-env-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt - echo "$(tput sgr0)" + echo "$(tput setaf 6)Unzipping Prusa Firmware build environment...$(tput setaf 2)" + sleep 2 + unzip -o PF-build-env-WinLin-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || exit 12 + echo "# PF-build-env-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt + echo "$(tput sgr0)" fi # Check if User updated Arduino IDE 1.8.5 boardsmanager and tools if [ -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools" ]; then - echo "$(tput setaf 6)Arduino IDE boards / tools have been manually updated...$" - echo "Please don't update the 'Arduino AVR boards' as this will prevent running this script (tput setaf 2)" - sleep 2 -fi + echo "$(tput setaf 6)Arduino IDE boards / tools have been manually updated...$" + echo "Please don't update the 'Arduino AVR boards' as this will prevent running this script (tput setaf 2)" + sleep 2 +fi if [ -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2" ]; then - echo "$(tput setaf 6)PrusaReasearch compatible tools have been manually updated...$(tput setaf 2)" - sleep 2 - echo "$(tput setaf 6)Copying Prusa Firmware build environment to manually updated boards / tools...$(tput setaf 2)" - sleep 2 - cp -f ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/hardware/tools/avr/avr/lib/ldscripts/avr6.xn ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2/avr/lib/ldscripts/avr6.xn - echo "# PF-build-env-portable-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-portable-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt - echo "$(tput sgr0)" -fi + echo "$(tput setaf 6)PrusaReasearch compatible tools have been manually updated...$(tput setaf 2)" + sleep 2 + echo "$(tput setaf 6)Copying Prusa Firmware build environment to manually updated boards / tools...$(tput setaf 2)" + sleep 2 + cp -f ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/hardware/tools/avr/avr/lib/ldscripts/avr6.xn ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2/avr/lib/ldscripts/avr6.xn + echo "# PF-build-env-portable-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-portable-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt + echo "$(tput sgr0)" +fi if [ -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/5.4.0-atmel3.6.1-arduino2" ]; then - echo "$(tput setaf 1)Arduino IDE tools have been updated manually to a non supported version!!!" - echo "Delete ../PF-build-env-$BUILD_ENV and start the script again" - echo "Script will not continue until this have been fixed $(tput setaf 2)" - sleep 2 - echo "$(tput sgr0)" - exit 13 + echo "$(tput setaf 1)Arduino IDE tools have been updated manually to a non supported version!!!" + echo "Delete ../PF-build-env-$BUILD_ENV and start the script again" + echo "Script will not continue until this have been fixed $(tput setaf 2)" + sleep 2 + echo "$(tput sgr0)" + exit 13 fi @@ -449,24 +451,26 @@ cd $SCRIPT_PATH # Check if git is available if type git > /dev/null; then - git_available="1" + git_available="1" fi -while getopts v:l:d:b:o:c:p:n:?h flag - do - case "${flag}" in - v) variant_flag=${OPTARG};; - l) language_flag=${OPTARG};; - d) devel_flag=${OPTARG};; - b) build_flag=${OPTARG};; - o) output_flag=${OPTARG};; - c) clean_flag=${OPTARG};; - p) prusa_flag=${OPTARG};; - n) new_build_flag=${OPTARG};; - ?) help_flag=1;; - h) help_flag=1;; - esac - done +while getopts v:l:d:b:o:c:p:n:m:g:?h flag + do + case "${flag}" in + v) variant_flag=${OPTARG};; + l) language_flag=${OPTARG};; + d) devel_flag=${OPTARG};; + b) build_flag=${OPTARG};; + o) output_flag=${OPTARG};; + c) clean_flag=${OPTARG};; + p) prusa_flag=${OPTARG};; + n) new_build_flag=${OPTARG};; + m) mk404_flag=${OPTARG};; + g) grafics_flag=${OPTARG};; + ?) help_flag=1;; + h) help_flag=1;; + esac + done #echo "variant_flag: $variant_flag"; #echo "language_flag: $language_flag"; #echo "devel_flag: $devel_flag"; @@ -492,11 +496,13 @@ echo "$(tput setaf 2)-o$(tput sgr0) Output '$(tput setaf 2)1$(tput sgr0)' force echo "$(tput setaf 2)-c$(tput sgr0) Do not clean up lang build'$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" echo "$(tput setaf 2)-p$(tput sgr0) Keep Configuration_prusa.h '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" echo "$(tput setaf 2)-n$(tput sgr0) New fresh build '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" +echo "$(tput setaf 2)-m$(tput sgr0) Start MK404 sim '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes '$(tput setaf 2)2$(tput sgr0)' with MMU2" +echo "$(tput setaf 2)-g$(tput sgr0) Start MK404 grafics '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' lite '$(tput setaf 2)2$(tput sgr0)' fancy" echo "$(tput setaf 2)-?$(tput sgr0) Help" echo "$(tput setaf 2)-h$(tput sgr0) Help" echo echo "Brief USAGE:" -echo " $(tput setaf 2)./PF-build.sh$(tput sgr0) [-v] [-l] [-d] [-b] [-o] [-c] [-p] [-n]" +echo " $(tput setaf 2)./PF-build.sh$(tput sgr0) [-v] [-l] [-d] [-b] [-o] [-c] [-p] [-n] [-m]" echo echo "Example:" echo " $(tput setaf 2)./PF-build.sh -v All -l ALL -d GOLD$(tput sgr0)" @@ -514,48 +520,48 @@ fi # # '-v' argument defines which variant of the Prusa Firmware will be compiled if [ -z "$variant_flag" ] ; then - # Select which variant of the Prusa Firmware will be compiled, like - PS3="Select a variant: " - while IFS= read -r -d $'\0' f; do - options[i++]="$f" - done < <(find Firmware/variants/ -maxdepth 1 -type f -name "*.h" -print0 ) - select opt in "${options[@]}" "All" "Quit"; do - case $opt in - *.h) - VARIANT=$(basename "$opt" ".h") - VARIANTS[i++]="$opt" - break - ;; - "All") - VARIANT="All" - VARIANTS=${options[*]} - break - ;; - "Quit") - echo "You chose to stop" - exit 20 - ;; - *) - echo "$(tput setaf 1)This is not a valid variant$(tput sgr0)" - ;; - esac - done + # Select which variant of the Prusa Firmware will be compiled, like + PS3="Select a variant: " + while IFS= read -r -d $'\0' f; do + options[i++]="$f" + done < <(find Firmware/variants/ -maxdepth 1 -type f -name "*.h" -print0 ) + select opt in "${options[@]}" "All" "Quit"; do + case $opt in + *.h) + VARIANT=$(basename "$opt" ".h") + VARIANTS[i++]="$opt" + break + ;; + "All") + VARIANT="All" + VARIANTS=${options[*]} + break + ;; + "Quit") + echo "You chose to stop" + exit 20 + ;; + *) + echo "$(tput setaf 1)This is not a valid variant$(tput sgr0)" + ;; + esac + done else - if [ -f "$SCRIPT_PATH/Firmware/variants/$variant_flag" ] ; then - VARIANTS=$variant_flag - elif [ "$variant_flag" == "All" ] ; then - while IFS= read -r -d $'\0' f; do - options[i++]="$f" - done < <(find Firmware/variants/ -maxdepth 1 -type f -name "*.h" -print0 ) - VARIANT="All" - VARIANTS=${options[*]} - else - echo "$(tput setaf 1)Argument $variant_flag could not be found in Firmware/variants please choose a valid one.$(tput sgr0)" - echo "Only $(tput setaf 2)'All'$(tput sgr0) and file names below are allowed as variant '-v' argument.$(tput setaf 2)" - ls -1 $SCRIPT_PATH/Firmware/variants/*.h | xargs -n1 basename - echo "$(tput sgr0)" - exit 21 - fi + if [ -f "$SCRIPT_PATH/Firmware/variants/$variant_flag" ] ; then + VARIANTS=$variant_flag + elif [ "$variant_flag" == "All" ] ; then + while IFS= read -r -d $'\0' f; do + options[i++]="$f" + done < <(find Firmware/variants/ -maxdepth 1 -type f -name "*.h" -print0 ) + VARIANT="All" + VARIANTS=${options[*]} + else + echo "$(tput setaf 1)Argument $variant_flag could not be found in Firmware/variants please choose a valid one.$(tput sgr0)" + echo "Only $(tput setaf 2)'All'$(tput sgr0) and file names below are allowed as variant '-v' argument.$(tput setaf 2)" + ls -1 $SCRIPT_PATH/Firmware/variants/*.h | xargs -n1 basename + echo "$(tput sgr0)" + exit 21 + fi fi #'-l' argument defines if it is an English only version. Known values EN_ONLY / ALL @@ -563,86 +569,86 @@ fi MULTI_LANGUAGE_CHECK=$(grep --max-count=1 "^#define LANG_MODE *" $SCRIPT_PATH/Firmware/config.h|sed -e's/ */ /g'|cut -d ' ' -f3) if [ -z "$language_flag" ] ; then - PS3="Select a language: " - echo - echo "Which lang-build do you want?" - select yn in "Multi languages" "English only"; do - case $yn in - "Multi languages") - LANGUAGES="ALL" - break - ;; - "English only") - LANGUAGES="EN_ONLY" - break - ;; - *) - echo "$(tput setaf 1)This is not a valid language$(tput sgr0)" - ;; - esac - done + PS3="Select a language: " + echo + echo "Which lang-build do you want?" + select yn in "Multi languages" "English only"; do + case $yn in + "Multi languages") + LANGUAGES="ALL" + break + ;; + "English only") + LANGUAGES="EN_ONLY" + break + ;; + *) + echo "$(tput setaf 1)This is not a valid language$(tput sgr0)" + ;; + esac + done else - if [[ "$language_flag" == "ALL" || "$language_flag" == "EN_ONLY" ]] ; then - LANGUAGES=$language_flag - else - echo "$(tput setaf 1)Language argument is wrong!$(tput sgr0)" - echo "Only $(tput setaf 2)'ALL'$(tput sgr0) or $(tput setaf 2)'EN_ONLY'$(tput sgr0) are allowed as language '-l' argument!" - exit 22 - fi + if [[ "$language_flag" == "ALL" || "$language_flag" == "EN_ONLY" ]] ; then + LANGUAGES=$language_flag + else + echo "$(tput setaf 1)Language argument is wrong!$(tput sgr0)" + echo "Only $(tput setaf 2)'ALL'$(tput sgr0) or $(tput setaf 2)'EN_ONLY'$(tput sgr0) are allowed as language '-l' argument!" + exit 22 + fi fi #Check if DEV_STATUS is selected via argument '-d' if [ ! -z "$devel_flag" ] ; then - if [[ "$devel_flag" == "GOLD" || "$devel_flag" == "RC" || "$devel_flag" == "BETA" || "$devel_flag" == "ALPHA" || "$devel_flag" == "DEVEL" || "$devel_flag" == "DEBUG" || "$devel_flag" == "UNKNOWN" ]] ; then - DEV_STATUS_SELECTED=$devel_flag - else - echo "$(tput setaf 1)Development argument is wrong!$(tput sgr0)" - echo "Only $(tput setaf 2)'GOLD', 'RC', 'BETA', 'ALPHA', 'DEVEL', 'DEBUG' or 'UNKNOWN' $(tput sgr0) are allowed as devel '-d' argument!$(tput sgr0)" - exit 23 - fi + if [[ "$devel_flag" == "GOLD" || "$devel_flag" == "RC" || "$devel_flag" == "BETA" || "$devel_flag" == "ALPHA" || "$devel_flag" == "DEVEL" || "$devel_flag" == "DEBUG" || "$devel_flag" == "UNKNOWN" ]] ; then + DEV_STATUS_SELECTED=$devel_flag + else + echo "$(tput setaf 1)Development argument is wrong!$(tput sgr0)" + echo "Only $(tput setaf 2)'GOLD', 'RC', 'BETA', 'ALPHA', 'DEVEL', 'DEBUG' or 'UNKNOWN' $(tput sgr0) are allowed as devel '-d' argument!$(tput sgr0)" + exit 23 + fi fi #Check if Build is selected via argument '-b' if [ ! -z "$build_flag" ] ; then - if [[ "$build_flag" == "Auto" && "$git_available" == "1" ]] ; then - echo "Build changed to $build_flag" - BUILD=$(git rev-list --count HEAD) - elif [[ $build_flag =~ ^[0-9]+$ ]] ; then - BUILD=$build_flag - else - echo "$(tput setaf 1)Build number argument is wrong!$(tput sgr0)" - echo "Only $(tput setaf 2)'Auto' (git needed) or numbers $(tput sgr0) are allowed as build '-b' argument!$(tput sgr0)" - exit 24 + if [[ "$build_flag" == "Auto" && "$git_available" == "1" ]] ; then + echo "Build changed to $build_flag" + BUILD=$(git rev-list --count HEAD) + elif [[ $build_flag =~ ^[0-9]+$ ]] ; then + BUILD=$build_flag + else + echo "$(tput setaf 1)Build number argument is wrong!$(tput sgr0)" + echo "Only $(tput setaf 2)'Auto' (git needed) or numbers $(tput sgr0) are allowed as build '-b' argument!$(tput sgr0)" + exit 24 - fi - echo "New Build number is: $BUILD" + fi + echo "New Build number is: $BUILD" fi # check if script has been started with arguments if [[ "$#" -eq "0" || "$output_flag" == 1 ]] ; then - OUTPUT=1 + OUTPUT=1 else - OUTPUT=0 + OUTPUT=0 fi #echo "Output is:" $OUTPUT #Check git branch has changed if [ ! -z "git_available" ]; then - BRANCH="" - CLEAN_PF_FW_BUILD=0 + BRANCH="" + CLEAN_PF_FW_BUILD=0 else - BRANCH=$(git branch --show-current) - echo "Current branch is:" $BRANCH - if [ ! -f "$SCRIPT_PATH/../PF-build.branch" ]; then - echo "$BRANCH" >| $SCRIPT_PATH/../PF-build.branch - echo "created PF-build.branch file" - else - PRE_BRANCH=$(cat "$SCRIPT_PATH/../PF-build.branch") - echo "Previous branch was:" $PRE_BRANCH - if [ ! "$BRANCH" == "$PRE_BRANCH" ] ; then - CLEAN_PF_FW_BUILD=1 - echo "$BRANCH" >| $SCRIPT_PATH/../PF-build.branch - fi - fi + BRANCH=$(git branch --show-current) + echo "Current branch is:" $BRANCH + if [ ! -f "$SCRIPT_PATH/../PF-build.branch" ]; then + echo "$BRANCH" >| $SCRIPT_PATH/../PF-build.branch + echo "created PF-build.branch file" + else + PRE_BRANCH=$(cat "$SCRIPT_PATH/../PF-build.branch") + echo "Previous branch was:" $PRE_BRANCH + if [ ! "$BRANCH" == "$PRE_BRANCH" ] ; then + CLEAN_PF_FW_BUILD=1 + echo "$BRANCH" >| $SCRIPT_PATH/../PF-build.branch + fi + fi fi #Set BUILD_ENV_PATH @@ -662,292 +668,324 @@ BUILD_PATH="$( pwd -P )" #Check git branch has changed if [ "$CLEAN_PF_FW_BUILD" == "1" ]; then - read -t 10 -p "Branch changed, cleaning Prusa-Firmware-build folder" - rm -r * + read -t 10 -p "Branch changed, cleaning Prusa-Firmware-build folder" + rm -r * else - echo "Nothing to clean up" + echo "Nothing to clean up" fi for v in ${VARIANTS[*]} do - VARIANT=$(basename "$v" ".h") - # Find firmware version in Configuration.h file and use it to generate the hex filename - FW=$(grep --max-count=1 "\bFW_VERSION\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d '"' -f2|sed 's/\.//g') - if [ -z "$BUILD" ] ; then - # Find build version in Configuration.h file and use it to generate the hex filename - BUILD=$(grep --max-count=1 "\bFW_COMMIT_NR\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d ' ' -f3) - else - # Find and replace build version in Configuration.h file - BUILD_ORG=$(grep --max-count=1 "\bFW_COMMIT_NR\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d ' ' -f3) - echo "Original build number: $BUILD_ORG" - sed -i -- "s/^#define FW_COMMIT_NR.*/#define FW_COMMIT_NR $BUILD/g" $SCRIPT_PATH/Firmware/Configuration.h - fi - # Check if the motherboard is an EINSY and if so only one hex file will generated - MOTHERBOARD=$(grep --max-count=1 "\bMOTHERBOARD\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3) - # Check development status - DEV_CHECK=$(grep --max-count=1 "\bFW_VERSION\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d '"' -f2|sed 's/\.//g'|cut -d '-' -f2) - if [ -z "$DEV_STATUS_SELECTED" ] ; then - if [[ "$DEV_CHECK" == *"RC"* ]] ; then - DEV_STATUS="RC" - elif [[ "$DEV_CHECK" == "ALPHA" ]]; then - DEV_STATUS="ALPHA" - elif [[ "$DEV_CHECK" == "BETA" ]]; then - DEV_STATUS="BETA" - elif [[ "$DEV_CHECK" == "DEVEL" ]]; then - DEV_STATUS="DEVEL" - elif [[ "$DEV_CHECK" == "DEBUG" ]]; then - DEV_STATUS="DEBUG" - else - DEV_STATUS="UNKNOWN" - echo - echo "$(tput setaf 5)DEV_STATUS is UNKNOWN. Do you wish to set DEV_STATUS to GOLD?$(tput sgr0)" - PS3="Select YES only if source code is tested and trusted: " - select yn in "Yes" "No"; do - case $yn in - Yes) - DEV_STATUS="GOLD" - DEV_STATUS_SELECTED="GOLD" - break - ;; - No) - DEV_STATUS="UNKNOWN" - DEV_STATUS_SELECTED="UNKNOWN" - break - ;; - *) - echo "$(tput setaf 1)This is not a valid DEV_STATUS$(tput sgr0)" - ;; - esac - done - fi - else - DEV_STATUS=$DEV_STATUS_SELECTED - fi - #Prepare hex files folders - if [ ! -d "$SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD" ]; then - mkdir -p $SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD || exit 28 - fi - OUTPUT_FOLDER="PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD" - - #Check if exactly the same hexfile already exists - if [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex" && "$LANGUAGES" == "ALL" ]]; then - echo "" - ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex | xargs -n1 basename - echo "$(tput setaf 6)This hex file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)" - if [ $OUTPUT == "1" ] ; then - read -t 10 -p "Press Enter to continue..." - fi - elif [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex" && "$LANGUAGES" == "EN_ONLY" ]]; then - echo "" - ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex | xargs -n1 basename - echo "$(tput setaf 6)This hex file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)" - if [ $OUTPUT == "1" ] ; then - read -t 10 -p "Press Enter to continue..." - fi - fi - if [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip" && "$LANGUAGES" == "ALL" ]]; then - echo "" - ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip | xargs -n1 basename - echo "$(tput setaf 6)This zip file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)" - if [ $OUTPUT == "1" ] ; then - read -t 10 -p "Press Enter to continue..." - fi - fi - - #List some useful data - echo "$(tput setaf 2)$(tput setab 7) " - echo "Variant :" $VARIANT - echo "Firmware :" $FW - echo "Build # :" $BUILD - echo "Dev Check :" $DEV_CHECK - echo "DEV Status :" $DEV_STATUS - echo "Motherboard:" $MOTHERBOARD - echo "Languages :" $LANGUAGES - echo "Hex-file Folder:" $OUTPUT_FOLDER - echo "$(tput sgr0)" + VARIANT=$(basename "$v" ".h") + PRINTER=$(grep --max-count=1 "\bPRINTER_TYPE\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3 | cut -d '_' -f2) + # Find firmware version in Configuration.h file and use it to generate the hex filename + FW=$(grep --max-count=1 "\bFW_VERSION\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d '"' -f2|sed 's/\.//g') + if [ -z "$BUILD" ] ; then + # Find build version in Configuration.h file and use it to generate the hex filename + BUILD=$(grep --max-count=1 "\bFW_COMMIT_NR\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d ' ' -f3) + else + # Find and replace build version in Configuration.h file + BUILD_ORG=$(grep --max-count=1 "\bFW_COMMIT_NR\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d ' ' -f3) + echo "Original build number: $BUILD_ORG" + sed -i -- "s/^#define FW_COMMIT_NR.*/#define FW_COMMIT_NR $BUILD/g" $SCRIPT_PATH/Firmware/Configuration.h + fi + # Check if the motherboard is an EINSY and if so only one hex file will generated + MOTHERBOARD=$(grep --max-count=1 "\bMOTHERBOARD\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3) + # Check development status + DEV_CHECK=$(grep --max-count=1 "\bFW_VERSION\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d '"' -f2|sed 's/\.//g'|cut -d '-' -f2) + if [ -z "$DEV_STATUS_SELECTED" ] ; then + if [[ "$DEV_CHECK" == *"RC"* ]] ; then + DEV_STATUS="RC" + elif [[ "$DEV_CHECK" == "ALPHA" ]]; then + DEV_STATUS="ALPHA" + elif [[ "$DEV_CHECK" == "BETA" ]]; then + DEV_STATUS="BETA" + elif [[ "$DEV_CHECK" == "DEVEL" ]]; then + DEV_STATUS="DEVEL" + elif [[ "$DEV_CHECK" == "DEBUG" ]]; then + DEV_STATUS="DEBUG" + else + DEV_STATUS="UNKNOWN" + echo + echo "$(tput setaf 5)DEV_STATUS is UNKNOWN. Do you wish to set DEV_STATUS to GOLD?$(tput sgr0)" + PS3="Select YES only if source code is tested and trusted: " + select yn in "Yes" "No"; do + case $yn in + Yes) + DEV_STATUS="GOLD" + DEV_STATUS_SELECTED="GOLD" + break + ;; + No) + DEV_STATUS="UNKNOWN" + DEV_STATUS_SELECTED="UNKNOWN" + break + ;; + *) + echo "$(tput setaf 1)This is not a valid DEV_STATUS$(tput sgr0)" + ;; + esac + done + fi + else + DEV_STATUS=$DEV_STATUS_SELECTED + fi + #Prepare hex files folders + if [ ! -d "$SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD" ]; then + mkdir -p $SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD || exit 28 + fi + OUTPUT_FOLDER="PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD" + + #Check if exactly the same hexfile already exists + if [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex" && "$LANGUAGES" == "ALL" ]]; then + echo "" + ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex | xargs -n1 basename + echo "$(tput setaf 6)This hex file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)" + if [ $OUTPUT == "1" ] ; then + read -t 10 -p "Press Enter to continue..." + fi + elif [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex" && "$LANGUAGES" == "EN_ONLY" ]]; then + echo "" + ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex | xargs -n1 basename + echo "$(tput setaf 6)This hex file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)" + if [ $OUTPUT == "1" ] ; then + read -t 10 -p "Press Enter to continue..." + fi + fi + if [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip" && "$LANGUAGES" == "ALL" ]]; then + echo "" + ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip | xargs -n1 basename + echo "$(tput setaf 6)This zip file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)" + if [ $OUTPUT == "1" ] ; then + read -t 10 -p "Press Enter to continue..." + fi + fi + + #List some useful data + echo "$(tput setaf 2)$(tput setab 7) " + echo "Printer :" $PRINTER + echo "Variant :" $VARIANT + echo "Firmware :" $FW + echo "Build # :" $BUILD + echo "Dev Check :" $DEV_CHECK + echo "DEV Status :" $DEV_STATUS + echo "Motherboard:" $MOTHERBOARD + echo "Languages :" $LANGUAGES + echo "Hex-file Folder:" $OUTPUT_FOLDER + echo "$(tput sgr0)" - #Prepare Firmware to be compiled by copying variant as Configuration_prusa.h - if [ ! -f "$SCRIPT_PATH/Firmware/Configuration_prusa.h" ]; then - cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 29 - else - echo "$(tput setaf 6)Configuration_prusa.h already exist it will be overwritten in 10 seconds by the chosen variant.$(tput sgr 0)" - if [ $OUTPUT == "1" ] ; then - read -t 10 -p "Press Enter to continue..." - fi - cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 29 - fi + #Prepare Firmware to be compiled by copying variant as Configuration_prusa.h + if [ ! -f "$SCRIPT_PATH/Firmware/Configuration_prusa.h" ]; then + cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 29 + else + echo "$(tput setaf 6)Configuration_prusa.h already exist it will be overwritten in 10 seconds by the chosen variant.$(tput sgr 0)" + if [ $OUTPUT == "1" ] ; then + read -t 10 -p "Press Enter to continue..." + fi + cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 29 + fi - #Prepare Configuration.h to use the correct FW_DEV_VERSION to prevent LCD messages when connecting with OctoPrint - sed -i -- "s/#define FW_DEV_VERSION FW_VERSION_UNKNOWN/#define FW_DEV_VERSION FW_VERSION_$DEV_STATUS/g" $SCRIPT_PATH/Firmware/Configuration.h + #Prepare Configuration.h to use the correct FW_DEV_VERSION to prevent LCD messages when connecting with OctoPrint + sed -i -- "s/#define FW_DEV_VERSION FW_VERSION_UNKNOWN/#define FW_DEV_VERSION FW_VERSION_$DEV_STATUS/g" $SCRIPT_PATH/Firmware/Configuration.h - # set FW_REPOSITORY - sed -i -- 's/#define FW_REPOSITORY "Unknown"/#define FW_REPOSITORY "Prusa3d"/g' $SCRIPT_PATH/Firmware/Configuration.h + # set FW_REPOSITORY + sed -i -- 's/#define FW_REPOSITORY "Unknown"/#define FW_REPOSITORY "Prusa3d"/g' $SCRIPT_PATH/Firmware/Configuration.h - #Prepare English only or multi-language version to be build - if [ $LANGUAGES == "EN_ONLY" ]; then - echo " " - echo "English only language firmware will be built" - sed -i -- "s/^#define LANG_MODE *1/#define LANG_MODE 0/g" $SCRIPT_PATH/Firmware/config.h - echo " " - else - echo " " - echo "Multi-language firmware will be built" - sed -i -- "s/^#define LANG_MODE *0/#define LANG_MODE 1/g" $SCRIPT_PATH/Firmware/config.h - echo " " - fi - - #Check if compiler flags are set to Prusa specific needs for the rambo board. -# if [ $TARGET_OS == "windows" ]; then -# RAMBO_PLATFORM_FILE="PrusaResearchRambo/avr/platform.txt" -# fi - - #### End of Prepare building - - #### Start building - - export ARDUINO=$BUILD_ENV_PATH - #echo $BUILD_ENV_PATH - #export BUILDER=$ARDUINO/arduino-builder + #Prepare English only or multi-language version to be build + if [ $LANGUAGES == "EN_ONLY" ]; then + echo " " + echo "English only language firmware will be built" + sed -i -- "s/^#define LANG_MODE *1/#define LANG_MODE 0/g" $SCRIPT_PATH/Firmware/config.h + echo " " + else + echo " " + echo "Multi-language firmware will be built" + sed -i -- "s/^#define LANG_MODE *0/#define LANG_MODE 1/g" $SCRIPT_PATH/Firmware/config.h + echo " " + fi + + #Check if compiler flags are set to Prusa specific needs for the rambo board. +# if [ $TARGET_OS == "windows" ]; then +# RAMBO_PLATFORM_FILE="PrusaResearchRambo/avr/platform.txt" +# fi + + #### End of Prepare building + + #### Start building + + export ARDUINO=$BUILD_ENV_PATH + #echo $BUILD_ENV_PATH + #export BUILDER=$ARDUINO/arduino-builder - echo - #read -t 5 -p "Press Enter..." - echo + echo + #read -t 5 -p "Press Enter..." + echo - echo "Start to build Prusa Firmware ..." - echo "Using variant $VARIANT$(tput setaf 3)" - if [ $OUTPUT == "1" ] ; then - sleep 2 - fi + echo "Start to build Prusa Firmware ..." + echo "Using variant $VARIANT$(tput setaf 3)" + if [ $OUTPUT == "1" ] ; then + sleep 2 + fi - #New fresh PF-Firmware-build - if [ "$new_build_flag" == "1" ]; then - rm -r -f $BUILD_PATH/* || exit 36 - fi + #New fresh PF-Firmware-build + if [ "$new_build_flag" == "1" ]; then + rm -r -f $BUILD_PATH/* || exit 36 + fi - #$BUILD_ENV_PATH/arduino-builder -dump-prefs -debug-level 10 -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 14 - $BUILD_ENV_PATH/arduino-builder -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 30 - echo "$(tput sgr 0)" + #$BUILD_ENV_PATH/arduino-builder -dump-prefs -debug-level 10 -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 14 + $BUILD_ENV_PATH/arduino-builder -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 30 + echo "$(tput sgr 0)" - if [ $LANGUAGES == "ALL" ]; then - echo "$(tput setaf 2)" + if [ $LANGUAGES == "ALL" ]; then + echo "$(tput setaf 2)" - echo "Building multi language firmware" $MULTI_LANGUAGE_CHECK - echo "$(tput sgr 0)" - if [ $OUTPUT == "1" ] ; then - sleep 2 - fi - cd $SCRIPT_PATH/lang - echo "$(tput setaf 3)" - ./config.sh || exit 31 - echo "$(tput sgr 0)" - # Check if previous languages and firmware build exist and if so clean them up - if [ -f "lang_en.tmp" ]; then - echo "" - echo "$(tput setaf 6)Previous lang build files already exist these will be cleaned up in 10 seconds.$(tput sgr 0)" - if [ $OUTPUT == "1" ] ; then - read -t 10 -p "Press Enter to continue..." - fi - echo "$(tput setaf 3)" - ./lang-clean.sh - echo "$(tput sgr 0)" - fi - if [ -f "progmem.out" ]; then - echo "" - echo "$(tput setaf 6)Previous firmware build files already exist these will be cleaned up in 10 seconds.$(tput sgr 0)" - if [ $OUTPUT == "1" ] ; then - read -t 10 -p "Press Enter to continue..." - fi - echo "$(tput setaf 3)" - ./fw-clean.sh - echo "$(tput sgr 0)" - fi - # build languages - echo "$(tput setaf 3)" - ./lang-build.sh || exit 32 - # Combine compiled firmware with languages - ./fw-build.sh || exit 33 - cp not_tran.txt not_tran_$VARIANT.txt - cp not_used.txt not_used_$VARIANT.txt - echo "$(tput sgr 0)" - # Check if the motherboard is an EINSY and if so only one hex file will generated - MOTHERBOARD=$(grep --max-count=1 "\bMOTHERBOARD\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3) - # If the motherboard is an EINSY just copy one hexfile - if [ "$MOTHERBOARD" = "BOARD_EINSY_1_0a" ]; then - echo "$(tput setaf 2)Copying multi language firmware for MK3/Einsy board to PF-build-hex folder$(tput sgr 0)" - cp -f firmware.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex - else - echo "$(tput setaf 2)Zip multi language firmware for MK2.5/miniRAMbo board to PF-build-hex folder$(tput sgr 0)" - cp -f firmware_cz.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-cz.hex - cp -f firmware_de.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-de.hex - cp -f firmware_es.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-es.hex - cp -f firmware_fr.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-fr.hex - cp -f firmware_it.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-it.hex - cp -f firmware_pl.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-pl.hex - if [ $TARGET_OS == "windows" ]; then - zip a $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex - rm $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex - elif [ $TARGET_OS == "linux" ]; then - zip -m -j ../../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip ../../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex - fi - fi - # Cleanup after build - if [[ -z "$clean_flag" || "$clean_flag" == "0" ]]; then - echo "$(tput setaf 3)" - ./fw-clean.sh || exit 34 - ./lang-clean.sh || exit 35 - echo "$(tput sgr 0)" - fi - else - echo "$(tput setaf 2)Copying English only firmware to PF-build-hex folder$(tput sgr 0)" - cp -f $BUILD_PATH/Firmware.ino.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex || exit 34 - fi + echo "Building multi language firmware" $MULTI_LANGUAGE_CHECK + echo "$(tput sgr 0)" + if [ $OUTPUT == "1" ] ; then + sleep 2 + fi + cd $SCRIPT_PATH/lang + echo "$(tput setaf 3)" + ./config.sh || exit 31 + echo "$(tput sgr 0)" + # Check if previous languages and firmware build exist and if so clean them up + if [ -f "lang_en.tmp" ]; then + echo "" + echo "$(tput setaf 6)Previous lang build files already exist these will be cleaned up in 10 seconds.$(tput sgr 0)" + if [ $OUTPUT == "1" ] ; then + read -t 10 -p "Press Enter to continue..." + fi + echo "$(tput setaf 3)" + ./lang-clean.sh + echo "$(tput sgr 0)" + fi + if [ -f "progmem.out" ]; then + echo "" + echo "$(tput setaf 6)Previous firmware build files already exist these will be cleaned up in 10 seconds.$(tput sgr 0)" + if [ $OUTPUT == "1" ] ; then + read -t 10 -p "Press Enter to continue..." + fi + echo "$(tput setaf 3)" + ./fw-clean.sh + echo "$(tput sgr 0)" + fi + # build languages + echo "$(tput setaf 3)" + ./lang-build.sh || exit 32 + # Combine compiled firmware with languages + ./fw-build.sh || exit 33 + cp not_tran.txt not_tran_$VARIANT.txt + cp not_used.txt not_used_$VARIANT.txt + echo "$(tput sgr 0)" + # Check if the motherboard is an EINSY and if so only one hex file will generated + MOTHERBOARD=$(grep --max-count=1 "\bMOTHERBOARD\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3) + # If the motherboard is an EINSY just copy one hexfile + if [ "$MOTHERBOARD" = "BOARD_EINSY_1_0a" ]; then + echo "$(tput setaf 2)Copying multi language firmware for MK3/Einsy board to PF-build-hex folder$(tput sgr 0)" + cp -f firmware.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex + else + echo "$(tput setaf 2)Zip multi language firmware for MK2.5/miniRAMbo board to PF-build-hex folder$(tput sgr 0)" + cp -f firmware_cz.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-cz.hex + cp -f firmware_de.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-de.hex + cp -f firmware_es.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-es.hex + cp -f firmware_fr.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-fr.hex + cp -f firmware_it.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-it.hex + cp -f firmware_pl.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-pl.hex + if [ $TARGET_OS == "windows" ]; then + zip a $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex + rm $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex + elif [ $TARGET_OS == "linux" ]; then + if [ ! -z "$mk404_flag" ]; then + cp -f firmware_de.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex + fi + zip -m -j ../../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip ../../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex + fi + fi + # Cleanup after build + if [[ -z "$clean_flag" || "$clean_flag" == "0" ]]; then + echo "$(tput setaf 3)" + ./fw-clean.sh || exit 34 + ./lang-clean.sh || exit 35 + echo "$(tput sgr 0)" + fi + else + echo "$(tput setaf 2)Copying English only firmware to PF-build-hex folder$(tput sgr 0)" + cp -f $BUILD_PATH/Firmware.ino.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex || exit 34 + fi - # Cleanup Firmware - if [[ -z "$prusa_flag" || "$prusa_flag" == "0" ]]; then - rm $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 36 - fi - if find $SCRIPT_PATH/lang/ -name '*RAMBo10a*.txt' -printf 1 -quit | grep -q 1 - then - rm $SCRIPT_PATH/lang/*RAMBo10a*.txt - fi - if find $SCRIPT_PATH/lang/ -name '*MK2-RAMBo13a*' -printf 1 -quit | grep -q 1 - then - rm $SCRIPT_PATH/lang/*MK2-RAMBo13a*.txt - fi - if find $SCRIPT_PATH/lang/ -name 'not_tran.txt' -printf 1 -quit | grep -q 1 - then - rm $SCRIPT_PATH/lang/not_tran.txt - fi - if find $SCRIPT_PATH/lang/ -name 'not_used.txt' -printf 1 -quit | grep -q 1 - then - rm $SCRIPT_PATH/lang/not_used.txt - fi + # Cleanup Firmware + if [[ -z "$prusa_flag" || "$prusa_flag" == "0" ]]; then + rm $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 36 + fi + if find $SCRIPT_PATH/lang/ -name '*RAMBo10a*.txt' -printf 1 -quit | grep -q 1 + then + rm $SCRIPT_PATH/lang/*RAMBo10a*.txt + fi + if find $SCRIPT_PATH/lang/ -name '*MK2-RAMBo13a*' -printf 1 -quit | grep -q 1 + then + rm $SCRIPT_PATH/lang/*MK2-RAMBo13a*.txt + fi + if find $SCRIPT_PATH/lang/ -name 'not_tran.txt' -printf 1 -quit | grep -q 1 + then + rm $SCRIPT_PATH/lang/not_tran.txt + fi + if find $SCRIPT_PATH/lang/ -name 'not_used.txt' -printf 1 -quit | grep -q 1 + then + rm $SCRIPT_PATH/lang/not_used.txt + fi - #New fresh PF-Firmware-build - if [ "$new_build_flag" == "1" ]; then - rm -r -f $BUILD_PATH/* || exit 36 - fi + #New fresh PF-Firmware-build + if [ "$new_build_flag" == "1" ]; then + rm -r -f $BUILD_PATH/* || exit 36 + fi - # Restore files to previous state - sed -i -- "s/^#define FW_DEV_VERSION FW_VERSION_$DEV_STATUS/#define FW_DEV_VERSION FW_VERSION_UNKNOWN/g" $SCRIPT_PATH/Firmware/Configuration.h - sed -i -- 's/^#define FW_REPOSITORY "Prusa3d"/#define FW_REPOSITORY "Unknown"/g' $SCRIPT_PATH/Firmware/Configuration.h - if [ ! -z "$BUILD_ORG" ] ; then - sed -i -- "s/^#define FW_COMMIT_NR.*/#define FW_COMMIT_NR $BUILD_ORG/g" $SCRIPT_PATH/Firmware/Configuration.h - fi - echo $MULTI_LANGUAGE_CHECK - #sed -i -- "s/^#define LANG_MODE * /#define LANG_MODE $MULTI_LANGUAGE_CHECK/g" $SCRIPT_PATH/Firmware/config.h - sed -i -- "s/^#define LANG_MODE *1/#define LANG_MODE ${MULTI_LANGUAGE_CHECK}/g" $SCRIPT_PATH/Firmware/config.h - sed -i -- "s/^#define LANG_MODE *0/#define LANG_MODE ${MULTI_LANGUAGE_CHECK}/g" $SCRIPT_PATH/Firmware/config.h - if [ $OUTPUT == "1" ] ; then - sleep 5 - fi + # Restore files to previous state + sed -i -- "s/^#define FW_DEV_VERSION FW_VERSION_$DEV_STATUS/#define FW_DEV_VERSION FW_VERSION_UNKNOWN/g" $SCRIPT_PATH/Firmware/Configuration.h + sed -i -- 's/^#define FW_REPOSITORY "Prusa3d"/#define FW_REPOSITORY "Unknown"/g' $SCRIPT_PATH/Firmware/Configuration.h + if [ ! -z "$BUILD_ORG" ] ; then + sed -i -- "s/^#define FW_COMMIT_NR.*/#define FW_COMMIT_NR $BUILD_ORG/g" $SCRIPT_PATH/Firmware/Configuration.h + fi + echo $MULTI_LANGUAGE_CHECK + #sed -i -- "s/^#define LANG_MODE * /#define LANG_MODE $MULTI_LANGUAGE_CHECK/g" $SCRIPT_PATH/Firmware/config.h + sed -i -- "s/^#define LANG_MODE *1/#define LANG_MODE ${MULTI_LANGUAGE_CHECK}/g" $SCRIPT_PATH/Firmware/config.h + sed -i -- "s/^#define LANG_MODE *0/#define LANG_MODE ${MULTI_LANGUAGE_CHECK}/g" $SCRIPT_PATH/Firmware/config.h + if [ $OUTPUT == "1" ] ; then + sleep 5 + fi done # Switch to hex path and list build files cd $SCRIPT_PATH -cd .. echo "$(tput setaf 2) " echo " " echo "Build done, please use Slic3rPE > 1.41.0 to upload the firmware" echo "more information how to flash firmware https://www.prusa3d.com/drivers/ $(tput sgr 0)" #### End building +ls +#### Run MK404 sim +if [ ! -z "$mk404_flag" ]; then +./MK404-build.sh + +if [ "$mk404_flag" == "2" ]; then + PRINTER="${PRINTER}MMU2" +fi + +if [ "$MOTHERBOARD" == "BOARD_RAMBO_MINI_1_3" ]; then + PRINTER="${PRINTER}_mR13" +fi + +if [ ! -z "$grafics_flag" ]; then + options="--colour-extrusion --extrusion Quad_HR -g " + if [ "$grafics_flag" == "1" ]; then + options="${options}lite" + else + options="${options}fancy" + fi + +fi +echo "Printer: $PRINTER" +echo "Options: $options" +cd ../MK404/build + +./MK404 Prusa_$PRINTER -s --terminal $options -f $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex +fi From fb98cb2ff9ffb622ecca6c6511a869d86b1dcc81 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sat, 13 Feb 2021 10:05:07 +0100 Subject: [PATCH 02/34] Add force recompile Added SD card builds --- MK404-build.sh | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/MK404-build.sh b/MK404-build.sh index 7a9cde51a..e17a8239a 100755 --- a/MK404-build.sh +++ b/MK404-build.sh @@ -16,11 +16,12 @@ # 11 Feb 2021, 3d-gussner, Optional flags to check for updates -while getopts c:u:?h flag +while getopts c:u:f:?h flag do case "${flag}" in c) check_flag=${OPTARG};; u) update_flag=${OPTARG};; + f) force_flag=${OPTARG};; ?) help_flag=1;; h) help_flag=1;; esac @@ -98,7 +99,9 @@ fi #### Set build environment SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )" MK404_URL="https://github.com/vintagepc/MK404.git" -MK404_PATH="$SCRIPT_PATH/../MK404" +MK404_owner="vintagepc" +MK404_project="MK404" +MK404_PATH="$SCRIPT_PATH/../MK404/master" MK404_BUILD_PATH="$MK404_PATH/build" @@ -111,6 +114,9 @@ echo "" echo "MK404 path :" $MK404_PATH if [ ! -d $MK404_PATH ]; then + #release_url=$(curl -Ls -o /dev/null -w %{url_effective} https://github.com/$MK404_owner/$MK404_project/releases/latest) + #release_tag=$(basename $release_url) + #git clone -b $release_tag -- https://github.com/$MK404_owner/$MK404_project.git $MK404_PATH git clone $MK404_URL $MK404_PATH fi @@ -120,15 +126,22 @@ fi mkdir -p $MK404_BUILD_PATH -if [ ! -f "$MK404_BUILD_PATH/Makefile" ]; then - cmake -B $MK404_BUILD_PATH +if [[ ! -f "$MK404_BUILD_PATH/Makefile" || "$force_flag" == "1" ]]; then + cmake -B$MK404_BUILD_PATH -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" fi cd $MK404_BUILD_PATH -if [ ! -f "$MK404_BUILD_PATH/MK404" ]; then +if [[ ! -f "$MK404_BUILD_PATH/MK404" || "$force_flag" == "1" ]]; then make fi +if [[ ! -f "$MK404_BUILD_PATH/Prusa_MK3S_SDcard.bin" || "$force_flag" == "1" ]]; then + cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3S_SDcard.bin + cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3_SDcard.bin + cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK25_13_SDcard.bin + cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK25S_13_SDcard.bin +fi + if [ "$check_flag" == "1" ]; then current_version=$( command ./MK404 --version | grep "MK404" | cut -f 4 -d " ") echo "Current version: $current_version" From f37aedd5ddbebd6bdeb5a29bb848b05fafa7c13a Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sat, 13 Feb 2021 10:35:34 +0100 Subject: [PATCH 03/34] Add copy of MK3 and MK3S `lang.bin` files to MK404 `*_xflash.bin` Minor changes: - Indentations - Documentation --- MK404-build.sh | 18 ++++++++++++------ PF-build.sh | 48 ++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 50 insertions(+), 16 deletions(-) diff --git a/MK404-build.sh b/MK404-build.sh index e17a8239a..aaddeae1a 100755 --- a/MK404-build.sh +++ b/MK404-build.sh @@ -10,11 +10,12 @@ # 3. Install latest updates with 'sudo apt-get upgrade' # 4. # -# Version: 0.1-Build_1 +# Version: 0.1-Build_3 # Change log: # 11 Feb 2021, 3d-gussner, Inital # 11 Feb 2021, 3d-gussner, Optional flags to check for updates - +# 12 Feb 2021, 3d-gussner, Update cmake +# 13 Feb 2021, 3d-gussner, Auto build SD cards while getopts c:u:f:?h flag do @@ -113,6 +114,7 @@ echo "OS type :" $TARGET_OS echo "" echo "MK404 path :" $MK404_PATH +# Clone MK404 if needed if [ ! -d $MK404_PATH ]; then #release_url=$(curl -Ls -o /dev/null -w %{url_effective} https://github.com/$MK404_owner/$MK404_project/releases/latest) #release_tag=$(basename $release_url) @@ -120,21 +122,24 @@ if [ ! -d $MK404_PATH ]; then git clone $MK404_URL $MK404_PATH fi - cd $MK404_PATH - git submodule init - git submodule update - +# Init and update submodules +cd $MK404_PATH +git submodule init +git submodule update +# Prepare MK404 mkdir -p $MK404_BUILD_PATH if [[ ! -f "$MK404_BUILD_PATH/Makefile" || "$force_flag" == "1" ]]; then cmake -B$MK404_BUILD_PATH -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" fi +# Make MK404 cd $MK404_BUILD_PATH if [[ ! -f "$MK404_BUILD_PATH/MK404" || "$force_flag" == "1" ]]; then make fi +# Make SDcards if [[ ! -f "$MK404_BUILD_PATH/Prusa_MK3S_SDcard.bin" || "$force_flag" == "1" ]]; then cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3S_SDcard.bin cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3_SDcard.bin @@ -142,6 +147,7 @@ if [[ ! -f "$MK404_BUILD_PATH/Prusa_MK3S_SDcard.bin" || "$force_flag" == "1" ]]; cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK25S_13_SDcard.bin fi +# Check for updates ... WIP if [ "$check_flag" == "1" ]; then current_version=$( command ./MK404 --version | grep "MK404" | cut -f 4 -d " ") echo "Current version: $current_version" diff --git a/PF-build.sh b/PF-build.sh index 57c49c698..556c4d5de 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -56,7 +56,7 @@ # Some may argue that this is only used by a script, BUT as soon someone accidentally or on purpose starts Arduino IDE # it will use the default Arduino IDE folders and so can corrupt the build environment. # -# Version: 1.0.6-Build_36 +# Version: 1.1.0-Build_39 # Change log: # 12 Jan 2019, 3d-gussner, Fixed "compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections" in 'platform.txt' # 16 Jan 2019, 3d-gussner, Build_2, Added development check to modify 'Configuration.h' to prevent unwanted LCD messages that Firmware is unknown @@ -138,6 +138,7 @@ # 27 Jan 2021, 3d-gussner, Add `-c`, `-p` and `-n` options # 12 Feb 2021, 3d-gussner, Add MK404-build.sh # 13 Feb 2021, 3d-gussner, Indentations +# 13 Feb 2021, 3d-gussner, MK404 improvements like "flash" MK3, MK3S languages files to MK404 xflash. #### Start check if OSTYPE is supported OS_FOUND=$( command -v uname) @@ -882,6 +883,11 @@ do # If the motherboard is an EINSY just copy one hexfile if [ "$MOTHERBOARD" = "BOARD_EINSY_1_0a" ]; then echo "$(tput setaf 2)Copying multi language firmware for MK3/Einsy board to PF-build-hex folder$(tput sgr 0)" + # Make a copy of "lang.bin" for MK404 MK3 and MK3S + if [ ! -z "$mk404_flag" ]; then + cp -f lang.bin $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-lang.bin + fi + # End of "lang.bin" for MK3 and MK3S copy cp -f firmware.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex else echo "$(tput setaf 2)Zip multi language firmware for MK2.5/miniRAMbo board to PF-build-hex folder$(tput sgr 0)" @@ -895,9 +901,11 @@ do zip a $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex rm $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex elif [ $TARGET_OS == "linux" ]; then + # Make a copy for MK404 sim of MK2, MK2.5, MK2.5S firmware if [ ! -z "$mk404_flag" ]; then cp -f firmware_de.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex fi + # End of MK2, MK2.5, MK2.5S firmware copy zip -m -j ../../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip ../../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex fi fi @@ -961,31 +969,51 @@ echo " " echo "Build done, please use Slic3rPE > 1.41.0 to upload the firmware" echo "more information how to flash firmware https://www.prusa3d.com/drivers/ $(tput sgr 0)" #### End building -ls -#### Run MK404 sim + + +#### MK404 Simulator + +# Check/compile MK404 sim if [ ! -z "$mk404_flag" ]; then ./MK404-build.sh +# Check if MMU2 is selected if [ "$mk404_flag" == "2" ]; then PRINTER="${PRINTER}MMU2" fi +# For Prusa MK2, MK2.5 and MK2.5S if [ "$MOTHERBOARD" == "BOARD_RAMBO_MINI_1_3" ]; then PRINTER="${PRINTER}_mR13" fi +# Run MK404 with grafics if [ ! -z "$grafics_flag" ]; then - options="--colour-extrusion --extrusion Quad_HR -g " + MK404_options="--colour-extrusion --extrusion Quad_HR -g " if [ "$grafics_flag" == "1" ]; then - options="${options}lite" + options="${MK404_options}lite" else - options="${options}fancy" + options="${MK404_options}fancy" fi fi -echo "Printer: $PRINTER" -echo "Options: $options" -cd ../MK404/build -./MK404 Prusa_$PRINTER -s --terminal $options -f $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex +# Output some useful data +echo "Printer: $PRINTER" +echo "Options: $MK404_options" + +# Change to MK404 build folder +cd ../MK404/master/build + +# Copy language bin file for MK3 and MK3S to xflash +if [ -f $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-lang.bin ]; then +echo "Copy 'FW$FW-Build$BUILD-$VARIANT-lang.bin' to 'Prusa_${PRINTER}_xflash.bin'" + dd if=/dev/zero bs=1 count=262145 | tr "\000" "\377" >Prusa_${PRINTER}_xflash.bin + dd if=$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-lang.bin of=Prusa_${PRINTER}_xflash.bin conv=notrunc fi + +# Start MK404 +# default with serial output and terminal to manipulate it via terminal +./MK404 Prusa_$PRINTER -s --terminal $MK404_options -f $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex +fi +#### End of MK404 Simulator \ No newline at end of file From 3ad669889e628f1b789d39ab40fc33713d461116 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sun, 14 Feb 2021 00:18:24 +0100 Subject: [PATCH 04/34] Fix few issues Create MMU2 SDcards MMU2 only for MK3/S --- MK404-build.sh | 8 +++++--- PF-build.sh | 20 +++++++++----------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/MK404-build.sh b/MK404-build.sh index aaddeae1a..8ed1e6b9b 100755 --- a/MK404-build.sh +++ b/MK404-build.sh @@ -98,17 +98,17 @@ fi #### End Check MK404 dependencies #### Set build environment -SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )" +MK404_SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )" MK404_URL="https://github.com/vintagepc/MK404.git" MK404_owner="vintagepc" MK404_project="MK404" -MK404_PATH="$SCRIPT_PATH/../MK404/master" +MK404_PATH="$MK404_SCRIPT_PATH/../MK404/master" MK404_BUILD_PATH="$MK404_PATH/build" # List few useful data echo -echo "Script path :" $SCRIPT_PATH +echo "Script path :" $MK404_SCRIPT_PATH echo "OS :" $OS echo "OS type :" $TARGET_OS echo "" @@ -145,6 +145,8 @@ if [[ ! -f "$MK404_BUILD_PATH/Prusa_MK3S_SDcard.bin" || "$force_flag" == "1" ]]; cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3_SDcard.bin cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK25_13_SDcard.bin cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK25S_13_SDcard.bin + cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3SMMU2_SDcard.bin + cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3MMU2_SDcard.bin fi # Check for updates ... WIP diff --git a/PF-build.sh b/PF-build.sh index 556c4d5de..f139de8dc 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -467,7 +467,7 @@ while getopts v:l:d:b:o:c:p:n:m:g:?h flag p) prusa_flag=${OPTARG};; n) new_build_flag=${OPTARG};; m) mk404_flag=${OPTARG};; - g) grafics_flag=${OPTARG};; + g) graphics_flag=${OPTARG};; ?) help_flag=1;; h) help_flag=1;; esac @@ -977,23 +977,21 @@ echo "more information how to flash firmware https://www.prusa3d.com/drivers/ $( if [ ! -z "$mk404_flag" ]; then ./MK404-build.sh -# Check if MMU2 is selected -if [ "$mk404_flag" == "2" ]; then +# For Prusa MK2, MK2.5/S +if [ "$MOTHERBOARD" == "BOARD_RAMBO_MINI_1_3" ]; then + PRINTER="${PRINTER}_mR13" +elif [ "$mk404_flag" == "2" ]; then # Check if MMU2 is selected only for MK3/S PRINTER="${PRINTER}MMU2" fi -# For Prusa MK2, MK2.5 and MK2.5S -if [ "$MOTHERBOARD" == "BOARD_RAMBO_MINI_1_3" ]; then - PRINTER="${PRINTER}_mR13" -fi # Run MK404 with grafics -if [ ! -z "$grafics_flag" ]; then +if [ ! -z "$graphics_flag" ]; then MK404_options="--colour-extrusion --extrusion Quad_HR -g " - if [ "$grafics_flag" == "1" ]; then - options="${MK404_options}lite" + if [ "$graphics_flag" == "1" ]; then + MK404_options="${MK404_options}lite" else - options="${MK404_options}fancy" + MK404_options="${MK404_options}fancy" fi fi From de337476cdd02b559983a2b3d60e966b3b80b121 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Fri, 12 Feb 2021 20:12:37 +0100 Subject: [PATCH 05/34] Add MK404 support Indentations --- MK404-build.sh | 135 ++++++ PF-build.sh | 1128 +++++++++++++++++++++++++----------------------- 2 files changed, 718 insertions(+), 545 deletions(-) create mode 100755 MK404-build.sh diff --git a/MK404-build.sh b/MK404-build.sh new file mode 100755 index 000000000..7a9cde51a --- /dev/null +++ b/MK404-build.sh @@ -0,0 +1,135 @@ +#!/bin/bash +# This bash script is used to compile automatically the MK404 simulator +# +# Supported OS: Linux64 bit +# +# Linux: +# Linux Ubuntu +# 1. Follow these instructions +# 2. Open Ubuntu bash and get latest updates with 'sudo apt-get update' +# 3. Install latest updates with 'sudo apt-get upgrade' +# 4. +# +# Version: 0.1-Build_1 +# Change log: +# 11 Feb 2021, 3d-gussner, Inital +# 11 Feb 2021, 3d-gussner, Optional flags to check for updates + + +while getopts c:u:?h flag + do + case "${flag}" in + c) check_flag=${OPTARG};; + u) update_flag=${OPTARG};; + ?) help_flag=1;; + h) help_flag=1;; + esac + done +echo "$check_flag" +echo "$update_flag" + + +#### Start check if OSTYPE is supported +OS_FOUND=$( command -v uname) + +case $( "${OS_FOUND}" | tr '[:upper:]' '[:lower:]') in + linux*) + TARGET_OS="linux" + ;; + *) + TARGET_OS='unknown' + ;; +esac +# Linux +if [ $TARGET_OS == "linux" ]; then + if [ $(uname -m) == "x86_64" ]; then + echo "$(tput setaf 2)Linux 64-bit found$(tput sgr0)" + Processor="64" + #elif [[ $(uname -m) == "i386" || $(uname -m) == "i686" ]]; then + # echo "$(tput setaf 2)Linux 32-bit found$(tput sgr0)" + # Processor="32" + else + echo "$(tput setaf 1)Unsupported OS: Linux $(uname -m)" + echo "Please refer to the notes of build.sh$(tput sgr0)" + exit 1 + fi +else + echo "$(tput setaf 1)This script doesn't support your Operating system!" + echo "Please use Linux 64-bit" + echo "Read the notes of build.sh$(tput sgr0)" + exit 1 +fi +sleep 2 +#### End check if OSTYPE is supported + +#### Check MK404 dependencies +packages=( +"libelf-dev" +"gcc-7" +"gcc-avr" +"libglew-dev" +"freeglut3-dev" +"libsdl-sound1.2-dev" +"libpng-dev" +"cmake" +"zip" +"wget" +"git" +"build-essential" +"lcov" +"mtools" +) + +for check_package in ${packages[@]}; do + if dpkg-query -W -f'${db:Status-Abbrev}\n' $check_package 2>/dev/null \ + | grep -q '^.i $'; then + echo "$(tput setaf 2)$check_package: Installed$(tput sgr0)" + else + echo "$(tput setaf 1)$check_package: Not installed use $(tput setaf 3)'sudo apt install $check_package'$(tput setaf 1) to install missing package$(tput sgr0)" + not_installed=1; + fi +done + +if [ "$not_installed" = "1" ]; then + exit 4 +fi +#### End Check MK404 dependencies + +#### Set build environment +SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )" +MK404_URL="https://github.com/vintagepc/MK404.git" +MK404_PATH="$SCRIPT_PATH/../MK404" +MK404_BUILD_PATH="$MK404_PATH/build" + + +# List few useful data +echo +echo "Script path :" $SCRIPT_PATH +echo "OS :" $OS +echo "OS type :" $TARGET_OS +echo "" +echo "MK404 path :" $MK404_PATH + +if [ ! -d $MK404_PATH ]; then + git clone $MK404_URL $MK404_PATH +fi + + cd $MK404_PATH + git submodule init + git submodule update + + +mkdir -p $MK404_BUILD_PATH +if [ ! -f "$MK404_BUILD_PATH/Makefile" ]; then + cmake -B $MK404_BUILD_PATH +fi + +cd $MK404_BUILD_PATH +if [ ! -f "$MK404_BUILD_PATH/MK404" ]; then + make +fi + +if [ "$check_flag" == "1" ]; then + current_version=$( command ./MK404 --version | grep "MK404" | cut -f 4 -d " ") + echo "Current version: $current_version" +fi \ No newline at end of file diff --git a/PF-build.sh b/PF-build.sh index 5b0979e2a..57c49c698 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -91,7 +91,7 @@ # 13 Mar 2019, 3d-gussner, MKbel updated the Linux build environment to version 1.0.2 with an Fix maximum firmware flash size. # So did I # 11 Jul 2019, deliopoulos,Updated to v1.0.6 as Prusa needs a new board definition for Firmware 3.8.x86_64 -# - Split the Download of Windows Arduino IDE 1.8.5 and Prusa specific part +# - Split the Download of Windows Arduino IDE 1.8.5 and Prusa specific part # --> less download volume needed and saves some time # # 13 Jul 2019, deliopoulos,Splitting of Arduino IDE and Prusa parts also for Linux64 @@ -136,6 +136,8 @@ # 08 Jan 2021, 3d-gussner, Comment out 'sudo' auto installation # Add '-?' '-h' help option # 27 Jan 2021, 3d-gussner, Add `-c`, `-p` and `-n` options +# 12 Feb 2021, 3d-gussner, Add MK404-build.sh +# 13 Feb 2021, 3d-gussner, Indentations #### Start check if OSTYPE is supported OS_FOUND=$( command -v uname) @@ -157,35 +159,35 @@ case $( "${OS_FOUND}" | tr '[:upper:]' '[:lower:]') in esac # Windows if [ $TARGET_OS == "windows" ]; then - if [ $(uname -m) == "x86_64" ]; then - echo "$(tput setaf 2)Windows 64-bit found$(tput sgr0)" - Processor="64" - elif [ $(uname -m) == "i386" ]; then - echo "$(tput setaf 2)Windows 32-bit found$(tput sgr0)" - Processor="32" - else - echo "$(tput setaf 1)Unsupported OS: Windows $(uname -m)" - echo "Please refer to the notes of build.sh$(tput sgr0)" - exit 1 - fi + if [ $(uname -m) == "x86_64" ]; then + echo "$(tput setaf 2)Windows 64-bit found$(tput sgr0)" + Processor="64" + elif [ $(uname -m) == "i386" ]; then + echo "$(tput setaf 2)Windows 32-bit found$(tput sgr0)" + Processor="32" + else + echo "$(tput setaf 1)Unsupported OS: Windows $(uname -m)" + echo "Please refer to the notes of build.sh$(tput sgr0)" + exit 1 + fi # Linux elif [ $TARGET_OS == "linux" ]; then - if [ $(uname -m) == "x86_64" ]; then - echo "$(tput setaf 2)Linux 64-bit found$(tput sgr0)" - Processor="64" - elif [[ $(uname -m) == "i386" || $(uname -m) == "i686" ]]; then - echo "$(tput setaf 2)Linux 32-bit found$(tput sgr0)" - Processor="32" - else - echo "$(tput setaf 1)Unsupported OS: Linux $(uname -m)" - echo "Please refer to the notes of build.sh$(tput sgr0)" - exit 1 - fi + if [ $(uname -m) == "x86_64" ]; then + echo "$(tput setaf 2)Linux 64-bit found$(tput sgr0)" + Processor="64" + elif [[ $(uname -m) == "i386" || $(uname -m) == "i686" ]]; then + echo "$(tput setaf 2)Linux 32-bit found$(tput sgr0)" + Processor="32" + else + echo "$(tput setaf 1)Unsupported OS: Linux $(uname -m)" + echo "Please refer to the notes of build.sh$(tput sgr0)" + exit 1 + fi else - echo "$(tput setaf 1)This script doesn't support your Operating system!" - echo "Please use Linux 64-bit or Windows 10 64-bit with Linux subsystem / git-bash" - echo "Read the notes of build.sh$(tput sgr0)" - exit 1 + echo "$(tput setaf 1)This script doesn't support your Operating system!" + echo "Please use Linux 64-bit or Windows 10 64-bit with Linux subsystem / git-bash" + echo "Read the notes of build.sh$(tput sgr0)" + exit 1 fi sleep 2 #### End check if OSTYPE is supported @@ -193,52 +195,52 @@ sleep 2 #### Prepare bash environment and check if wget, zip and other needed things are available # Check wget if ! type wget > /dev/null; then - echo "$(tput setaf 1)Missing 'wget' which is important to run this script" - echo "Please follow these instructions https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058 to install wget$(tput sgr0)" - exit 2 + echo "$(tput setaf 1)Missing 'wget' which is important to run this script" + echo "Please follow these instructions https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058 to install wget$(tput sgr0)" + exit 2 fi # Check for zip if ! type zip > /dev/null; then - if [ $TARGET_OS == "windows" ]; then - echo "$(tput setaf 1)Missing 'zip' which is important to run this script" - echo "Download and install 7z-zip from its official website https://www.7-zip.org/" - echo "By default, it is installed under the directory /c/Program Files/7-Zip in Windows 10 as my case." - echo "Run git Bash under Administrator privilege and" - echo "navigate to the directory /c/Program Files/Git/mingw64/bin," - echo "you can run the command $(tput setaf 2)ln -s /c/Program Files/7-Zip/7z.exe zip.exe$(tput sgr0)" - exit 3 - elif [ $TARGET_OS == "linux" ]; then - echo "$(tput setaf 1)Missing 'zip' which is important to run this script" - echo "install it with the command $(tput setaf 2)'sudo apt-get install zip'$(tput sgr0)" - #sudo apt-get update && apt-get install zip - exit 3 - fi + if [ $TARGET_OS == "windows" ]; then + echo "$(tput setaf 1)Missing 'zip' which is important to run this script" + echo "Download and install 7z-zip from its official website https://www.7-zip.org/" + echo "By default, it is installed under the directory /c/Program Files/7-Zip in Windows 10 as my case." + echo "Run git Bash under Administrator privilege and" + echo "navigate to the directory /c/Program Files/Git/mingw64/bin," + echo "you can run the command $(tput setaf 2)ln -s /c/Program Files/7-Zip/7z.exe zip.exe$(tput sgr0)" + exit 3 + elif [ $TARGET_OS == "linux" ]; then + echo "$(tput setaf 1)Missing 'zip' which is important to run this script" + echo "install it with the command $(tput setaf 2)'sudo apt-get install zip'$(tput sgr0)" + #sudo apt-get update && apt-get install zip + exit 3 + fi fi # Check python ... needed during language build if ! type python > /dev/null; then - if [ $TARGET_OS == "windows" ]; then - echo "$(tput setaf 1)Missing 'python3' which is important to run this script" - exit 4 - elif [ $TARGET_OS == "linux" ]; then - echo "$(tput setaf 1)Missing 'python' which is important to run this script" - echo "As Python 2.x will not be maintained from 2020 please," - echo "install it with the command $(tput setaf 2)'sudo apt-get install python3'." - echo "Check which version of Python3 has been installed using 'ls /usr/bin/python3*'" - echo "Use 'sudo ln -sf /usr/bin/python3.x /usr/bin/python' (where 'x' is your version number) to make it default.$(tput sgr0)" - #sudo apt-get update && apt-get install python3 && ln -sf /usr/bin/python3 /usr/bin/python - exit 4 - fi + if [ $TARGET_OS == "windows" ]; then + echo "$(tput setaf 1)Missing 'python3' which is important to run this script" + exit 4 + elif [ $TARGET_OS == "linux" ]; then + echo "$(tput setaf 1)Missing 'python' which is important to run this script" + echo "As Python 2.x will not be maintained from 2020 please," + echo "install it with the command $(tput setaf 2)'sudo apt-get install python3'." + echo "Check which version of Python3 has been installed using 'ls /usr/bin/python3*'" + echo "Use 'sudo ln -sf /usr/bin/python3.x /usr/bin/python' (where 'x' is your version number) to make it default.$(tput sgr0)" + #sudo apt-get update && apt-get install python3 && ln -sf /usr/bin/python3 /usr/bin/python + exit 4 + fi fi # Check gawk ... needed during language build if ! type gawk > /dev/null; then - if [ $TARGET_OS == "linux" ]; then - echo "$(tput setaf 1)Missing 'gawk' which is important to run this script" - echo "install it with the command $(tput setaf 2)'sudo apt-get install gawk'." - #sudo apt-get update && apt-get install gawk - exit 4 - fi + if [ $TARGET_OS == "linux" ]; then + echo "$(tput setaf 1)Missing 'gawk' which is important to run this script" + echo "install it with the command $(tput setaf 2)'sudo apt-get install gawk'." + #sudo apt-get update && apt-get install gawk + exit 4 + fi fi #### End prepare bash / Linux environment @@ -287,157 +289,157 @@ BUILD_ENV_PATH="$( cd "$(dirname "$0")" ; pwd -P )" # Check if PF-build-env- exists and downloads + creates it if not # The build environment is based on the supported Arduino IDE portable version with some changes if [ ! -d "../PF-build-env-$BUILD_ENV" ]; then - echo "$(tput setaf 6)PF-build-env-$BUILD_ENV is missing ... creating it now for you$(tput sgr 0)" - mkdir ../PF-build-env-$BUILD_ENV - sleep 5 + echo "$(tput setaf 6)PF-build-env-$BUILD_ENV is missing ... creating it now for you$(tput sgr 0)" + mkdir ../PF-build-env-$BUILD_ENV + sleep 5 fi # Download and extract supported Arduino IDE depending on OS # Windows if [ $TARGET_OS == "windows" ]; then - if [ ! -f "arduino-$ARDUINO_ENV-windows.zip" ]; then - echo "$(tput setaf 6)Downloading Windows 32/64-bit Arduino IDE portable...$(tput setaf 2)" - sleep 2 - wget https://downloads.arduino.cc/arduino-$ARDUINO_ENV-windows.zip || exit 7 - echo "$(tput sgr 0)" - fi - if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then - echo "$(tput setaf 6)Unzipping Windows 32/64-bit Arduino IDE portable...$(tput setaf 2)" - sleep 2 - unzip arduino-$ARDUINO_ENV-windows.zip -d ../PF-build-env-$BUILD_ENV || exit 7 - mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor - echo "# arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt - echo "$(tput sgr0)" - fi + if [ ! -f "arduino-$ARDUINO_ENV-windows.zip" ]; then + echo "$(tput setaf 6)Downloading Windows 32/64-bit Arduino IDE portable...$(tput setaf 2)" + sleep 2 + wget https://downloads.arduino.cc/arduino-$ARDUINO_ENV-windows.zip || exit 7 + echo "$(tput sgr 0)" + fi + if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then + echo "$(tput setaf 6)Unzipping Windows 32/64-bit Arduino IDE portable...$(tput setaf 2)" + sleep 2 + unzip arduino-$ARDUINO_ENV-windows.zip -d ../PF-build-env-$BUILD_ENV || exit 7 + mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor + echo "# arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt + echo "$(tput sgr0)" + fi fi # Linux if [ $TARGET_OS == "linux" ]; then # 32 or 64 bit version - if [ ! -f "arduino-$ARDUINO_ENV-linux$Processor.tar.xz" ]; then - echo "$(tput setaf 6)Downloading Linux $Processor Arduino IDE portable...$(tput setaf 2)" - sleep 2 - wget --no-check-certificate https://downloads.arduino.cc/arduino-$ARDUINO_ENV-linux$Processor.tar.xz || exit 8 - echo "$(tput sgr 0)" - fi - if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then - echo "$(tput setaf 6)Unzipping Linux $Processor Arduino IDE portable...$(tput setaf 2)" - sleep 2 - tar -xvf arduino-$ARDUINO_ENV-linux$Processor.tar.xz -C ../PF-build-env-$BUILD_ENV/ || exit 8 - mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor - echo "# arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt - echo "$(tput sgr0)" - fi + if [ ! -f "arduino-$ARDUINO_ENV-linux$Processor.tar.xz" ]; then + echo "$(tput setaf 6)Downloading Linux $Processor Arduino IDE portable...$(tput setaf 2)" + sleep 2 + wget --no-check-certificate https://downloads.arduino.cc/arduino-$ARDUINO_ENV-linux$Processor.tar.xz || exit 8 + echo "$(tput sgr 0)" + fi + if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then + echo "$(tput setaf 6)Unzipping Linux $Processor Arduino IDE portable...$(tput setaf 2)" + sleep 2 + tar -xvf arduino-$ARDUINO_ENV-linux$Processor.tar.xz -C ../PF-build-env-$BUILD_ENV/ || exit 8 + mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor + echo "# arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt + echo "$(tput sgr0)" + fi fi # Make Arduino IDE portable if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/ + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/ fi if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable fi if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/output/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/output + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/output fi if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages fi if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook fi if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook/libraries/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook/libraries + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook/libraries fi if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/staging/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/staging + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/staging fi # Change Arduino IDE preferences if [ ! -e ../PF-build-env-$BUILD_ENV/Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt ]; then - echo "$(tput setaf 6)Setting $ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor Arduino IDE preferences for portable GUI usage...$(tput setaf 2)" - sleep 2 - echo "update.check" - sed -i 's/update.check = true/update.check = false/g' ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt - echo "board" - sed -i "s/board = uno/board = $BOARD/g" ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt - echo "editor.linenumbers" - sed -i 's/editor.linenumbers = false/editor.linenumbers = true/g' ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt - echo "boardsmanager.additional.urls" - echo "boardsmanager.additional.urls=$BOARD_URL" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt - echo "build.verbose=true" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt - echo "compiler.cache_core=false" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt - echo "compiler.warning_level=all" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt - echo "# Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt - echo "$(tput sgr0)" + echo "$(tput setaf 6)Setting $ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor Arduino IDE preferences for portable GUI usage...$(tput setaf 2)" + sleep 2 + echo "update.check" + sed -i 's/update.check = true/update.check = false/g' ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt + echo "board" + sed -i "s/board = uno/board = $BOARD/g" ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt + echo "editor.linenumbers" + sed -i 's/editor.linenumbers = false/editor.linenumbers = true/g' ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt + echo "boardsmanager.additional.urls" + echo "boardsmanager.additional.urls=$BOARD_URL" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt + echo "build.verbose=true" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt + echo "compiler.cache_core=false" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt + echo "compiler.warning_level=all" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt + echo "# Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt + echo "$(tput sgr0)" fi # Download and extract Prusa Firmware related parts # Download and extract PrusaResearchRambo board if [ ! -f "$BOARD_FILENAME-$BOARD_VERSION.tar.bz2" ]; then - echo "$(tput setaf 6)Downloading Prusa Research AVR MK3 RAMBo EINSy build environment...$(tput setaf 2)" - sleep 2 - wget $BOARD_FILE_URL || exit 9 + echo "$(tput setaf 6)Downloading Prusa Research AVR MK3 RAMBo EINSy build environment...$(tput setaf 2)" + sleep 2 + wget $BOARD_FILE_URL || exit 9 fi if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr/$BOARD_VERSION" || ! -e "../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then - echo "$(tput setaf 6)Unzipping $BOARD_PACKAGE_NAME Arduino IDE portable...$(tput setaf 2)" - sleep 2 - tar -xvf $BOARD_FILENAME-$BOARD_VERSION.tar.bz2 -C ../PF-build-env-$BUILD_ENV/ || exit 10 - if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME - fi - if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME - fi - if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware - fi - if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr - fi - - mv ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr/$BOARD_VERSION - echo "# $BOARD_FILENAME-$BOARD_VERSION" >> ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt + echo "$(tput setaf 6)Unzipping $BOARD_PACKAGE_NAME Arduino IDE portable...$(tput setaf 2)" + sleep 2 + tar -xvf $BOARD_FILENAME-$BOARD_VERSION.tar.bz2 -C ../PF-build-env-$BUILD_ENV/ || exit 10 + if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME ]; then + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME + fi + if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME ]; then + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME + fi + if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware ]; then + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware + fi + if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr ]; then + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr + fi + + mv ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr/$BOARD_VERSION + echo "# $BOARD_FILENAME-$BOARD_VERSION" >> ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt - echo "$(tput sgr 0)" -fi + echo "$(tput sgr 0)" +fi # Download and extract Prusa Firmware specific library files if [ ! -f "PF-build-env-WinLin-$BUILD_ENV.zip" ]; then - echo "$(tput setaf 6)Downloading Prusa Firmware build environment...$(tput setaf 2)" - sleep 2 - wget $PF_BUILD_FILE_URL || exit 11 - echo "$(tput sgr 0)" + echo "$(tput setaf 6)Downloading Prusa Firmware build environment...$(tput setaf 2)" + sleep 2 + wget $PF_BUILD_FILE_URL || exit 11 + echo "$(tput sgr 0)" fi if [ ! -e "../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]; then - echo "$(tput setaf 6)Unzipping Prusa Firmware build environment...$(tput setaf 2)" - sleep 2 - unzip -o PF-build-env-WinLin-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || exit 12 - echo "# PF-build-env-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt - echo "$(tput sgr0)" + echo "$(tput setaf 6)Unzipping Prusa Firmware build environment...$(tput setaf 2)" + sleep 2 + unzip -o PF-build-env-WinLin-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || exit 12 + echo "# PF-build-env-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt + echo "$(tput sgr0)" fi # Check if User updated Arduino IDE 1.8.5 boardsmanager and tools if [ -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools" ]; then - echo "$(tput setaf 6)Arduino IDE boards / tools have been manually updated...$" - echo "Please don't update the 'Arduino AVR boards' as this will prevent running this script (tput setaf 2)" - sleep 2 -fi + echo "$(tput setaf 6)Arduino IDE boards / tools have been manually updated...$" + echo "Please don't update the 'Arduino AVR boards' as this will prevent running this script (tput setaf 2)" + sleep 2 +fi if [ -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2" ]; then - echo "$(tput setaf 6)PrusaReasearch compatible tools have been manually updated...$(tput setaf 2)" - sleep 2 - echo "$(tput setaf 6)Copying Prusa Firmware build environment to manually updated boards / tools...$(tput setaf 2)" - sleep 2 - cp -f ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/hardware/tools/avr/avr/lib/ldscripts/avr6.xn ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2/avr/lib/ldscripts/avr6.xn - echo "# PF-build-env-portable-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-portable-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt - echo "$(tput sgr0)" -fi + echo "$(tput setaf 6)PrusaReasearch compatible tools have been manually updated...$(tput setaf 2)" + sleep 2 + echo "$(tput setaf 6)Copying Prusa Firmware build environment to manually updated boards / tools...$(tput setaf 2)" + sleep 2 + cp -f ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/hardware/tools/avr/avr/lib/ldscripts/avr6.xn ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2/avr/lib/ldscripts/avr6.xn + echo "# PF-build-env-portable-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-portable-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt + echo "$(tput sgr0)" +fi if [ -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/5.4.0-atmel3.6.1-arduino2" ]; then - echo "$(tput setaf 1)Arduino IDE tools have been updated manually to a non supported version!!!" - echo "Delete ../PF-build-env-$BUILD_ENV and start the script again" - echo "Script will not continue until this have been fixed $(tput setaf 2)" - sleep 2 - echo "$(tput sgr0)" - exit 13 + echo "$(tput setaf 1)Arduino IDE tools have been updated manually to a non supported version!!!" + echo "Delete ../PF-build-env-$BUILD_ENV and start the script again" + echo "Script will not continue until this have been fixed $(tput setaf 2)" + sleep 2 + echo "$(tput sgr0)" + exit 13 fi @@ -449,24 +451,26 @@ cd $SCRIPT_PATH # Check if git is available if type git > /dev/null; then - git_available="1" + git_available="1" fi -while getopts v:l:d:b:o:c:p:n:?h flag - do - case "${flag}" in - v) variant_flag=${OPTARG};; - l) language_flag=${OPTARG};; - d) devel_flag=${OPTARG};; - b) build_flag=${OPTARG};; - o) output_flag=${OPTARG};; - c) clean_flag=${OPTARG};; - p) prusa_flag=${OPTARG};; - n) new_build_flag=${OPTARG};; - ?) help_flag=1;; - h) help_flag=1;; - esac - done +while getopts v:l:d:b:o:c:p:n:m:g:?h flag + do + case "${flag}" in + v) variant_flag=${OPTARG};; + l) language_flag=${OPTARG};; + d) devel_flag=${OPTARG};; + b) build_flag=${OPTARG};; + o) output_flag=${OPTARG};; + c) clean_flag=${OPTARG};; + p) prusa_flag=${OPTARG};; + n) new_build_flag=${OPTARG};; + m) mk404_flag=${OPTARG};; + g) grafics_flag=${OPTARG};; + ?) help_flag=1;; + h) help_flag=1;; + esac + done #echo "variant_flag: $variant_flag"; #echo "language_flag: $language_flag"; #echo "devel_flag: $devel_flag"; @@ -492,11 +496,13 @@ echo "$(tput setaf 2)-o$(tput sgr0) Output '$(tput setaf 2)1$(tput sgr0)' force echo "$(tput setaf 2)-c$(tput sgr0) Do not clean up lang build'$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" echo "$(tput setaf 2)-p$(tput sgr0) Keep Configuration_prusa.h '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" echo "$(tput setaf 2)-n$(tput sgr0) New fresh build '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" +echo "$(tput setaf 2)-m$(tput sgr0) Start MK404 sim '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes '$(tput setaf 2)2$(tput sgr0)' with MMU2" +echo "$(tput setaf 2)-g$(tput sgr0) Start MK404 grafics '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' lite '$(tput setaf 2)2$(tput sgr0)' fancy" echo "$(tput setaf 2)-?$(tput sgr0) Help" echo "$(tput setaf 2)-h$(tput sgr0) Help" echo echo "Brief USAGE:" -echo " $(tput setaf 2)./PF-build.sh$(tput sgr0) [-v] [-l] [-d] [-b] [-o] [-c] [-p] [-n]" +echo " $(tput setaf 2)./PF-build.sh$(tput sgr0) [-v] [-l] [-d] [-b] [-o] [-c] [-p] [-n] [-m]" echo echo "Example:" echo " $(tput setaf 2)./PF-build.sh -v All -l ALL -d GOLD$(tput sgr0)" @@ -514,48 +520,48 @@ fi # # '-v' argument defines which variant of the Prusa Firmware will be compiled if [ -z "$variant_flag" ] ; then - # Select which variant of the Prusa Firmware will be compiled, like - PS3="Select a variant: " - while IFS= read -r -d $'\0' f; do - options[i++]="$f" - done < <(find Firmware/variants/ -maxdepth 1 -type f -name "*.h" -print0 ) - select opt in "${options[@]}" "All" "Quit"; do - case $opt in - *.h) - VARIANT=$(basename "$opt" ".h") - VARIANTS[i++]="$opt" - break - ;; - "All") - VARIANT="All" - VARIANTS=${options[*]} - break - ;; - "Quit") - echo "You chose to stop" - exit 20 - ;; - *) - echo "$(tput setaf 1)This is not a valid variant$(tput sgr0)" - ;; - esac - done + # Select which variant of the Prusa Firmware will be compiled, like + PS3="Select a variant: " + while IFS= read -r -d $'\0' f; do + options[i++]="$f" + done < <(find Firmware/variants/ -maxdepth 1 -type f -name "*.h" -print0 ) + select opt in "${options[@]}" "All" "Quit"; do + case $opt in + *.h) + VARIANT=$(basename "$opt" ".h") + VARIANTS[i++]="$opt" + break + ;; + "All") + VARIANT="All" + VARIANTS=${options[*]} + break + ;; + "Quit") + echo "You chose to stop" + exit 20 + ;; + *) + echo "$(tput setaf 1)This is not a valid variant$(tput sgr0)" + ;; + esac + done else - if [ -f "$SCRIPT_PATH/Firmware/variants/$variant_flag" ] ; then - VARIANTS=$variant_flag - elif [ "$variant_flag" == "All" ] ; then - while IFS= read -r -d $'\0' f; do - options[i++]="$f" - done < <(find Firmware/variants/ -maxdepth 1 -type f -name "*.h" -print0 ) - VARIANT="All" - VARIANTS=${options[*]} - else - echo "$(tput setaf 1)Argument $variant_flag could not be found in Firmware/variants please choose a valid one.$(tput sgr0)" - echo "Only $(tput setaf 2)'All'$(tput sgr0) and file names below are allowed as variant '-v' argument.$(tput setaf 2)" - ls -1 $SCRIPT_PATH/Firmware/variants/*.h | xargs -n1 basename - echo "$(tput sgr0)" - exit 21 - fi + if [ -f "$SCRIPT_PATH/Firmware/variants/$variant_flag" ] ; then + VARIANTS=$variant_flag + elif [ "$variant_flag" == "All" ] ; then + while IFS= read -r -d $'\0' f; do + options[i++]="$f" + done < <(find Firmware/variants/ -maxdepth 1 -type f -name "*.h" -print0 ) + VARIANT="All" + VARIANTS=${options[*]} + else + echo "$(tput setaf 1)Argument $variant_flag could not be found in Firmware/variants please choose a valid one.$(tput sgr0)" + echo "Only $(tput setaf 2)'All'$(tput sgr0) and file names below are allowed as variant '-v' argument.$(tput setaf 2)" + ls -1 $SCRIPT_PATH/Firmware/variants/*.h | xargs -n1 basename + echo "$(tput sgr0)" + exit 21 + fi fi #'-l' argument defines if it is an English only version. Known values EN_ONLY / ALL @@ -563,86 +569,86 @@ fi MULTI_LANGUAGE_CHECK=$(grep --max-count=1 "^#define LANG_MODE *" $SCRIPT_PATH/Firmware/config.h|sed -e's/ */ /g'|cut -d ' ' -f3) if [ -z "$language_flag" ] ; then - PS3="Select a language: " - echo - echo "Which lang-build do you want?" - select yn in "Multi languages" "English only"; do - case $yn in - "Multi languages") - LANGUAGES="ALL" - break - ;; - "English only") - LANGUAGES="EN_ONLY" - break - ;; - *) - echo "$(tput setaf 1)This is not a valid language$(tput sgr0)" - ;; - esac - done + PS3="Select a language: " + echo + echo "Which lang-build do you want?" + select yn in "Multi languages" "English only"; do + case $yn in + "Multi languages") + LANGUAGES="ALL" + break + ;; + "English only") + LANGUAGES="EN_ONLY" + break + ;; + *) + echo "$(tput setaf 1)This is not a valid language$(tput sgr0)" + ;; + esac + done else - if [[ "$language_flag" == "ALL" || "$language_flag" == "EN_ONLY" ]] ; then - LANGUAGES=$language_flag - else - echo "$(tput setaf 1)Language argument is wrong!$(tput sgr0)" - echo "Only $(tput setaf 2)'ALL'$(tput sgr0) or $(tput setaf 2)'EN_ONLY'$(tput sgr0) are allowed as language '-l' argument!" - exit 22 - fi + if [[ "$language_flag" == "ALL" || "$language_flag" == "EN_ONLY" ]] ; then + LANGUAGES=$language_flag + else + echo "$(tput setaf 1)Language argument is wrong!$(tput sgr0)" + echo "Only $(tput setaf 2)'ALL'$(tput sgr0) or $(tput setaf 2)'EN_ONLY'$(tput sgr0) are allowed as language '-l' argument!" + exit 22 + fi fi #Check if DEV_STATUS is selected via argument '-d' if [ ! -z "$devel_flag" ] ; then - if [[ "$devel_flag" == "GOLD" || "$devel_flag" == "RC" || "$devel_flag" == "BETA" || "$devel_flag" == "ALPHA" || "$devel_flag" == "DEVEL" || "$devel_flag" == "DEBUG" || "$devel_flag" == "UNKNOWN" ]] ; then - DEV_STATUS_SELECTED=$devel_flag - else - echo "$(tput setaf 1)Development argument is wrong!$(tput sgr0)" - echo "Only $(tput setaf 2)'GOLD', 'RC', 'BETA', 'ALPHA', 'DEVEL', 'DEBUG' or 'UNKNOWN' $(tput sgr0) are allowed as devel '-d' argument!$(tput sgr0)" - exit 23 - fi + if [[ "$devel_flag" == "GOLD" || "$devel_flag" == "RC" || "$devel_flag" == "BETA" || "$devel_flag" == "ALPHA" || "$devel_flag" == "DEVEL" || "$devel_flag" == "DEBUG" || "$devel_flag" == "UNKNOWN" ]] ; then + DEV_STATUS_SELECTED=$devel_flag + else + echo "$(tput setaf 1)Development argument is wrong!$(tput sgr0)" + echo "Only $(tput setaf 2)'GOLD', 'RC', 'BETA', 'ALPHA', 'DEVEL', 'DEBUG' or 'UNKNOWN' $(tput sgr0) are allowed as devel '-d' argument!$(tput sgr0)" + exit 23 + fi fi #Check if Build is selected via argument '-b' if [ ! -z "$build_flag" ] ; then - if [[ "$build_flag" == "Auto" && "$git_available" == "1" ]] ; then - echo "Build changed to $build_flag" - BUILD=$(git rev-list --count HEAD) - elif [[ $build_flag =~ ^[0-9]+$ ]] ; then - BUILD=$build_flag - else - echo "$(tput setaf 1)Build number argument is wrong!$(tput sgr0)" - echo "Only $(tput setaf 2)'Auto' (git needed) or numbers $(tput sgr0) are allowed as build '-b' argument!$(tput sgr0)" - exit 24 + if [[ "$build_flag" == "Auto" && "$git_available" == "1" ]] ; then + echo "Build changed to $build_flag" + BUILD=$(git rev-list --count HEAD) + elif [[ $build_flag =~ ^[0-9]+$ ]] ; then + BUILD=$build_flag + else + echo "$(tput setaf 1)Build number argument is wrong!$(tput sgr0)" + echo "Only $(tput setaf 2)'Auto' (git needed) or numbers $(tput sgr0) are allowed as build '-b' argument!$(tput sgr0)" + exit 24 - fi - echo "New Build number is: $BUILD" + fi + echo "New Build number is: $BUILD" fi # check if script has been started with arguments if [[ "$#" -eq "0" || "$output_flag" == 1 ]] ; then - OUTPUT=1 + OUTPUT=1 else - OUTPUT=0 + OUTPUT=0 fi #echo "Output is:" $OUTPUT #Check git branch has changed if [ ! -z "git_available" ]; then - BRANCH="" - CLEAN_PF_FW_BUILD=0 + BRANCH="" + CLEAN_PF_FW_BUILD=0 else - BRANCH=$(git branch --show-current) - echo "Current branch is:" $BRANCH - if [ ! -f "$SCRIPT_PATH/../PF-build.branch" ]; then - echo "$BRANCH" >| $SCRIPT_PATH/../PF-build.branch - echo "created PF-build.branch file" - else - PRE_BRANCH=$(cat "$SCRIPT_PATH/../PF-build.branch") - echo "Previous branch was:" $PRE_BRANCH - if [ ! "$BRANCH" == "$PRE_BRANCH" ] ; then - CLEAN_PF_FW_BUILD=1 - echo "$BRANCH" >| $SCRIPT_PATH/../PF-build.branch - fi - fi + BRANCH=$(git branch --show-current) + echo "Current branch is:" $BRANCH + if [ ! -f "$SCRIPT_PATH/../PF-build.branch" ]; then + echo "$BRANCH" >| $SCRIPT_PATH/../PF-build.branch + echo "created PF-build.branch file" + else + PRE_BRANCH=$(cat "$SCRIPT_PATH/../PF-build.branch") + echo "Previous branch was:" $PRE_BRANCH + if [ ! "$BRANCH" == "$PRE_BRANCH" ] ; then + CLEAN_PF_FW_BUILD=1 + echo "$BRANCH" >| $SCRIPT_PATH/../PF-build.branch + fi + fi fi #Set BUILD_ENV_PATH @@ -662,292 +668,324 @@ BUILD_PATH="$( pwd -P )" #Check git branch has changed if [ "$CLEAN_PF_FW_BUILD" == "1" ]; then - read -t 10 -p "Branch changed, cleaning Prusa-Firmware-build folder" - rm -r * + read -t 10 -p "Branch changed, cleaning Prusa-Firmware-build folder" + rm -r * else - echo "Nothing to clean up" + echo "Nothing to clean up" fi for v in ${VARIANTS[*]} do - VARIANT=$(basename "$v" ".h") - # Find firmware version in Configuration.h file and use it to generate the hex filename - FW=$(grep --max-count=1 "\bFW_VERSION\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d '"' -f2|sed 's/\.//g') - if [ -z "$BUILD" ] ; then - # Find build version in Configuration.h file and use it to generate the hex filename - BUILD=$(grep --max-count=1 "\bFW_COMMIT_NR\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d ' ' -f3) - else - # Find and replace build version in Configuration.h file - BUILD_ORG=$(grep --max-count=1 "\bFW_COMMIT_NR\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d ' ' -f3) - echo "Original build number: $BUILD_ORG" - sed -i -- "s/^#define FW_COMMIT_NR.*/#define FW_COMMIT_NR $BUILD/g" $SCRIPT_PATH/Firmware/Configuration.h - fi - # Check if the motherboard is an EINSY and if so only one hex file will generated - MOTHERBOARD=$(grep --max-count=1 "\bMOTHERBOARD\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3) - # Check development status - DEV_CHECK=$(grep --max-count=1 "\bFW_VERSION\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d '"' -f2|sed 's/\.//g'|cut -d '-' -f2) - if [ -z "$DEV_STATUS_SELECTED" ] ; then - if [[ "$DEV_CHECK" == *"RC"* ]] ; then - DEV_STATUS="RC" - elif [[ "$DEV_CHECK" == "ALPHA" ]]; then - DEV_STATUS="ALPHA" - elif [[ "$DEV_CHECK" == "BETA" ]]; then - DEV_STATUS="BETA" - elif [[ "$DEV_CHECK" == "DEVEL" ]]; then - DEV_STATUS="DEVEL" - elif [[ "$DEV_CHECK" == "DEBUG" ]]; then - DEV_STATUS="DEBUG" - else - DEV_STATUS="UNKNOWN" - echo - echo "$(tput setaf 5)DEV_STATUS is UNKNOWN. Do you wish to set DEV_STATUS to GOLD?$(tput sgr0)" - PS3="Select YES only if source code is tested and trusted: " - select yn in "Yes" "No"; do - case $yn in - Yes) - DEV_STATUS="GOLD" - DEV_STATUS_SELECTED="GOLD" - break - ;; - No) - DEV_STATUS="UNKNOWN" - DEV_STATUS_SELECTED="UNKNOWN" - break - ;; - *) - echo "$(tput setaf 1)This is not a valid DEV_STATUS$(tput sgr0)" - ;; - esac - done - fi - else - DEV_STATUS=$DEV_STATUS_SELECTED - fi - #Prepare hex files folders - if [ ! -d "$SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD" ]; then - mkdir -p $SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD || exit 28 - fi - OUTPUT_FOLDER="PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD" - - #Check if exactly the same hexfile already exists - if [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex" && "$LANGUAGES" == "ALL" ]]; then - echo "" - ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex | xargs -n1 basename - echo "$(tput setaf 6)This hex file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)" - if [ $OUTPUT == "1" ] ; then - read -t 10 -p "Press Enter to continue..." - fi - elif [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex" && "$LANGUAGES" == "EN_ONLY" ]]; then - echo "" - ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex | xargs -n1 basename - echo "$(tput setaf 6)This hex file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)" - if [ $OUTPUT == "1" ] ; then - read -t 10 -p "Press Enter to continue..." - fi - fi - if [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip" && "$LANGUAGES" == "ALL" ]]; then - echo "" - ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip | xargs -n1 basename - echo "$(tput setaf 6)This zip file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)" - if [ $OUTPUT == "1" ] ; then - read -t 10 -p "Press Enter to continue..." - fi - fi - - #List some useful data - echo "$(tput setaf 2)$(tput setab 7) " - echo "Variant :" $VARIANT - echo "Firmware :" $FW - echo "Build # :" $BUILD - echo "Dev Check :" $DEV_CHECK - echo "DEV Status :" $DEV_STATUS - echo "Motherboard:" $MOTHERBOARD - echo "Languages :" $LANGUAGES - echo "Hex-file Folder:" $OUTPUT_FOLDER - echo "$(tput sgr0)" + VARIANT=$(basename "$v" ".h") + PRINTER=$(grep --max-count=1 "\bPRINTER_TYPE\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3 | cut -d '_' -f2) + # Find firmware version in Configuration.h file and use it to generate the hex filename + FW=$(grep --max-count=1 "\bFW_VERSION\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d '"' -f2|sed 's/\.//g') + if [ -z "$BUILD" ] ; then + # Find build version in Configuration.h file and use it to generate the hex filename + BUILD=$(grep --max-count=1 "\bFW_COMMIT_NR\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d ' ' -f3) + else + # Find and replace build version in Configuration.h file + BUILD_ORG=$(grep --max-count=1 "\bFW_COMMIT_NR\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d ' ' -f3) + echo "Original build number: $BUILD_ORG" + sed -i -- "s/^#define FW_COMMIT_NR.*/#define FW_COMMIT_NR $BUILD/g" $SCRIPT_PATH/Firmware/Configuration.h + fi + # Check if the motherboard is an EINSY and if so only one hex file will generated + MOTHERBOARD=$(grep --max-count=1 "\bMOTHERBOARD\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3) + # Check development status + DEV_CHECK=$(grep --max-count=1 "\bFW_VERSION\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d '"' -f2|sed 's/\.//g'|cut -d '-' -f2) + if [ -z "$DEV_STATUS_SELECTED" ] ; then + if [[ "$DEV_CHECK" == *"RC"* ]] ; then + DEV_STATUS="RC" + elif [[ "$DEV_CHECK" == "ALPHA" ]]; then + DEV_STATUS="ALPHA" + elif [[ "$DEV_CHECK" == "BETA" ]]; then + DEV_STATUS="BETA" + elif [[ "$DEV_CHECK" == "DEVEL" ]]; then + DEV_STATUS="DEVEL" + elif [[ "$DEV_CHECK" == "DEBUG" ]]; then + DEV_STATUS="DEBUG" + else + DEV_STATUS="UNKNOWN" + echo + echo "$(tput setaf 5)DEV_STATUS is UNKNOWN. Do you wish to set DEV_STATUS to GOLD?$(tput sgr0)" + PS3="Select YES only if source code is tested and trusted: " + select yn in "Yes" "No"; do + case $yn in + Yes) + DEV_STATUS="GOLD" + DEV_STATUS_SELECTED="GOLD" + break + ;; + No) + DEV_STATUS="UNKNOWN" + DEV_STATUS_SELECTED="UNKNOWN" + break + ;; + *) + echo "$(tput setaf 1)This is not a valid DEV_STATUS$(tput sgr0)" + ;; + esac + done + fi + else + DEV_STATUS=$DEV_STATUS_SELECTED + fi + #Prepare hex files folders + if [ ! -d "$SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD" ]; then + mkdir -p $SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD || exit 28 + fi + OUTPUT_FOLDER="PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD" + + #Check if exactly the same hexfile already exists + if [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex" && "$LANGUAGES" == "ALL" ]]; then + echo "" + ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex | xargs -n1 basename + echo "$(tput setaf 6)This hex file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)" + if [ $OUTPUT == "1" ] ; then + read -t 10 -p "Press Enter to continue..." + fi + elif [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex" && "$LANGUAGES" == "EN_ONLY" ]]; then + echo "" + ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex | xargs -n1 basename + echo "$(tput setaf 6)This hex file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)" + if [ $OUTPUT == "1" ] ; then + read -t 10 -p "Press Enter to continue..." + fi + fi + if [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip" && "$LANGUAGES" == "ALL" ]]; then + echo "" + ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip | xargs -n1 basename + echo "$(tput setaf 6)This zip file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)" + if [ $OUTPUT == "1" ] ; then + read -t 10 -p "Press Enter to continue..." + fi + fi + + #List some useful data + echo "$(tput setaf 2)$(tput setab 7) " + echo "Printer :" $PRINTER + echo "Variant :" $VARIANT + echo "Firmware :" $FW + echo "Build # :" $BUILD + echo "Dev Check :" $DEV_CHECK + echo "DEV Status :" $DEV_STATUS + echo "Motherboard:" $MOTHERBOARD + echo "Languages :" $LANGUAGES + echo "Hex-file Folder:" $OUTPUT_FOLDER + echo "$(tput sgr0)" - #Prepare Firmware to be compiled by copying variant as Configuration_prusa.h - if [ ! -f "$SCRIPT_PATH/Firmware/Configuration_prusa.h" ]; then - cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 29 - else - echo "$(tput setaf 6)Configuration_prusa.h already exist it will be overwritten in 10 seconds by the chosen variant.$(tput sgr 0)" - if [ $OUTPUT == "1" ] ; then - read -t 10 -p "Press Enter to continue..." - fi - cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 29 - fi + #Prepare Firmware to be compiled by copying variant as Configuration_prusa.h + if [ ! -f "$SCRIPT_PATH/Firmware/Configuration_prusa.h" ]; then + cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 29 + else + echo "$(tput setaf 6)Configuration_prusa.h already exist it will be overwritten in 10 seconds by the chosen variant.$(tput sgr 0)" + if [ $OUTPUT == "1" ] ; then + read -t 10 -p "Press Enter to continue..." + fi + cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 29 + fi - #Prepare Configuration.h to use the correct FW_DEV_VERSION to prevent LCD messages when connecting with OctoPrint - sed -i -- "s/#define FW_DEV_VERSION FW_VERSION_UNKNOWN/#define FW_DEV_VERSION FW_VERSION_$DEV_STATUS/g" $SCRIPT_PATH/Firmware/Configuration.h + #Prepare Configuration.h to use the correct FW_DEV_VERSION to prevent LCD messages when connecting with OctoPrint + sed -i -- "s/#define FW_DEV_VERSION FW_VERSION_UNKNOWN/#define FW_DEV_VERSION FW_VERSION_$DEV_STATUS/g" $SCRIPT_PATH/Firmware/Configuration.h - # set FW_REPOSITORY - sed -i -- 's/#define FW_REPOSITORY "Unknown"/#define FW_REPOSITORY "Prusa3d"/g' $SCRIPT_PATH/Firmware/Configuration.h + # set FW_REPOSITORY + sed -i -- 's/#define FW_REPOSITORY "Unknown"/#define FW_REPOSITORY "Prusa3d"/g' $SCRIPT_PATH/Firmware/Configuration.h - #Prepare English only or multi-language version to be build - if [ $LANGUAGES == "EN_ONLY" ]; then - echo " " - echo "English only language firmware will be built" - sed -i -- "s/^#define LANG_MODE *1/#define LANG_MODE 0/g" $SCRIPT_PATH/Firmware/config.h - echo " " - else - echo " " - echo "Multi-language firmware will be built" - sed -i -- "s/^#define LANG_MODE *0/#define LANG_MODE 1/g" $SCRIPT_PATH/Firmware/config.h - echo " " - fi - - #Check if compiler flags are set to Prusa specific needs for the rambo board. -# if [ $TARGET_OS == "windows" ]; then -# RAMBO_PLATFORM_FILE="PrusaResearchRambo/avr/platform.txt" -# fi - - #### End of Prepare building - - #### Start building - - export ARDUINO=$BUILD_ENV_PATH - #echo $BUILD_ENV_PATH - #export BUILDER=$ARDUINO/arduino-builder + #Prepare English only or multi-language version to be build + if [ $LANGUAGES == "EN_ONLY" ]; then + echo " " + echo "English only language firmware will be built" + sed -i -- "s/^#define LANG_MODE *1/#define LANG_MODE 0/g" $SCRIPT_PATH/Firmware/config.h + echo " " + else + echo " " + echo "Multi-language firmware will be built" + sed -i -- "s/^#define LANG_MODE *0/#define LANG_MODE 1/g" $SCRIPT_PATH/Firmware/config.h + echo " " + fi + + #Check if compiler flags are set to Prusa specific needs for the rambo board. +# if [ $TARGET_OS == "windows" ]; then +# RAMBO_PLATFORM_FILE="PrusaResearchRambo/avr/platform.txt" +# fi + + #### End of Prepare building + + #### Start building + + export ARDUINO=$BUILD_ENV_PATH + #echo $BUILD_ENV_PATH + #export BUILDER=$ARDUINO/arduino-builder - echo - #read -t 5 -p "Press Enter..." - echo + echo + #read -t 5 -p "Press Enter..." + echo - echo "Start to build Prusa Firmware ..." - echo "Using variant $VARIANT$(tput setaf 3)" - if [ $OUTPUT == "1" ] ; then - sleep 2 - fi + echo "Start to build Prusa Firmware ..." + echo "Using variant $VARIANT$(tput setaf 3)" + if [ $OUTPUT == "1" ] ; then + sleep 2 + fi - #New fresh PF-Firmware-build - if [ "$new_build_flag" == "1" ]; then - rm -r -f $BUILD_PATH/* || exit 36 - fi + #New fresh PF-Firmware-build + if [ "$new_build_flag" == "1" ]; then + rm -r -f $BUILD_PATH/* || exit 36 + fi - #$BUILD_ENV_PATH/arduino-builder -dump-prefs -debug-level 10 -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 14 - $BUILD_ENV_PATH/arduino-builder -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 30 - echo "$(tput sgr 0)" + #$BUILD_ENV_PATH/arduino-builder -dump-prefs -debug-level 10 -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 14 + $BUILD_ENV_PATH/arduino-builder -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 30 + echo "$(tput sgr 0)" - if [ $LANGUAGES == "ALL" ]; then - echo "$(tput setaf 2)" + if [ $LANGUAGES == "ALL" ]; then + echo "$(tput setaf 2)" - echo "Building multi language firmware" $MULTI_LANGUAGE_CHECK - echo "$(tput sgr 0)" - if [ $OUTPUT == "1" ] ; then - sleep 2 - fi - cd $SCRIPT_PATH/lang - echo "$(tput setaf 3)" - ./config.sh || exit 31 - echo "$(tput sgr 0)" - # Check if previous languages and firmware build exist and if so clean them up - if [ -f "lang_en.tmp" ]; then - echo "" - echo "$(tput setaf 6)Previous lang build files already exist these will be cleaned up in 10 seconds.$(tput sgr 0)" - if [ $OUTPUT == "1" ] ; then - read -t 10 -p "Press Enter to continue..." - fi - echo "$(tput setaf 3)" - ./lang-clean.sh - echo "$(tput sgr 0)" - fi - if [ -f "progmem.out" ]; then - echo "" - echo "$(tput setaf 6)Previous firmware build files already exist these will be cleaned up in 10 seconds.$(tput sgr 0)" - if [ $OUTPUT == "1" ] ; then - read -t 10 -p "Press Enter to continue..." - fi - echo "$(tput setaf 3)" - ./fw-clean.sh - echo "$(tput sgr 0)" - fi - # build languages - echo "$(tput setaf 3)" - ./lang-build.sh || exit 32 - # Combine compiled firmware with languages - ./fw-build.sh || exit 33 - cp not_tran.txt not_tran_$VARIANT.txt - cp not_used.txt not_used_$VARIANT.txt - echo "$(tput sgr 0)" - # Check if the motherboard is an EINSY and if so only one hex file will generated - MOTHERBOARD=$(grep --max-count=1 "\bMOTHERBOARD\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3) - # If the motherboard is an EINSY just copy one hexfile - if [ "$MOTHERBOARD" = "BOARD_EINSY_1_0a" ]; then - echo "$(tput setaf 2)Copying multi language firmware for MK3/Einsy board to PF-build-hex folder$(tput sgr 0)" - cp -f firmware.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex - else - echo "$(tput setaf 2)Zip multi language firmware for MK2.5/miniRAMbo board to PF-build-hex folder$(tput sgr 0)" - cp -f firmware_cz.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-cz.hex - cp -f firmware_de.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-de.hex - cp -f firmware_es.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-es.hex - cp -f firmware_fr.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-fr.hex - cp -f firmware_it.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-it.hex - cp -f firmware_pl.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-pl.hex - if [ $TARGET_OS == "windows" ]; then - zip a $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex - rm $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex - elif [ $TARGET_OS == "linux" ]; then - zip -m -j ../../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip ../../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex - fi - fi - # Cleanup after build - if [[ -z "$clean_flag" || "$clean_flag" == "0" ]]; then - echo "$(tput setaf 3)" - ./fw-clean.sh || exit 34 - ./lang-clean.sh || exit 35 - echo "$(tput sgr 0)" - fi - else - echo "$(tput setaf 2)Copying English only firmware to PF-build-hex folder$(tput sgr 0)" - cp -f $BUILD_PATH/Firmware.ino.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex || exit 34 - fi + echo "Building multi language firmware" $MULTI_LANGUAGE_CHECK + echo "$(tput sgr 0)" + if [ $OUTPUT == "1" ] ; then + sleep 2 + fi + cd $SCRIPT_PATH/lang + echo "$(tput setaf 3)" + ./config.sh || exit 31 + echo "$(tput sgr 0)" + # Check if previous languages and firmware build exist and if so clean them up + if [ -f "lang_en.tmp" ]; then + echo "" + echo "$(tput setaf 6)Previous lang build files already exist these will be cleaned up in 10 seconds.$(tput sgr 0)" + if [ $OUTPUT == "1" ] ; then + read -t 10 -p "Press Enter to continue..." + fi + echo "$(tput setaf 3)" + ./lang-clean.sh + echo "$(tput sgr 0)" + fi + if [ -f "progmem.out" ]; then + echo "" + echo "$(tput setaf 6)Previous firmware build files already exist these will be cleaned up in 10 seconds.$(tput sgr 0)" + if [ $OUTPUT == "1" ] ; then + read -t 10 -p "Press Enter to continue..." + fi + echo "$(tput setaf 3)" + ./fw-clean.sh + echo "$(tput sgr 0)" + fi + # build languages + echo "$(tput setaf 3)" + ./lang-build.sh || exit 32 + # Combine compiled firmware with languages + ./fw-build.sh || exit 33 + cp not_tran.txt not_tran_$VARIANT.txt + cp not_used.txt not_used_$VARIANT.txt + echo "$(tput sgr 0)" + # Check if the motherboard is an EINSY and if so only one hex file will generated + MOTHERBOARD=$(grep --max-count=1 "\bMOTHERBOARD\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3) + # If the motherboard is an EINSY just copy one hexfile + if [ "$MOTHERBOARD" = "BOARD_EINSY_1_0a" ]; then + echo "$(tput setaf 2)Copying multi language firmware for MK3/Einsy board to PF-build-hex folder$(tput sgr 0)" + cp -f firmware.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex + else + echo "$(tput setaf 2)Zip multi language firmware for MK2.5/miniRAMbo board to PF-build-hex folder$(tput sgr 0)" + cp -f firmware_cz.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-cz.hex + cp -f firmware_de.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-de.hex + cp -f firmware_es.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-es.hex + cp -f firmware_fr.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-fr.hex + cp -f firmware_it.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-it.hex + cp -f firmware_pl.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-pl.hex + if [ $TARGET_OS == "windows" ]; then + zip a $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex + rm $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex + elif [ $TARGET_OS == "linux" ]; then + if [ ! -z "$mk404_flag" ]; then + cp -f firmware_de.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex + fi + zip -m -j ../../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip ../../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex + fi + fi + # Cleanup after build + if [[ -z "$clean_flag" || "$clean_flag" == "0" ]]; then + echo "$(tput setaf 3)" + ./fw-clean.sh || exit 34 + ./lang-clean.sh || exit 35 + echo "$(tput sgr 0)" + fi + else + echo "$(tput setaf 2)Copying English only firmware to PF-build-hex folder$(tput sgr 0)" + cp -f $BUILD_PATH/Firmware.ino.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex || exit 34 + fi - # Cleanup Firmware - if [[ -z "$prusa_flag" || "$prusa_flag" == "0" ]]; then - rm $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 36 - fi - if find $SCRIPT_PATH/lang/ -name '*RAMBo10a*.txt' -printf 1 -quit | grep -q 1 - then - rm $SCRIPT_PATH/lang/*RAMBo10a*.txt - fi - if find $SCRIPT_PATH/lang/ -name '*MK2-RAMBo13a*' -printf 1 -quit | grep -q 1 - then - rm $SCRIPT_PATH/lang/*MK2-RAMBo13a*.txt - fi - if find $SCRIPT_PATH/lang/ -name 'not_tran.txt' -printf 1 -quit | grep -q 1 - then - rm $SCRIPT_PATH/lang/not_tran.txt - fi - if find $SCRIPT_PATH/lang/ -name 'not_used.txt' -printf 1 -quit | grep -q 1 - then - rm $SCRIPT_PATH/lang/not_used.txt - fi + # Cleanup Firmware + if [[ -z "$prusa_flag" || "$prusa_flag" == "0" ]]; then + rm $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 36 + fi + if find $SCRIPT_PATH/lang/ -name '*RAMBo10a*.txt' -printf 1 -quit | grep -q 1 + then + rm $SCRIPT_PATH/lang/*RAMBo10a*.txt + fi + if find $SCRIPT_PATH/lang/ -name '*MK2-RAMBo13a*' -printf 1 -quit | grep -q 1 + then + rm $SCRIPT_PATH/lang/*MK2-RAMBo13a*.txt + fi + if find $SCRIPT_PATH/lang/ -name 'not_tran.txt' -printf 1 -quit | grep -q 1 + then + rm $SCRIPT_PATH/lang/not_tran.txt + fi + if find $SCRIPT_PATH/lang/ -name 'not_used.txt' -printf 1 -quit | grep -q 1 + then + rm $SCRIPT_PATH/lang/not_used.txt + fi - #New fresh PF-Firmware-build - if [ "$new_build_flag" == "1" ]; then - rm -r -f $BUILD_PATH/* || exit 36 - fi + #New fresh PF-Firmware-build + if [ "$new_build_flag" == "1" ]; then + rm -r -f $BUILD_PATH/* || exit 36 + fi - # Restore files to previous state - sed -i -- "s/^#define FW_DEV_VERSION FW_VERSION_$DEV_STATUS/#define FW_DEV_VERSION FW_VERSION_UNKNOWN/g" $SCRIPT_PATH/Firmware/Configuration.h - sed -i -- 's/^#define FW_REPOSITORY "Prusa3d"/#define FW_REPOSITORY "Unknown"/g' $SCRIPT_PATH/Firmware/Configuration.h - if [ ! -z "$BUILD_ORG" ] ; then - sed -i -- "s/^#define FW_COMMIT_NR.*/#define FW_COMMIT_NR $BUILD_ORG/g" $SCRIPT_PATH/Firmware/Configuration.h - fi - echo $MULTI_LANGUAGE_CHECK - #sed -i -- "s/^#define LANG_MODE * /#define LANG_MODE $MULTI_LANGUAGE_CHECK/g" $SCRIPT_PATH/Firmware/config.h - sed -i -- "s/^#define LANG_MODE *1/#define LANG_MODE ${MULTI_LANGUAGE_CHECK}/g" $SCRIPT_PATH/Firmware/config.h - sed -i -- "s/^#define LANG_MODE *0/#define LANG_MODE ${MULTI_LANGUAGE_CHECK}/g" $SCRIPT_PATH/Firmware/config.h - if [ $OUTPUT == "1" ] ; then - sleep 5 - fi + # Restore files to previous state + sed -i -- "s/^#define FW_DEV_VERSION FW_VERSION_$DEV_STATUS/#define FW_DEV_VERSION FW_VERSION_UNKNOWN/g" $SCRIPT_PATH/Firmware/Configuration.h + sed -i -- 's/^#define FW_REPOSITORY "Prusa3d"/#define FW_REPOSITORY "Unknown"/g' $SCRIPT_PATH/Firmware/Configuration.h + if [ ! -z "$BUILD_ORG" ] ; then + sed -i -- "s/^#define FW_COMMIT_NR.*/#define FW_COMMIT_NR $BUILD_ORG/g" $SCRIPT_PATH/Firmware/Configuration.h + fi + echo $MULTI_LANGUAGE_CHECK + #sed -i -- "s/^#define LANG_MODE * /#define LANG_MODE $MULTI_LANGUAGE_CHECK/g" $SCRIPT_PATH/Firmware/config.h + sed -i -- "s/^#define LANG_MODE *1/#define LANG_MODE ${MULTI_LANGUAGE_CHECK}/g" $SCRIPT_PATH/Firmware/config.h + sed -i -- "s/^#define LANG_MODE *0/#define LANG_MODE ${MULTI_LANGUAGE_CHECK}/g" $SCRIPT_PATH/Firmware/config.h + if [ $OUTPUT == "1" ] ; then + sleep 5 + fi done # Switch to hex path and list build files cd $SCRIPT_PATH -cd .. echo "$(tput setaf 2) " echo " " echo "Build done, please use Slic3rPE > 1.41.0 to upload the firmware" echo "more information how to flash firmware https://www.prusa3d.com/drivers/ $(tput sgr 0)" #### End building +ls +#### Run MK404 sim +if [ ! -z "$mk404_flag" ]; then +./MK404-build.sh + +if [ "$mk404_flag" == "2" ]; then + PRINTER="${PRINTER}MMU2" +fi + +if [ "$MOTHERBOARD" == "BOARD_RAMBO_MINI_1_3" ]; then + PRINTER="${PRINTER}_mR13" +fi + +if [ ! -z "$grafics_flag" ]; then + options="--colour-extrusion --extrusion Quad_HR -g " + if [ "$grafics_flag" == "1" ]; then + options="${options}lite" + else + options="${options}fancy" + fi + +fi +echo "Printer: $PRINTER" +echo "Options: $options" +cd ../MK404/build + +./MK404 Prusa_$PRINTER -s --terminal $options -f $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex +fi From be9f8e51577713bc9ae511ee3b0b081795882a7c Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sat, 13 Feb 2021 10:05:07 +0100 Subject: [PATCH 06/34] Add force recompile Added SD card builds --- MK404-build.sh | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/MK404-build.sh b/MK404-build.sh index 7a9cde51a..e17a8239a 100755 --- a/MK404-build.sh +++ b/MK404-build.sh @@ -16,11 +16,12 @@ # 11 Feb 2021, 3d-gussner, Optional flags to check for updates -while getopts c:u:?h flag +while getopts c:u:f:?h flag do case "${flag}" in c) check_flag=${OPTARG};; u) update_flag=${OPTARG};; + f) force_flag=${OPTARG};; ?) help_flag=1;; h) help_flag=1;; esac @@ -98,7 +99,9 @@ fi #### Set build environment SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )" MK404_URL="https://github.com/vintagepc/MK404.git" -MK404_PATH="$SCRIPT_PATH/../MK404" +MK404_owner="vintagepc" +MK404_project="MK404" +MK404_PATH="$SCRIPT_PATH/../MK404/master" MK404_BUILD_PATH="$MK404_PATH/build" @@ -111,6 +114,9 @@ echo "" echo "MK404 path :" $MK404_PATH if [ ! -d $MK404_PATH ]; then + #release_url=$(curl -Ls -o /dev/null -w %{url_effective} https://github.com/$MK404_owner/$MK404_project/releases/latest) + #release_tag=$(basename $release_url) + #git clone -b $release_tag -- https://github.com/$MK404_owner/$MK404_project.git $MK404_PATH git clone $MK404_URL $MK404_PATH fi @@ -120,15 +126,22 @@ fi mkdir -p $MK404_BUILD_PATH -if [ ! -f "$MK404_BUILD_PATH/Makefile" ]; then - cmake -B $MK404_BUILD_PATH +if [[ ! -f "$MK404_BUILD_PATH/Makefile" || "$force_flag" == "1" ]]; then + cmake -B$MK404_BUILD_PATH -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" fi cd $MK404_BUILD_PATH -if [ ! -f "$MK404_BUILD_PATH/MK404" ]; then +if [[ ! -f "$MK404_BUILD_PATH/MK404" || "$force_flag" == "1" ]]; then make fi +if [[ ! -f "$MK404_BUILD_PATH/Prusa_MK3S_SDcard.bin" || "$force_flag" == "1" ]]; then + cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3S_SDcard.bin + cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3_SDcard.bin + cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK25_13_SDcard.bin + cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK25S_13_SDcard.bin +fi + if [ "$check_flag" == "1" ]; then current_version=$( command ./MK404 --version | grep "MK404" | cut -f 4 -d " ") echo "Current version: $current_version" From bf331988662e8e07d8fa6622133ba19e001e45a7 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sat, 13 Feb 2021 10:35:34 +0100 Subject: [PATCH 07/34] Add copy of MK3 and MK3S `lang.bin` files to MK404 `*_xflash.bin` Minor changes: - Indentations - Documentation --- MK404-build.sh | 18 ++++++++++++------ PF-build.sh | 48 ++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 50 insertions(+), 16 deletions(-) diff --git a/MK404-build.sh b/MK404-build.sh index e17a8239a..aaddeae1a 100755 --- a/MK404-build.sh +++ b/MK404-build.sh @@ -10,11 +10,12 @@ # 3. Install latest updates with 'sudo apt-get upgrade' # 4. # -# Version: 0.1-Build_1 +# Version: 0.1-Build_3 # Change log: # 11 Feb 2021, 3d-gussner, Inital # 11 Feb 2021, 3d-gussner, Optional flags to check for updates - +# 12 Feb 2021, 3d-gussner, Update cmake +# 13 Feb 2021, 3d-gussner, Auto build SD cards while getopts c:u:f:?h flag do @@ -113,6 +114,7 @@ echo "OS type :" $TARGET_OS echo "" echo "MK404 path :" $MK404_PATH +# Clone MK404 if needed if [ ! -d $MK404_PATH ]; then #release_url=$(curl -Ls -o /dev/null -w %{url_effective} https://github.com/$MK404_owner/$MK404_project/releases/latest) #release_tag=$(basename $release_url) @@ -120,21 +122,24 @@ if [ ! -d $MK404_PATH ]; then git clone $MK404_URL $MK404_PATH fi - cd $MK404_PATH - git submodule init - git submodule update - +# Init and update submodules +cd $MK404_PATH +git submodule init +git submodule update +# Prepare MK404 mkdir -p $MK404_BUILD_PATH if [[ ! -f "$MK404_BUILD_PATH/Makefile" || "$force_flag" == "1" ]]; then cmake -B$MK404_BUILD_PATH -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" fi +# Make MK404 cd $MK404_BUILD_PATH if [[ ! -f "$MK404_BUILD_PATH/MK404" || "$force_flag" == "1" ]]; then make fi +# Make SDcards if [[ ! -f "$MK404_BUILD_PATH/Prusa_MK3S_SDcard.bin" || "$force_flag" == "1" ]]; then cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3S_SDcard.bin cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3_SDcard.bin @@ -142,6 +147,7 @@ if [[ ! -f "$MK404_BUILD_PATH/Prusa_MK3S_SDcard.bin" || "$force_flag" == "1" ]]; cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK25S_13_SDcard.bin fi +# Check for updates ... WIP if [ "$check_flag" == "1" ]; then current_version=$( command ./MK404 --version | grep "MK404" | cut -f 4 -d " ") echo "Current version: $current_version" diff --git a/PF-build.sh b/PF-build.sh index 57c49c698..556c4d5de 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -56,7 +56,7 @@ # Some may argue that this is only used by a script, BUT as soon someone accidentally or on purpose starts Arduino IDE # it will use the default Arduino IDE folders and so can corrupt the build environment. # -# Version: 1.0.6-Build_36 +# Version: 1.1.0-Build_39 # Change log: # 12 Jan 2019, 3d-gussner, Fixed "compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections" in 'platform.txt' # 16 Jan 2019, 3d-gussner, Build_2, Added development check to modify 'Configuration.h' to prevent unwanted LCD messages that Firmware is unknown @@ -138,6 +138,7 @@ # 27 Jan 2021, 3d-gussner, Add `-c`, `-p` and `-n` options # 12 Feb 2021, 3d-gussner, Add MK404-build.sh # 13 Feb 2021, 3d-gussner, Indentations +# 13 Feb 2021, 3d-gussner, MK404 improvements like "flash" MK3, MK3S languages files to MK404 xflash. #### Start check if OSTYPE is supported OS_FOUND=$( command -v uname) @@ -882,6 +883,11 @@ do # If the motherboard is an EINSY just copy one hexfile if [ "$MOTHERBOARD" = "BOARD_EINSY_1_0a" ]; then echo "$(tput setaf 2)Copying multi language firmware for MK3/Einsy board to PF-build-hex folder$(tput sgr 0)" + # Make a copy of "lang.bin" for MK404 MK3 and MK3S + if [ ! -z "$mk404_flag" ]; then + cp -f lang.bin $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-lang.bin + fi + # End of "lang.bin" for MK3 and MK3S copy cp -f firmware.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex else echo "$(tput setaf 2)Zip multi language firmware for MK2.5/miniRAMbo board to PF-build-hex folder$(tput sgr 0)" @@ -895,9 +901,11 @@ do zip a $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex rm $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex elif [ $TARGET_OS == "linux" ]; then + # Make a copy for MK404 sim of MK2, MK2.5, MK2.5S firmware if [ ! -z "$mk404_flag" ]; then cp -f firmware_de.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex fi + # End of MK2, MK2.5, MK2.5S firmware copy zip -m -j ../../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip ../../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex fi fi @@ -961,31 +969,51 @@ echo " " echo "Build done, please use Slic3rPE > 1.41.0 to upload the firmware" echo "more information how to flash firmware https://www.prusa3d.com/drivers/ $(tput sgr 0)" #### End building -ls -#### Run MK404 sim + + +#### MK404 Simulator + +# Check/compile MK404 sim if [ ! -z "$mk404_flag" ]; then ./MK404-build.sh +# Check if MMU2 is selected if [ "$mk404_flag" == "2" ]; then PRINTER="${PRINTER}MMU2" fi +# For Prusa MK2, MK2.5 and MK2.5S if [ "$MOTHERBOARD" == "BOARD_RAMBO_MINI_1_3" ]; then PRINTER="${PRINTER}_mR13" fi +# Run MK404 with grafics if [ ! -z "$grafics_flag" ]; then - options="--colour-extrusion --extrusion Quad_HR -g " + MK404_options="--colour-extrusion --extrusion Quad_HR -g " if [ "$grafics_flag" == "1" ]; then - options="${options}lite" + options="${MK404_options}lite" else - options="${options}fancy" + options="${MK404_options}fancy" fi fi -echo "Printer: $PRINTER" -echo "Options: $options" -cd ../MK404/build -./MK404 Prusa_$PRINTER -s --terminal $options -f $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex +# Output some useful data +echo "Printer: $PRINTER" +echo "Options: $MK404_options" + +# Change to MK404 build folder +cd ../MK404/master/build + +# Copy language bin file for MK3 and MK3S to xflash +if [ -f $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-lang.bin ]; then +echo "Copy 'FW$FW-Build$BUILD-$VARIANT-lang.bin' to 'Prusa_${PRINTER}_xflash.bin'" + dd if=/dev/zero bs=1 count=262145 | tr "\000" "\377" >Prusa_${PRINTER}_xflash.bin + dd if=$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-lang.bin of=Prusa_${PRINTER}_xflash.bin conv=notrunc fi + +# Start MK404 +# default with serial output and terminal to manipulate it via terminal +./MK404 Prusa_$PRINTER -s --terminal $MK404_options -f $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex +fi +#### End of MK404 Simulator \ No newline at end of file From 1550e707be5ea5e47adcf47cf8c210890f88f7c9 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sun, 14 Feb 2021 00:18:24 +0100 Subject: [PATCH 08/34] Fix few issues Create MMU2 SDcards MMU2 only for MK3/S --- MK404-build.sh | 8 +++++--- PF-build.sh | 20 +++++++++----------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/MK404-build.sh b/MK404-build.sh index aaddeae1a..8ed1e6b9b 100755 --- a/MK404-build.sh +++ b/MK404-build.sh @@ -98,17 +98,17 @@ fi #### End Check MK404 dependencies #### Set build environment -SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )" +MK404_SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )" MK404_URL="https://github.com/vintagepc/MK404.git" MK404_owner="vintagepc" MK404_project="MK404" -MK404_PATH="$SCRIPT_PATH/../MK404/master" +MK404_PATH="$MK404_SCRIPT_PATH/../MK404/master" MK404_BUILD_PATH="$MK404_PATH/build" # List few useful data echo -echo "Script path :" $SCRIPT_PATH +echo "Script path :" $MK404_SCRIPT_PATH echo "OS :" $OS echo "OS type :" $TARGET_OS echo "" @@ -145,6 +145,8 @@ if [[ ! -f "$MK404_BUILD_PATH/Prusa_MK3S_SDcard.bin" || "$force_flag" == "1" ]]; cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3_SDcard.bin cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK25_13_SDcard.bin cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK25S_13_SDcard.bin + cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3SMMU2_SDcard.bin + cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3MMU2_SDcard.bin fi # Check for updates ... WIP diff --git a/PF-build.sh b/PF-build.sh index 556c4d5de..f139de8dc 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -467,7 +467,7 @@ while getopts v:l:d:b:o:c:p:n:m:g:?h flag p) prusa_flag=${OPTARG};; n) new_build_flag=${OPTARG};; m) mk404_flag=${OPTARG};; - g) grafics_flag=${OPTARG};; + g) graphics_flag=${OPTARG};; ?) help_flag=1;; h) help_flag=1;; esac @@ -977,23 +977,21 @@ echo "more information how to flash firmware https://www.prusa3d.com/drivers/ $( if [ ! -z "$mk404_flag" ]; then ./MK404-build.sh -# Check if MMU2 is selected -if [ "$mk404_flag" == "2" ]; then +# For Prusa MK2, MK2.5/S +if [ "$MOTHERBOARD" == "BOARD_RAMBO_MINI_1_3" ]; then + PRINTER="${PRINTER}_mR13" +elif [ "$mk404_flag" == "2" ]; then # Check if MMU2 is selected only for MK3/S PRINTER="${PRINTER}MMU2" fi -# For Prusa MK2, MK2.5 and MK2.5S -if [ "$MOTHERBOARD" == "BOARD_RAMBO_MINI_1_3" ]; then - PRINTER="${PRINTER}_mR13" -fi # Run MK404 with grafics -if [ ! -z "$grafics_flag" ]; then +if [ ! -z "$graphics_flag" ]; then MK404_options="--colour-extrusion --extrusion Quad_HR -g " - if [ "$grafics_flag" == "1" ]; then - options="${MK404_options}lite" + if [ "$graphics_flag" == "1" ]; then + MK404_options="${MK404_options}lite" else - options="${MK404_options}fancy" + MK404_options="${MK404_options}fancy" fi fi From 4e6fd2a92d81c694bc2cec8bfa0dc69df92e4b79 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Wed, 17 Mar 2021 18:42:39 +0100 Subject: [PATCH 09/34] fix merge issue 2 --- lang/po/new/cs.po | 1850 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1850 insertions(+) diff --git a/lang/po/new/cs.po b/lang/po/new/cs.po index 51d01b066..40a9bca89 100644 --- a/lang/po/new/cs.po +++ b/lang/po/new/cs.po @@ -1,3 +1,1852 @@ +<<<<<<< HEAD +# Translation of Prusa-Firmware into Czech. +# +msgid "" +msgstr "" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: cs\n" +"Project-Id-Version: Prusa-Firmware\n" +"POT-Creation-Date: Wed May 13 17:41:02 CEST 2020\n" +"PO-Revision-Date: Wed May 13 17:41:02 CEST 2020\n" +"Language-Team: \n" +"X-Generator: Poedit 2.0.7\n" +"X-Poedit-SourceCharset: UTF-8\n" +"Last-Translator: \n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +# +#: +msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset" +msgstr "[%.7s]Doladeni Z\x0auz nastaveno, pouzit\x0anebo reset od nuly?\x0a%cPokracovat%cReset" + +# MSG_03_OR_OLDER c=18 +#: messages.c:144 +msgid " 0.3 or older" +msgstr " 0.3 nebo starsi" + +# MSG_04_OR_NEWER c=18 +#: messages.c:143 +msgid " 0.4 or newer" +msgstr " 0.4 nebo novejsi" + +# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14 +#: messages.c:36 +msgid " of 4" +msgstr " z 4" + +# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14 +#: messages.c:56 +msgid " of 9" +msgstr " z 9" + +# MSG_MEASURED_OFFSET +#: ultralcd.cpp:3064 +msgid "[0;0] point offset" +msgstr "[0;0] odsazeni bodu" + +# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4 +#: +msgid "Crash detection can\x0abe turned on only in\x0aNormal mode" +msgstr "Crash detekce muze\x0abyt zapnuta pouze v\x0aNormal modu" + +# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4 +#: +msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode" +msgstr "POZOR:\x0aCrash detekce\x0adeaktivovana ve\x0aStealth modu" + +# +#: ultralcd.cpp:2460 +msgid ">Cancel" +msgstr ">Zrusit" + +# MSG_BABYSTEPPING_Z c=15 +#: ultralcd.cpp:3184 +msgid "Adjusting Z:" +msgstr "Doladeni Z:" + +# MSG_SELFTEST_CHECK_ALLCORRECT c=20 +#: ultralcd.cpp:8677 +msgid "All correct " +msgstr "Vse OK " + +# MSG_WIZARD_DONE c=20 r=8 +#: messages.c:99 +msgid "All is done. Happy printing!" +msgstr "Vse je hotovo." + +# +#: ultralcd.cpp:1956 +msgid "Ambient" +msgstr "Okoli" + +# MSG_AUTO c=6 +#: messages.c:140 +msgid "Auto" +msgstr "" + +# MSG_PRESS c=20 r=2 +#: ultralcd.cpp:2609 +msgid "and press the knob" +msgstr "a stisknete tlacitko" + +# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2 +#: ultralcd.cpp:3506 +msgid "Are left and right Z~carriages all up?" +msgstr "Dojely oba Z voziky k~hornimu dorazu?" + +# MSG_AUTO_DEPLETE c=17 r=1 +#: messages.c:108 +msgid "SpoolJoin" +msgstr "" + +# MSG_AUTO_HOME +#: messages.c:11 +msgid "Auto home" +msgstr "" + +# MSG_AUTOLOAD_FILAMENT c=18 +#: ultralcd.cpp:6961 +msgid "AutoLoad filament" +msgstr "AutoZavedeni fil." + +# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4 +#: ultralcd.cpp:4445 +msgid "Autoloading filament available only when filament sensor is turned on..." +msgstr "Automaticke zavadeni filamentu je mozne pouze pri zapnutem filament senzoru..." + +# MSG_AUTOLOADING_ENABLED c=20 r=4 +#: ultralcd.cpp:2804 +msgid "Autoloading filament is active, just press the knob and insert filament..." +msgstr "Automaticke zavadeni filamentu aktivni, stisknete tlacitko a vlozte filament..." + +# MSG_SELFTEST_AXIS_LENGTH +#: ultralcd.cpp:8325 +msgid "Axis length" +msgstr "Delka osy" + +# MSG_SELFTEST_AXIS +#: ultralcd.cpp:8327 +msgid "Axis" +msgstr "Osa" + +# MSG_SELFTEST_BEDHEATER +#: ultralcd.cpp:8269 +msgid "Bed / Heater" +msgstr "Podlozka / Topeni" + +# MSG_BED_DONE +#: messages.c:15 +msgid "Bed done" +msgstr "Bed OK." + +# MSG_BED_HEATING +#: messages.c:16 +msgid "Bed Heating" +msgstr "Zahrivani bedu" + +# MSG_BED_CORRECTION_MENU +#: ultralcd.cpp:5861 +msgid "Bed level correct" +msgstr "Korekce podlozky" + +# MSG_BELTTEST c=17 +#: ultralcd.cpp:5841 +msgid "Belt test " +msgstr "Test remenu " + +# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5 +#: messages.c:17 +msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset." +msgstr "Kalibrace Z selhala. Sensor nesepnul. Znecistena tryska? Cekam na reset." + +# MSG_BRIGHT c=6 +#: messages.c:138 +msgid "Bright" +msgstr "Jasny" + +# MSG_BRIGHTNESS c=18 +#: messages.c:134 +msgid "Brightness" +msgstr "Podsviceni" + +# MSG_BED +#: messages.c:14 +msgid "Bed" +msgstr "Podlozka" + +# MSG_MENU_BELT_STATUS c=18 +#: ultralcd.cpp:2009 +msgid "Belt status" +msgstr "Stav remenu" + +# MSG_RECOVER_PRINT c=20 r=2 +#: messages.c:67 +msgid "Blackout occurred. Recover print?" +msgstr "Detekovan vypadek proudu.Obnovit tisk?" + +# +#: ultralcd.cpp:8679 +msgid "Calibrating home" +msgstr "Kalibruji vychozi poz." + +# MSG_CALIBRATE_BED +#: ultralcd.cpp:5850 +msgid "Calibrate XYZ" +msgstr "Kalibrace XYZ" + +# MSG_HOMEYZ +#: messages.c:44 +msgid "Calibrate Z" +msgstr "Kalibrovat Z" + +# MSG_CALIBRATE_PINDA c=17 r=1 +#: ultralcd.cpp:4637 +msgid "Calibrate" +msgstr "Zkalibrovat" + +# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8 +#: ultralcd.cpp:3469 +msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." +msgstr "Kalibrace XYZ. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem." + +# MSG_CALIBRATE_Z_AUTO c=20 r=2 +#: messages.c:19 +msgid "Calibrating Z" +msgstr "Kalibruji Z" + +# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8 +#: ultralcd.cpp:3469 +msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done." +msgstr "Kalibrace Z. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem." + +# MSG_HOMEYZ_DONE +#: ultralcd.cpp:865 +msgid "Calibration done" +msgstr "Kalibrace OK" + +# MSG_MENU_CALIBRATION +#: messages.c:57 +msgid "Calibration" +msgstr "Kalibrace" + +# +#: ultralcd.cpp:4815 +msgid "Cancel" +msgstr "Zrusit" + +# MSG_SD_REMOVED +#: ultralcd.cpp:9090 +msgid "Card removed" +msgstr "Karta vyjmuta" + +# MSG_NOT_COLOR +#: ultralcd.cpp:2709 +msgid "Color not correct" +msgstr "Barva neni cista" + +# MSG_COOLDOWN +#: messages.c:22 +msgid "Cooldown" +msgstr "Zchladit" + +# +#: ultralcd.cpp:4570 +msgid "Copy selected language?" +msgstr "Kopirovat vybrany jazyk?" + +# MSG_CRASHDETECT c=13 +#: messages.c:24 +msgid "Crash det." +msgstr "" + +# +#: ultralcd.cpp:4950 +msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu." +msgstr "Zvolte filament pro kalibraci prvni vrstvy z nasledujiciho menu" + +# MSG_CRASH_DETECTED c=20 r=1 +#: messages.c:23 +msgid "Crash detected." +msgstr "Detekovan naraz." + +# +#: Marlin_main.cpp:607 +msgid "Crash detected. Resume print?" +msgstr "Detekovan naraz. Obnovit tisk?" + +# +#: ultralcd.cpp:1785 +msgid "Crash" +msgstr "Naraz" + +# MSG_CURRENT c=19 r=1 +#: ultralcd.cpp:6002 +msgid "Current" +msgstr "Pouze aktualni" + +# MSG_DATE c=17 r=1 +#: ultralcd.cpp:2163 +msgid "Date:" +msgstr "Datum:" + +# MSG_DISABLE_STEPPERS +#: ultralcd.cpp:5743 +msgid "Disable steppers" +msgstr "Vypnout motory" + +# MSG_BABYSTEP_Z_NOT_SET c=20 r=12 +#: messages.c:13 +msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration." +msgstr "Neni zkalibrovana vzdalenost trysky od tiskove podlozky. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Nastaveni prvni vrstvy." + +# MSG_FS_CONTINUE c=5 +#: messages.c:132 +msgid "Cont." +msgstr "Pokr." + +# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7 +#: ultralcd.cpp:5125 +msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?" +msgstr "Chcete opakovat posledni krok a pozmenit vzdalenost mezi tryskou a podlozkou?" + +# MSG_EXTRUDER_CORRECTION c=13 +#: ultralcd.cpp:5194 +msgid "E-correct:" +msgstr "Korekce E:" + +# MSG_EJECT_FILAMENT c=17 r=1 +#: messages.c:49 +msgid "Eject filament" +msgstr "Vysunout filament" + +# MSG_EJECTING_FILAMENT c=20 r=1 +#: mmu.cpp:1416 +msgid "Ejecting filament" +msgstr "Vysouvam filament" + +# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 +#: ultralcd.cpp:8293 +msgid "Endstop not hit" +msgstr "Kon. spinac nesepnut" + +# MSG_SELFTEST_ENDSTOP +#: ultralcd.cpp:8287 +msgid "Endstop" +msgstr "Koncovy spinac" + +# MSG_SELFTEST_ENDSTOPS +#: ultralcd.cpp:8275 +msgid "Endstops" +msgstr "Konc. spinace" + +# MSG_STACK_ERROR c=20 r=4 +#: ultralcd.cpp:6998 +msgid "Error - static memory has been overwritten" +msgstr "Chyba - Doslo k prepisu staticke pameti!" + +# MSG_CUT_FILAMENT c=16 +#: messages.c:50 +msgid "Cut filament" +msgstr "Ustrihnout" + +# MSG_CUTTER c=9 +#: messages.c:109 +msgid "Cutter" +msgstr "Strihani" + +# c=18 +#: mmu.cpp:1388 +msgid "Cutting filament" +msgstr "Strihani filamentu" + +# MSG_FSENS_NOT_RESPONDING c=20 r=4 +#: ultralcd.cpp:4458 +msgid "ERROR: Filament sensor is not responding, please check connection." +msgstr "CHYBA: Filament senzor nereaguje, zkontrolujte prosim zapojeni." + +# MSG_DIM c=6 +#: messages.c:139 +msgid "Dim" +msgstr "Temny" + +# MSG_ERROR +#: messages.c:25 +msgid "ERROR:" +msgstr "CHYBA:" + +# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18 +#: ultralcd.cpp:8686 +msgid "Extruder fan:" +msgstr "Levy vent.:" + +# MSG_INFO_EXTRUDER c=18 +#: ultralcd.cpp:2211 +msgid "Extruder info" +msgstr "" + +# MSG_MOVE_E +#: messages.c:26 +msgid "Extruder" +msgstr "" + +# +#: ultralcd.cpp:6985 +msgid "Fail stats MMU" +msgstr "Selhani MMU" + +# MSG_FSENSOR_AUTOLOAD c=13 +#: messages.c:40 +msgid "F. autoload" +msgstr "F. autozav." + +# +#: ultralcd.cpp:6982 +msgid "Fail stats" +msgstr "Selhani" + +# MSG_FAN_SPEED c=14 +#: messages.c:28 +msgid "Fan speed" +msgstr "Rychlost vent." + +# MSG_SELFTEST_FAN c=20 +#: messages.c:74 +msgid "Fan test" +msgstr "Test ventilatoru" + +# MSG_FANS_CHECK +#: ultralcd.cpp:5751 +msgid "Fans check" +msgstr "Kontr. vent." + +# MSG_FSENSOR +#: messages.c:41 +msgid "Fil. sensor" +msgstr "Fil. senzor" + +# c=14 +#: ultralcd.cpp:1784 +msgid "Filam. runouts" +msgstr "Vypadky filam." + +# MSG_FILAMENT_CLEAN c=20 r=2 +#: messages.c:29 +msgid "Filament extruding & with correct color?" +msgstr "Filament vytlacen a spravne barvy?" + +# MSG_NOT_LOADED c=19 +#: ultralcd.cpp:2705 +msgid "Filament not loaded" +msgstr "Filament nezaveden" + +# MSG_FILAMENT_SENSOR c=20 +#: messages.c:80 +msgid "Filament sensor" +msgstr "Senzor filamentu" + +# MSG_FILAMENT_USED c=19 +#: ultralcd.cpp:2869 +msgid "Filament used" +msgstr "Spotrebovano filam." + +# MSG_PRINT_TIME c=19 r=1 +#: ultralcd.cpp:2870 +msgid "Print time" +msgstr "Cas tisku" + +# MSG_FS_ACTION c=10 +#: messages.c:131 +msgid "FS Action" +msgstr "FS reakce" + +# c=18 +#: Marlin_main.cpp:9512 +msgid "FS v0.4 or newer" +msgstr "FS v0.4 a novejsi" + +# MSG_FILE_INCOMPLETE c=20 r=3 +#: ultralcd.cpp:8814 +msgid "File incomplete. Continue anyway?" +msgstr "Soubor nekompletni. Pokracovat?" + +# MSG_FINISHING_MOVEMENTS c=20 +#: messages.c:37 +msgid "Finishing movements" +msgstr "Dokoncovani pohybu" + +# MSG_V2_CALIBRATION c=18 +#: messages.c:103 +msgid "First layer cal." +msgstr "Kal. prvni vrstvy" + +# MSG_WIZARD_SELFTEST c=20 r=8 +#: ultralcd.cpp:5046 +msgid "First, I will run the selftest to check most common assembly problems." +msgstr "Nejdriv pomoci selftestu zkontoluji nejcastejsi chyby vznikajici pri sestaveni tiskarny." + +# +#: mmu.cpp:727 +msgid "Fix the issue and then press button on MMU unit." +msgstr "Opravte chybu a pote stisknete tlacitko na jednotce MMU." + +# MSG_FLOW +#: ultralcd.cpp:7125 +msgid "Flow" +msgstr "Prutok" + +# MSG_PRUSA3D_FORUM +#: ultralcd.cpp:2156 +msgid "forum.prusa3d.com" +msgstr "" + +# MSG_SELFTEST_COOLING_FAN c=20 +#: messages.c:71 +msgid "Front print fan?" +msgstr "Predni tiskovy vent?" + +# MSG_BED_CORRECTION_FRONT c=14 r=1 +#: ultralcd.cpp:3266 +msgid "Front side[um]" +msgstr "Vpredu [um]" + +# MSG_SELFTEST_FANS +#: ultralcd.cpp:8333 +msgid "Front/left fans" +msgstr "Predni/levy vent." + +# MSG_SELFTEST_HEATERTHERMISTOR +#: ultralcd.cpp:8263 +msgid "Heater/Thermistor" +msgstr "Topeni/Termistor" + +# MSG_BED_HEATING_SAFETY_DISABLED +#: Marlin_main.cpp:9440 +msgid "Heating disabled by safety timer." +msgstr "Zahrivani preruseno bezpecnostnim casovacem." + +# MSG_HEATING_COMPLETE c=20 +#: messages.c:43 +msgid "Heating done." +msgstr "Zahrivani OK." + +# MSG_HEATING +#: messages.c:42 +msgid "Heating" +msgstr "Zahrivani" + +# MSG_WIZARD_WELCOME c=20 r=7 +#: ultralcd.cpp:5025 +msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?" +msgstr "Dobry den, jsem vase tiskarna Original Prusa i3. Chcete abych Vas provedla kalibracnim procesem?" + +# MSG_PRUSA3D_HOWTO +#: ultralcd.cpp:2157 +msgid "howto.prusa3d.com" +msgstr "" + +# MSG_FILAMENTCHANGE +#: messages.c:34 +msgid "Change filament" +msgstr "Vymenit filament" + +# MSG_CHANGE_SUCCESS +#: ultralcd.cpp:2620 +msgid "Change success!" +msgstr "Zmena uspesna!" + +# MSG_CORRECTLY c=20 +#: ultralcd.cpp:2697 +msgid "Changed correctly?" +msgstr "Vymena ok?" + +# MSG_SELFTEST_CHECK_BED c=20 +#: messages.c:77 +msgid "Checking bed " +msgstr "Kontrola podlozky" + +# MSG_SELFTEST_CHECK_ENDSTOPS c=20 +#: ultralcd.cpp:8668 +msgid "Checking endstops" +msgstr "Kontrola endstopu" + +# MSG_SELFTEST_CHECK_HOTEND c=20 +#: ultralcd.cpp:8674 +msgid "Checking hotend " +msgstr "Kontrola hotend " + +# MSG_SELFTEST_CHECK_FSENSOR c=20 +#: messages.c:78 +msgid "Checking sensors " +msgstr "Kontrola senzoru" + +# MSG_SELFTEST_CHECK_X c=20 +#: ultralcd.cpp:7482 +msgid "Checking X axis " +msgstr "Kontrola osy X" + +# MSG_SELFTEST_CHECK_Y c=20 +#: ultralcd.cpp:7491 +msgid "Checking Y axis " +msgstr "Kontrola osy Y" + +# MSG_SELFTEST_CHECK_Z c=20 +#: ultralcd.cpp:8671 +msgid "Checking Z axis " +msgstr "Kontrola osy Z" + +# MSG_CHOOSE_EXTRUDER c=20 r=1 +#: messages.c:45 +msgid "Choose extruder:" +msgstr "Vyberte extruder:" + +# MSG_CHOOSE_FILAMENT c=20 r=1 +#: messages.c:46 +msgid "Choose filament:" +msgstr "Vyber filament:" + +# MSG_FILAMENT c=17 r=1 +#: messages.c:27 +msgid "Filament" +msgstr "" + +# MSG_WIZARD_XYZ_CAL c=20 r=8 +#: ultralcd.cpp:5055 +msgid "I will run xyz calibration now. It will take approx. 12 mins." +msgstr "Nyni provedu xyz kalibraci. Zabere to priblizne 12 min." + +# MSG_WIZARD_Z_CAL c=20 r=8 +#: ultralcd.cpp:5063 +msgid "I will run z calibration now." +msgstr "Nyni provedu z kalibraci." + +# MSG_WATCH +#: messages.c:97 +msgid "Info screen" +msgstr "Informace" + +# MSG_INSERT_FILAMENT c=20 +#: ultralcd.cpp:2605 +msgid "Insert filament" +msgstr "Vlozte filament" + +# MSG_WIZARD_FILAMENT_LOADED c=20 r=2 +#: ultralcd.cpp:4835 +msgid "Is filament loaded?" +msgstr "Je filament zaveden?" + +# MSG_STEEL_SHEET_CHECK c=20 r=2 +#: messages.c:90 +msgid "Is steel sheet on heatbed?" +msgstr "Je tiskovy plat na podlozce?" + +# +#: ultralcd.cpp:1727 +msgid "Last print failures" +msgstr "Selhani posl. tisku" + +# +#: ultralcd.cpp:5133 +msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets." +msgstr "Mate-li vice tiskovych platu, kalibrujte je v menu Nastaveni - HW nastaveni - Tiskove platy" + +# +#: ultralcd.cpp:1704 +msgid "Last print" +msgstr "Posledni tisk" + +# MSG_SELFTEST_EXTRUDER_FAN c=20 +#: messages.c:72 +msgid "Left hotend fan?" +msgstr "Levy vent na trysce?" + +# +#: ultralcd.cpp:2993 +msgid "Left" +msgstr "Vlevo" + +# MSG_BED_CORRECTION_LEFT c=14 r=1 +#: ultralcd.cpp:3264 +msgid "Left side [um]" +msgstr "Vlevo [um]" + +# +#: ultralcd.cpp:5766 +msgid "Lin. correction" +msgstr "Korekce lin." + +# MSG_BABYSTEP_Z +#: messages.c:12 +msgid "Live adjust Z" +msgstr "Doladeni osy Z" + +# c=20 r=6 +#: ultralcd.cpp:7527 +msgid "Insert the filament (do not load it) into the extruder and then press the knob." +msgstr "Vlozte filament (nezavadejte) do extruderu a stisknete tlacitko" + +# MSG_LOAD_FILAMENT c=17 +#: messages.c:47 +msgid "Load filament" +msgstr "Zavest filament" + +# MSG_LOADING_COLOR +#: ultralcd.cpp:2645 +msgid "Loading color" +msgstr "Cisteni barvy" + +# MSG_LOADING_FILAMENT c=20 +#: messages.c:48 +msgid "Loading filament" +msgstr "Zavadeni filamentu" + +# MSG_LOOSE_PULLEY c=20 r=1 +#: ultralcd.cpp:8317 +msgid "Loose pulley" +msgstr "Uvolnena remenicka" + +# +#: ultralcd.cpp:6944 +msgid "Load to nozzle" +msgstr "Zavest do trysky" + +# MSG_M117_V2_CALIBRATION c=25 +#: messages.c:51 +msgid "M117 First layer cal." +msgstr "M117 Kal. prvni vrstvy" + +# MSG_MAIN +#: messages.c:52 +msgid "Main" +msgstr "Hlavni nabidka" + +# MSG_BL_HIGH c=12 +#: messages.c:135 +msgid "Level Bright" +msgstr "" + +# MSG_BL_LOW c=12 +#: messages.c:136 +msgid "Level Dimmed" +msgstr "" + +# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60 +#: messages.c:55 +msgid "Measuring reference height of calibration point" +msgstr "Merim referencni vysku kalibracniho bodu" + +# MSG_MESH_BED_LEVELING +#: ultralcd.cpp:5856 +msgid "Mesh Bed Leveling" +msgstr "" + +# MSG_MMU_OK_RESUMING_POSITION c=20 r=4 +#: mmu.cpp:765 +msgid "MMU OK. Resuming position..." +msgstr "MMU OK. Pokracuji v tisku..." + +# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4 +#: mmu.cpp:758 +msgid "MMU OK. Resuming temperature..." +msgstr "MMU OK. Pokracuji v nahrivani..." + +# +#: ultralcd.cpp:3034 +msgid "Measured skew" +msgstr "Merene zkoseni" + +# +#: ultralcd.cpp:1728 +msgid "MMU fails" +msgstr "Selhani MMU" + +# +#: mmu.cpp:1588 +msgid "MMU load failed " +msgstr "Zavedeni MMU selhalo" + +# +#: ultralcd.cpp:1729 +msgid "MMU load fails" +msgstr "MMU selhani zavadeni" + +# MSG_MMU_OK_RESUMING c=20 r=4 +#: mmu.cpp:776 +msgid "MMU OK. Resuming..." +msgstr "MMU OK. Pokracuji..." + +# MSG_MODE +#: messages.c:84 +msgid "Mode" +msgstr "Mod" + +# c=20 r=3 +#: Marlin_main.cpp:879 +msgid "MK3 firmware detected on MK3S printer" +msgstr "" + +# MSG_NORMAL +#: messages.c:88 +msgid "Normal" +msgstr "" + +# MSG_SILENT +#: messages.c:87 +msgid "Silent" +msgstr "Tichy" + +# +#: mmu.cpp:722 +msgid "MMU needs user attention." +msgstr "MMU potrebuje zasah uzivatele." + +# +#: ultralcd.cpp:1755 +msgid "MMU power fails" +msgstr "MMU vypadky proudu" + +# MSG_STEALTH +#: messages.c:89 +msgid "Stealth" +msgstr "Tichy" + +# MSG_AUTO_POWER +#: messages.c:86 +msgid "Auto power" +msgstr "Automaticky" + +# MSG_HIGH_POWER +#: messages.c:85 +msgid "High power" +msgstr "Vys. vykon" + +# +#: ultralcd.cpp:2186 +msgid "MMU2 connected" +msgstr "MMU2 pripojeno" + +# MSG_SELFTEST_MOTOR +#: messages.c:79 +msgid "Motor" +msgstr "" + +# MSG_MOVE_AXIS +#: ultralcd.cpp:5741 +msgid "Move axis" +msgstr "Posunout osu" + +# MSG_MOVE_X +#: ultralcd.cpp:4361 +msgid "Move X" +msgstr "Posunout X" + +# MSG_MOVE_Y +#: ultralcd.cpp:4362 +msgid "Move Y" +msgstr "Posunout Y" + +# MSG_MOVE_Z +#: ultralcd.cpp:4363 +msgid "Move Z" +msgstr "Posunout Z" + +# MSG_NO_MOVE +#: Marlin_main.cpp:5541 +msgid "No move." +msgstr "Bez pohybu." + +# MSG_NO_CARD +#: ultralcd.cpp:6911 +msgid "No SD card" +msgstr "Zadna SD karta" + +# MSG_NA +#: messages.c:107 +msgid "N/A" +msgstr "" + +# MSG_NO +#: messages.c:58 +msgid "No" +msgstr "Ne" + +# MSG_SELFTEST_NOTCONNECTED +#: ultralcd.cpp:8265 +msgid "Not connected" +msgstr "Nezapojeno " + +# +#: util.cpp:293 +msgid "New firmware version available:" +msgstr "Vysla nova verze firmware:" + +# MSG_SELFTEST_FAN_NO c=19 +#: messages.c:75 +msgid "Not spinning" +msgstr "Netoci se" + +# MSG_WIZARD_V2_CAL c=20 r=8 +#: ultralcd.cpp:4946 +msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface." +msgstr "Nyni zkalibruji vzdalenost mezi koncem trysky a povrchem podlozky." + +# MSG_WIZARD_WILL_PREHEAT c=20 r=4 +#: ultralcd.cpp:5071 +msgid "Now I will preheat nozzle for PLA." +msgstr "Nyni predehreji trysku pro PLA." + +# MSG_NOZZLE +#: messages.c:59 +msgid "Nozzle" +msgstr "Tryska" + +# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5 +#: Marlin_main.cpp:1518 +msgid "Old settings found. Default PID, Esteps etc. will be set." +msgstr "Neplatne hodnoty nastaveni. Bude pouzito vychozi PID, Esteps atd." + +# +#: ultralcd.cpp:5062 +msgid "Now remove the test print from steel sheet." +msgstr "Nyni odstrante testovaci vytisk z tiskoveho platu." + +# +#: ultralcd.cpp:1654 +msgid "Nozzle FAN" +msgstr "Vent. trysky" + +# MSG_PAUSE_PRINT +#: ultralcd.cpp:6875 +msgid "Pause print" +msgstr "Pozastavit tisk" + +# MSG_PID_RUNNING c=20 r=1 +#: ultralcd.cpp:1539 +msgid "PID cal. " +msgstr "PID kal. " + +# MSG_PID_FINISHED c=20 r=1 +#: ultralcd.cpp:1545 +msgid "PID cal. finished" +msgstr "PID kal. ukoncena" + +# MSG_PID_EXTRUDER c=17 r=1 +#: ultralcd.cpp:5862 +msgid "PID calibration" +msgstr "PID kalibrace" + +# MSG_PINDA_PREHEAT c=20 r=1 +#: ultralcd.cpp:896 +msgid "PINDA Heating" +msgstr "Nahrivani PINDA" + +# MSG_PAPER c=20 r=10 +#: messages.c:60 +msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately." +msgstr "Umistete list papiru na podlozku a udrzujte jej pod tryskou behem mereni prvnich 4 bodu. Pokud tryska zachyti papir, okamzite vypnete tiskarnu." + +# MSG_WIZARD_CLEAN_HEATBED c=20 r=8 +#: ultralcd.cpp:5128 +msgid "Please clean heatbed and then press the knob." +msgstr "Prosim ocistete podlozku a stisknete tlacitko." + +# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8 +#: messages.c:21 +msgid "Please clean the nozzle for calibration. Click when done." +msgstr "Pro uspesnou kalibraci ocistete prosim tiskovou trysku. Potvrdte tlacitkem." + +# MSG_SELFTEST_PLEASECHECK +#: ultralcd.cpp:8257 +msgid "Please check :" +msgstr "Zkontrolujte :" + +# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8 +#: messages.c:98 +msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer." +msgstr "Prosim nahlednete do prirucky 3D tiskare a opravte problem. Pote obnovte Pruvodce restartovanim tiskarny." + +# MSG_CHECK_IDLER c=20 r=4 +#: Marlin_main.cpp:3138 +msgid "Please open idler and remove filament manually." +msgstr "Prosim otevrete idler a manualne odstrante filament." + +# MSG_PLACE_STEEL_SHEET c=20 r=4 +#: messages.c:61 +msgid "Please place steel sheet on heatbed." +msgstr "Umistete prosim tiskovy plat na podlozku" + +# MSG_PRESS_TO_UNLOAD c=20 r=4 +#: messages.c:64 +msgid "Please press the knob to unload filament" +msgstr "Pro vysunuti filamentu stisknete prosim tlacitko" + +# MSG_PULL_OUT_FILAMENT c=20 r=4 +#: messages.c:66 +msgid "Please pull out filament immediately" +msgstr "Prosim vyjmete urychlene filament" + +# MSG_EJECT_REMOVE c=20 r=4 +#: mmu.cpp:1422 +msgid "Please remove filament and then press the knob." +msgstr "Prosim vyjmete filament a pote stisknete tlacitko." + +# MSG_REMOVE_STEEL_SHEET c=20 r=4 +#: messages.c:70 +msgid "Please remove steel sheet from heatbed." +msgstr "Odstrante prosim tiskovy plat z podlozky." + +# MSG_RUN_XYZ c=20 r=4 +#: Marlin_main.cpp:4583 +msgid "Please run XYZ calibration first." +msgstr "Nejprve spustte kalibraci XYZ." + +# MSG_UPDATE_MMU2_FW c=20 r=4 +#: mmu.cpp:1341 +msgid "Please update firmware in your MMU2. Waiting for reset." +msgstr "Prosim aktualizujte firmware ve vasi MMU2 jednotce. Cekam na reset." + +# MSG_PLEASE_WAIT c=20 +#: messages.c:62 +msgid "Please wait" +msgstr "Prosim cekejte" + +# +#: ultralcd.cpp:5061 +msgid "Please remove shipping helpers first." +msgstr "Nejprve prosim sundejte transportni soucastky." + +# MSG_PREHEAT_NOZZLE c=20 +#: messages.c:63 +msgid "Preheat the nozzle!" +msgstr "Predehrejte trysku!" + +# MSG_PREHEAT +#: ultralcd.cpp:6853 +msgid "Preheat" +msgstr "Predehrev" + +# MSG_WIZARD_HEATING c=20 r=3 +#: messages.c:100 +msgid "Preheating nozzle. Please wait." +msgstr "Predehrev trysky. Prosim cekejte." + +# c=14 +#: ultralcd.cpp:1959 +msgid "PINDA" +msgstr "" + +# +#: util.cpp:297 +msgid "Please upgrade." +msgstr "Prosim aktualizujte." + +# MSG_PRESS_TO_PREHEAT c=20 r=4 +#: Marlin_main.cpp:11526 +msgid "Press knob to preheat nozzle and continue." +msgstr "Pro nahrati trysky a pokracovani stisknete tlacitko." + +# MSG_FS_PAUSE c=5 +#: fsensor.cpp:710 +msgid "Pause" +msgstr "" + +# +#: ultralcd.cpp:1783 +msgid "Power failures" +msgstr "Vypadky proudu" + +# MSG_PRINT_ABORTED c=20 +#: messages.c:65 +msgid "Print aborted" +msgstr "Tisk prerusen" + +# c=20 +#: ultralcd.cpp:2442 +msgid "Preheating to load" +msgstr "Predehrev k zavedeni" + +# c=20 +#: ultralcd.cpp:2446 +msgid "Preheating to unload" +msgstr "Predehrev k vyjmuti" + +# MSG_SELFTEST_PRINT_FAN_SPEED c=18 +#: ultralcd.cpp:8689 +msgid "Print fan:" +msgstr "Tiskovy vent.:" + +# MSG_CARD_MENU +#: messages.c:20 +msgid "Print from SD" +msgstr "Tisk z SD" + +# +#: ultralcd.cpp:2289 +msgid "Press the knob" +msgstr "Stisknete hl. tlacitko" + +# MSG_PRINT_PAUSED c=20 r=1 +#: ultralcd.cpp:1118 +msgid "Print paused" +msgstr "Tisk pozastaven" + +# +#: mmu.cpp:726 +msgid "Press the knob to resume nozzle temperature." +msgstr "Pro pokracovani nahrivani trysky stisknete tlacitko." + +# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8 +#: messages.c:38 +msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow." +msgstr "Tiskarna nebyla jeste zkalibrovana. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Postup kalibrace." + +# +#: ultralcd.cpp:1655 +msgid "Print FAN" +msgstr "Tiskovy vent." + +# +#: ultralcd.cpp:4926 +msgid "Please insert filament into the extruder, then press the knob to load it." +msgstr "Prosim vlozte filament do extruderu a stisknete tlacitko k jeho zavedeni" + +# +#: ultralcd.cpp:4921 +msgid "Please insert filament into the first tube of the MMU, then press the knob to load it." +msgstr "Prosim vlozte filament do prvni trubicky MMU a stisknete tlacitko k jeho zavedeni" + +# +#: ultralcd.cpp:4843 +msgid "Please load filament first." +msgstr "Prosim nejdriv zavedte filament" + +# MSG_PRUSA3D +#: ultralcd.cpp:2155 +msgid "prusa3d.com" +msgstr "" + +# MSG_BED_CORRECTION_REAR c=14 r=1 +#: ultralcd.cpp:3267 +msgid "Rear side [um]" +msgstr "Vzadu [um]" + +# c=20 r=4 +#: ultralcd.cpp:7549 +msgid "Please unload the filament first, then repeat this action." +msgstr "Prosim vyjmete filament a zopakujte tuto akci" + +# MSG_RECOVERING_PRINT c=20 +#: Marlin_main.cpp:10883 +msgid "Recovering print " +msgstr "Obnovovani tisku " + +# MSG_REMOVE_OLD_FILAMENT c=20 r=5 +#: mmu.cpp:833 +msgid "Remove old filament and press the knob to start loading new filament." +msgstr "Vyjmete stary filament a stisknete tlacitko pro zavedeni noveho." + +# c=20 +#: +msgid "Prusa i3 MK3S OK." +msgstr "" + +# MSG_CALIBRATE_BED_RESET +#: ultralcd.cpp:5867 +msgid "Reset XYZ calibr." +msgstr "Reset XYZ kalibr." + +# MSG_BED_CORRECTION_RESET +#: ultralcd.cpp:3268 +msgid "Reset" +msgstr "" + +# MSG_RESUME_PRINT +#: ultralcd.cpp:6861 +msgid "Resume print" +msgstr "Pokracovat" + +# MSG_RESUMING_PRINT c=20 +#: messages.c:69 +msgid "Resuming print" +msgstr "Obnoveni tisku" + +# MSG_BED_CORRECTION_RIGHT c=14 r=1 +#: ultralcd.cpp:3265 +msgid "Right side[um]" +msgstr "Vpravo [um]" + +# MSG_RPI_PORT +#: messages.c:123 +msgid "RPi port" +msgstr "" + +# MSG_WIZARD_RERUN c=20 r=7 +#: ultralcd.cpp:4864 +msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?" +msgstr "Spusteni Pruvodce vymaze ulozene vysledky vsech kalibraci a spusti kalibracni proces od zacatku. Pokracovat?" + +# MSG_SD_CARD +#: messages.c:118 +msgid "SD card" +msgstr "" + +# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY +#: messages.c:119 +msgid "FlashAir" +msgstr "" + +# +#: ultralcd.cpp:2994 +msgid "Right" +msgstr "Vpravo" + +# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60 +#: messages.c:35 +msgid "Searching bed calibration point" +msgstr "Hledam kalibracni bod podlozky" + +# MSG_LANGUAGE_SELECT +#: ultralcd.cpp:5779 +msgid "Select language" +msgstr "Vyber jazyka" + +# MSG_SELFTEST_OK +#: ultralcd.cpp:7812 +msgid "Self test OK" +msgstr "" + +# MSG_SELFTEST_START c=20 +#: ultralcd.cpp:7582 +msgid "Self test start " +msgstr "Self test start " + +# MSG_SELFTEST +#: ultralcd.cpp:5843 +msgid "Selftest " +msgstr "Selftest " + +# MSG_SELFTEST_ERROR +#: ultralcd.cpp:8255 +msgid "Selftest error !" +msgstr "Chyba Selftestu!" + +# MSG_SELFTEST_FAILED c=20 +#: messages.c:73 +msgid "Selftest failed " +msgstr "Selftest selhal " + +# MSG_FORCE_SELFTEST c=20 r=8 +#: Marlin_main.cpp:1550 +msgid "Selftest will be run to calibrate accurate sensorless rehoming." +msgstr "Pro kalibraci presneho rehomovani bude nyni spusten selftest." + +# +#: ultralcd.cpp:5102 +msgid "Select nozzle preheat temperature which matches your material." +msgstr "Vyberte teplotu predehrati trysky ktera odpovida vasemu materialu." + +# MSG_SET_TEMPERATURE c=19 r=1 +#: ultralcd.cpp:3286 +msgid "Set temperature:" +msgstr "Nastavte teplotu:" + +# c=20 +#: +msgid "Prusa i3 MK2.5 OK." +msgstr "" + +# c=20 +#: +msgid "Prusa i3 MK2.5S OK." +msgstr "" + +# c=20 +#: +msgid "Prusa i3 MK3 OK." +msgstr "" + +# MSG_SETTINGS +#: messages.c:82 +msgid "Settings" +msgstr "Nastaveni" + +# MSG_SHOW_END_STOPS c=18 +#: ultralcd.cpp:5864 +msgid "Show end stops" +msgstr "Stav konc. spin." + +# +#: ultralcd.cpp:4008 +msgid "Sensor state" +msgstr "Stav senzoru" + +# MSG_FILE_CNT c=20 r=6 +#: cardreader.cpp:738 +msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100." +msgstr "Nektere soubory nebudou setrideny. Maximalni pocet souboru ve slozce pro setrideni je 100." + +# MSG_SORT +#: messages.c:120 +msgid "Sort" +msgstr "Trideni" + +# MSG_NONE +#: messages.c:110 +msgid "None" +msgstr "Zadne" + +# MSG_SORT_TIME +#: messages.c:121 +msgid "Time" +msgstr "Cas" + +# +#: ultralcd.cpp:3037 +msgid "Severe skew:" +msgstr "Tezke zkoseni:" + +# MSG_SORT_ALPHA +#: messages.c:122 +msgid "Alphabet" +msgstr "Abeceda" + +# MSG_SORTING c=20 r=1 +#: cardreader.cpp:745 +msgid "Sorting files" +msgstr "Trideni souboru" + +# MSG_SOUND_LOUD +#: messages.c:125 +msgid "Loud" +msgstr "Hlasity" + +# +#: ultralcd.cpp:3036 +msgid "Slight skew:" +msgstr "Lehke zkoseni:" + +# MSG_SOUND +#: messages.c:124 +msgid "Sound" +msgstr "Zvuk" + +# c=7 +#: ultralcd.cpp:1822 +msgid "Runouts" +msgstr "" + +# +#: Marlin_main.cpp:5101 +msgid "Some problem encountered, Z-leveling enforced ..." +msgstr "Vyskytl se problem, srovnavam osu Z ..." + +# MSG_SOUND_ONCE +#: messages.c:126 +msgid "Once" +msgstr "Jednou" + +# MSG_SPEED +#: ultralcd.cpp:7119 +msgid "Speed" +msgstr "Rychlost" + +# MSG_SELFTEST_FAN_YES c=19 +#: messages.c:76 +msgid "Spinning" +msgstr "Toci se" + +# MSG_TEMP_CAL_WARNING c=20 r=4 +#: Marlin_main.cpp:4596 +msgid "Stable ambient temperature 21-26C is needed a rigid stand is required." +msgstr "Je vyzadovana stabilni pokojova teplota 21-26C a pevna podlozka." + +# MSG_STATISTICS +#: ultralcd.cpp:6978 +msgid "Statistics " +msgstr "Statistika " + +# MSG_STOP_PRINT +#: messages.c:91 +msgid "Stop print" +msgstr "Zastavit tisk" + +# MSG_STOPPED +#: messages.c:92 +msgid "STOPPED. " +msgstr "ZASTAVENO." + +# MSG_SUPPORT +#: ultralcd.cpp:6987 +msgid "Support" +msgstr "Podpora" + +# MSG_SELFTEST_SWAPPED +#: ultralcd.cpp:8335 +msgid "Swapped" +msgstr "Prohozene" + +# +#: ultralcd.cpp:4814 +msgid "Select filament:" +msgstr "Zvolte filament:" + +# MSG_TEMP_CALIBRATION c=14 +#: messages.c:93 +msgid "Temp. cal." +msgstr "Tepl. kal." + +# +#: ultralcd.cpp:4955 +msgid "Select temperature which matches your material." +msgstr "Zvolte teplotu, ktera odpovida vasemu materialu." + +# MSG_CALIBRATION_PINDA_MENU c=17 r=1 +#: ultralcd.cpp:5873 +msgid "Temp. calibration" +msgstr "Teplot. kalibrace" + +# MSG_TEMP_CAL_FAILED c=20 r=8 +#: ultralcd.cpp:3933 +msgid "Temperature calibration failed" +msgstr "Teplotni kalibrace selhala" + +# MSG_TEMP_CALIBRATION_DONE c=20 r=12 +#: messages.c:94 +msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal." +msgstr "Teplotni kalibrace dokoncena a je nyni aktivni. Teplotni kalibraci je mozno deaktivovat v menu Nastaveni->Tepl. kal." + +# c=20 r=3 +#: ultralcd.cpp:7554 +msgid "Sensor verified, remove the filament now." +msgstr "Senzor overen, vyjmete filament." + +# MSG_TEMPERATURE +#: ultralcd.cpp:5739 +msgid "Temperature" +msgstr "Teplota" + +# MSG_MENU_TEMPERATURES c=15 r=1 +#: ultralcd.cpp:2218 +msgid "Temperatures" +msgstr "Teploty" + +# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9 +#: messages.c:39 +msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow." +msgstr "Je potreba kalibrovat osu Z. Prosim postupujte dle prirucky, kapitola Zaciname, sekce Postup kalibrace." + +# +#: ultralcd.cpp:2891 +msgid "Total filament" +msgstr "Filament celkem" + +# +#: ultralcd.cpp:2892 +msgid "Total print time" +msgstr "Celkovy cas tisku" + +# MSG_TUNE +#: ultralcd.cpp:6850 +msgid "Tune" +msgstr "Ladit" + +# +#: +msgid "Unload" +msgstr "Vysunout" + +# +#: ultralcd.cpp:1752 +msgid "Total failures" +msgstr "Celkem selhani" + +# +#: ultralcd.cpp:2296 +msgid "to load filament" +msgstr "k zavedeni filamentu" + +# +#: ultralcd.cpp:2300 +msgid "to unload filament" +msgstr "k vyjmuti filamentu" + +# MSG_UNLOAD_FILAMENT c=17 +#: messages.c:95 +msgid "Unload filament" +msgstr "Vyjmout filament" + +# MSG_UNLOADING_FILAMENT c=20 r=1 +#: messages.c:96 +msgid "Unloading filament" +msgstr "Vysouvam filament" + +# +#: ultralcd.cpp:1705 +msgid "Total" +msgstr "Celkem" + +# MSG_USED c=19 r=1 +#: ultralcd.cpp:6001 +msgid "Used during print" +msgstr "Pouzite behem tisku" + +# MSG_MENU_VOLTAGES c=15 r=1 +#: ultralcd.cpp:2221 +msgid "Voltages" +msgstr "Napeti" + +# +#: ultralcd.cpp:2194 +msgid "unknown" +msgstr "neznamy" + +# MSG_USERWAIT +#: Marlin_main.cpp:5511 +msgid "Wait for user..." +msgstr "Ceka se na uzivatele..." + +# MSG_WAITING_TEMP c=20 r=3 +#: ultralcd.cpp:3434 +msgid "Waiting for nozzle and bed cooling" +msgstr "Cekani na zchladnuti trysky a podlozky." + +# MSG_WAITING_TEMP_PINDA c=20 r=3 +#: ultralcd.cpp:3395 +msgid "Waiting for PINDA probe cooling" +msgstr "Cekani na zchladnuti PINDA" + +# +#: +msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube." +msgstr "Pouzijte vyjmout pro odstraneni filamentu 1 pokud presahuje z PTFE trubicky za tiskarnou. Pouzijte vysunout, pokud neni videt." + +# MSG_CHANGED_BOTH c=20 r=4 +#: Marlin_main.cpp:1510 +msgid "Warning: both printer type and motherboard type changed." +msgstr "Varovani: doslo ke zmene typu tiskarny a motherboardu." + +# MSG_CHANGED_MOTHERBOARD c=20 r=4 +#: Marlin_main.cpp:1502 +msgid "Warning: motherboard type changed." +msgstr "Varovani: doslo ke zmene typu motherboardu." + +# MSG_CHANGED_PRINTER c=20 r=4 +#: Marlin_main.cpp:1506 +msgid "Warning: printer type changed." +msgstr "Varovani: doslo ke zmene typu tiskarny." + +# MSG_UNLOAD_SUCCESSFUL c=20 r=2 +#: Marlin_main.cpp:3128 +msgid "Was filament unload successful?" +msgstr "Bylo vysunuti filamentu uspesne?" + +# MSG_SELFTEST_WIRINGERROR +#: messages.c:81 +msgid "Wiring error" +msgstr "Chyba zapojeni" + +# MSG_WIZARD c=17 r=1 +#: ultralcd.cpp:5834 +msgid "Wizard" +msgstr "Pruvodce" + +# MSG_XYZ_DETAILS c=18 +#: ultralcd.cpp:2210 +msgid "XYZ cal. details" +msgstr "Detaily XYZ kal." + +# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8 +#: messages.c:18 +msgid "XYZ calibration failed. Please consult the manual." +msgstr "Kalibrace XYZ selhala. Nahlednete do manualu." + +# MSG_YES +#: messages.c:102 +msgid "Yes" +msgstr "Ano" + +# MSG_WIZARD_QUIT c=20 r=8 +#: messages.c:101 +msgid "You can always resume the Wizard from Calibration -> Wizard." +msgstr "Pruvodce muzete kdykoliv znovu spustit z menu Kalibrace -> Pruvodce" + +# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8 +#: ultralcd.cpp:3904 +msgid "XYZ calibration all right. Skew will be corrected automatically." +msgstr "Kalibrace XYZ v poradku. Zkoseni bude automaticky vyrovnano pri tisku." + +# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8 +#: ultralcd.cpp:3901 +msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!" +msgstr "Kalibrace XYZ v poradku. X/Y osy mirne zkosene. Dobra prace!" + +# MSG_TIMEOUT c=12 +#: messages.c:137 +msgid "Timeout" +msgstr "" + +# MSG_X_CORRECTION c=13 +#: ultralcd.cpp:5190 +msgid "X-correct:" +msgstr "Korekce X:" + +# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8 +#: ultralcd.cpp:3898 +msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!" +msgstr "Kalibrace XYZ v poradku. X/Y osy jsou kolme. Gratuluji!" + +# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8 +#: ultralcd.cpp:3882 +msgid "XYZ calibration compromised. Front calibration points not reachable." +msgstr "Kalibrace XYZ nepresna. Predni kalibracni body moc vpredu." + +# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8 +#: ultralcd.cpp:3885 +msgid "XYZ calibration compromised. Right front calibration point not reachable." +msgstr "Kalibrace XYZ nepresna. Pravy predni bod moc vpredu." + +# MSG_LOAD_ALL c=17 +#: ultralcd.cpp:6261 +msgid "Load all" +msgstr "Zavest vse" + +# +#: ultralcd.cpp:3864 +msgid "XYZ calibration failed. Bed calibration point was not found." +msgstr "Kalibrace XYZ selhala. Kalibracni bod podlozky nenalezen." + +# +#: ultralcd.cpp:3870 +msgid "XYZ calibration failed. Front calibration points not reachable." +msgstr "Kalibrace XYZ selhala. Predni kalibracni body moc vpredu. Srovnejte tiskarnu." + +# +#: ultralcd.cpp:3873 +msgid "XYZ calibration failed. Right front calibration point not reachable." +msgstr "Kalibrace XYZ selhala. Pravy predni bod moc vpredu. Srovnejte tiskarnu." + +# +#: ultralcd.cpp:2991 +msgid "Y distance from min" +msgstr "Y vzdalenost od min" + +# +#: ultralcd.cpp:4958 +msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)." +msgstr "Tiskarna zacne tisknout lomenou caru. Otacenim tlacitka nastavte optimalni vysku. Postupujte podle obrazku v handbooku (kapitola Kalibrace)." + +# c=20 r=5 +#: ultralcd.cpp:7558 +msgid "Verification failed, remove the filament and try again." +msgstr "Overeni selhalo, vyjmete filament a zkuste znovu." + +# MSG_Y_CORRECTION c=13 +#: ultralcd.cpp:5191 +msgid "Y-correct:" +msgstr "Korekce Y:" + +# MSG_OFF +#: messages.c:105 +msgid "Off" +msgstr "Vyp" + +# MSG_ON +#: messages.c:106 +msgid "On" +msgstr "Zap" + +# +#: messages.c:53 +msgid "Back" +msgstr "Zpet" + +# +#: ultralcd.cpp:5724 +msgid "Checks" +msgstr "Kontrola" + +# +#: ultralcd.cpp:8349 +msgid "False triggering" +msgstr "Falesne spusteni" + +# +#: ultralcd.cpp:4013 +msgid "FINDA:" +msgstr "" + +# MSG_FIRMWARE +#: language.h:23 +msgid "Firmware" +msgstr "" + +# MSG_STRICT +#: messages.c:112 +msgid "Strict" +msgstr "Prisne" + +# MSG_WARN +#: messages.c:111 +msgid "Warn" +msgstr "Varovat" + +# +#: messages.c:83 +msgid "HW Setup" +msgstr "HW nastaveni" + +# +#: ultralcd.cpp:4017 +msgid "IR:" +msgstr "" + +# MSG_MAGNETS_COMP +#: messages.c:130 +msgid "Magnets comp." +msgstr "Komp. magnetu" + +# MSG_MESH +#: messages.c:128 +msgid "Mesh" +msgstr "" + +# +#: ultralcd.cpp:5763 +msgid "Mesh bed leveling" +msgstr "Mesh Bed Leveling" + +# +#: Marlin_main.cpp:872 +msgid "MK3S firmware detected on MK3 printer" +msgstr "MK3S firmware detekovan na tiskarne MK3" + +# MSG_MMU_MODE +#: messages.c:117 +msgid "MMU Mode" +msgstr "MMU mod" + +# +#: ultralcd.cpp:4494 +msgid "Mode change in progress ..." +msgstr "Probiha zmena modu..." + +# MSG_MODEL +#: messages.c:113 +msgid "Model" +msgstr "" + +# MSG_NOZZLE_DIAMETER +#: messages.c:116 +msgid "Nozzle d." +msgstr "Tryska" + +# +#: util.cpp:514 +msgid "G-code sliced for a different level. Continue?" +msgstr "" + +# +#: util.cpp:520 +msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled." +msgstr "" + +# +#: util.cpp:431 +msgid "G-code sliced for a different printer type. Continue?" +msgstr "G-code je pripraven pro jiny typ tiskarny. Pokracovat?" + +# +#: util.cpp:437 +msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled." +msgstr "G-code je pripraven pro jiny typ tiskarny. Prosim preslicujte model znovu. Tisk zrusen." + +# +#: util.cpp:481 +msgid "G-code sliced for a newer firmware. Continue?" +msgstr "G-code je pripraven pro novejsi firmware. Pokracovat?" + +# +#: util.cpp:487 +msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled." +msgstr "G-code je pripraven pro novejsi firmware. Prosim aktualizujte firmware. Tisk zrusen." + +# +#: ultralcd.cpp:4009 +msgid "PINDA:" +msgstr "" + +# c=20 +#: ultralcd.cpp:2452 +msgid "Preheating to cut" +msgstr "Predehrev ke strihu" + +# c=20 +#: ultralcd.cpp:2449 +msgid "Preheating to eject" +msgstr "Predehrev k vysunuti" + +# +#: util.cpp:394 +msgid "Printer nozzle diameter differs from the G-code. Continue?" +msgstr "Prumer trysky tiskarny se lisi od G-code. Pokracovat?" + +# +#: util.cpp:401 +msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled." +msgstr "Prumer trysky tiskarny se lisi od G-code. Prosim zkontrolujte nastaveni. Tisk zrusen." + +# c=20 +#: ultralcd.cpp:8355 +msgid "%s level expected" +msgstr "" + +# +#: ultralcd.cpp:6814 +msgid "Rename" +msgstr "Prejmenovat" + +# +#: ultralcd.cpp:6807 +msgid "Select" +msgstr "Vybrat" + +# +#: ultralcd.cpp:2212 +msgid "Sensor info" +msgstr "Senzor info" + +# MSG_SHEET c=10 +#: messages.c:54 +msgid "Sheet" +msgstr "Plat" + +# MSG_SOUND_BLIND +#: messages.c:127 +msgid "Assist" +msgstr "Asist." + +# c=18 +#: ultralcd.cpp:5722 +msgid "Steel sheets" +msgstr "Tiskove platy" + +# MSG_Z_CORRECTION c=13 +#: ultralcd.cpp:5192 +msgid "Z-correct:" +msgstr "Korekce Z:" + +# MSG_Z_PROBE_NR +#: messages.c:129 +msgid "Z-probe nr." +msgstr "Pocet mereni Z" + +# +#: ultralcd.cpp:7145 +msgid "Z-probe nr. [5]" +msgstr "Pocet mereni Z [5]" + +======= # Translation of Prusa-Firmware into Czech. # msgid "" @@ -1850,3 +3699,4 @@ msgstr "Korekce Z:" msgid "Z-probe nr." msgstr "Pocet mereni Z" +>>>>>>> upstream/MK3 From f8bec339e22ddeca94907e440e87b43958267a63 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sun, 18 Apr 2021 20:28:08 +0200 Subject: [PATCH 10/34] Hack to get more flash and ram for MK404 debug --- PF-build.sh | 268 ++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 196 insertions(+), 72 deletions(-) diff --git a/PF-build.sh b/PF-build.sh index c51b1fd4e..d065d6916 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -244,17 +244,121 @@ fi #### End prepare bash / Linux environment +# Check for options/flags +while getopts v:l:d:b:f:x:r:o:c:p:n:?h flag + do + case "${flag}" in + v) variant_flag=${OPTARG};; + l) language_flag=${OPTARG};; + d) devel_flag=${OPTARG};; + b) build_flag=${OPTARG};; + f) board_flash_flag=${OPTARG};; + x) board_mem_flag=${OPTARG};; + o) output_flag=${OPTARG};; + c) clean_flag=${OPTARG};; + p) prusa_flag=${OPTARG};; + n) new_build_flag=${OPTARG};; + ?) help_flag=1;; + h) help_flag=1;; + esac + done +#echo "variant_flag: $variant_flag"; +#echo "language_flag: $language_flag"; +#echo "devel_flag: $devel_flag"; +#echo "build_flag: $build_flag"; +#echo "output_flag: $output_flag"; +#echo "board_mem_flag: $board_mem_flag"; +#echo "board_flash_flag: $board_flash_flag"; +#echo "help_flag: $help_flag" +#echo "clean_flag: $clean_flag" +#echo "prusa_flag: $prusa_flag" +#echo "new_build_flag: $new_build_flag" + +# +# '?' 'h' argument usage and help +if [ "$help_flag" == "1" ] ; then +echo "***************************************" +echo "* PF-build.sh Version: 1.0.6-Build_33 *" +echo "***************************************" +echo "Arguments:" +echo "$(tput setaf 2)-v$(tput sgr0) Variant '$(tput setaf 2)All$(tput sgr0)' or variant file name" +echo "$(tput setaf 2)-l$(tput sgr0) Languages '$(tput setaf 2)ALL$(tput sgr0)' for multi language or '$(tput setaf 2)EN_ONLY$(tput sgr0)' for English only" +echo "$(tput setaf 2)-d$(tput sgr0) Devel build '$(tput setaf 2)GOLD$(tput sgr0)', '$(tput setaf 2)RC$(tput sgr0)', '$(tput setaf 2)BETA$(tput sgr0)', '$(tput setaf 2)ALPHA$(tput sgr0)', '$(tput setaf 2)DEBUG$(tput sgr0)', '$(tput setaf 2)DEVEL$(tput sgr0)' and '$(tput setaf 2)UNKNOWN$(tput sgr0)'" +echo "$(tput setaf 2)-b$(tput sgr0) Build/commit number '$(tput setaf 2)Auto$(tput sgr0)' needs git or a number" +echo "$(tput setaf 2)-o$(tput sgr0) Output '$(tput setaf 2)1$(tput sgr0)' force or '$(tput setaf 2)0$(tput sgr0)' block output and delays" +echo "$(tput setaf 2)-c$(tput sgr0) Do not clean up lang build'$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" +echo "$(tput setaf 2)-p$(tput sgr0) Keep Configuration_prusa.h '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" +echo "$(tput setaf 2)-n$(tput sgr0) New fresh build '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" +echo "$(tput setaf 2)-?$(tput sgr0) Help" +echo "$(tput setaf 2)-h$(tput sgr0) Help" +echo +echo "Brief USAGE:" +echo " $(tput setaf 2)./PF-build.sh$(tput sgr0) [-v] [-l] [-d] [-b] [-o] [-c] [-p] [-n]" +echo +echo "Example:" +echo " $(tput setaf 2)./PF-build.sh -v All -l ALL -d GOLD$(tput sgr0)" +echo " Will build all variants as multi language and final GOLD version" +echo +echo " $(tput setaf 2) ./PF-build.sh -v 1_75mm_MK3S-EINSy10a-E3Dv6full.h -b Auto -l ALL -d GOLD -o 1 -c 1 -p 1 -n 1$(tput sgr0)" +echo " Will build MK3S multi language final GOLD firmware " +echo " with current commit count number and output extra information," +echo " not delete lang build temporary files, keep Configuration_prusa.h and build with new fresh build folder." +echo +exit 6 + +fi +#Check if Build is selected with argument '-f' +if [ ! -z "$board_flash_flag" ] ; then + if [ "$board_flash_flag" == "256" ] ; then + BOARD_FLASH="0x3FFFF" + BOARD_maximum_size="253952" + echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + elif [ "$board_flash_flag" == "384" ] ; then + BOARD_FLASH="0x5FFFF" + BOARD_maximum_size="385024" + echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + elif [ "$board_flash_flag" == "512" ] ; then + BOARD_FLASH="0x7FFFF" + BOARD_maximum_size="516096" + echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + elif [ "$board_flash_flag" == "1024" ] ; then + BOARD_FLASH="0xFFFFF" + BOARD_maximum_size="1040384" + echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + elif [[ "$board_flash_flag" == "32M" || "$board_flash_flag" == "32768" ]] ; then + BOARD_FLASH="0x1FFFFFF" + BOARD_maximum_size="33546240" + echo "Board flash size : 32 Mb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + else + echo "Unsupported board flash size chosen. Only '256', '384', '512', '1024' and '32M' are allowed." + exit 7 + fi +fi + +#Check if Build is selected with argument '-x' +if [ ! -z "$board_mem_flag" ] ; then + if [ "$board_mem_flag" == "8" ] ; then + BOARD_MEM="0x21FF" + echo "Board mem size : $board_mem_flag Kb, $BOARD_MEM (hex)" + elif [ "$board_mem_flag" == "64" ] ; then + BOARD_MEM="0xFFFF" + echo "Board mem size : $board_mem_flag Kb, $BOARD_MEM (hex)" + else + echo "Unsupported board mem size chosen. Only '8', '64' are allowed." + exit 8 + fi +fi #### Set build environment -ARDUINO_ENV="1.8.5" +ARDUINO_ENV="1.8.13" BUILD_ENV="1.0.6" BOARD="prusa_einsy_rambo" BOARD_PACKAGE_NAME="PrusaResearch" BOARD_VERSION="1.0.3" -#BOARD_URL="https://raw.githubusercontent.com/3d-gussner/Arduino_Boards/Prusa_Merge_v1.0.3/IDE_Board_Manager/package_prusa3d_index.json" +#BOARD_URL="https://raw.githubusercontent.com/3d-gussner/Arduino_Boards/master/IDE_Board_Manager/package_prusa3d_index.json" BOARD_URL="https://raw.githubusercontent.com/prusa3d/Arduino_Boards/master/IDE_Board_Manager/package_prusa3d_index.json" BOARD_FILENAME="prusa3dboards" -#BOARD_FILE_URL="https://raw.githubusercontent.com/3d-gussner/Arduino_Boards/Prusa_Merge_v1.0.3/IDE_Board_Manager/prusa3dboards-1.0.3.tar.bz2" +#BOARD_FILE_URL="https://raw.githubusercontent.com/3d-gussner/Arduino_Boards/master/IDE_Board_Manager/prusa3dboards-1.0.3.tar.bz2" BOARD_FILE_URL="https://raw.githubusercontent.com/prusa3d/Arduino_Boards/master/IDE_Board_Manager/prusa3dboards-1.0.3.tar.bz2" #PF_BUILD_FILE_URL="https://github.com/3d-gussner/PF-build-env-1/releases/download/$BUILD_ENV-WinLin/PF-build-env-WinLin-$BUILD_ENV.zip" PF_BUILD_FILE_URL="https://github.com/prusa3d/PF-build-env/releases/download/$BUILD_ENV-WinLin/PF-build-env-WinLin-$BUILD_ENV.zip" @@ -270,6 +374,12 @@ echo "" echo "Arduino IDE :" $ARDUINO_ENV echo "Build env :" $BUILD_ENV echo "Board :" $BOARD +if [ ! -z "$BOARD_FLASH" ] ; then + echo "Board flash :" $BOARD_FLASH +fi +if [ ! -z "$BOARD_MEM" ] ; then + echo "Board mem :" $BOARD_MEM +fi echo "Package name:" $BOARD_PACKAGE_NAME echo "Board v. :" $BOARD_VERSION echo "Specific Lib:" $LIB @@ -279,10 +389,10 @@ echo "" #Check if build exists and creates it if not if [ ! -d "../PF-build-dl" ]; then - mkdir ../PF-build-dl || exit 6 + mkdir ../PF-build-dl || exit 9 fi -cd ../PF-build-dl || exit 7 +cd ../PF-build-dl || exit 10 BUILD_ENV_PATH="$( cd "$(dirname "$0")" ; pwd -P )" # Check if PF-build-env- exists and downloads + creates it if not @@ -299,13 +409,13 @@ if [ $TARGET_OS == "windows" ]; then if [ ! -f "arduino-$ARDUINO_ENV-windows.zip" ]; then echo "$(tput setaf 6)Downloading Windows 32/64-bit Arduino IDE portable...$(tput setaf 2)" sleep 2 - wget https://downloads.arduino.cc/arduino-$ARDUINO_ENV-windows.zip || exit 8 + wget https://downloads.arduino.cc/arduino-$ARDUINO_ENV-windows.zip || exit 11 echo "$(tput sgr 0)" fi if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then echo "$(tput setaf 6)Unzipping Windows 32/64-bit Arduino IDE portable...$(tput setaf 2)" sleep 2 - unzip arduino-$ARDUINO_ENV-windows.zip -d ../PF-build-env-$BUILD_ENV || exit 8 + unzip arduino-$ARDUINO_ENV-windows.zip -d ../PF-build-env-$BUILD_ENV || exit 11 mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor echo "# arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt echo "$(tput sgr0)" @@ -317,13 +427,13 @@ if [ $TARGET_OS == "linux" ]; then if [ ! -f "arduino-$ARDUINO_ENV-linux$Processor.tar.xz" ]; then echo "$(tput setaf 6)Downloading Linux $Processor Arduino IDE portable...$(tput setaf 2)" sleep 2 - wget --no-check-certificate https://downloads.arduino.cc/arduino-$ARDUINO_ENV-linux$Processor.tar.xz || exit 8 + wget --no-check-certificate https://downloads.arduino.cc/arduino-$ARDUINO_ENV-linux$Processor.tar.xz || exit 11 echo "$(tput sgr 0)" fi if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then echo "$(tput setaf 6)Unzipping Linux $Processor Arduino IDE portable...$(tput setaf 2)" sleep 2 - tar -xvf arduino-$ARDUINO_ENV-linux$Processor.tar.xz -C ../PF-build-env-$BUILD_ENV/ || exit 8 + tar -xvf arduino-$ARDUINO_ENV-linux$Processor.tar.xz -C ../PF-build-env-$BUILD_ENV/ || exit 11 mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor echo "# arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt echo "$(tput sgr0)" @@ -406,7 +516,7 @@ fi if [ ! -f "PF-build-env-WinLin-$BUILD_ENV.zip" ]; then echo "$(tput setaf 6)Downloading Prusa Firmware build environment...$(tput setaf 2)" sleep 2 - wget $PF_BUILD_FILE_URL || exit 11 + wget $PF_BUILD_FILE_URL || exit 12 echo "$(tput sgr 0)" fi if [ ! -e "../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]; then @@ -453,65 +563,6 @@ if type git > /dev/null; then git_available="1" fi -while getopts v:l:d:b:o:c:p:n:?h flag - do - case "${flag}" in - v) variant_flag=${OPTARG};; - l) language_flag=${OPTARG};; - d) devel_flag=${OPTARG};; - b) build_flag=${OPTARG};; - o) output_flag=${OPTARG};; - c) clean_flag=${OPTARG};; - p) prusa_flag=${OPTARG};; - n) new_build_flag=${OPTARG};; - ?) help_flag=1;; - h) help_flag=1;; - esac - done -#echo "variant_flag: $variant_flag"; -#echo "language_flag: $language_flag"; -#echo "devel_flag: $devel_flag"; -#echo "build_flag: $build_flag"; -#echo "output_flag: $output_flag"; -#echo "help_flag: $help_flag" -#echo "clean_flag: $clean_flag" -#echo "prusa_flag: $prusa_flag" -#echo "new_build_flag: $new_build_flag" - -# -# '?' 'h' argument usage and help -if [ "$help_flag" == "1" ] ; then -echo "***************************************" -echo "* PF-build.sh Version: 1.0.6-Build_33 *" -echo "***************************************" -echo "Arguments:" -echo "$(tput setaf 2)-v$(tput sgr0) Variant '$(tput setaf 2)All$(tput sgr0)' or variant file name" -echo "$(tput setaf 2)-l$(tput sgr0) Languages '$(tput setaf 2)ALL$(tput sgr0)' for multi language or '$(tput setaf 2)EN_ONLY$(tput sgr0)' for English only" -echo "$(tput setaf 2)-d$(tput sgr0) Devel build '$(tput setaf 2)GOLD$(tput sgr0)', '$(tput setaf 2)RC$(tput sgr0)', '$(tput setaf 2)BETA$(tput sgr0)', '$(tput setaf 2)ALPHA$(tput sgr0)', '$(tput setaf 2)DEBUG$(tput sgr0)', '$(tput setaf 2)DEVEL$(tput sgr0)' and '$(tput setaf 2)UNKNOWN$(tput sgr0)'" -echo "$(tput setaf 2)-b$(tput sgr0) Build/commit number '$(tput setaf 2)Auto$(tput sgr0)' needs git or a number" -echo "$(tput setaf 2)-o$(tput sgr0) Output '$(tput setaf 2)1$(tput sgr0)' force or '$(tput setaf 2)0$(tput sgr0)' block output and delays" -echo "$(tput setaf 2)-c$(tput sgr0) Do not clean up lang build'$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" -echo "$(tput setaf 2)-p$(tput sgr0) Keep Configuration_prusa.h '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" -echo "$(tput setaf 2)-n$(tput sgr0) New fresh build '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" -echo "$(tput setaf 2)-?$(tput sgr0) Help" -echo "$(tput setaf 2)-h$(tput sgr0) Help" -echo -echo "Brief USAGE:" -echo " $(tput setaf 2)./PF-build.sh$(tput sgr0) [-v] [-l] [-d] [-b] [-o] [-c] [-p] [-n]" -echo -echo "Example:" -echo " $(tput setaf 2)./PF-build.sh -v All -l ALL -d GOLD$(tput sgr0)" -echo " Will build all variants as multi language and final GOLD version" -echo -echo " $(tput setaf 2) ./PF-build.sh -v 1_75mm_MK3S-EINSy10a-E3Dv6full.h -b Auto -l ALL -d GOLD -o 1 -c 1 -p 1 -n 1$(tput sgr0)" -echo " Will build MK3S multi language final GOLD firmware " -echo " with current commit count number and output extra information," -echo " not delete lang build temporary files, keep Configuration_prusa.h and build with new fresh build folder." -echo -exit 14 - -fi - # # '-v' argument defines which variant of the Prusa Firmware will be compiled if [ -z "$variant_flag" ] ; then @@ -710,7 +761,7 @@ do DEV_STATUS_SELECTED="GOLD" break ;; - No) + No) DEV_STATUS="UNKNOWN" DEV_STATUS_SELECTED="UNKNOWN" break @@ -729,6 +780,12 @@ do mkdir -p $SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD || exit 28 fi OUTPUT_FOLDER="PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD" + if [ "$BOARD" != "prusa_einsy_rambo" ]; then + if [ ! -d "$SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$BOARD" ]; then + mkdir -p $SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$BOARD || exit 28 + fi + OUTPUT_FOLDER="PF-build-hex/FW$FW-Build$BUILD/$BOARD" + fi #Check if exactly the same hexfile already exists if [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex" && "$LANGUAGES" == "ALL" ]]; then @@ -763,6 +820,8 @@ do echo "Dev Check :" $DEV_CHECK echo "DEV Status :" $DEV_STATUS echo "Motherboard:" $MOTHERBOARD + echo "Board flash:" $BOARD_FLASH + echo "Board mem :" $BOARD_MEM echo "Languages :" $LANGUAGES echo "Hex-file Folder:" $OUTPUT_FOLDER echo "$(tput sgr0)" @@ -796,7 +855,72 @@ do sed -i -- "s/^#define LANG_MODE *0/#define LANG_MODE 1/g" $SCRIPT_PATH/Firmware/config.h echo " " fi - + + # Prepare Board mem and flash modifications + ## Check board mem size + CURRENT_BOARD_MEM=$(grep "#define RAMEND" $BUILD_ENV_PATH/hardware/tools/avr/avr/include/avr/iom2560.h | sed -e's/.* //g'|cut -d ' ' -f3|tr -d $'\n') + if [ $CURRENT_BOARD_MEM != "0x21FF" ] ; then + echo "Board mem has been already modified or not reset" + echo "Current:" $CURRENT_BOARD_MEM + PS3="Select Yes if you want to reset it." + select yn in "Yes" "No"; do + case $yn in + Yes) + echo "Resetting board mem size" + sed -i -- "s/^#define RAMEND .*$/#define RAMEND 0x21FF/g" $BUILD_ENV_PATH/hardware/tools/avr/avr/include/avr/iom2560.h + break + ;; + *) + echo "Continuing with modified mem size" + break + ;; + esac + done + fi + ## Modify board mem size + if [[ ! -z $BOARD_MEM && "$BOARD_MEM" != "0x21FF" ]] ; then + echo "Modifying board memory size (hex):" + echo "Old:" $CURRENT_BOARD_MEM + echo "New:" $BOARD_MEM + read -t 5 -p "To cancel press CRTL+C" + sed -i -- "s/^#define RAMEND 0x21FF/#define RAMEND ${BOARD_MEM}/g" $BUILD_ENV_PATH/hardware/tools/avr/avr/include/avr/iom2560.h + fi + + ## Check board flash size + CURRENT_BOARD_FLASH=$(grep "#define FLASHEND" $BUILD_ENV_PATH/hardware/tools/avr/avr/include/avr/iom2560.h | sed -e's/.* //g'|cut -d ' ' -f3|tr -d $'\n') + CURRENT_BOARD_maximum_size=$(grep "prusa_einsy_rambo.upload.maximum_size" $BUILD_ENV_PATH/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr/$BOARD_VERSION/boards.txt |cut -d '=' -f2|tr -d $'\n') + if [[ $CURRENT_BOARD_FLASH != "0x3FFFF" || $CURRENT_BOARD_maximum_size != "253952" ]] ; then + echo "Board flash has been already modified or not reset" + echo "Current flash size:" $CURRENT_BOARD_FLASH + echo "Current max. size:" $CURRENT_BOARD_maximum_size + PS3="Select Yes if you want to reset it." + select yn in "Yes" "No"; do + case $yn in + Yes) + echo "Resetting board flash size" + sed -i -- "s/^#define FLASHEND .*$/#define FLASHEND 0x3FFFF/g" $BUILD_ENV_PATH/hardware/tools/avr/avr/include/avr/iom2560.h + sed -i -- "s/^prusa_einsy_rambo.upload.maximum_size.*/prusa_einsy_rambo.upload.maximum_size=253952/g" $BUILD_ENV_PATH/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr/$BOARD_VERSION/boards.txt + break + ;; + *) + echo "Continuing with modified flash size" + break + ;; + esac + done + fi + ## Modify boad flash size + if [[ ! -z $BOARD_FLASH && "$BOARD_FLASH" != "0x3FFFF" ]] ; then + echo "Modifying board flash size (hex):" + echo "Old flash size:" $CURRENT_BOARD_FLASH + echo "New flash size:" $BOARD_FLASH + echo "Old max. size:" $CURRENT_BOARD_maximum_size + echo "New max. size:" $BOARD_maximum_size + read -t 5 -p "To cancel press CRTL+C" + sed -i -- "s/^#define FLASHEND .*/#define FLASHEND ${BOARD_FLASH}/g" $BUILD_ENV_PATH/hardware/tools/avr/avr/include/avr/iom2560.h + sed -i -- "s/^prusa_einsy_rambo.upload.maximum_size.*/prusa_einsy_rambo.upload.maximum_size=${BOARD_maximum_size}/g" $BUILD_ENV_PATH/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr/$BOARD_VERSION/boards.txt + fi + #Check if compiler flags are set to Prusa specific needs for the rambo board. # if [ $TARGET_OS == "windows" ]; then # RAMBO_PLATFORM_FILE="PrusaResearchRambo/avr/platform.txt" @@ -825,7 +949,7 @@ do rm -r -f $BUILD_PATH/* || exit 36 fi - #$BUILD_ENV_PATH/arduino-builder -dump-prefs -debug-level 10 -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 30 + $BUILD_ENV_PATH/arduino-builder -dump-prefs -debug-level 10 -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 30 $BUILD_ENV_PATH/arduino-builder -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 30 echo "$(tput sgr 0)" From 1a5898c673c3806d3953f1a1210cc938f6cc9628 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Fri, 23 Apr 2021 20:09:20 +0200 Subject: [PATCH 11/34] Improve MK404-build.sh check, update --- MK404-build.sh | 87 ++++++++++++++++++++++++++++++++++++++++++++------ PF-build.sh | 18 +++++------ 2 files changed, 86 insertions(+), 19 deletions(-) diff --git a/MK404-build.sh b/MK404-build.sh index 8ed1e6b9b..9c7a14ba9 100755 --- a/MK404-build.sh +++ b/MK404-build.sh @@ -17,23 +17,27 @@ # 12 Feb 2021, 3d-gussner, Update cmake # 13 Feb 2021, 3d-gussner, Auto build SD cards -while getopts c:u:f:?h flag +while getopts c:u:f:m:g:?h flag do case "${flag}" in c) check_flag=${OPTARG};; u) update_flag=${OPTARG};; f) force_flag=${OPTARG};; + m) mk404_flag=${OPTARG};; + g) graphics_flag=${OPTARG};; ?) help_flag=1;; h) help_flag=1;; esac done echo "$check_flag" echo "$update_flag" +echo "$force_flag" +echo "$mk404_flag" +echo "$graphics_flag" #### Start check if OSTYPE is supported OS_FOUND=$( command -v uname) - case $( "${OS_FOUND}" | tr '[:upper:]' '[:lower:]') in linux*) TARGET_OS="linux" @@ -122,14 +126,82 @@ if [ ! -d $MK404_PATH ]; then git clone $MK404_URL $MK404_PATH fi -# Init and update submodules + + + +# cd $MK404_PATH -git submodule init -git submodule update + +# Check for updates ... WIP + +# Check MK404 +if [ "$force_flag" == "1" ]; then + check_flag=1 + update_flag=1 +fi +if [ "$update_flag" == "1" ]; then + check_flag=1 +fi +if [ "$check_flag" == "1" ]; then + if [ -d $MK404_BUILD_PATH ]; then + cd $MK404_BUILD_PATH + MK404_current_version=$( command ./MK404 --version | grep "MK404" | cut -f 4 -d " ") + cd $MK404_PATH + else + echo "Cannot check current version as it has not been build." + fi +# Get local Commit_Hash + MK404_local_GIT_COMMIT_HASH=$(git log --pretty=format:"%H" -1) +# Get local Commit_Number + MK404_local_GIT_COMMIT_NUMBER=$(git rev-list HEAD --count) +# Get remote Commit_Hash + MK404_remote_GIT_COMMIT_HASH=$(git ls-remote --heads $(git config --get remote.origin.url) | grep "refs/heads/master" | cut -f 1) +# Get remote Commit_Number + MK404_remote_GIT_COMMIT_NUMBER=$(git rev-list origin/master --count) +# Output + echo "Current version : $MK404_current_version" + echo "" + echo "Current local hash : $MK404_local_GIT_COMMIT_HASH" + echo "Current local commit nr : $MK404_local_GIT_COMMIT_NUMBER" + if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_remote_GIT_COMMIT_HASH" ]; then + echo "$(tput setaf 1)" + else + echo "$(tput sgr 0)" + fi + echo "Current remote hash : $MK404_remote_GIT_COMMIT_HASH" + echo "Current remote commit nr: $MK404_remote_GIT_COMMIT_NUMBER" + echo "$(tput sgr 0)" + +# Check for updates + if [[ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_remote_GIT_COMMIT_HASH" && -z "$update_flag" ]]; then + echo "$(tput setaf 2)Update is availible.$(tput sgr 0)" + read -t 10 -n 1 -p "$(tput setaf 3)Update now Y/n$(tput sgr 0)" update_answer + if [ "$update_answer" == "Y" ]; then + update_flag=1 + fi + echo "" + fi +fi +# Check for updates +if [ "$update_flag" == "1" ]; then + if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_remote_GIT_COMMIT_HASH" ]; then + echo "" + git fetch --all + read -t 10 -p "$(tput setaf 2)Updating MK404 !$(tput sgr 0)" + echo "" + git reset --hard origin/master + read -t 10 -p "$(tput setaf 2)Compiling MK404 !$(tput sgr 0)" + echo "" + force_flag=1 + fi +fi # Prepare MK404 mkdir -p $MK404_BUILD_PATH if [[ ! -f "$MK404_BUILD_PATH/Makefile" || "$force_flag" == "1" ]]; then +# Init and update submodules + git submodule init + git submodule update cmake -B$MK404_BUILD_PATH -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" fi @@ -149,8 +221,3 @@ if [[ ! -f "$MK404_BUILD_PATH/Prusa_MK3S_SDcard.bin" || "$force_flag" == "1" ]]; cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3MMU2_SDcard.bin fi -# Check for updates ... WIP -if [ "$check_flag" == "1" ]; then - current_version=$( command ./MK404 --version | grep "MK404" | cut -f 4 -d " ") - echo "Current version: $current_version" -fi \ No newline at end of file diff --git a/PF-build.sh b/PF-build.sh index 4a6d243fe..f461bfc1f 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -886,9 +886,9 @@ do if [ "$MOTHERBOARD" = "BOARD_EINSY_1_0a" ]; then echo "$(tput setaf 2)Copying multi language firmware for MK3/Einsy board to PF-build-hex folder$(tput sgr 0)" # Make a copy of "lang.bin" for MK404 MK3 and MK3S - #if [ ! -z "$mk404_flag" ]; then - #cp -f lang.bin $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-lang.bin - #fi + if [ ! -z "$mk404_flag" ]; then + cp -f lang.bin $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-lang.bin + fi # End of "lang.bin" for MK3 and MK3S copy cp -f firmware.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex else @@ -977,7 +977,7 @@ echo "more information how to flash firmware https://www.prusa3d.com/drivers/ $( # Check/compile MK404 sim if [ ! -z "$mk404_flag" ]; then - ./MK404-build.sh + ./MK404-build.sh -c1 # For Prusa MK2, MK2.5/S if [ "$MOTHERBOARD" == "BOARD_RAMBO_MINI_1_3" ]; then @@ -1009,11 +1009,11 @@ if [ ! -z "$mk404_flag" ]; then cd ../MK404/master/build # Copy language bin file for MK3 and MK3S to xflash - #if [ -f $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-lang.bin ]; then - #echo "Copy 'FW$FW-Build$BUILD-$VARIANT-lang.bin' to 'Prusa_${PRINTER}_xflash.bin'" - #dd if=/dev/zero bs=1 count=262145 | tr "\000" "\377" >Prusa_${PRINTER}_xflash.bin - #dd if=$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-lang.bin of=Prusa_${PRINTER}_xflash.bin conv=notrunc - #fi + if [ -f $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-lang.bin ]; then + echo "Copy 'FW$FW-Build$BUILD-$VARIANT-lang.bin' to 'Prusa_${PRINTER}_xflash.bin'" + dd if=/dev/zero bs=1 count=262145 | tr "\000" "\377" >Prusa_${PRINTER}_xflash.bin + dd if=$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-lang.bin of=Prusa_${PRINTER}_xflash.bin conv=notrunc + fi # Start MK404 # default with serial output and terminal to manipulate it via terminal From 2ad0514d7cb59608147dee2305ffa696af7cb32f Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Thu, 29 Apr 2021 19:15:32 +0200 Subject: [PATCH 12/34] Save changes --- PF-build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PF-build.sh b/PF-build.sh index f461bfc1f..b96fb46b7 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -504,7 +504,7 @@ if [ "$help_flag" == "1" ] ; then echo "$(tput setaf 2)-h$(tput sgr0) Help" echo echo "Brief USAGE:" - echo " $(tput setaf 2)./PF-build.sh$(tput sgr0) [-v] [-l] [-d] [-b] [-o] [-c] [-p] [-n] [-m]" + echo " $(tput setaf 2)./PF-build.sh$(tput sgr0) [-v] [-l] [-d] [-b] [-o] [-c] [-p] [-n] [-m] [-g]" echo echo "Example:" echo " $(tput setaf 2)./PF-build.sh -v All -l ALL -d GOLD$(tput sgr0)" From 6ba8999607b8ed979ebd0f930e445bdec604168e Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Thu, 29 Apr 2021 19:23:52 +0200 Subject: [PATCH 13/34] Indentations --- PF-build.sh | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/PF-build.sh b/PF-build.sh index b96fb46b7..de10ea4b4 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -237,12 +237,12 @@ fi # Check gawk ... needed during language build if ! type gawk > /dev/null; then - if [ $TARGET_OS == "linux" ]; then - echo "$(tput setaf 1)Missing 'gawk' which is important to run this script" - echo "install it with the command $(tput setaf 2)'sudo apt-get install gawk'." - #sudo apt-get update && apt-get install gawk - exit 5 - fi + if [ $TARGET_OS == "linux" ]; then + echo "$(tput setaf 1)Missing 'gawk' which is important to run this script" + echo "install it with the command $(tput setaf 2)'sudo apt-get install gawk'." + #sudo apt-get update && apt-get install gawk + exit 5 + fi fi #### End prepare bash / Linux environment @@ -299,20 +299,20 @@ fi # Download and extract supported Arduino IDE depending on OS # Windows if [ $TARGET_OS == "windows" ]; then - if [ ! -f "arduino-$ARDUINO_ENV-windows.zip" ]; then - echo "$(tput setaf 6)Downloading Windows 32/64-bit Arduino IDE portable...$(tput setaf 2)" - sleep 2 - wget https://downloads.arduino.cc/arduino-$ARDUINO_ENV-windows.zip || exit 8 - echo "$(tput sgr 0)" - fi - if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then - echo "$(tput setaf 6)Unzipping Windows 32/64-bit Arduino IDE portable...$(tput setaf 2)" - sleep 2 - unzip arduino-$ARDUINO_ENV-windows.zip -d ../PF-build-env-$BUILD_ENV || exit 8 - mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor - echo "# arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt - echo "$(tput sgr0)" - fi + if [ ! -f "arduino-$ARDUINO_ENV-windows.zip" ]; then + echo "$(tput setaf 6)Downloading Windows 32/64-bit Arduino IDE portable...$(tput setaf 2)" + sleep 2 + wget https://downloads.arduino.cc/arduino-$ARDUINO_ENV-windows.zip || exit 8 + echo "$(tput sgr 0)" + fi + if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then + echo "$(tput setaf 6)Unzipping Windows 32/64-bit Arduino IDE portable...$(tput setaf 2)" + sleep 2 + unzip arduino-$ARDUINO_ENV-windows.zip -d ../PF-build-env-$BUILD_ENV || exit 8 + mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor + echo "# arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt + echo "$(tput sgr0)" + fi fi # Linux if [ $TARGET_OS == "linux" ]; then From 2195116bebdddedbe07c6552726dcf83dd9ce63d Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sat, 1 May 2021 01:30:03 +0200 Subject: [PATCH 14/34] Add EN_ONLY support for MK404 --- PF-build.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/PF-build.sh b/PF-build.sh index de10ea4b4..1db0bc046 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -1015,8 +1015,15 @@ if [ ! -z "$mk404_flag" ]; then dd if=$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-lang.bin of=Prusa_${PRINTER}_xflash.bin conv=notrunc fi +#Decide which hex file to use EN_ONLY or Multi language +if [ "$LANGUAGES" == "ALL" ]; then + MK404_firmware_file=$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex +else + MK404_firmware_file=$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex +fi + # Start MK404 # default with serial output and terminal to manipulate it via terminal - ./MK404 Prusa_$PRINTER -s --terminal $MK404_options -f $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex + ./MK404 Prusa_$PRINTER -s --terminal $MK404_options -f $MK404_firmware_file fi #### End of MK404 Simulator From d8dd8e49e5639e4bae782f35e9545a83fe12b4a9 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Mon, 3 May 2021 07:00:15 +0200 Subject: [PATCH 15/34] Comment out "manual" xflash update as MK404 can do it now directly from the hex file. --- PF-build.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/PF-build.sh b/PF-build.sh index 1db0bc046..579b03f2f 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -1009,11 +1009,11 @@ if [ ! -z "$mk404_flag" ]; then cd ../MK404/master/build # Copy language bin file for MK3 and MK3S to xflash - if [ -f $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-lang.bin ]; then - echo "Copy 'FW$FW-Build$BUILD-$VARIANT-lang.bin' to 'Prusa_${PRINTER}_xflash.bin'" - dd if=/dev/zero bs=1 count=262145 | tr "\000" "\377" >Prusa_${PRINTER}_xflash.bin - dd if=$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-lang.bin of=Prusa_${PRINTER}_xflash.bin conv=notrunc - fi +# if [ -f $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-lang.bin ]; then +# echo "Copy 'FW$FW-Build$BUILD-$VARIANT-lang.bin' to 'Prusa_${PRINTER}_xflash.bin'" +# dd if=/dev/zero bs=1 count=262145 | tr "\000" "\377" >Prusa_${PRINTER}_xflash.bin +# dd if=$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-lang.bin of=Prusa_${PRINTER}_xflash.bin conv=notrunc +# fi #Decide which hex file to use EN_ONLY or Multi language if [ "$LANGUAGES" == "ALL" ]; then From 41d7eaa94b8339af6f45753bfc96810d8b7a8097 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Mon, 3 May 2021 08:24:02 +0200 Subject: [PATCH 16/34] Update documentation --- PF-build.sh | 139 ++++++++++++++++++++++++++++------------------------ 1 file changed, 75 insertions(+), 64 deletions(-) diff --git a/PF-build.sh b/PF-build.sh index 579b03f2f..a219b851b 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -56,7 +56,7 @@ # Some may argue that this is only used by a script, BUT as soon someone accidentally or on purpose starts Arduino IDE # it will use the default Arduino IDE folders and so can corrupt the build environment. # -# Version: 1.1.0-Build_39 +# Version: 1.2.0-Build_47 # Change log: # 12 Jan 2019, 3d-gussner, Fixed "compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections" in 'platform.txt' # 16 Jan 2019, 3d-gussner, Build_2, Added development check to modify 'Configuration.h' to prevent unwanted LCD messages that Firmware is unknown @@ -140,6 +140,13 @@ # 13 Feb 2021, 3d-gussner, Indentations # 13 Feb 2021, 3d-gussner, MK404 improvements like "flash" MK3, MK3S languages files to MK404 xflash. # 27 Feb 2021, 3d-gussner, Add './lang-community.sh' and update exits +# 03 May 2021, 3d-gussner, Update exit numbers +# 01-14 prepare build env +# 21-32 prepare compiling +# 41-47 compiling +# 51-54 cleanup +# 61-62 MK404 +# 03 May 2021, 3d-gussner, Update documentation and change version to v1.2.0 #### Start check if OSTYPE is supported OS_FOUND=$( command -v uname) @@ -308,7 +315,7 @@ if [ $TARGET_OS == "windows" ]; then if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then echo "$(tput setaf 6)Unzipping Windows 32/64-bit Arduino IDE portable...$(tput setaf 2)" sleep 2 - unzip arduino-$ARDUINO_ENV-windows.zip -d ../PF-build-env-$BUILD_ENV || exit 8 + unzip arduino-$ARDUINO_ENV-windows.zip -d ../PF-build-env-$BUILD_ENV || exit 9 mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor echo "# arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt echo "$(tput sgr0)" @@ -326,7 +333,7 @@ if [ $TARGET_OS == "linux" ]; then if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then echo "$(tput setaf 6)Unzipping Linux $Processor Arduino IDE portable...$(tput setaf 2)" sleep 2 - tar -xvf arduino-$ARDUINO_ENV-linux$Processor.tar.xz -C ../PF-build-env-$BUILD_ENV/ || exit 8 + tar -xvf arduino-$ARDUINO_ENV-linux$Processor.tar.xz -C ../PF-build-env-$BUILD_ENV/ || exit 9 mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor echo "# arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt echo "$(tput sgr0)" @@ -380,12 +387,12 @@ fi if [ ! -f "$BOARD_FILENAME-$BOARD_VERSION.tar.bz2" ]; then echo "$(tput setaf 6)Downloading Prusa Research AVR MK3 RAMBo EINSy build environment...$(tput setaf 2)" sleep 2 - wget $BOARD_FILE_URL || exit 9 + wget $BOARD_FILE_URL || exit 10 fi if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr/$BOARD_VERSION" || ! -e "../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then echo "$(tput setaf 6)Unzipping $BOARD_PACKAGE_NAME Arduino IDE portable...$(tput setaf 2)" sleep 2 - tar -xvf $BOARD_FILENAME-$BOARD_VERSION.tar.bz2 -C ../PF-build-env-$BUILD_ENV/ || exit 10 + tar -xvf $BOARD_FILENAME-$BOARD_VERSION.tar.bz2 -C ../PF-build-env-$BUILD_ENV/ || exit 11 if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME ]; then mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME fi @@ -409,13 +416,13 @@ fi if [ ! -f "PF-build-env-WinLin-$BUILD_ENV.zip" ]; then echo "$(tput setaf 6)Downloading Prusa Firmware build environment...$(tput setaf 2)" sleep 2 - wget $PF_BUILD_FILE_URL || exit 11 + wget $PF_BUILD_FILE_URL || exit 12 echo "$(tput sgr 0)" fi if [ ! -e "../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]; then echo "$(tput setaf 6)Unzipping Prusa Firmware build environment...$(tput setaf 2)" sleep 2 - unzip -o PF-build-env-WinLin-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || exit 12 + unzip -o PF-build-env-WinLin-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || exit 13 echo "# PF-build-env-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt echo "$(tput sgr0)" fi @@ -441,7 +448,7 @@ if [ -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Proc echo "Script will not continue until this have been fixed $(tput setaf 2)" sleep 2 echo "$(tput sgr0)" - exit 13 + exit 14 fi @@ -456,21 +463,21 @@ if type git > /dev/null; then git_available="1" fi -while getopts v:l:d:b:o:c:p:n:m:g:?h flag +while getopts b:c:d:g:l:m:n:o:p:v:?h flag do case "${flag}" in - v) variant_flag=${OPTARG};; - l) language_flag=${OPTARG};; - d) devel_flag=${OPTARG};; b) build_flag=${OPTARG};; - o) output_flag=${OPTARG};; c) clean_flag=${OPTARG};; - p) prusa_flag=${OPTARG};; - n) new_build_flag=${OPTARG};; - m) mk404_flag=${OPTARG};; + d) devel_flag=${OPTARG};; g) graphics_flag=${OPTARG};; - ?) help_flag=1;; h) help_flag=1;; + l) language_flag=${OPTARG};; + m) mk404_flag=${OPTARG};; + n) new_build_flag=${OPTARG};; + o) output_flag=${OPTARG};; + p) prusa_flag=${OPTARG};; + v) variant_flag=${OPTARG};; + ?) help_flag=1;; esac done #echo "variant_flag: $variant_flag"; @@ -490,21 +497,21 @@ if [ "$help_flag" == "1" ] ; then echo "* PF-build.sh Version: 1.0.6-Build_33 *" echo "***************************************" echo "Arguments:" - echo "$(tput setaf 2)-v$(tput sgr0) Variant '$(tput setaf 2)All$(tput sgr0)' or variant file name" - echo "$(tput setaf 2)-l$(tput sgr0) Languages '$(tput setaf 2)ALL$(tput sgr0)' for multi language or '$(tput setaf 2)EN_ONLY$(tput sgr0)' for English only" - echo "$(tput setaf 2)-d$(tput sgr0) Devel build '$(tput setaf 2)GOLD$(tput sgr0)', '$(tput setaf 2)RC$(tput sgr0)', '$(tput setaf 2)BETA$(tput sgr0)', '$(tput setaf 2)ALPHA$(tput sgr0)', '$(tput setaf 2)DEBUG$(tput sgr0)', '$(tput setaf 2)DEVEL$(tput sgr0)' and '$(tput setaf 2)UNKNOWN$(tput sgr0)'" echo "$(tput setaf 2)-b$(tput sgr0) Build/commit number '$(tput setaf 2)Auto$(tput sgr0)' needs git or a number" - echo "$(tput setaf 2)-o$(tput sgr0) Output '$(tput setaf 2)1$(tput sgr0)' force or '$(tput setaf 2)0$(tput sgr0)' block output and delays" - echo "$(tput setaf 2)-c$(tput sgr0) Do not clean up lang build'$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" - echo "$(tput setaf 2)-p$(tput sgr0) Keep Configuration_prusa.h '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" - echo "$(tput setaf 2)-n$(tput sgr0) New fresh build '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" - echo "$(tput setaf 2)-m$(tput sgr0) Start MK404 sim '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes '$(tput setaf 2)2$(tput sgr0)' with MMU2" + echo "$(tput setaf 2)-c$(tput sgr0) Do not clean up lang build '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" + echo "$(tput setaf 2)-d$(tput sgr0) Devel build '$(tput setaf 2)GOLD$(tput sgr0)', '$(tput setaf 2)RC$(tput sgr0)', '$(tput setaf 2)BETA$(tput sgr0)', '$(tput setaf 2)ALPHA$(tput sgr0)', '$(tput setaf 2)DEBUG$(tput sgr0)', '$(tput setaf 2)DEVEL$(tput sgr0)' and '$(tput setaf 2)UNKNOWN$(tput sgr0)'" echo "$(tput setaf 2)-g$(tput sgr0) Start MK404 grafics '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' lite '$(tput setaf 2)2$(tput sgr0)' fancy" + echo "$(tput setaf 2)-l$(tput sgr0) Languages '$(tput setaf 2)ALL$(tput sgr0)' for multi language or '$(tput setaf 2)EN_ONLY$(tput sgr0)' for English only" + echo "$(tput setaf 2)-m$(tput sgr0) Start MK404 sim '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes '$(tput setaf 2)2$(tput sgr0)' with MMU2" + echo "$(tput setaf 2)-n$(tput sgr0) New fresh build '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" + echo "$(tput setaf 2)-o$(tput sgr0) Output '$(tput setaf 2)1$(tput sgr0)' force or '$(tput setaf 2)0$(tput sgr0)' block output and delays" + echo "$(tput setaf 2)-p$(tput sgr0) Keep Configuration_prusa.h '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" + echo "$(tput setaf 2)-v$(tput sgr0) Variant '$(tput setaf 2)All$(tput sgr0)' or variant file name" echo "$(tput setaf 2)-?$(tput sgr0) Help" echo "$(tput setaf 2)-h$(tput sgr0) Help" echo echo "Brief USAGE:" - echo " $(tput setaf 2)./PF-build.sh$(tput sgr0) [-v] [-l] [-d] [-b] [-o] [-c] [-p] [-n] [-m] [-g]" + echo " $(tput setaf 2)./PF-build.sh$(tput sgr0) [-b] [-c] [-d] [-g] [-h] [-l] [-m] [-n] [-o] [-p] [-v] [-?]" echo echo "Example:" echo " $(tput setaf 2)./PF-build.sh -v All -l ALL -d GOLD$(tput sgr0)" @@ -515,7 +522,7 @@ if [ "$help_flag" == "1" ] ; then echo " with current commit count number and output extra information," echo " not delete lang build temporary files, keep Configuration_prusa.h and build with new fresh build folder." echo - exit 14 + exit 21 fi # @@ -540,7 +547,7 @@ if [ -z "$variant_flag" ] ; then ;; "Quit") echo "You chose to stop" - exit 20 + exit 22 ;; *) echo "$(tput setaf 1)This is not a valid variant$(tput sgr0)" @@ -561,7 +568,7 @@ else echo "Only $(tput setaf 2)'All'$(tput sgr0) and file names below are allowed as variant '-v' argument.$(tput setaf 2)" ls -1 $SCRIPT_PATH/Firmware/variants/*.h | xargs -n1 basename echo "$(tput sgr0)" - exit 21 + exit 23 fi fi @@ -594,7 +601,7 @@ else else echo "$(tput setaf 1)Language argument is wrong!$(tput sgr0)" echo "Only $(tput setaf 2)'ALL'$(tput sgr0) or $(tput setaf 2)'EN_ONLY'$(tput sgr0) are allowed as language '-l' argument!" - exit 22 + exit 24 fi fi #Check if DEV_STATUS is selected via argument '-d' @@ -604,7 +611,7 @@ if [ ! -z "$devel_flag" ] ; then else echo "$(tput setaf 1)Development argument is wrong!$(tput sgr0)" echo "Only $(tput setaf 2)'GOLD', 'RC', 'BETA', 'ALPHA', 'DEVEL', 'DEBUG' or 'UNKNOWN' $(tput sgr0) are allowed as devel '-d' argument!$(tput sgr0)" - exit 23 + exit 25 fi fi @@ -618,7 +625,7 @@ if [ ! -z "$build_flag" ] ; then else echo "$(tput setaf 1)Build number argument is wrong!$(tput sgr0)" echo "Only $(tput setaf 2)'Auto' (git needed) or numbers $(tput sgr0) are allowed as build '-b' argument!$(tput sgr0)" - exit 24 + exit 26 fi echo "New Build number is: $BUILD" @@ -653,18 +660,18 @@ else fi #Set BUILD_ENV_PATH -cd ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || exit 25 +cd ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || exit 27 BUILD_ENV_PATH="$( pwd -P )" cd ../.. #Checkif BUILD_PATH exists and if not creates it if [ ! -d "Prusa-Firmware-build" ]; then - mkdir Prusa-Firmware-build || exit 26 + mkdir Prusa-Firmware-build || exit 28 fi #Set the BUILD_PATH for Arduino IDE -cd Prusa-Firmware-build || exit 27 +cd Prusa-Firmware-build || exit 29 BUILD_PATH="$( pwd -P )" #Check git branch has changed @@ -733,7 +740,7 @@ do fi #Prepare hex files folders if [ ! -d "$SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD" ]; then - mkdir -p $SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD || exit 28 + mkdir -p $SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD || exit 30 fi OUTPUT_FOLDER="PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD" @@ -777,13 +784,13 @@ do #Prepare Firmware to be compiled by copying variant as Configuration_prusa.h if [ ! -f "$SCRIPT_PATH/Firmware/Configuration_prusa.h" ]; then - cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 29 + cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 31 else echo "$(tput setaf 6)Configuration_prusa.h already exist it will be overwritten in 10 seconds by the chosen variant.$(tput sgr 0)" if [ $OUTPUT == "1" ] ; then read -t 10 -p "Press Enter to continue..." fi - cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 29 + cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 31 fi #Prepare Configuration.h to use the correct FW_DEV_VERSION to prevent LCD messages when connecting with OctoPrint @@ -809,11 +816,16 @@ do #if [ $TARGET_OS == "windows" ]; then #RAMBO_PLATFORM_FILE="PrusaResearchRambo/avr/platform.txt" #fi - + + #New fresh PF-Firmware-build + if [ "$new_build_flag" == "1" ]; then + rm -r -f $BUILD_PATH/* || exit 54 + fi + #### End of Prepare building - + #### Start building - + export ARDUINO=$BUILD_ENV_PATH #echo $BUILD_ENV_PATH #export BUILDER=$ARDUINO/arduino-builder @@ -828,13 +840,8 @@ do sleep 2 fi - #New fresh PF-Firmware-build - if [ "$new_build_flag" == "1" ]; then - rm -r -f $BUILD_PATH/* || exit 36 - fi - - #$BUILD_ENV_PATH/arduino-builder -dump-prefs -debug-level 10 -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 14 - $BUILD_ENV_PATH/arduino-builder -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 30 + #$BUILD_ENV_PATH/arduino-builder -dump-prefs -debug-level 10 -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 41 + $BUILD_ENV_PATH/arduino-builder -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 42 echo "$(tput sgr 0)" if [ $LANGUAGES == "ALL" ]; then @@ -847,7 +854,7 @@ do fi cd $SCRIPT_PATH/lang echo "$(tput setaf 3)" - ./config.sh || exit 31 + ./config.sh || exit 43 echo "$(tput sgr 0)" # Check if previous languages and firmware build exist and if so clean them up if [ -f "lang_en.tmp" ]; then @@ -872,11 +879,11 @@ do fi # build languages echo "$(tput setaf 3)" - ./lang-build.sh || exit 32 + ./lang-build.sh || exit 44 # build community languages - ./lang-community.sh || exit 33 + ./lang-community.sh || exit 45 # Combine compiled firmware with languages - ./fw-build.sh || exit 33 + ./fw-build.sh || exit 46 cp not_tran.txt not_tran_$VARIANT.txt cp not_used.txt not_used_$VARIANT.txt echo "$(tput sgr 0)" @@ -911,26 +918,30 @@ do zip -m -j ../../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip ../../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex fi fi - # Cleanup after build - if [[ -z "$clean_flag" || "$clean_flag" == "0" ]]; then - echo "$(tput setaf 3)" - ./fw-clean.sh || exit 34 - ./lang-clean.sh || exit 35 - echo "$(tput sgr 0)" - fi + + # Cleanup after build + if [[ -z "$clean_flag" || "$clean_flag" == "0" ]]; then + echo "$(tput setaf 3)" + ./fw-clean.sh || exit 51 + ./lang-clean.sh || exit 52 + echo "$(tput sgr 0)" + fi + else echo "$(tput setaf 2)Copying English only firmware to PF-build-hex folder$(tput sgr 0)" - cp -f $BUILD_PATH/Firmware.ino.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex || exit 34 + cp -f $BUILD_PATH/Firmware.ino.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex || exit 47 fi # Cleanup Firmware if [[ -z "$prusa_flag" || "$prusa_flag" == "0" ]]; then - rm $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 36 + rm $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 53 fi + # Delete dupblicates if find $SCRIPT_PATH/lang/ -name '*RAMBo10a*.txt' -printf 1 -quit | grep -q 1 then rm $SCRIPT_PATH/lang/*RAMBo10a*.txt fi + # MK2 not supported in this branch if find $SCRIPT_PATH/lang/ -name '*MK2-RAMBo13a*' -printf 1 -quit | grep -q 1 then rm $SCRIPT_PATH/lang/*MK2-RAMBo13a*.txt @@ -946,7 +957,7 @@ do #New fresh PF-Firmware-build if [ "$new_build_flag" == "1" ]; then - rm -r -f $BUILD_PATH/* || exit 36 + rm -r -f $BUILD_PATH/* || exit 54 fi # Restore files to previous state @@ -977,7 +988,7 @@ echo "more information how to flash firmware https://www.prusa3d.com/drivers/ $( # Check/compile MK404 sim if [ ! -z "$mk404_flag" ]; then - ./MK404-build.sh -c1 + ./MK404-build.sh -c1 || exit 61 # For Prusa MK2, MK2.5/S if [ "$MOTHERBOARD" == "BOARD_RAMBO_MINI_1_3" ]; then @@ -1024,6 +1035,6 @@ fi # Start MK404 # default with serial output and terminal to manipulate it via terminal - ./MK404 Prusa_$PRINTER -s --terminal $MK404_options -f $MK404_firmware_file + ./MK404 Prusa_$PRINTER -s --terminal $MK404_options -f $MK404_firmware_file || exit 62 fi #### End of MK404 Simulator From 16359780f9842e3112bdabd0a740b98949818f25 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Mon, 3 May 2021 14:11:03 +0200 Subject: [PATCH 17/34] Add MK404 'atmega404' and 'atmega404_no_bootloder' option --- PF-build.sh | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/PF-build.sh b/PF-build.sh index a219b851b..11d6c092e 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -494,7 +494,7 @@ while getopts b:c:d:g:l:m:n:o:p:v:?h flag # '?' 'h' argument usage and help if [ "$help_flag" == "1" ] ; then echo "***************************************" - echo "* PF-build.sh Version: 1.0.6-Build_33 *" + echo "* PF-build.sh Version: 1.2.0-Build_47 *" echo "***************************************" echo "Arguments:" echo "$(tput setaf 2)-b$(tput sgr0) Build/commit number '$(tput setaf 2)Auto$(tput sgr0)' needs git or a number" @@ -608,6 +608,8 @@ fi if [ ! -z "$devel_flag" ] ; then if [[ "$devel_flag" == "GOLD" || "$devel_flag" == "RC" || "$devel_flag" == "BETA" || "$devel_flag" == "ALPHA" || "$devel_flag" == "DEVEL" || "$devel_flag" == "DEBUG" || "$devel_flag" == "UNKNOWN" ]] ; then DEV_STATUS_SELECTED=$devel_flag + elif [[ "$devel_flag" == "atmega404" || "$devel_flag" == "atmega404_no_bootloader" ]] ; then + MK404_DEBUG=$devel_flag else echo "$(tput setaf 1)Development argument is wrong!$(tput sgr0)" echo "Only $(tput setaf 2)'GOLD', 'RC', 'BETA', 'ALPHA', 'DEVEL', 'DEBUG' or 'UNKNOWN' $(tput sgr0) are allowed as devel '-d' argument!$(tput sgr0)" @@ -685,7 +687,7 @@ fi for v in ${VARIANTS[*]} do VARIANT=$(basename "$v" ".h") - PRINTER=$(grep --max-count=1 "\bPRINTER_TYPE\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3 | cut -d '_' -f2) + MK404_PRINTER=$(grep --max-count=1 "\bPRINTER_TYPE\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3 | cut -d '_' -f2) # Find firmware version in Configuration.h file and use it to generate the hex filename FW=$(grep --max-count=1 "\bFW_VERSION\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d '"' -f2|sed 's/\.//g') if [ -z "$BUILD" ] ; then @@ -992,10 +994,10 @@ if [ ! -z "$mk404_flag" ]; then # For Prusa MK2, MK2.5/S if [ "$MOTHERBOARD" == "BOARD_RAMBO_MINI_1_3" ]; then - PRINTER="${PRINTER}_mR13" + MK404_PRINTER="${MK404_PRINTER}_mR13" else if [[ "$mk404_flag" == "2" || "$mk404_flag" == "MMU2" || "$mk404_flag" == "MMU2S" ]]; then # Check if MMU2 is selected only for MK3/S - PRINTER="${PRINTER}MMU2" + MK404_PRINTER="${MK404_PRINTER}MMU2" fi fi @@ -1012,8 +1014,19 @@ if [ ! -z "$mk404_flag" ]; then fi fi +# Run MK404 with 'debugcore' and/or 'bootloader_file' + if [ ! -z "$MK404_DEBUG" ]; then + if [ "$MK404_DEBUG" == "atmega404" ]; then + MK404_options="${MK404_options} --debugcore" + elif [ "$MK404_DEBUG" == "atmega404_no_bootloader" ]; then + MK404_options="${MK404_options} --debugcore --bootloader_file no" + else + echo "$(tput setaf 1)Unsupported MK404 debug option $MK404_options$(tput sgr 0)" + fi + fi + # Output some useful data - echo "Printer: $PRINTER" + echo "Printer: $MK404_PRINTER" echo "Options: $MK404_options" # Change to MK404 build folder @@ -1021,9 +1034,9 @@ if [ ! -z "$mk404_flag" ]; then # Copy language bin file for MK3 and MK3S to xflash # if [ -f $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-lang.bin ]; then -# echo "Copy 'FW$FW-Build$BUILD-$VARIANT-lang.bin' to 'Prusa_${PRINTER}_xflash.bin'" -# dd if=/dev/zero bs=1 count=262145 | tr "\000" "\377" >Prusa_${PRINTER}_xflash.bin -# dd if=$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-lang.bin of=Prusa_${PRINTER}_xflash.bin conv=notrunc +# echo "Copy 'FW$FW-Build$BUILD-$VARIANT-lang.bin' to 'Prusa_${MK404_PRINTER}_xflash.bin'" +# dd if=/dev/zero bs=1 count=262145 | tr "\000" "\377" >Prusa_${MK404_PRINTER}_xflash.bin +# dd if=$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-lang.bin of=Prusa_${MK404_PRINTER}_xflash.bin conv=notrunc # fi #Decide which hex file to use EN_ONLY or Multi language @@ -1035,6 +1048,6 @@ fi # Start MK404 # default with serial output and terminal to manipulate it via terminal - ./MK404 Prusa_$PRINTER -s --terminal $MK404_options -f $MK404_firmware_file || exit 62 + ./MK404 Prusa_$MK404_PRINTER -s --terminal $MK404_options -f $MK404_firmware_file || exit 62 fi #### End of MK404 Simulator From a5ba31b247f52d52b05ded4600e3ad6392622111 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Mon, 3 May 2021 14:14:47 +0200 Subject: [PATCH 18/34] Indentations --- PF-build.sh | 1136 +++++++++++++++++++++++++-------------------------- 1 file changed, 568 insertions(+), 568 deletions(-) diff --git a/PF-build.sh b/PF-build.sh index d065d6916..7fdaf811c 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -91,7 +91,7 @@ # 13 Mar 2019, 3d-gussner, MKbel updated the Linux build environment to version 1.0.2 with an Fix maximum firmware flash size. # So did I # 11 Jul 2019, deliopoulos,Updated to v1.0.6 as Prusa needs a new board definition for Firmware 3.8.x86_64 -# - Split the Download of Windows Arduino IDE 1.8.5 and Prusa specific part +# - Split the Download of Windows Arduino IDE 1.8.5 and Prusa specific part # --> less download volume needed and saves some time # # 13 Jul 2019, deliopoulos,Splitting of Arduino IDE and Prusa parts also for Linux64 @@ -158,35 +158,35 @@ case $( "${OS_FOUND}" | tr '[:upper:]' '[:lower:]') in esac # Windows if [ $TARGET_OS == "windows" ]; then - if [ $(uname -m) == "x86_64" ]; then - echo "$(tput setaf 2)Windows 64-bit found$(tput sgr0)" - Processor="64" - elif [ $(uname -m) == "i386" ]; then - echo "$(tput setaf 2)Windows 32-bit found$(tput sgr0)" - Processor="32" - else - echo "$(tput setaf 1)Unsupported OS: Windows $(uname -m)" - echo "Please refer to the notes of build.sh$(tput sgr0)" - exit 1 - fi + if [ $(uname -m) == "x86_64" ]; then + echo "$(tput setaf 2)Windows 64-bit found$(tput sgr0)" + Processor="64" + elif [ $(uname -m) == "i386" ]; then + echo "$(tput setaf 2)Windows 32-bit found$(tput sgr0)" + Processor="32" + else + echo "$(tput setaf 1)Unsupported OS: Windows $(uname -m)" + echo "Please refer to the notes of build.sh$(tput sgr0)" + exit 1 + fi # Linux elif [ $TARGET_OS == "linux" ]; then - if [ $(uname -m) == "x86_64" ]; then - echo "$(tput setaf 2)Linux 64-bit found$(tput sgr0)" - Processor="64" - elif [[ $(uname -m) == "i386" || $(uname -m) == "i686" ]]; then - echo "$(tput setaf 2)Linux 32-bit found$(tput sgr0)" - Processor="32" - else - echo "$(tput setaf 1)Unsupported OS: Linux $(uname -m)" - echo "Please refer to the notes of build.sh$(tput sgr0)" - exit 1 - fi + if [ $(uname -m) == "x86_64" ]; then + echo "$(tput setaf 2)Linux 64-bit found$(tput sgr0)" + Processor="64" + elif [[ $(uname -m) == "i386" || $(uname -m) == "i686" ]]; then + echo "$(tput setaf 2)Linux 32-bit found$(tput sgr0)" + Processor="32" + else + echo "$(tput setaf 1)Unsupported OS: Linux $(uname -m)" + echo "Please refer to the notes of build.sh$(tput sgr0)" + exit 1 + fi else - echo "$(tput setaf 1)This script doesn't support your Operating system!" - echo "Please use Linux 64-bit or Windows 10 64-bit with Linux subsystem / git-bash" - echo "Read the notes of build.sh$(tput sgr0)" - exit 1 + echo "$(tput setaf 1)This script doesn't support your Operating system!" + echo "Please use Linux 64-bit or Windows 10 64-bit with Linux subsystem / git-bash" + echo "Read the notes of build.sh$(tput sgr0)" + exit 1 fi sleep 2 #### End check if OSTYPE is supported @@ -194,74 +194,74 @@ sleep 2 #### Prepare bash environment and check if wget, zip and other needed things are available # Check wget if ! type wget > /dev/null; then - echo "$(tput setaf 1)Missing 'wget' which is important to run this script" - echo "Please follow these instructions https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058 to install wget$(tput sgr0)" - exit 2 + echo "$(tput setaf 1)Missing 'wget' which is important to run this script" + echo "Please follow these instructions https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058 to install wget$(tput sgr0)" + exit 2 fi # Check for zip if ! type zip > /dev/null; then - if [ $TARGET_OS == "windows" ]; then - echo "$(tput setaf 1)Missing 'zip' which is important to run this script" - echo "Download and install 7z-zip from its official website https://www.7-zip.org/" - echo "By default, it is installed under the directory /c/Program Files/7-Zip in Windows 10 as my case." - echo "Run git Bash under Administrator privilege and" - echo "navigate to the directory /c/Program Files/Git/mingw64/bin," - echo "you can run the command $(tput setaf 2)ln -s /c/Program Files/7-Zip/7z.exe zip.exe$(tput sgr0)" - exit 3 - elif [ $TARGET_OS == "linux" ]; then - echo "$(tput setaf 1)Missing 'zip' which is important to run this script" - echo "install it with the command $(tput setaf 2)'sudo apt-get install zip'$(tput sgr0)" - #sudo apt-get update && apt-get install zip - exit 3 - fi + if [ $TARGET_OS == "windows" ]; then + echo "$(tput setaf 1)Missing 'zip' which is important to run this script" + echo "Download and install 7z-zip from its official website https://www.7-zip.org/" + echo "By default, it is installed under the directory /c/Program Files/7-Zip in Windows 10 as my case." + echo "Run git Bash under Administrator privilege and" + echo "navigate to the directory /c/Program Files/Git/mingw64/bin," + echo "you can run the command $(tput setaf 2)ln -s /c/Program Files/7-Zip/7z.exe zip.exe$(tput sgr0)" + exit 3 + elif [ $TARGET_OS == "linux" ]; then + echo "$(tput setaf 1)Missing 'zip' which is important to run this script" + echo "install it with the command $(tput setaf 2)'sudo apt-get install zip'$(tput sgr0)" + #sudo apt-get update && apt-get install zip + exit 3 + fi fi # Check python ... needed during language build if ! type python > /dev/null; then - if [ $TARGET_OS == "windows" ]; then - echo "$(tput setaf 1)Missing 'python3' which is important to run this script" - exit 4 - elif [ $TARGET_OS == "linux" ]; then - echo "$(tput setaf 1)Missing 'python' which is important to run this script" - echo "As Python 2.x will not be maintained from 2020 please," - echo "install it with the command $(tput setaf 2)'sudo apt-get install python3'." - echo "Check which version of Python3 has been installed using 'ls /usr/bin/python3*'" - echo "Use 'sudo ln -sf /usr/bin/python3.x /usr/bin/python' (where 'x' is your version number) to make it default.$(tput sgr0)" - #sudo apt-get update && apt-get install python3 && ln -sf /usr/bin/python3 /usr/bin/python - exit 4 - fi + if [ $TARGET_OS == "windows" ]; then + echo "$(tput setaf 1)Missing 'python3' which is important to run this script" + exit 4 + elif [ $TARGET_OS == "linux" ]; then + echo "$(tput setaf 1)Missing 'python' which is important to run this script" + echo "As Python 2.x will not be maintained from 2020 please," + echo "install it with the command $(tput setaf 2)'sudo apt-get install python3'." + echo "Check which version of Python3 has been installed using 'ls /usr/bin/python3*'" + echo "Use 'sudo ln -sf /usr/bin/python3.x /usr/bin/python' (where 'x' is your version number) to make it default.$(tput sgr0)" + #sudo apt-get update && apt-get install python3 && ln -sf /usr/bin/python3 /usr/bin/python + exit 4 + fi fi # Check gawk ... needed during language build if ! type gawk > /dev/null; then - if [ $TARGET_OS == "linux" ]; then - echo "$(tput setaf 1)Missing 'gawk' which is important to run this script" - echo "install it with the command $(tput setaf 2)'sudo apt-get install gawk'." - #sudo apt-get update && apt-get install gawk - exit 5 - fi + if [ $TARGET_OS == "linux" ]; then + echo "$(tput setaf 1)Missing 'gawk' which is important to run this script" + echo "install it with the command $(tput setaf 2)'sudo apt-get install gawk'." + #sudo apt-get update && apt-get install gawk + exit 5 + fi fi #### End prepare bash / Linux environment # Check for options/flags while getopts v:l:d:b:f:x:r:o:c:p:n:?h flag - do - case "${flag}" in - v) variant_flag=${OPTARG};; - l) language_flag=${OPTARG};; - d) devel_flag=${OPTARG};; - b) build_flag=${OPTARG};; + do + case "${flag}" in + v) variant_flag=${OPTARG};; + l) language_flag=${OPTARG};; + d) devel_flag=${OPTARG};; + b) build_flag=${OPTARG};; f) board_flash_flag=${OPTARG};; x) board_mem_flag=${OPTARG};; - o) output_flag=${OPTARG};; - c) clean_flag=${OPTARG};; - p) prusa_flag=${OPTARG};; - n) new_build_flag=${OPTARG};; - ?) help_flag=1;; - h) help_flag=1;; - esac - done + o) output_flag=${OPTARG};; + c) clean_flag=${OPTARG};; + p) prusa_flag=${OPTARG};; + n) new_build_flag=${OPTARG};; + ?) help_flag=1;; + h) help_flag=1;; + esac + done #echo "variant_flag: $variant_flag"; #echo "language_flag: $language_flag"; #echo "devel_flag: $devel_flag"; @@ -309,44 +309,44 @@ exit 6 fi #Check if Build is selected with argument '-f' if [ ! -z "$board_flash_flag" ] ; then - if [ "$board_flash_flag" == "256" ] ; then + if [ "$board_flash_flag" == "256" ] ; then BOARD_FLASH="0x3FFFF" BOARD_maximum_size="253952" - echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" - elif [ "$board_flash_flag" == "384" ] ; then + echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + elif [ "$board_flash_flag" == "384" ] ; then BOARD_FLASH="0x5FFFF" BOARD_maximum_size="385024" - echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" - elif [ "$board_flash_flag" == "512" ] ; then + echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + elif [ "$board_flash_flag" == "512" ] ; then BOARD_FLASH="0x7FFFF" BOARD_maximum_size="516096" - echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" - elif [ "$board_flash_flag" == "1024" ] ; then + echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + elif [ "$board_flash_flag" == "1024" ] ; then BOARD_FLASH="0xFFFFF" BOARD_maximum_size="1040384" - echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" - elif [[ "$board_flash_flag" == "32M" || "$board_flash_flag" == "32768" ]] ; then + echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + elif [[ "$board_flash_flag" == "32M" || "$board_flash_flag" == "32768" ]] ; then BOARD_FLASH="0x1FFFFFF" BOARD_maximum_size="33546240" - echo "Board flash size : 32 Mb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" - else - echo "Unsupported board flash size chosen. Only '256', '384', '512', '1024' and '32M' are allowed." - exit 7 - fi + echo "Board flash size : 32 Mb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + else + echo "Unsupported board flash size chosen. Only '256', '384', '512', '1024' and '32M' are allowed." + exit 7 + fi fi #Check if Build is selected with argument '-x' if [ ! -z "$board_mem_flag" ] ; then - if [ "$board_mem_flag" == "8" ] ; then + if [ "$board_mem_flag" == "8" ] ; then BOARD_MEM="0x21FF" - echo "Board mem size : $board_mem_flag Kb, $BOARD_MEM (hex)" + echo "Board mem size : $board_mem_flag Kb, $BOARD_MEM (hex)" elif [ "$board_mem_flag" == "64" ] ; then BOARD_MEM="0xFFFF" - echo "Board mem size : $board_mem_flag Kb, $BOARD_MEM (hex)" - else - echo "Unsupported board mem size chosen. Only '8', '64' are allowed." - exit 8 - fi + echo "Board mem size : $board_mem_flag Kb, $BOARD_MEM (hex)" + else + echo "Unsupported board mem size chosen. Only '8', '64' are allowed." + exit 8 + fi fi #### Set build environment @@ -398,157 +398,157 @@ BUILD_ENV_PATH="$( cd "$(dirname "$0")" ; pwd -P )" # Check if PF-build-env- exists and downloads + creates it if not # The build environment is based on the supported Arduino IDE portable version with some changes if [ ! -d "../PF-build-env-$BUILD_ENV" ]; then - echo "$(tput setaf 6)PF-build-env-$BUILD_ENV is missing ... creating it now for you$(tput sgr 0)" - mkdir ../PF-build-env-$BUILD_ENV - sleep 5 + echo "$(tput setaf 6)PF-build-env-$BUILD_ENV is missing ... creating it now for you$(tput sgr 0)" + mkdir ../PF-build-env-$BUILD_ENV + sleep 5 fi # Download and extract supported Arduino IDE depending on OS # Windows if [ $TARGET_OS == "windows" ]; then - if [ ! -f "arduino-$ARDUINO_ENV-windows.zip" ]; then - echo "$(tput setaf 6)Downloading Windows 32/64-bit Arduino IDE portable...$(tput setaf 2)" - sleep 2 - wget https://downloads.arduino.cc/arduino-$ARDUINO_ENV-windows.zip || exit 11 - echo "$(tput sgr 0)" - fi - if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then - echo "$(tput setaf 6)Unzipping Windows 32/64-bit Arduino IDE portable...$(tput setaf 2)" - sleep 2 - unzip arduino-$ARDUINO_ENV-windows.zip -d ../PF-build-env-$BUILD_ENV || exit 11 - mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor - echo "# arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt - echo "$(tput sgr0)" - fi + if [ ! -f "arduino-$ARDUINO_ENV-windows.zip" ]; then + echo "$(tput setaf 6)Downloading Windows 32/64-bit Arduino IDE portable...$(tput setaf 2)" + sleep 2 + wget https://downloads.arduino.cc/arduino-$ARDUINO_ENV-windows.zip || exit 11 + echo "$(tput sgr 0)" + fi + if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then + echo "$(tput setaf 6)Unzipping Windows 32/64-bit Arduino IDE portable...$(tput setaf 2)" + sleep 2 + unzip arduino-$ARDUINO_ENV-windows.zip -d ../PF-build-env-$BUILD_ENV || exit 11 + mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor + echo "# arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt + echo "$(tput sgr0)" + fi fi # Linux if [ $TARGET_OS == "linux" ]; then # 32 or 64 bit version - if [ ! -f "arduino-$ARDUINO_ENV-linux$Processor.tar.xz" ]; then - echo "$(tput setaf 6)Downloading Linux $Processor Arduino IDE portable...$(tput setaf 2)" - sleep 2 - wget --no-check-certificate https://downloads.arduino.cc/arduino-$ARDUINO_ENV-linux$Processor.tar.xz || exit 11 - echo "$(tput sgr 0)" - fi - if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then - echo "$(tput setaf 6)Unzipping Linux $Processor Arduino IDE portable...$(tput setaf 2)" - sleep 2 - tar -xvf arduino-$ARDUINO_ENV-linux$Processor.tar.xz -C ../PF-build-env-$BUILD_ENV/ || exit 11 - mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor - echo "# arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt - echo "$(tput sgr0)" - fi + if [ ! -f "arduino-$ARDUINO_ENV-linux$Processor.tar.xz" ]; then + echo "$(tput setaf 6)Downloading Linux $Processor Arduino IDE portable...$(tput setaf 2)" + sleep 2 + wget --no-check-certificate https://downloads.arduino.cc/arduino-$ARDUINO_ENV-linux$Processor.tar.xz || exit 11 + echo "$(tput sgr 0)" + fi + if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then + echo "$(tput setaf 6)Unzipping Linux $Processor Arduino IDE portable...$(tput setaf 2)" + sleep 2 + tar -xvf arduino-$ARDUINO_ENV-linux$Processor.tar.xz -C ../PF-build-env-$BUILD_ENV/ || exit 11 + mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor + echo "# arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt + echo "$(tput sgr0)" + fi fi # Make Arduino IDE portable if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/ + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/ fi if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable fi if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/output/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/output + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/output fi if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages fi if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook fi if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook/libraries/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook/libraries + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/sketchbook/libraries fi if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/staging/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/staging + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/staging fi # Change Arduino IDE preferences if [ ! -e ../PF-build-env-$BUILD_ENV/Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt ]; then - echo "$(tput setaf 6)Setting $ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor Arduino IDE preferences for portable GUI usage...$(tput setaf 2)" - sleep 2 - echo "update.check" - sed -i 's/update.check = true/update.check = false/g' ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt - echo "board" - sed -i "s/board = uno/board = $BOARD/g" ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt - echo "editor.linenumbers" - sed -i 's/editor.linenumbers = false/editor.linenumbers = true/g' ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt - echo "boardsmanager.additional.urls" - echo "boardsmanager.additional.urls=$BOARD_URL" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt - echo "build.verbose=true" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt - echo "compiler.cache_core=false" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt - echo "compiler.warning_level=all" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt - echo "# Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt - echo "$(tput sgr0)" + echo "$(tput setaf 6)Setting $ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor Arduino IDE preferences for portable GUI usage...$(tput setaf 2)" + sleep 2 + echo "update.check" + sed -i 's/update.check = true/update.check = false/g' ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt + echo "board" + sed -i "s/board = uno/board = $BOARD/g" ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt + echo "editor.linenumbers" + sed -i 's/editor.linenumbers = false/editor.linenumbers = true/g' ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt + echo "boardsmanager.additional.urls" + echo "boardsmanager.additional.urls=$BOARD_URL" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt + echo "build.verbose=true" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt + echo "compiler.cache_core=false" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt + echo "compiler.warning_level=all" >>../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt + echo "# Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt + echo "$(tput sgr0)" fi # Download and extract Prusa Firmware related parts # Download and extract PrusaResearchRambo board if [ ! -f "$BOARD_FILENAME-$BOARD_VERSION.tar.bz2" ]; then - echo "$(tput setaf 6)Downloading Prusa Research AVR MK3 RAMBo EINSy build environment...$(tput setaf 2)" - sleep 2 - wget $BOARD_FILE_URL || exit 9 + echo "$(tput setaf 6)Downloading Prusa Research AVR MK3 RAMBo EINSy build environment...$(tput setaf 2)" + sleep 2 + wget $BOARD_FILE_URL || exit 9 fi if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr/$BOARD_VERSION" || ! -e "../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then - echo "$(tput setaf 6)Unzipping $BOARD_PACKAGE_NAME Arduino IDE portable...$(tput setaf 2)" - sleep 2 - tar -xvf $BOARD_FILENAME-$BOARD_VERSION.tar.bz2 -C ../PF-build-env-$BUILD_ENV/ || exit 10 - if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME - fi - if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME - fi - if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware - fi - if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr ]; then - mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr - fi - - mv ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr/$BOARD_VERSION - echo "# $BOARD_FILENAME-$BOARD_VERSION" >> ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt + echo "$(tput setaf 6)Unzipping $BOARD_PACKAGE_NAME Arduino IDE portable...$(tput setaf 2)" + sleep 2 + tar -xvf $BOARD_FILENAME-$BOARD_VERSION.tar.bz2 -C ../PF-build-env-$BUILD_ENV/ || exit 10 + if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME ]; then + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME + fi + if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME ]; then + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME + fi + if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware ]; then + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware + fi + if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr ]; then + mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr + fi + + mv ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr/$BOARD_VERSION + echo "# $BOARD_FILENAME-$BOARD_VERSION" >> ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt - echo "$(tput sgr 0)" -fi + echo "$(tput sgr 0)" +fi # Download and extract Prusa Firmware specific library files if [ ! -f "PF-build-env-WinLin-$BUILD_ENV.zip" ]; then - echo "$(tput setaf 6)Downloading Prusa Firmware build environment...$(tput setaf 2)" - sleep 2 - wget $PF_BUILD_FILE_URL || exit 12 - echo "$(tput sgr 0)" + echo "$(tput setaf 6)Downloading Prusa Firmware build environment...$(tput setaf 2)" + sleep 2 + wget $PF_BUILD_FILE_URL || exit 12 + echo "$(tput sgr 0)" fi if [ ! -e "../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]; then - echo "$(tput setaf 6)Unzipping Prusa Firmware build environment...$(tput setaf 2)" - sleep 2 - unzip -o PF-build-env-WinLin-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || exit 12 - echo "# PF-build-env-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt - echo "$(tput sgr0)" + echo "$(tput setaf 6)Unzipping Prusa Firmware build environment...$(tput setaf 2)" + sleep 2 + unzip -o PF-build-env-WinLin-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || exit 12 + echo "# PF-build-env-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt + echo "$(tput sgr0)" fi # Check if User updated Arduino IDE 1.8.5 boardsmanager and tools if [ -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools" ]; then - echo "$(tput setaf 6)Arduino IDE boards / tools have been manually updated...$" - echo "Please don't update the 'Arduino AVR boards' as this will prevent running this script (tput setaf 2)" - sleep 2 -fi + echo "$(tput setaf 6)Arduino IDE boards / tools have been manually updated...$" + echo "Please don't update the 'Arduino AVR boards' as this will prevent running this script (tput setaf 2)" + sleep 2 +fi if [ -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2" ]; then - echo "$(tput setaf 6)PrusaReasearch compatible tools have been manually updated...$(tput setaf 2)" - sleep 2 - echo "$(tput setaf 6)Copying Prusa Firmware build environment to manually updated boards / tools...$(tput setaf 2)" - sleep 2 - cp -f ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/hardware/tools/avr/avr/lib/ldscripts/avr6.xn ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2/avr/lib/ldscripts/avr6.xn - echo "# PF-build-env-portable-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-portable-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt - echo "$(tput sgr0)" -fi + echo "$(tput setaf 6)PrusaReasearch compatible tools have been manually updated...$(tput setaf 2)" + sleep 2 + echo "$(tput setaf 6)Copying Prusa Firmware build environment to manually updated boards / tools...$(tput setaf 2)" + sleep 2 + cp -f ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/hardware/tools/avr/avr/lib/ldscripts/avr6.xn ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2/avr/lib/ldscripts/avr6.xn + echo "# PF-build-env-portable-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-portable-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt + echo "$(tput sgr0)" +fi if [ -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/5.4.0-atmel3.6.1-arduino2" ]; then - echo "$(tput setaf 1)Arduino IDE tools have been updated manually to a non supported version!!!" - echo "Delete ../PF-build-env-$BUILD_ENV and start the script again" - echo "Script will not continue until this have been fixed $(tput setaf 2)" - sleep 2 - echo "$(tput sgr0)" - exit 13 + echo "$(tput setaf 1)Arduino IDE tools have been updated manually to a non supported version!!!" + echo "Delete ../PF-build-env-$BUILD_ENV and start the script again" + echo "Script will not continue until this have been fixed $(tput setaf 2)" + sleep 2 + echo "$(tput sgr0)" + exit 13 fi @@ -560,54 +560,54 @@ cd $SCRIPT_PATH # Check if git is available if type git > /dev/null; then - git_available="1" + git_available="1" fi # # '-v' argument defines which variant of the Prusa Firmware will be compiled if [ -z "$variant_flag" ] ; then - # Select which variant of the Prusa Firmware will be compiled, like - PS3="Select a variant: " - while IFS= read -r -d $'\0' f; do - options[i++]="$f" - done < <(find Firmware/variants/ -maxdepth 1 -type f -name "*.h" -print0 ) - select opt in "${options[@]}" "All" "Quit"; do - case $opt in - *.h) - VARIANT=$(basename "$opt" ".h") - VARIANTS[i++]="$opt" - break - ;; - "All") - VARIANT="All" - VARIANTS=${options[*]} - break - ;; - "Quit") - echo "You chose to stop" - exit 20 - ;; - *) - echo "$(tput setaf 1)This is not a valid variant$(tput sgr0)" - ;; - esac - done + # Select which variant of the Prusa Firmware will be compiled, like + PS3="Select a variant: " + while IFS= read -r -d $'\0' f; do + options[i++]="$f" + done < <(find Firmware/variants/ -maxdepth 1 -type f -name "*.h" -print0 ) + select opt in "${options[@]}" "All" "Quit"; do + case $opt in + *.h) + VARIANT=$(basename "$opt" ".h") + VARIANTS[i++]="$opt" + break + ;; + "All") + VARIANT="All" + VARIANTS=${options[*]} + break + ;; + "Quit") + echo "You chose to stop" + exit 20 + ;; + *) + echo "$(tput setaf 1)This is not a valid variant$(tput sgr0)" + ;; + esac + done else - if [ -f "$SCRIPT_PATH/Firmware/variants/$variant_flag" ] ; then - VARIANTS=$variant_flag - elif [ "$variant_flag" == "All" ] ; then - while IFS= read -r -d $'\0' f; do - options[i++]="$f" - done < <(find Firmware/variants/ -maxdepth 1 -type f -name "*.h" -print0 ) - VARIANT="All" - VARIANTS=${options[*]} - else - echo "$(tput setaf 1)Argument $variant_flag could not be found in Firmware/variants please choose a valid one.$(tput sgr0)" - echo "Only $(tput setaf 2)'All'$(tput sgr0) and file names below are allowed as variant '-v' argument.$(tput setaf 2)" - ls -1 $SCRIPT_PATH/Firmware/variants/*.h | xargs -n1 basename - echo "$(tput sgr0)" - exit 21 - fi + if [ -f "$SCRIPT_PATH/Firmware/variants/$variant_flag" ] ; then + VARIANTS=$variant_flag + elif [ "$variant_flag" == "All" ] ; then + while IFS= read -r -d $'\0' f; do + options[i++]="$f" + done < <(find Firmware/variants/ -maxdepth 1 -type f -name "*.h" -print0 ) + VARIANT="All" + VARIANTS=${options[*]} + else + echo "$(tput setaf 1)Argument $variant_flag could not be found in Firmware/variants please choose a valid one.$(tput sgr0)" + echo "Only $(tput setaf 2)'All'$(tput sgr0) and file names below are allowed as variant '-v' argument.$(tput setaf 2)" + ls -1 $SCRIPT_PATH/Firmware/variants/*.h | xargs -n1 basename + echo "$(tput sgr0)" + exit 21 + fi fi #'-l' argument defines if it is an English only version. Known values EN_ONLY / ALL @@ -615,86 +615,86 @@ fi MULTI_LANGUAGE_CHECK=$(grep --max-count=1 "^#define LANG_MODE *" $SCRIPT_PATH/Firmware/config.h|sed -e's/ */ /g'|cut -d ' ' -f3) if [ -z "$language_flag" ] ; then - PS3="Select a language: " - echo - echo "Which lang-build do you want?" - select yn in "Multi languages" "English only"; do - case $yn in - "Multi languages") - LANGUAGES="ALL" - break - ;; - "English only") - LANGUAGES="EN_ONLY" - break - ;; - *) - echo "$(tput setaf 1)This is not a valid language$(tput sgr0)" - ;; - esac - done + PS3="Select a language: " + echo + echo "Which lang-build do you want?" + select yn in "Multi languages" "English only"; do + case $yn in + "Multi languages") + LANGUAGES="ALL" + break + ;; + "English only") + LANGUAGES="EN_ONLY" + break + ;; + *) + echo "$(tput setaf 1)This is not a valid language$(tput sgr0)" + ;; + esac + done else - if [[ "$language_flag" == "ALL" || "$language_flag" == "EN_ONLY" ]] ; then - LANGUAGES=$language_flag - else - echo "$(tput setaf 1)Language argument is wrong!$(tput sgr0)" - echo "Only $(tput setaf 2)'ALL'$(tput sgr0) or $(tput setaf 2)'EN_ONLY'$(tput sgr0) are allowed as language '-l' argument!" - exit 22 - fi + if [[ "$language_flag" == "ALL" || "$language_flag" == "EN_ONLY" ]] ; then + LANGUAGES=$language_flag + else + echo "$(tput setaf 1)Language argument is wrong!$(tput sgr0)" + echo "Only $(tput setaf 2)'ALL'$(tput sgr0) or $(tput setaf 2)'EN_ONLY'$(tput sgr0) are allowed as language '-l' argument!" + exit 22 + fi fi #Check if DEV_STATUS is selected via argument '-d' if [ ! -z "$devel_flag" ] ; then - if [[ "$devel_flag" == "GOLD" || "$devel_flag" == "RC" || "$devel_flag" == "BETA" || "$devel_flag" == "ALPHA" || "$devel_flag" == "DEVEL" || "$devel_flag" == "DEBUG" || "$devel_flag" == "UNKNOWN" ]] ; then - DEV_STATUS_SELECTED=$devel_flag - else - echo "$(tput setaf 1)Development argument is wrong!$(tput sgr0)" - echo "Only $(tput setaf 2)'GOLD', 'RC', 'BETA', 'ALPHA', 'DEVEL', 'DEBUG' or 'UNKNOWN' $(tput sgr0) are allowed as devel '-d' argument!$(tput sgr0)" - exit 23 - fi + if [[ "$devel_flag" == "GOLD" || "$devel_flag" == "RC" || "$devel_flag" == "BETA" || "$devel_flag" == "ALPHA" || "$devel_flag" == "DEVEL" || "$devel_flag" == "DEBUG" || "$devel_flag" == "UNKNOWN" ]] ; then + DEV_STATUS_SELECTED=$devel_flag + else + echo "$(tput setaf 1)Development argument is wrong!$(tput sgr0)" + echo "Only $(tput setaf 2)'GOLD', 'RC', 'BETA', 'ALPHA', 'DEVEL', 'DEBUG' or 'UNKNOWN' $(tput sgr0) are allowed as devel '-d' argument!$(tput sgr0)" + exit 23 + fi fi #Check if Build is selected via argument '-b' if [ ! -z "$build_flag" ] ; then - if [[ "$build_flag" == "Auto" && "$git_available" == "1" ]] ; then - echo "Build changed to $build_flag" - BUILD=$(git rev-list --count HEAD) - elif [[ $build_flag =~ ^[0-9]+$ ]] ; then - BUILD=$build_flag - else - echo "$(tput setaf 1)Build number argument is wrong!$(tput sgr0)" - echo "Only $(tput setaf 2)'Auto' (git needed) or numbers $(tput sgr0) are allowed as build '-b' argument!$(tput sgr0)" - exit 24 + if [[ "$build_flag" == "Auto" && "$git_available" == "1" ]] ; then + echo "Build changed to $build_flag" + BUILD=$(git rev-list --count HEAD) + elif [[ $build_flag =~ ^[0-9]+$ ]] ; then + BUILD=$build_flag + else + echo "$(tput setaf 1)Build number argument is wrong!$(tput sgr0)" + echo "Only $(tput setaf 2)'Auto' (git needed) or numbers $(tput sgr0) are allowed as build '-b' argument!$(tput sgr0)" + exit 24 - fi - echo "New Build number is: $BUILD" + fi + echo "New Build number is: $BUILD" fi # check if script has been started with arguments if [[ "$#" -eq "0" || "$output_flag" == 1 ]] ; then - OUTPUT=1 + OUTPUT=1 else - OUTPUT=0 + OUTPUT=0 fi #echo "Output is:" $OUTPUT #Check git branch has changed if [ ! -z "git_available" ]; then - BRANCH="" - CLEAN_PF_FW_BUILD=0 + BRANCH="" + CLEAN_PF_FW_BUILD=0 else - BRANCH=$(git branch --show-current) - echo "Current branch is:" $BRANCH - if [ ! -f "$SCRIPT_PATH/../PF-build.branch" ]; then - echo "$BRANCH" >| $SCRIPT_PATH/../PF-build.branch - echo "created PF-build.branch file" - else - PRE_BRANCH=$(cat "$SCRIPT_PATH/../PF-build.branch") - echo "Previous branch was:" $PRE_BRANCH - if [ ! "$BRANCH" == "$PRE_BRANCH" ] ; then - CLEAN_PF_FW_BUILD=1 - echo "$BRANCH" >| $SCRIPT_PATH/../PF-build.branch - fi - fi + BRANCH=$(git branch --show-current) + echo "Current branch is:" $BRANCH + if [ ! -f "$SCRIPT_PATH/../PF-build.branch" ]; then + echo "$BRANCH" >| $SCRIPT_PATH/../PF-build.branch + echo "created PF-build.branch file" + else + PRE_BRANCH=$(cat "$SCRIPT_PATH/../PF-build.branch") + echo "Previous branch was:" $PRE_BRANCH + if [ ! "$BRANCH" == "$PRE_BRANCH" ] ; then + CLEAN_PF_FW_BUILD=1 + echo "$BRANCH" >| $SCRIPT_PATH/../PF-build.branch + fi + fi fi #Set BUILD_ENV_PATH @@ -714,147 +714,147 @@ BUILD_PATH="$( pwd -P )" #Check git branch has changed if [ "$CLEAN_PF_FW_BUILD" == "1" ]; then - read -t 10 -p "Branch changed, cleaning Prusa-Firmware-build folder" - rm -r * + read -t 10 -p "Branch changed, cleaning Prusa-Firmware-build folder" + rm -r * else - echo "Nothing to clean up" + echo "Nothing to clean up" fi for v in ${VARIANTS[*]} do - VARIANT=$(basename "$v" ".h") - # Find firmware version in Configuration.h file and use it to generate the hex filename - FW=$(grep --max-count=1 "\bFW_VERSION\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d '"' -f2|sed 's/\.//g') - if [ -z "$BUILD" ] ; then - # Find build version in Configuration.h file and use it to generate the hex filename - BUILD=$(grep --max-count=1 "\bFW_COMMIT_NR\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d ' ' -f3) - else - # Find and replace build version in Configuration.h file - BUILD_ORG=$(grep --max-count=1 "\bFW_COMMIT_NR\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d ' ' -f3) - echo "Original build number: $BUILD_ORG" - sed -i -- "s/^#define FW_COMMIT_NR.*/#define FW_COMMIT_NR $BUILD/g" $SCRIPT_PATH/Firmware/Configuration.h - fi - # Check if the motherboard is an EINSY and if so only one hex file will generated - MOTHERBOARD=$(grep --max-count=1 "\bMOTHERBOARD\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3) - # Check development status - DEV_CHECK=$(grep --max-count=1 "\bFW_VERSION\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d '"' -f2|sed 's/\.//g'|cut -d '-' -f2) - if [ -z "$DEV_STATUS_SELECTED" ] ; then - if [[ "$DEV_CHECK" == *"RC"* ]] ; then - DEV_STATUS="RC" - elif [[ "$DEV_CHECK" == "ALPHA" ]]; then - DEV_STATUS="ALPHA" - elif [[ "$DEV_CHECK" == "BETA" ]]; then - DEV_STATUS="BETA" - elif [[ "$DEV_CHECK" == "DEVEL" ]]; then - DEV_STATUS="DEVEL" - elif [[ "$DEV_CHECK" == "DEBUG" ]]; then - DEV_STATUS="DEBUG" - else - DEV_STATUS="UNKNOWN" - echo - echo "$(tput setaf 5)DEV_STATUS is UNKNOWN. Do you wish to set DEV_STATUS to GOLD?$(tput sgr0)" - PS3="Select YES only if source code is tested and trusted: " - select yn in "Yes" "No"; do - case $yn in - Yes) - DEV_STATUS="GOLD" - DEV_STATUS_SELECTED="GOLD" - break - ;; - No) - DEV_STATUS="UNKNOWN" - DEV_STATUS_SELECTED="UNKNOWN" - break - ;; - *) - echo "$(tput setaf 1)This is not a valid DEV_STATUS$(tput sgr0)" - ;; - esac - done - fi - else - DEV_STATUS=$DEV_STATUS_SELECTED - fi - #Prepare hex files folders - if [ ! -d "$SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD" ]; then - mkdir -p $SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD || exit 28 - fi - OUTPUT_FOLDER="PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD" + VARIANT=$(basename "$v" ".h") + # Find firmware version in Configuration.h file and use it to generate the hex filename + FW=$(grep --max-count=1 "\bFW_VERSION\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d '"' -f2|sed 's/\.//g') + if [ -z "$BUILD" ] ; then + # Find build version in Configuration.h file and use it to generate the hex filename + BUILD=$(grep --max-count=1 "\bFW_COMMIT_NR\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d ' ' -f3) + else + # Find and replace build version in Configuration.h file + BUILD_ORG=$(grep --max-count=1 "\bFW_COMMIT_NR\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d ' ' -f3) + echo "Original build number: $BUILD_ORG" + sed -i -- "s/^#define FW_COMMIT_NR.*/#define FW_COMMIT_NR $BUILD/g" $SCRIPT_PATH/Firmware/Configuration.h + fi + # Check if the motherboard is an EINSY and if so only one hex file will generated + MOTHERBOARD=$(grep --max-count=1 "\bMOTHERBOARD\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3) + # Check development status + DEV_CHECK=$(grep --max-count=1 "\bFW_VERSION\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d '"' -f2|sed 's/\.//g'|cut -d '-' -f2) + if [ -z "$DEV_STATUS_SELECTED" ] ; then + if [[ "$DEV_CHECK" == *"RC"* ]] ; then + DEV_STATUS="RC" + elif [[ "$DEV_CHECK" == "ALPHA" ]]; then + DEV_STATUS="ALPHA" + elif [[ "$DEV_CHECK" == "BETA" ]]; then + DEV_STATUS="BETA" + elif [[ "$DEV_CHECK" == "DEVEL" ]]; then + DEV_STATUS="DEVEL" + elif [[ "$DEV_CHECK" == "DEBUG" ]]; then + DEV_STATUS="DEBUG" + else + DEV_STATUS="UNKNOWN" + echo + echo "$(tput setaf 5)DEV_STATUS is UNKNOWN. Do you wish to set DEV_STATUS to GOLD?$(tput sgr0)" + PS3="Select YES only if source code is tested and trusted: " + select yn in "Yes" "No"; do + case $yn in + Yes) + DEV_STATUS="GOLD" + DEV_STATUS_SELECTED="GOLD" + break + ;; + No) + DEV_STATUS="UNKNOWN" + DEV_STATUS_SELECTED="UNKNOWN" + break + ;; + *) + echo "$(tput setaf 1)This is not a valid DEV_STATUS$(tput sgr0)" + ;; + esac + done + fi + else + DEV_STATUS=$DEV_STATUS_SELECTED + fi + #Prepare hex files folders + if [ ! -d "$SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD" ]; then + mkdir -p $SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD || exit 28 + fi + OUTPUT_FOLDER="PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD" if [ "$BOARD" != "prusa_einsy_rambo" ]; then - if [ ! -d "$SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$BOARD" ]; then - mkdir -p $SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$BOARD || exit 28 - fi + if [ ! -d "$SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$BOARD" ]; then + mkdir -p $SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$BOARD || exit 28 + fi OUTPUT_FOLDER="PF-build-hex/FW$FW-Build$BUILD/$BOARD" fi - - #Check if exactly the same hexfile already exists - if [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex" && "$LANGUAGES" == "ALL" ]]; then - echo "" - ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex | xargs -n1 basename - echo "$(tput setaf 6)This hex file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)" - if [ $OUTPUT == "1" ] ; then - read -t 10 -p "Press Enter to continue..." - fi - elif [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex" && "$LANGUAGES" == "EN_ONLY" ]]; then - echo "" - ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex | xargs -n1 basename - echo "$(tput setaf 6)This hex file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)" - if [ $OUTPUT == "1" ] ; then - read -t 10 -p "Press Enter to continue..." - fi - fi - if [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip" && "$LANGUAGES" == "ALL" ]]; then - echo "" - ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip | xargs -n1 basename - echo "$(tput setaf 6)This zip file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)" - if [ $OUTPUT == "1" ] ; then - read -t 10 -p "Press Enter to continue..." - fi - fi - - #List some useful data - echo "$(tput setaf 2)$(tput setab 7) " - echo "Variant :" $VARIANT - echo "Firmware :" $FW - echo "Build # :" $BUILD - echo "Dev Check :" $DEV_CHECK - echo "DEV Status :" $DEV_STATUS - echo "Motherboard:" $MOTHERBOARD + + #Check if exactly the same hexfile already exists + if [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex" && "$LANGUAGES" == "ALL" ]]; then + echo "" + ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex | xargs -n1 basename + echo "$(tput setaf 6)This hex file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)" + if [ $OUTPUT == "1" ] ; then + read -t 10 -p "Press Enter to continue..." + fi + elif [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex" && "$LANGUAGES" == "EN_ONLY" ]]; then + echo "" + ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex | xargs -n1 basename + echo "$(tput setaf 6)This hex file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)" + if [ $OUTPUT == "1" ] ; then + read -t 10 -p "Press Enter to continue..." + fi + fi + if [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip" && "$LANGUAGES" == "ALL" ]]; then + echo "" + ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip | xargs -n1 basename + echo "$(tput setaf 6)This zip file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)" + if [ $OUTPUT == "1" ] ; then + read -t 10 -p "Press Enter to continue..." + fi + fi + + #List some useful data + echo "$(tput setaf 2)$(tput setab 7) " + echo "Variant :" $VARIANT + echo "Firmware :" $FW + echo "Build # :" $BUILD + echo "Dev Check :" $DEV_CHECK + echo "DEV Status :" $DEV_STATUS + echo "Motherboard:" $MOTHERBOARD echo "Board flash:" $BOARD_FLASH echo "Board mem :" $BOARD_MEM - echo "Languages :" $LANGUAGES - echo "Hex-file Folder:" $OUTPUT_FOLDER - echo "$(tput sgr0)" + echo "Languages :" $LANGUAGES + echo "Hex-file Folder:" $OUTPUT_FOLDER + echo "$(tput sgr0)" - #Prepare Firmware to be compiled by copying variant as Configuration_prusa.h - if [ ! -f "$SCRIPT_PATH/Firmware/Configuration_prusa.h" ]; then - cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 29 - else - echo "$(tput setaf 6)Configuration_prusa.h already exist it will be overwritten in 10 seconds by the chosen variant.$(tput sgr 0)" - if [ $OUTPUT == "1" ] ; then - read -t 10 -p "Press Enter to continue..." - fi - cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 29 - fi + #Prepare Firmware to be compiled by copying variant as Configuration_prusa.h + if [ ! -f "$SCRIPT_PATH/Firmware/Configuration_prusa.h" ]; then + cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 29 + else + echo "$(tput setaf 6)Configuration_prusa.h already exist it will be overwritten in 10 seconds by the chosen variant.$(tput sgr 0)" + if [ $OUTPUT == "1" ] ; then + read -t 10 -p "Press Enter to continue..." + fi + cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 29 + fi - #Prepare Configuration.h to use the correct FW_DEV_VERSION to prevent LCD messages when connecting with OctoPrint - sed -i -- "s/#define FW_DEV_VERSION FW_VERSION_UNKNOWN/#define FW_DEV_VERSION FW_VERSION_$DEV_STATUS/g" $SCRIPT_PATH/Firmware/Configuration.h + #Prepare Configuration.h to use the correct FW_DEV_VERSION to prevent LCD messages when connecting with OctoPrint + sed -i -- "s/#define FW_DEV_VERSION FW_VERSION_UNKNOWN/#define FW_DEV_VERSION FW_VERSION_$DEV_STATUS/g" $SCRIPT_PATH/Firmware/Configuration.h - # set FW_REPOSITORY - sed -i -- 's/#define FW_REPOSITORY "Unknown"/#define FW_REPOSITORY "Prusa3d"/g' $SCRIPT_PATH/Firmware/Configuration.h + # set FW_REPOSITORY + sed -i -- 's/#define FW_REPOSITORY "Unknown"/#define FW_REPOSITORY "Prusa3d"/g' $SCRIPT_PATH/Firmware/Configuration.h - #Prepare English only or multi-language version to be build - if [ $LANGUAGES == "EN_ONLY" ]; then - echo " " - echo "English only language firmware will be built" - sed -i -- "s/^#define LANG_MODE *1/#define LANG_MODE 0/g" $SCRIPT_PATH/Firmware/config.h - echo " " - else - echo " " - echo "Multi-language firmware will be built" - sed -i -- "s/^#define LANG_MODE *0/#define LANG_MODE 1/g" $SCRIPT_PATH/Firmware/config.h - echo " " - fi + #Prepare English only or multi-language version to be build + if [ $LANGUAGES == "EN_ONLY" ]; then + echo " " + echo "English only language firmware will be built" + sed -i -- "s/^#define LANG_MODE *1/#define LANG_MODE 0/g" $SCRIPT_PATH/Firmware/config.h + echo " " + else + echo " " + echo "Multi-language firmware will be built" + sed -i -- "s/^#define LANG_MODE *0/#define LANG_MODE 1/g" $SCRIPT_PATH/Firmware/config.h + echo " " + fi # Prepare Board mem and flash modifications ## Check board mem size @@ -921,154 +921,154 @@ do sed -i -- "s/^prusa_einsy_rambo.upload.maximum_size.*/prusa_einsy_rambo.upload.maximum_size=${BOARD_maximum_size}/g" $BUILD_ENV_PATH/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr/$BOARD_VERSION/boards.txt fi - #Check if compiler flags are set to Prusa specific needs for the rambo board. -# if [ $TARGET_OS == "windows" ]; then -# RAMBO_PLATFORM_FILE="PrusaResearchRambo/avr/platform.txt" -# fi - - #### End of Prepare building - - #### Start building - - export ARDUINO=$BUILD_ENV_PATH - #echo $BUILD_ENV_PATH - #export BUILDER=$ARDUINO/arduino-builder + #Check if compiler flags are set to Prusa specific needs for the rambo board. +# if [ $TARGET_OS == "windows" ]; then +# RAMBO_PLATFORM_FILE="PrusaResearchRambo/avr/platform.txt" +# fi + + #### End of Prepare building + + #### Start building + + export ARDUINO=$BUILD_ENV_PATH + #echo $BUILD_ENV_PATH + #export BUILDER=$ARDUINO/arduino-builder - echo - #read -t 5 -p "Press Enter..." - echo + echo + #read -t 5 -p "Press Enter..." + echo - echo "Start to build Prusa Firmware ..." - echo "Using variant $VARIANT$(tput setaf 3)" - if [ $OUTPUT == "1" ] ; then - sleep 2 - fi + echo "Start to build Prusa Firmware ..." + echo "Using variant $VARIANT$(tput setaf 3)" + if [ $OUTPUT == "1" ] ; then + sleep 2 + fi - #New fresh PF-Firmware-build - if [ "$new_build_flag" == "1" ]; then - rm -r -f $BUILD_PATH/* || exit 36 - fi + #New fresh PF-Firmware-build + if [ "$new_build_flag" == "1" ]; then + rm -r -f $BUILD_PATH/* || exit 36 + fi - $BUILD_ENV_PATH/arduino-builder -dump-prefs -debug-level 10 -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 30 - $BUILD_ENV_PATH/arduino-builder -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 30 - echo "$(tput sgr 0)" + $BUILD_ENV_PATH/arduino-builder -dump-prefs -debug-level 10 -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 30 + $BUILD_ENV_PATH/arduino-builder -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 30 + echo "$(tput sgr 0)" - if [ $LANGUAGES == "ALL" ]; then - echo "$(tput setaf 2)" + if [ $LANGUAGES == "ALL" ]; then + echo "$(tput setaf 2)" - echo "Building multi language firmware" $MULTI_LANGUAGE_CHECK - echo "$(tput sgr 0)" - if [ $OUTPUT == "1" ] ; then - sleep 2 - fi - cd $SCRIPT_PATH/lang - echo "$(tput setaf 3)" - ./config.sh || exit 31 - echo "$(tput sgr 0)" - # Check if previous languages and firmware build exist and if so clean them up - if [ -f "lang_en.tmp" ]; then - echo "" - echo "$(tput setaf 6)Previous lang build files already exist these will be cleaned up in 10 seconds.$(tput sgr 0)" - if [ $OUTPUT == "1" ] ; then - read -t 10 -p "Press Enter to continue..." - fi - echo "$(tput setaf 3)" - ./lang-clean.sh - echo "$(tput sgr 0)" - fi - if [ -f "progmem.out" ]; then - echo "" - echo "$(tput setaf 6)Previous firmware build files already exist these will be cleaned up in 10 seconds.$(tput sgr 0)" - if [ $OUTPUT == "1" ] ; then - read -t 10 -p "Press Enter to continue..." - fi - echo "$(tput setaf 3)" - ./fw-clean.sh - echo "$(tput sgr 0)" - fi - # build languages - echo "$(tput setaf 3)" - ./lang-build.sh || exit 32 - #Community language support - ./lang-community.sh || exit 33 - # Combine compiled firmware with languages - ./fw-build.sh || exit 34 - cp not_tran.txt not_tran_$VARIANT.txt - cp not_used.txt not_used_$VARIANT.txt - echo "$(tput sgr 0)" - # Check if the motherboard is an EINSY and if so only one hex file will generated - MOTHERBOARD=$(grep --max-count=1 "\bMOTHERBOARD\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3) - # If the motherboard is an EINSY just copy one hexfile - if [ "$MOTHERBOARD" = "BOARD_EINSY_1_0a" ]; then - echo "$(tput setaf 2)Copying multi language firmware for MK3/Einsy board to PF-build-hex folder$(tput sgr 0)" - cp -f firmware.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex - else - echo "$(tput setaf 2)Zip multi language firmware for MK2.5/miniRAMbo board to PF-build-hex folder$(tput sgr 0)" - cp -f firmware_cz.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-cz.hex - cp -f firmware_de.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-de.hex - cp -f firmware_es.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-es.hex - cp -f firmware_fr.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-fr.hex - cp -f firmware_it.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-it.hex - cp -f firmware_pl.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-pl.hex - cp -f firmware_nl.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-nl.hex - if [ $TARGET_OS == "windows" ]; then - zip a $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex - rm $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex - elif [ $TARGET_OS == "linux" ]; then - zip -m -j ../../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip ../../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex - fi - fi - # Cleanup after build - if [[ -z "$clean_flag" || "$clean_flag" == "0" ]]; then - echo "$(tput setaf 3)" - ./fw-clean.sh || exit 35 - ./lang-clean.sh || exit 36 - echo "$(tput sgr 0)" - fi - else - echo "$(tput setaf 2)Copying English only firmware to PF-build-hex folder$(tput sgr 0)" - cp -f $BUILD_PATH/Firmware.ino.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex || exit 37 - fi + echo "Building multi language firmware" $MULTI_LANGUAGE_CHECK + echo "$(tput sgr 0)" + if [ $OUTPUT == "1" ] ; then + sleep 2 + fi + cd $SCRIPT_PATH/lang + echo "$(tput setaf 3)" + ./config.sh || exit 31 + echo "$(tput sgr 0)" + # Check if previous languages and firmware build exist and if so clean them up + if [ -f "lang_en.tmp" ]; then + echo "" + echo "$(tput setaf 6)Previous lang build files already exist these will be cleaned up in 10 seconds.$(tput sgr 0)" + if [ $OUTPUT == "1" ] ; then + read -t 10 -p "Press Enter to continue..." + fi + echo "$(tput setaf 3)" + ./lang-clean.sh + echo "$(tput sgr 0)" + fi + if [ -f "progmem.out" ]; then + echo "" + echo "$(tput setaf 6)Previous firmware build files already exist these will be cleaned up in 10 seconds.$(tput sgr 0)" + if [ $OUTPUT == "1" ] ; then + read -t 10 -p "Press Enter to continue..." + fi + echo "$(tput setaf 3)" + ./fw-clean.sh + echo "$(tput sgr 0)" + fi + # build languages + echo "$(tput setaf 3)" + ./lang-build.sh || exit 32 + #Community language support + ./lang-community.sh || exit 33 + # Combine compiled firmware with languages + ./fw-build.sh || exit 34 + cp not_tran.txt not_tran_$VARIANT.txt + cp not_used.txt not_used_$VARIANT.txt + echo "$(tput sgr 0)" + # Check if the motherboard is an EINSY and if so only one hex file will generated + MOTHERBOARD=$(grep --max-count=1 "\bMOTHERBOARD\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3) + # If the motherboard is an EINSY just copy one hexfile + if [ "$MOTHERBOARD" = "BOARD_EINSY_1_0a" ]; then + echo "$(tput setaf 2)Copying multi language firmware for MK3/Einsy board to PF-build-hex folder$(tput sgr 0)" + cp -f firmware.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex + else + echo "$(tput setaf 2)Zip multi language firmware for MK2.5/miniRAMbo board to PF-build-hex folder$(tput sgr 0)" + cp -f firmware_cz.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-cz.hex + cp -f firmware_de.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-de.hex + cp -f firmware_es.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-es.hex + cp -f firmware_fr.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-fr.hex + cp -f firmware_it.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-it.hex + cp -f firmware_pl.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-pl.hex + cp -f firmware_nl.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-nl.hex + if [ $TARGET_OS == "windows" ]; then + zip a $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex + rm $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex + elif [ $TARGET_OS == "linux" ]; then + zip -m -j ../../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip ../../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex + fi + fi + # Cleanup after build + if [[ -z "$clean_flag" || "$clean_flag" == "0" ]]; then + echo "$(tput setaf 3)" + ./fw-clean.sh || exit 35 + ./lang-clean.sh || exit 36 + echo "$(tput sgr 0)" + fi + else + echo "$(tput setaf 2)Copying English only firmware to PF-build-hex folder$(tput sgr 0)" + cp -f $BUILD_PATH/Firmware.ino.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex || exit 37 + fi - # Cleanup Firmware - if [[ -z "$prusa_flag" || "$prusa_flag" == "0" ]]; then - rm $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 38 - fi - if find $SCRIPT_PATH/lang/ -name '*RAMBo10a*.txt' -printf 1 -quit | grep -q 1 - then - rm $SCRIPT_PATH/lang/*RAMBo10a*.txt - fi - if find $SCRIPT_PATH/lang/ -name '*MK2-RAMBo13a*' -printf 1 -quit | grep -q 1 - then - rm $SCRIPT_PATH/lang/*MK2-RAMBo13a*.txt - fi - if find $SCRIPT_PATH/lang/ -name 'not_tran.txt' -printf 1 -quit | grep -q 1 - then - rm $SCRIPT_PATH/lang/not_tran.txt - fi - if find $SCRIPT_PATH/lang/ -name 'not_used.txt' -printf 1 -quit | grep -q 1 - then - rm $SCRIPT_PATH/lang/not_used.txt - fi + # Cleanup Firmware + if [[ -z "$prusa_flag" || "$prusa_flag" == "0" ]]; then + rm $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 38 + fi + if find $SCRIPT_PATH/lang/ -name '*RAMBo10a*.txt' -printf 1 -quit | grep -q 1 + then + rm $SCRIPT_PATH/lang/*RAMBo10a*.txt + fi + if find $SCRIPT_PATH/lang/ -name '*MK2-RAMBo13a*' -printf 1 -quit | grep -q 1 + then + rm $SCRIPT_PATH/lang/*MK2-RAMBo13a*.txt + fi + if find $SCRIPT_PATH/lang/ -name 'not_tran.txt' -printf 1 -quit | grep -q 1 + then + rm $SCRIPT_PATH/lang/not_tran.txt + fi + if find $SCRIPT_PATH/lang/ -name 'not_used.txt' -printf 1 -quit | grep -q 1 + then + rm $SCRIPT_PATH/lang/not_used.txt + fi - #New fresh PF-Firmware-build - if [ "$new_build_flag" == "1" ]; then - rm -r -f $BUILD_PATH/* || exit 39 - fi + #New fresh PF-Firmware-build + if [ "$new_build_flag" == "1" ]; then + rm -r -f $BUILD_PATH/* || exit 39 + fi - # Restore files to previous state - sed -i -- "s/^#define FW_DEV_VERSION FW_VERSION_$DEV_STATUS/#define FW_DEV_VERSION FW_VERSION_UNKNOWN/g" $SCRIPT_PATH/Firmware/Configuration.h - sed -i -- 's/^#define FW_REPOSITORY "Prusa3d"/#define FW_REPOSITORY "Unknown"/g' $SCRIPT_PATH/Firmware/Configuration.h - if [ ! -z "$BUILD_ORG" ] ; then - sed -i -- "s/^#define FW_COMMIT_NR.*/#define FW_COMMIT_NR $BUILD_ORG/g" $SCRIPT_PATH/Firmware/Configuration.h - fi - echo $MULTI_LANGUAGE_CHECK - #sed -i -- "s/^#define LANG_MODE * /#define LANG_MODE $MULTI_LANGUAGE_CHECK/g" $SCRIPT_PATH/Firmware/config.h - sed -i -- "s/^#define LANG_MODE *1/#define LANG_MODE ${MULTI_LANGUAGE_CHECK}/g" $SCRIPT_PATH/Firmware/config.h - sed -i -- "s/^#define LANG_MODE *0/#define LANG_MODE ${MULTI_LANGUAGE_CHECK}/g" $SCRIPT_PATH/Firmware/config.h - if [ $OUTPUT == "1" ] ; then - sleep 5 - fi + # Restore files to previous state + sed -i -- "s/^#define FW_DEV_VERSION FW_VERSION_$DEV_STATUS/#define FW_DEV_VERSION FW_VERSION_UNKNOWN/g" $SCRIPT_PATH/Firmware/Configuration.h + sed -i -- 's/^#define FW_REPOSITORY "Prusa3d"/#define FW_REPOSITORY "Unknown"/g' $SCRIPT_PATH/Firmware/Configuration.h + if [ ! -z "$BUILD_ORG" ] ; then + sed -i -- "s/^#define FW_COMMIT_NR.*/#define FW_COMMIT_NR $BUILD_ORG/g" $SCRIPT_PATH/Firmware/Configuration.h + fi + echo $MULTI_LANGUAGE_CHECK + #sed -i -- "s/^#define LANG_MODE * /#define LANG_MODE $MULTI_LANGUAGE_CHECK/g" $SCRIPT_PATH/Firmware/config.h + sed -i -- "s/^#define LANG_MODE *1/#define LANG_MODE ${MULTI_LANGUAGE_CHECK}/g" $SCRIPT_PATH/Firmware/config.h + sed -i -- "s/^#define LANG_MODE *0/#define LANG_MODE ${MULTI_LANGUAGE_CHECK}/g" $SCRIPT_PATH/Firmware/config.h + if [ $OUTPUT == "1" ] ; then + sleep 5 + fi done # Switch to hex path and list build files From e765c300b0e1e54716e4e10a347502118d16f265 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Wed, 5 May 2021 20:05:35 +0200 Subject: [PATCH 19/34] Update MK404 part to '--bootloader-file ""' Some cosmetics --- PF-build.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/PF-build.sh b/PF-build.sh index 7da9b51bf..7224924e4 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -894,7 +894,7 @@ do if [ $CURRENT_BOARD_MEM != "0x21FF" ] ; then echo "Board mem has been already modified or not reset" echo "Current:" $CURRENT_BOARD_MEM - PS3="Select Yes if you want to reset it." + PS3="Select $(tput setaf 2)Yes$(tput sgr 0) if you want to reset it." select yn in "Yes" "No"; do case $yn in Yes) @@ -926,7 +926,7 @@ do echo "Board flash has been already modified or not reset" echo "Current flash size:" $CURRENT_BOARD_FLASH echo "Current max. size:" $CURRENT_BOARD_maximum_size - PS3="Select $(tput setaf 3)Yes$(tput sgr 0) if you want to reset it." + PS3="Select $(tput setaf 2)Yes$(tput sgr 0) if you want to reset it." select yn in "Yes" "No"; do case $yn in Yes) @@ -1143,12 +1143,12 @@ if [ ! -z "$mk404_flag" ]; then fi fi -# Run MK404 with 'debugcore' and/or 'bootloader_file' +# Run MK404 with 'debugcore' and/or 'bootloader-file' echo "MK404_DEBUG --$MK404_DEBUG--" if [ "$MK404_DEBUG" == "atmega404" ]; then MK404_options="--debugcore" elif [ "$MK404_DEBUG" == "atmega404_no_bootloader" ]; then - MK404_options="--debugcore --bootloader-file no" + MK404_options='--debugcore --bootloader-file ""' fi # Run MK404 with grafics From 56889bae13148e59edf6fa96cd589e6776fc491d Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Thu, 17 Jun 2021 19:08:55 +0200 Subject: [PATCH 20/34] Update PF-build.sh to work after @DRracer Remove FW version parsing PR --- Firmware/Configuration.h | 12 +++++++++++- PF-build.sh | 25 +++++++++++++++++++++---- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index 4ee9f4fde..d8731ac7f 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -16,7 +16,17 @@ extern uint16_t nPrinterType; extern PGM_P sPrinterName; // Firmware version -#define FW_VERSION "3.10.0" +#define FW_MAJOR 3 +#define FW_MINOR 10 +#define FW_REVISION 0 +//#define FW_FLAVOR RC //uncomment if DEBUG, DEVEL, APLHA, BETA or RC +//#define FW_FLAVERSION 1 //uncomment if FW_FLAVOR is defined and versioning is needed. +#ifndef FW_FLAVOR + #define FW_VERSION STR(FW_MAJOR) "." STR(FW_MINOR) "." STR(FW_REVISION) +#else + #define FW_VERSION STR(FW_MAJOR) "." STR(FW_MINOR) "." STR(FW_REVISION) "-" STR(FW_FLAVOR) "" STR(FW_FLAVERSION) +#endif + #define FW_COMMIT_NR 4481 // FW_VERSION_UNKNOWN means this is an unofficial build. // The firmware should only be checked into github with this symbol. diff --git a/PF-build.sh b/PF-build.sh index 7224924e4..7c0fc6bb4 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -56,7 +56,7 @@ # Some may argue that this is only used by a script, BUT as soon someone accidentally or on purpose starts Arduino IDE # it will use the default Arduino IDE folders and so can corrupt the build environment. # -# Version: 1.2.0-Build_49 +# Version: 1.2.0-Build_53 # Change log: # 12 Jan 2019, 3d-gussner, Fixed "compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections" in 'platform.txt' # 16 Jan 2019, 3d-gussner, Build_2, Added development check to modify 'Configuration.h' to prevent unwanted LCD messages that Firmware is unknown @@ -148,6 +148,7 @@ # 61-62 MK404 # 03 May 2021, 3d-gussner, Update documentation and change version to v1.2.0 # 03 May 2021, 3d-gussner, Add SIM atmega404 +# 17 Jun 2021, 3d-gussner, Update PF-build.sh to work after DRracer Remove FW version parsing PR #### Start check if OSTYPE is supported OS_FOUND=$( command -v uname) @@ -745,7 +746,11 @@ do VARIANT=$(basename "$v" ".h") MK404_PRINTER=$(grep --max-count=1 "\bPRINTER_TYPE\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3 | cut -d '_' -f2) # Find firmware version in Configuration.h file and use it to generate the hex filename - FW=$(grep --max-count=1 "\bFW_VERSION\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d '"' -f2|sed 's/\.//g') + FW_MAJOR=$(grep --max-count=1 "\bFW_MAJOR\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d ' ' -f3) + FW_MINOR=$(grep --max-count=1 "\bFW_MINOR\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d ' ' -f3) + FW_REVISION=$(grep --max-count=1 "\bFW_REVISION\b" $SCRIPT_PATH/Firmware/Configuration.h| sed -e's/ */ /g'|cut -d ' ' -f3) + FW="$FW_MAJOR$FW_MINOR$FW_REVISION" + #FW=$(grep --max-count=1 "\bFW_VERSION\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d '"' -f2|sed 's/\.//g') if [ -z "$BUILD" ] ; then # Find build version in Configuration.h file and use it to generate the hex filename BUILD=$(grep --max-count=1 "\bFW_COMMIT_NR\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d ' ' -f3) @@ -758,13 +763,25 @@ do # Check if the motherboard is an EINSY and if so only one hex file will generated MOTHERBOARD=$(grep --max-count=1 "\bMOTHERBOARD\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3) # Check development status + FW_FLAV=$(grep --max-count=1 "//#define FW_FLAVOR\b" $SCRIPT_PATH/Firmware/Configuration.h|cut -d ' ' -f1) + if [[ "$FW_FLAV" != "//#define" ]] ; then + FW_FLAVOR=$(grep --max-count=1 "\bFW_FLAVOR\b" $SCRIPT_PATH/Firmware/Configuration.h| sed -e's/ */ /g'|cut -d ' ' -f3) + FW_FLAVERSION=$(grep --max-count=1 "\bFW_FLAVERSION\b" $SCRIPT_PATH/Firmware/Configuration.h| sed -e's/ */ /g'|cut -d ' ' -f3) + if [[ "$FW_FLAVOR" != "//#define FW_FLAVOR" ]] ; then + FW="$FW-$FW_FLAVOR" + DEV_CHECK="$FW_FLAVOR" + if [ ! -z "$FW_FLAVERSION" ] ; then + FW="$FW$FW_FLAVERSION" + fi + fi + fi DEV_CHECK=$(grep --max-count=1 "\bFW_VERSION\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d '"' -f2|sed 's/\.//g'|cut -d '-' -f2) if [ -z "$DEV_STATUS_SELECTED" ] ; then if [[ "$DEV_CHECK" == *"RC"* ]] ; then DEV_STATUS="RC" - elif [[ "$DEV_CHECK" == "ALPHA" ]]; then + elif [[ "$DEV_CHECK" == *"ALPHA"* ]]; then DEV_STATUS="ALPHA" - elif [[ "$DEV_CHECK" == "BETA" ]]; then + elif [[ "$DEV_CHECK" == *"BETA"* ]]; then DEV_STATUS="BETA" elif [[ "$DEV_CHECK" == "DEVEL" ]]; then DEV_STATUS="DEVEL" From 461440029828e9e4870e052d59fdf72e28b14e73 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Thu, 17 Jun 2021 20:59:35 +0200 Subject: [PATCH 21/34] Save ELF files for FW3.10.1 debugging PRs Add verbose_IDE to output more information during build --- PF-build.sh | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/PF-build.sh b/PF-build.sh index 7c0fc6bb4..b94e034e8 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -56,7 +56,7 @@ # Some may argue that this is only used by a script, BUT as soon someone accidentally or on purpose starts Arduino IDE # it will use the default Arduino IDE folders and so can corrupt the build environment. # -# Version: 1.2.0-Build_53 +# Version: 1.2.0-Build_54 # Change log: # 12 Jan 2019, 3d-gussner, Fixed "compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections" in 'platform.txt' # 16 Jan 2019, 3d-gussner, Build_2, Added development check to modify 'Configuration.h' to prevent unwanted LCD messages that Firmware is unknown @@ -149,6 +149,8 @@ # 03 May 2021, 3d-gussner, Update documentation and change version to v1.2.0 # 03 May 2021, 3d-gussner, Add SIM atmega404 # 17 Jun 2021, 3d-gussner, Update PF-build.sh to work after DRracer Remove FW version parsing PR +# 17 Jun 2021, 3d-gussner, Save ELF files for FW3.10.1 debugging PRs +# 17 Jun 2021, 3d-gussner, Add verbose_IDE to output more information during build #### Start check if OSTYPE is supported OS_FOUND=$( command -v uname) @@ -257,7 +259,7 @@ fi #### End prepare bash / Linux environment # Check for options/flags -while getopts b:c:d:f:g:h:i:l:m:n:o:p:v:x:?h flag +while getopts b:c:d:f:g:h:i:j:l:m:n:o:p:v:x:?h flag do case "${flag}" in b) build_flag=${OPTARG};; @@ -267,6 +269,7 @@ while getopts b:c:d:f:g:h:i:l:m:n:o:p:v:x:?h flag g) graphics_flag=${OPTARG};; h) help_flag=1;; i) IDE_flag=${OPTARG};; + j) verbose_IDE_flag=${OPTARG};; l) language_flag=${OPTARG};; m) mk404_flag=${OPTARG};; n) new_build_flag=${OPTARG};; @@ -282,7 +285,7 @@ while getopts b:c:d:f:g:h:i:l:m:n:o:p:v:x:?h flag # '?' 'h' argument usage and help if [ "$help_flag" == "1" ] ; then echo "***************************************" -echo "* PF-build.sh Version: 1.2.0-Build_49 *" +echo "* PF-build.sh Version: 1.2.0-Build_54 *" echo "***************************************" echo "Arguments:" echo "$(tput setaf 2)-b$(tput sgr0) Build/commit number '$(tput setaf 2)Auto$(tput sgr0)' needs git or a number" @@ -292,6 +295,7 @@ echo "$(tput setaf 2)-f$(tput sgr0) Board flash size '$(tput setaf 2)256$(tput s echo "$(tput setaf 2)-g$(tput sgr0) Start MK404 grafics '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' lite '$(tput setaf 2)2$(tput sgr0)' fancy" echo "$(tput setaf 2)-h$(tput sgr0) Help" echo "$(tput setaf 2)-i$(tput sgr0) Arduino IDE version '$(tput setaf 2)1.8.5$(tput sgr0)', '$(tput setaf 2)1.8.13$(tput sgr0)'" +echo "$(tput setaf 2)-j$(tput sgr0) Arduino IDE verbose output '$(tput setaf 2)0$(tput sgr0)', '$(tput setaf 2)1$(tput sgr0) active'" echo "$(tput setaf 2)-l$(tput sgr0) Languages '$(tput setaf 2)ALL$(tput sgr0)' for multi language or '$(tput setaf 2)EN_ONLY$(tput sgr0)' for English only" echo "$(tput setaf 2)-m$(tput sgr0) Start MK404 sim '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes '$(tput setaf 2)2$(tput sgr0)' with MMU2" echo "$(tput setaf 2)-n$(tput sgr0) New fresh build '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" @@ -316,6 +320,21 @@ echo exit 6 fi +#Check if verbose_IDE is selected with argument '-j' + +if [ ! -z "$verbose_IDE_flag" ]; then + if [ $verbose_IDE_flag == "1" ]; then + verbose_IDE="1" + elif [ $verbose_IDE_flag == "0" ]; then + verbose_IDE="0" + else + echo "Only '0' and '1' are valid verbose_IDE values." + exit + fi +else + verbose_IDE="0" +fi + #Check if Build is selected with argument '-f' if [ ! -z "$board_flash_flag" ] ; then if [ "$board_flash_flag" == "256" ] ; then @@ -994,8 +1013,10 @@ do sleep 2 fi - #$BUILD_ENV_PATH/arduino-builder -dump-prefs -debug-level 10 -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 41 - $BUILD_ENV_PATH/arduino-builder -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 42 + if [ $verbose_IDE == "1" ]; then + $BUILD_ENV_PATH/arduino-builder -dump-prefs -debug-level 10 -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 41 + fi + $BUILD_ENV_PATH/arduino-builder -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all -verbose=$verbose_IDE $SCRIPT_PATH/Firmware/Firmware.ino || exit 42 echo "$(tput sgr 0)" if [ $LANGUAGES == "ALL" ]; then @@ -1052,6 +1073,7 @@ do fi # End of "lang.bin" for MK3 and MK3S copy cp -f firmware.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex + cp -f $BUILD_PATH/Firmware.ino.elf $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.elf else echo "$(tput setaf 2)Zip multi language firmware for MK2.5/miniRAMbo board to PF-build-hex folder$(tput sgr 0)" cp -f firmware_cz.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-cz.hex @@ -1061,6 +1083,7 @@ do cp -f firmware_it.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-it.hex cp -f firmware_pl.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-pl.hex cp -f firmware_nl.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-nl.hex + cp -f $BUILD_PATH/Firmware.ino.elf $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.elf if [ $TARGET_OS == "windows" ]; then zip a $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex rm $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex @@ -1085,6 +1108,8 @@ do else echo "$(tput setaf 2)Copying English only firmware to PF-build-hex folder$(tput sgr 0)" cp -f $BUILD_PATH/Firmware.ino.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex || exit 47 + echo "$(tput setaf 2)Copying English only elf file to PF-build-hex folder$(tput sgr 0)" + cp -f $BUILD_PATH/Firmware.ino.elf $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.elf || exit 47 fi # Cleanup Firmware From ae41d6ca400f3fbaf310b5796ffe3f46ffdf5478 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Thu, 17 Jun 2021 21:02:46 +0200 Subject: [PATCH 22/34] Change version to v2.0.0 --- PF-build.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/PF-build.sh b/PF-build.sh index b94e034e8..0f69d41c7 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -56,7 +56,7 @@ # Some may argue that this is only used by a script, BUT as soon someone accidentally or on purpose starts Arduino IDE # it will use the default Arduino IDE folders and so can corrupt the build environment. # -# Version: 1.2.0-Build_54 +# Version: 2.0.0-Build_55 # Change log: # 12 Jan 2019, 3d-gussner, Fixed "compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections" in 'platform.txt' # 16 Jan 2019, 3d-gussner, Build_2, Added development check to modify 'Configuration.h' to prevent unwanted LCD messages that Firmware is unknown @@ -151,6 +151,7 @@ # 17 Jun 2021, 3d-gussner, Update PF-build.sh to work after DRracer Remove FW version parsing PR # 17 Jun 2021, 3d-gussner, Save ELF files for FW3.10.1 debugging PRs # 17 Jun 2021, 3d-gussner, Add verbose_IDE to output more information during build +# 17 Jun 2021, 3d-gussner, Change version to v2.0.0 #### Start check if OSTYPE is supported OS_FOUND=$( command -v uname) @@ -285,7 +286,7 @@ while getopts b:c:d:f:g:h:i:j:l:m:n:o:p:v:x:?h flag # '?' 'h' argument usage and help if [ "$help_flag" == "1" ] ; then echo "***************************************" -echo "* PF-build.sh Version: 1.2.0-Build_54 *" +echo "* PF-build.sh Version: 2.0.0-Build_55 *" echo "***************************************" echo "Arguments:" echo "$(tput setaf 2)-b$(tput sgr0) Build/commit number '$(tput setaf 2)Auto$(tput sgr0)' needs git or a number" From b12c0e2326ede8ed7dbea7338b89dea3eeb46fe2 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Fri, 18 Jun 2021 13:46:25 +0200 Subject: [PATCH 23/34] Use atmega404 if extanded RAM or FLASH size are chosen Remove MK404 copy of lang file as it has been fixed in MK404 --- PF-build.sh | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/PF-build.sh b/PF-build.sh index 0f69d41c7..921ac82c0 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -56,7 +56,7 @@ # Some may argue that this is only used by a script, BUT as soon someone accidentally or on purpose starts Arduino IDE # it will use the default Arduino IDE folders and so can corrupt the build environment. # -# Version: 2.0.0-Build_55 +# Version: 2.0.0-Build_56 # Change log: # 12 Jan 2019, 3d-gussner, Fixed "compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections" in 'platform.txt' # 16 Jan 2019, 3d-gussner, Build_2, Added development check to modify 'Configuration.h' to prevent unwanted LCD messages that Firmware is unknown @@ -152,6 +152,9 @@ # 17 Jun 2021, 3d-gussner, Save ELF files for FW3.10.1 debugging PRs # 17 Jun 2021, 3d-gussner, Add verbose_IDE to output more information during build # 17 Jun 2021, 3d-gussner, Change version to v2.0.0 +# 18 Jun 2021, 3d-gussner, Use atmega404 if extanded RAM or FLASH size are chosen +# 18 Jun 2021, 3d-gussner, Remove MK404 copy of lang file as it has been fixed in MK404 + #### Start check if OSTYPE is supported OS_FOUND=$( command -v uname) @@ -286,7 +289,7 @@ while getopts b:c:d:f:g:h:i:j:l:m:n:o:p:v:x:?h flag # '?' 'h' argument usage and help if [ "$help_flag" == "1" ] ; then echo "***************************************" -echo "* PF-build.sh Version: 2.0.0-Build_55 *" +echo "* PF-build.sh Version: 2.0.0-Build_56 *" echo "***************************************" echo "Arguments:" echo "$(tput setaf 2)-b$(tput sgr0) Build/commit number '$(tput setaf 2)Auto$(tput sgr0)' needs git or a number" @@ -1068,10 +1071,6 @@ do # If the motherboard is an EINSY just copy one hexfile if [ "$MOTHERBOARD" = "BOARD_EINSY_1_0a" ]; then echo "$(tput setaf 2)Copying multi language firmware for MK3/Einsy board to PF-build-hex folder$(tput sgr 0)" - # Make a copy of "lang.bin" for MK404 MK3 and MK3S - if [ ! -z "$mk404_flag" ]; then - cp -f lang.bin $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-lang.bin - fi # End of "lang.bin" for MK3 and MK3S copy cp -f firmware.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex cp -f $BUILD_PATH/Firmware.ino.elf $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.elf @@ -1187,16 +1186,15 @@ if [ ! -z "$mk404_flag" ]; then fi # Run MK404 with 'debugcore' and/or 'bootloader-file' -echo "MK404_DEBUG --$MK404_DEBUG--" - if [ "$MK404_DEBUG" == "atmega404" ]; then + if [[ ! -z $MK404_DEBUG && "$MK404_DEBUG" == "atmega404" || ! -z $BOARD_MEM && "$BOARD_MEM" == "0xFFFF" ]]; then MK404_options="--debugcore" - elif [ "$MK404_DEBUG" == "atmega404_no_bootloader" ]; then + fi + if [[ ! -z $MK404_DEBUG && "$MK404_DEBUG" == "atmega404_no_bootloader" || ! -z $BOARD_FLASH && "$BOARD_FLASH" != "0x3FFFF" ]]; then MK404_options='--debugcore --bootloader-file ""' fi # Run MK404 with grafics if [ ! -z "$graphics_flag" ]; then - echo "MK404_options --$MK404_options--" if [ ! -z "$MK404_options" ]; then MK404_options="${MK404_options} --colour-extrusion --extrusion Quad_HR -g " else @@ -1214,16 +1212,13 @@ echo "MK404_DEBUG --$MK404_DEBUG--" # Output some useful data echo "Printer: $MK404_PRINTER" echo "Options: $MK404_options" + echo "" + read -t 5 -p "Press $(tput setaf 2)Enter$(tput sgr 0) to start MK404" + echo "" # Change to MK404 build folder cd ../MK404/master/build -# Copy language bin file for MK3 and MK3S to xflash -# if [ -f $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-lang.bin ]; then -# echo "Copy 'FW$FW-Build$BUILD-$VARIANT-lang.bin' to 'Prusa_${MK404_PRINTER}_xflash.bin'" -# dd if=/dev/zero bs=1 count=262145 | tr "\000" "\377" >Prusa_${MK404_PRINTER}_xflash.bin -# dd if=$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-lang.bin of=Prusa_${MK404_PRINTER}_xflash.bin conv=notrunc -# fi #Decide which hex file to use EN_ONLY or Multi language if [ "$LANGUAGES" == "ALL" ]; then @@ -1234,6 +1229,9 @@ fi # Start MK404 # default with serial output and terminal to manipulate it via terminal + echo "" + echo "./MK404 Prusa_$MK404_PRINTER -s --terminal $MK404_options -f $MK404_firmware_file" + sleep 5 ./MK404 Prusa_$MK404_PRINTER -s --terminal $MK404_options -f $MK404_firmware_file || exit 62 fi #### End of MK404 Simulator From bc98be3d29888d12e5e5250e2852da448896d3b6 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Fri, 18 Jun 2021 13:47:33 +0200 Subject: [PATCH 24/34] Documentation and version number Added some arguments and checks --- MK404-build.sh | 263 +++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 233 insertions(+), 30 deletions(-) diff --git a/MK404-build.sh b/MK404-build.sh index 9c7a14ba9..a019d6c2c 100755 --- a/MK404-build.sh +++ b/MK404-build.sh @@ -1,5 +1,5 @@ #!/bin/bash -# This bash script is used to compile automatically the MK404 simulator +# This bash script is used to compile automatically and run the MK404 simulator # # Supported OS: Linux64 bit # @@ -8,33 +8,71 @@ # 1. Follow these instructions # 2. Open Ubuntu bash and get latest updates with 'sudo apt-get update' # 3. Install latest updates with 'sudo apt-get upgrade' -# 4. +# # -# Version: 0.1-Build_3 +# Version: 1.0.0-Build_6 # Change log: # 11 Feb 2021, 3d-gussner, Inital # 11 Feb 2021, 3d-gussner, Optional flags to check for updates # 12 Feb 2021, 3d-gussner, Update cmake # 13 Feb 2021, 3d-gussner, Auto build SD cards +# 18 Jun 2021, 3d-gussner, Documentation and version number +# 18 Jun 2021, 3d-gussner, Added some arguments and checks -while getopts c:u:f:m:g:?h flag +while getopts c:f:g:m:n:p:u:v:x:?h flag do case "${flag}" in c) check_flag=${OPTARG};; - u) update_flag=${OPTARG};; - f) force_flag=${OPTARG};; - m) mk404_flag=${OPTARG};; + f) board_flash_flag=${OPTARG};; g) graphics_flag=${OPTARG};; - ?) help_flag=1;; h) help_flag=1;; + m) mk404_flag=${OPTARG};; + p) mk404_printer_flag=${OPTARG};; + n) new_build_flag=${OPTARG};; + u) update_flag=${OPTARG};; + v) firmware_version_flag=${OPTARG};; + x) board_mem_flag=${OPTARG};; + ?) help_flag=1;; esac done -echo "$check_flag" -echo "$update_flag" -echo "$force_flag" -echo "$mk404_flag" -echo "$graphics_flag" +#Debug echos +#echo "$check_flag" +#echo "$update_flag" +#echo "$new_build_flag" +#echo "$mk404_flag" +#echo "$graphics_flag" +#echo "$mk404_printer_flag" +# '?' 'h' argument usage and help +if [ "$help_flag" == "1" ] ; then +echo "***************************************" +echo "* MK404-build.sh Version: 1.0.0-Build_6 *" +echo "***************************************" +echo "Arguments:" +echo "$(tput setaf 2)-c$(tput sgr0) Check for update '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" +echo "$(tput setaf 2)-f$(tput sgr0) Board flash size '$(tput setaf 2)256$(tput sgr0)','$(tput setaf 2)384$(tput sgr0)','$(tput setaf 2)512$(tput sgr0)','$(tput setaf 2)1024$(tput sgr0)''$(tput setaf 2)32M$(tput sgr0)'" +echo "$(tput setaf 2)-g$(tput sgr0) Start MK404 grafics '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' lite '$(tput setaf 2)2$(tput sgr0)' fancy" +echo "$(tput setaf 2)-h$(tput sgr0) Help" +echo "$(tput setaf 2)-g$(tput sgr0) Start MK404 grafics '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' lite '$(tput setaf 2)2$(tput sgr0)' fancy" +echo "$(tput setaf 2)-m$(tput sgr0) Start MK404 sim '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes '$(tput setaf 2)2$(tput sgr0)' with MMU2" +echo "$(tput setaf 2)-n$(tput sgr0) Force new build '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" +echo "$(tput setaf 2)-p$(tput sgr0) MK404 Printer '$(tput setaf 2)MK25$(tput sgr0)', '$(tput setaf 2)MK25S$(tput sgr0)', '$(tput setaf 2)MK3$(tput sgr0)' or '$(tput setaf 2)MK3S$(tput sgr0)'" +echo "$(tput setaf 2)-u$(tput sgr0) Start MK404 grafics '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' lite '$(tput setaf 2)2$(tput sgr0)' fancy" +echo "$(tput setaf 2)-v$(tput sgr0) Prusa-Firmware version '$(tput setaf 2)path+file name$(tput sgr0)'" +echo "$(tput setaf 2)-x$(tput sgr0) Board memory size '$(tput setaf 2)8$(tput sgr0)' or '$(tput setaf 2)64$(tput sgr0)' Kb." +echo "$(tput setaf 2)-?$(tput sgr0) Help" +echo +echo "Brief USAGE:" +echo " $(tput setaf 2)./MK404-build.sh$(tput sgr0) [-c] [-f] [-g] [-m] [-n] [-p] [-u] [-h] [-?]" +echo +echo "Example:" +echo " $(tput setaf 2)./MK404-build.sh -f 1$(tput sgr0)" +echo " Will force an update and rebuild the MK404 SIM" +echo +echo " $(tput setaf 2)./MK404-build.sh -m 1 -g 1 -v ../../../../Prusa-Firmware/PF-build-hex/FW3100-Build4481/BOAD_EINSY_1_0a/FW3100-Build4481-1_75mm_MK3S-EINSy10a-E3Dv6full.hex$(tput sgr0)" +echo " Will start MK404 with Prusa_MK3S and Prusa-Firmware 3.10.0-Build4481" +exit 1 +fi #### Start check if OSTYPE is supported OS_FOUND=$( command -v uname) @@ -57,13 +95,13 @@ if [ $TARGET_OS == "linux" ]; then else echo "$(tput setaf 1)Unsupported OS: Linux $(uname -m)" echo "Please refer to the notes of build.sh$(tput sgr0)" - exit 1 + exit 2 fi else echo "$(tput setaf 1)This script doesn't support your Operating system!" echo "Please use Linux 64-bit" echo "Read the notes of build.sh$(tput sgr0)" - exit 1 + exit 2 fi sleep 2 #### End check if OSTYPE is supported @@ -97,7 +135,7 @@ for check_package in ${packages[@]}; do done if [ "$not_installed" = "1" ]; then - exit 4 + exit 3 fi #### End Check MK404 dependencies @@ -113,8 +151,7 @@ MK404_BUILD_PATH="$MK404_PATH/build" # List few useful data echo echo "Script path :" $MK404_SCRIPT_PATH -echo "OS :" $OS -echo "OS type :" $TARGET_OS +echo "OS :" $TARGET_OS echo "" echo "MK404 path :" $MK404_PATH @@ -126,22 +163,74 @@ if [ ! -d $MK404_PATH ]; then git clone $MK404_URL $MK404_PATH fi - - - # cd $MK404_PATH -# Check for updates ... WIP +#Check MK404 agruments +#Check mk404_printer_flag +if [ ! -z $mk404_printer_flag ]; then + if [[ "$mk404_printer_flag" == "MK3" || "$mk404_printer_flag" == "MK3S" || "$mk404_printer_flag" == "MK25" || "$mk404_printer_flag" == "MK25S" ]]; then + MK404_PRINTER_TEMP=$mk404_printer_flag + else + echo "Following Printers are supported: MK25, MK25S, MK3 and MK3S" + exit 4 + fi +fi -# Check MK404 -if [ "$force_flag" == "1" ]; then +#Check if Build is selected with argument '-f' +if [ ! -z "$board_flash_flag" ] ; then + if [ "$board_flash_flag" == "256" ] ; then + BOARD_FLASH="0x3FFFF" + BOARD_maximum_size="253952" + echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + elif [ "$board_flash_flag" == "384" ] ; then + BOARD_FLASH="0x5FFFF" + BOARD_maximum_size="385024" + echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + elif [ "$board_flash_flag" == "512" ] ; then + BOARD_FLASH="0x7FFFF" + BOARD_maximum_size="516096" + echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + elif [ "$board_flash_flag" == "1024" ] ; then + BOARD_FLASH="0xFFFFF"firmware_version_flag + BOARD_maximum_size="1040384" + echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + elif [[ "$board_flash_flag" == "32M" || "$board_flash_flag" == "32768" ]] ; then + BOARD_FLASH="0x1FFFFFF" + BOARD_maximum_size="33546240" + echo "Board flash size : 32 Mb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + else + echo "Unsupported board flash size chosen. Only '256', '384', '512', '1024' and '32M' are allowed." + exit 5 + fi +fi + +#Check if Build is selected with argument '-x' +if [ ! -z "$board_mem_flag" ] ; then + if [ "$board_mem_flag" == "8" ] ; then + BOARD_MEM="0x21FF" + echo "Board mem size : $board_mem_flag Kb, $BOARD_MEM (hex)" + elif [ "$board_mem_flag" == "64" ] ; then + BOARD_MEM="0xFFFF" + echo "Board mem size : $board_mem_flag Kb, $BOARD_MEM (hex)" + else + echo "Unsupported board mem size chosen. Only '8', '64' are allowed." + exit 6 + fi +fi + + +if [ "$new_build_flag" == "1" ]; then check_flag=1 update_flag=1 fi if [ "$update_flag" == "1" ]; then check_flag=1 fi + +#End Check MK404 agruments + +#Check for updates if [ "$check_flag" == "1" ]; then if [ -d $MK404_BUILD_PATH ]; then cd $MK404_BUILD_PATH @@ -159,6 +248,7 @@ if [ "$check_flag" == "1" ]; then # Get remote Commit_Number MK404_remote_GIT_COMMIT_NUMBER=$(git rev-list origin/master --count) # Output + echo "" echo "Current version : $MK404_current_version" echo "" echo "Current local hash : $MK404_local_GIT_COMMIT_HASH" @@ -166,7 +256,7 @@ if [ "$check_flag" == "1" ]; then if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_remote_GIT_COMMIT_HASH" ]; then echo "$(tput setaf 1)" else - echo "$(tput sgr 0)" + echo "$(tput setaf 2)" fi echo "Current remote hash : $MK404_remote_GIT_COMMIT_HASH" echo "Current remote commit nr: $MK404_remote_GIT_COMMIT_NUMBER" @@ -182,7 +272,8 @@ if [ "$check_flag" == "1" ]; then echo "" fi fi -# Check for updates + +# Fetch updates and force new build if [ "$update_flag" == "1" ]; then if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_remote_GIT_COMMIT_HASH" ]; then echo "" @@ -192,13 +283,13 @@ if [ "$update_flag" == "1" ]; then git reset --hard origin/master read -t 10 -p "$(tput setaf 2)Compiling MK404 !$(tput sgr 0)" echo "" - force_flag=1 + new_build_flag=1 fi fi # Prepare MK404 mkdir -p $MK404_BUILD_PATH -if [[ ! -f "$MK404_BUILD_PATH/Makefile" || "$force_flag" == "1" ]]; then +if [[ ! -f "$MK404_BUILD_PATH/Makefile" || "$new_build_flag" == "1" ]]; then # Init and update submodules git submodule init git submodule update @@ -207,12 +298,12 @@ fi # Make MK404 cd $MK404_BUILD_PATH -if [[ ! -f "$MK404_BUILD_PATH/MK404" || "$force_flag" == "1" ]]; then +if [[ ! -f "$MK404_BUILD_PATH/MK404" || "$new_build_flag" == "1" ]]; then make fi # Make SDcards -if [[ ! -f "$MK404_BUILD_PATH/Prusa_MK3S_SDcard.bin" || "$force_flag" == "1" ]]; then +if [[ ! -f "$MK404_BUILD_PATH/Prusa_MK3S_SDcard.bin" || "$new_build_flag" == "1" ]]; then cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3S_SDcard.bin cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3_SDcard.bin cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK25_13_SDcard.bin @@ -221,3 +312,115 @@ if [[ ! -f "$MK404_BUILD_PATH/Prusa_MK3S_SDcard.bin" || "$force_flag" == "1" ]]; cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3MMU2_SDcard.bin fi + +# Prepare run MK404 +#Check MK404_Printer +MK404_PRINTER_TEMP=$(echo $firmware_version_flag | sed 's/\(.*\)\///' | grep 'MK3') +if [ ! -z $MK404_PRINTER_TEMP ]; then + MK404_PRINTER=MK3 +fi +MK404_PRINTER_TEMP=$(echo $firmware_version_flag | sed 's/\(.*\)\///' | grep 'MK3S') +if [ ! -z $MK404_PRINTER_TEMP ]; then + MK404_PRINTER=MK3S +fi +MK404_PRINTER_TEMP=$(echo $firmware_version_flag | sed 's/\(.*\)\///' | grep 'MK25') +if [ ! -z $MK404_PRINTER_TEMP ]; then + MK404_PRINTER=MK25 +fi +MK404_PRINTER_TEMP=$(echo $firmware_version_flag | sed 's/\(.*\)\///' | grep 'MK25S') +if [ ! -z $MK404_PRINTER_TEMP ]; then + MK404_PRINTER=MK25S +fi +if [ -z "$MK404_PRINTER" ]; then + echo "Tried to determine MK404 printer from hex file, but failed!" + echo "Add argument -p with 'MK25', 'MK25S', 'MK3' or 'MK3S' to start MK404" +fi + +if [ ! -z $mk404_printer_flag ]; then + if [ "$mk404_printer_flag" != "$MK404_PRINTER" ]; then + echo "$(tput setaf 3)You defined a different printer type than the firmware!" + echo "This can cause unexpected issues.$(tput sgr 0)" + echo + PS3="Select $(tput setaf 2)printer$(tput sgr 0) you want to use." + select which in "$(tput setaf 2)$MK404_PRINTER$(tput sgr 0)" "$mk404_printer_flag"; do + case $which in + $MK404_PRINTER) + echo "Set $MK404_PRINTER as printer" + break + ;; + $mk404_printer_flag) + echo "Set $(tput setaf 3)$mk404_printer_flag$(tput sgr 0) as printer" + echo "$(tput setaf 3)This firmware file isn't correct for this printer!!!$(tput sgr 0)" + echo + MK404_PRINTER=$mk404_printer_flag + read -p "Press Enter to continue." + break + ;; + *) + break + ;; + esac + done + + fi +fi + +if [ -z $MK404_PRINTER ]; then + exit 7 +fi + +if [[ "$MK404_PRINTER" == "MK25" || "$MK404_PRINTER" == "MK25S" ]]; then + MK404_PRINTER="${MK404_PRINTER}_mR13" +else + if [[ "$mk404_flag" == "2" || "$mk404_flag" == "MMU2" || "$mk404_flag" == "MMU2S" ]]; then # Check if MMU2 is selected only for MK3/S + MK404_PRINTER="${MK404_PRINTER}MMU2" + fi +fi + +# Run MK404 with 'debugcore' and/or 'bootloader-file' + if [[ ! -z $MK404_DEBUG && "$MK404_DEBUG" == "atmega404" || ! -z $BOARD_MEM && "$BOARD_MEM" == "0xFFFF" ]]; then + MK404_options="--debugcore" + fi + if [[ ! -z $MK404_DEBUG && "$MK404_DEBUG" == "atmega404_no_bootloader" || ! -z $BOARD_FLASH && "$BOARD_FLASH" != "0x3FFFF" ]]; then + MK404_options='--debugcore --bootloader-file ""' + fi + +# Run MK404 with grafics + if [ ! -z "$graphics_flag" ]; then + if [ ! -z "$MK404_options" ]; then + MK404_options="${MK404_options} --colour-extrusion --extrusion Quad_HR -g " + else + MK404_options="--colour-extrusion --extrusion Quad_HR -g " + fi + if [[ "$graphics_flag" == "1" || "$graphics_flag" == "lite" ]]; then + MK404_options="${MK404_options}lite" + elif [[ "$graphics_flag" == "2" || "$graphics_flag" == "fancy" ]]; then + MK404_options="${MK404_options}fancy" + else + echo "$(tput setaf 1)Unsupported MK404 graphics option $graphics_flag$(tput sgr 0)" + fi + fi +if [ ! -z $firmware_version_flag ]; then + MK404_firmware_file=$firmware_version_flag +fi + +#Run MK404 SIM +if [ ! -z $mk404_flag ]; then + # Output some useful data + echo "Printer : $MK404_PRINTER" + echo "Options : $MK404_options" + echo "" + read -t 5 -p "Press $(tput setaf 2)Enter$(tput sgr 0) to start MK404" + echo "" + + # Change to MK404 build folder + cd $MK404_BUILD_PATH + + # Start MK404 + # default with serial output and terminal to manipulate it via terminal + echo "" + echo "./MK404 Prusa_$MK404_PRINTER -s --terminal $MK404_options -f $MK404_firmware_file" + sleep 5 + ./MK404 Prusa_$MK404_PRINTER -s --terminal $MK404_options -f $MK404_firmware_file || exit 8 +fi +#### End of MK404 Simulator \ No newline at end of file From dde5cea48b6b0d75f945d22fc9062974eba349cb Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Fri, 18 Jun 2021 20:40:17 +0200 Subject: [PATCH 25/34] Default extrusion graphics to line. Thanks @vintagepc point it out Added -g 3 and 4 for more details extrusion lines Check for updates is default. Fix update if internet connection is lost. --- MK404-build.sh | 153 ++++++++++++++++++++++++++++--------------------- 1 file changed, 89 insertions(+), 64 deletions(-) diff --git a/MK404-build.sh b/MK404-build.sh index a019d6c2c..3e18a1e4c 100755 --- a/MK404-build.sh +++ b/MK404-build.sh @@ -10,7 +10,7 @@ # 3. Install latest updates with 'sudo apt-get upgrade' # # -# Version: 1.0.0-Build_6 +# Version: 1.0.0-Build_7 # Change log: # 11 Feb 2021, 3d-gussner, Inital # 11 Feb 2021, 3d-gussner, Optional flags to check for updates @@ -18,6 +18,9 @@ # 13 Feb 2021, 3d-gussner, Auto build SD cards # 18 Jun 2021, 3d-gussner, Documentation and version number # 18 Jun 2021, 3d-gussner, Added some arguments and checks +# 18 Jun 2021, 3d-gussner, Default extrusion graphics to line. Thanks @vintagepc point it out +# 18 Jun 2021, 3d-gussner, Added -g 3 and 4 for more details extrusion lines +# 18 Jun 2021, 3d-gussner, Check for updates is default. Fix update if internet connection is lost. while getopts c:f:g:m:n:p:u:v:x:?h flag do @@ -27,8 +30,8 @@ while getopts c:f:g:m:n:p:u:v:x:?h flag g) graphics_flag=${OPTARG};; h) help_flag=1;; m) mk404_flag=${OPTARG};; - p) mk404_printer_flag=${OPTARG};; n) new_build_flag=${OPTARG};; + p) mk404_printer_flag=${OPTARG};; u) update_flag=${OPTARG};; v) firmware_version_flag=${OPTARG};; x) board_mem_flag=${OPTARG};; @@ -46,24 +49,33 @@ while getopts c:f:g:m:n:p:u:v:x:?h flag # '?' 'h' argument usage and help if [ "$help_flag" == "1" ] ; then echo "***************************************" -echo "* MK404-build.sh Version: 1.0.0-Build_6 *" +echo "* MK404-build.sh Version: 1.0.0-Build_7 *" echo "***************************************" echo "Arguments:" -echo "$(tput setaf 2)-c$(tput sgr0) Check for update '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" -echo "$(tput setaf 2)-f$(tput sgr0) Board flash size '$(tput setaf 2)256$(tput sgr0)','$(tput setaf 2)384$(tput sgr0)','$(tput setaf 2)512$(tput sgr0)','$(tput setaf 2)1024$(tput sgr0)''$(tput setaf 2)32M$(tput sgr0)'" -echo "$(tput setaf 2)-g$(tput sgr0) Start MK404 grafics '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' lite '$(tput setaf 2)2$(tput sgr0)' fancy" +echo "$(tput setaf 2)-c$(tput sgr0) Check for update" +echo "$(tput setaf 2)-f$(tput sgr0) Board flash size" +echo "$(tput setaf 2)-g$(tput sgr0) Start MK404 graphics" echo "$(tput setaf 2)-h$(tput sgr0) Help" -echo "$(tput setaf 2)-g$(tput sgr0) Start MK404 grafics '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' lite '$(tput setaf 2)2$(tput sgr0)' fancy" -echo "$(tput setaf 2)-m$(tput sgr0) Start MK404 sim '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes '$(tput setaf 2)2$(tput sgr0)' with MMU2" -echo "$(tput setaf 2)-n$(tput sgr0) Force new build '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" -echo "$(tput setaf 2)-p$(tput sgr0) MK404 Printer '$(tput setaf 2)MK25$(tput sgr0)', '$(tput setaf 2)MK25S$(tput sgr0)', '$(tput setaf 2)MK3$(tput sgr0)' or '$(tput setaf 2)MK3S$(tput sgr0)'" -echo "$(tput setaf 2)-u$(tput sgr0) Start MK404 grafics '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' lite '$(tput setaf 2)2$(tput sgr0)' fancy" -echo "$(tput setaf 2)-v$(tput sgr0) Prusa-Firmware version '$(tput setaf 2)path+file name$(tput sgr0)'" -echo "$(tput setaf 2)-x$(tput sgr0) Board memory size '$(tput setaf 2)8$(tput sgr0)' or '$(tput setaf 2)64$(tput sgr0)' Kb." +echo "$(tput setaf 2)-m$(tput sgr0) Start MK404 sim" +echo "$(tput setaf 2)-n$(tput sgr0) Force new build" +echo "$(tput setaf 2)-p$(tput sgr0) MK404 Printer" +echo "$(tput setaf 2)-u$(tput sgr0) Update MK404" +echo "$(tput setaf 2)-v$(tput sgr0) Prusa-Firmware version" +echo "$(tput setaf 2)-x$(tput sgr0) Board memory size" echo "$(tput setaf 2)-?$(tput sgr0) Help" echo echo "Brief USAGE:" -echo " $(tput setaf 2)./MK404-build.sh$(tput sgr0) [-c] [-f] [-g] [-m] [-n] [-p] [-u] [-h] [-?]" +echo " $(tput setaf 2)./MK404-build.sh$(tput sgr0) [-c] [-f] [-g] [-m] [-n] [-p] [-u] [-v] [-x] [-h] [-?]" +echo +echo " -c : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes" +echo " -f : '$(tput setaf 2)256$(tput sgr0)','$(tput setaf 2)384$(tput sgr0)','$(tput setaf 2)512$(tput sgr0)','$(tput setaf 2)1024$(tput sgr0)''$(tput setaf 2)32M$(tput sgr0)'" +echo " -g : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' lite, '$(tput setaf 2)2$(tput sgr0)' fancy, '$(tput setaf 2)3$(tput sgr0)' lite with Quad_HR, '$(tput setaf 2)4$(tput sgr0)' fancy with Quad_HR" +echo " -m : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes '$(tput setaf 2)2$(tput sgr0)' with MMU2" +echo " -n : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes" +echo " -p : '$(tput setaf 2)MK25$(tput sgr0)', '$(tput setaf 2)MK25S$(tput sgr0)', '$(tput setaf 2)MK3$(tput sgr0)' or '$(tput setaf 2)MK3S$(tput sgr0)'" +echo " -u : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes '" +echo " -v : '$(tput setaf 2)path+file name$(tput sgr0)'" +echo " -x : '$(tput setaf 2)8$(tput sgr0)' or '$(tput setaf 2)64$(tput sgr0)' Kb." echo echo "Example:" echo " $(tput setaf 2)./MK404-build.sh -f 1$(tput sgr0)" @@ -167,6 +179,8 @@ fi cd $MK404_PATH #Check MK404 agruments +#Set Check for updates as default +check_flag=1 #Check mk404_printer_flag if [ ! -z $mk404_printer_flag ]; then if [[ "$mk404_printer_flag" == "MK3" || "$mk404_printer_flag" == "MK3S" || "$mk404_printer_flag" == "MK25" || "$mk404_printer_flag" == "MK25S" ]]; then @@ -181,24 +195,19 @@ fi if [ ! -z "$board_flash_flag" ] ; then if [ "$board_flash_flag" == "256" ] ; then BOARD_FLASH="0x3FFFF" - BOARD_maximum_size="253952" - echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + echo "Board flash size : $board_flash_flag Kb, $BOARD_FLASH (hex)" elif [ "$board_flash_flag" == "384" ] ; then BOARD_FLASH="0x5FFFF" - BOARD_maximum_size="385024" - echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + echo "Board flash size : $board_flash_flag Kb, $BOARD_FLASH (hex)" elif [ "$board_flash_flag" == "512" ] ; then BOARD_FLASH="0x7FFFF" - BOARD_maximum_size="516096" - echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + echo "Board flash size : $board_flash_flag Kb, $BOARD_FLASH (hex)" elif [ "$board_flash_flag" == "1024" ] ; then - BOARD_FLASH="0xFFFFF"firmware_version_flag - BOARD_maximum_size="1040384" - echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + BOARD_FLASH="0xFFFFF" + echo "Board flash size : $board_flash_flag Kb, $BOARD_FLASH (hex)" elif [[ "$board_flash_flag" == "32M" || "$board_flash_flag" == "32768" ]] ; then BOARD_FLASH="0x1FFFFFF" - BOARD_maximum_size="33546240" - echo "Board flash size : 32 Mb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + echo "Board flash size : 32 Mb, $BOARD_FLASH (hex)" else echo "Unsupported board flash size chosen. Only '256', '384', '512', '1024' and '32M' are allowed." exit 5 @@ -263,27 +272,31 @@ if [ "$check_flag" == "1" ]; then echo "$(tput sgr 0)" # Check for updates - if [[ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_remote_GIT_COMMIT_HASH" && -z "$update_flag" ]]; then - echo "$(tput setaf 2)Update is availible.$(tput sgr 0)" - read -t 10 -n 1 -p "$(tput setaf 3)Update now Y/n$(tput sgr 0)" update_answer - if [ "$update_answer" == "Y" ]; then - update_flag=1 + if [ ! -z $MK404_remote_GIT_COMMIT_HASH ]; then + if [[ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_remote_GIT_COMMIT_HASH" && -z "$update_flag" ]]; then + echo "$(tput setaf 2)Update is availible.$(tput sgr 0)" + read -t 10 -n 1 -p "$(tput setaf 3)Update now Y/n$(tput sgr 0)" update_answer + if [ "$update_answer" == "Y" ]; then + update_flag=1 + fi + echo "" fi - echo "" fi fi # Fetch updates and force new build if [ "$update_flag" == "1" ]; then - if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_remote_GIT_COMMIT_HASH" ]; then - echo "" - git fetch --all - read -t 10 -p "$(tput setaf 2)Updating MK404 !$(tput sgr 0)" - echo "" - git reset --hard origin/master - read -t 10 -p "$(tput setaf 2)Compiling MK404 !$(tput sgr 0)" - echo "" - new_build_flag=1 + if [ ! -z $MK404_remote_GIT_COMMIT_HASH ]; then + if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_remote_GIT_COMMIT_HASH" ]; then + echo "" + git fetch --all + read -t 10 -p "$(tput setaf 2)Updating MK404 !$(tput sgr 0)" + echo "" + git reset --hard origin/master + read -t 10 -p "$(tput setaf 2)Compiling MK404 !$(tput sgr 0)" + echo "" + new_build_flag=1 + fi fi fi @@ -315,25 +328,33 @@ fi # Prepare run MK404 #Check MK404_Printer -MK404_PRINTER_TEMP=$(echo $firmware_version_flag | sed 's/\(.*\)\///' | grep 'MK3') -if [ ! -z $MK404_PRINTER_TEMP ]; then - MK404_PRINTER=MK3 -fi -MK404_PRINTER_TEMP=$(echo $firmware_version_flag | sed 's/\(.*\)\///' | grep 'MK3S') -if [ ! -z $MK404_PRINTER_TEMP ]; then - MK404_PRINTER=MK3S -fi -MK404_PRINTER_TEMP=$(echo $firmware_version_flag | sed 's/\(.*\)\///' | grep 'MK25') -if [ ! -z $MK404_PRINTER_TEMP ]; then - MK404_PRINTER=MK25 -fi -MK404_PRINTER_TEMP=$(echo $firmware_version_flag | sed 's/\(.*\)\///' | grep 'MK25S') -if [ ! -z $MK404_PRINTER_TEMP ]; then - MK404_PRINTER=MK25S +if [ ! -z $firmware_version_flag ]; then + MK404_PRINTER_TEMP=$(echo $firmware_version_flag | sed 's/\(.*\)\///' | grep 'MK3') + if [ ! -z $MK404_PRINTER_TEMP ]; then + MK404_PRINTER=MK3 + fi + MK404_PRINTER_TEMP=$(echo $firmware_version_flag | sed 's/\(.*\)\///' | grep 'MK3S') + if [ ! -z $MK404_PRINTER_TEMP ]; then + MK404_PRINTER=MK3S + fi + MK404_PRINTER_TEMP=$(echo $firmware_version_flag | sed 's/\(.*\)\///' | grep 'MK25') + if [ ! -z $MK404_PRINTER_TEMP ]; then + MK404_PRINTER=MK25 + fi + MK404_PRINTER_TEMP=$(echo $firmware_version_flag | sed 's/\(.*\)\///' | grep 'MK25S') + if [ ! -z $MK404_PRINTER_TEMP ]; then + MK404_PRINTER=MK25S + fi +else + echo "No firmware version file selected!" + echo "Add argument -f with path and hex filename to start MK404" + exit 7 fi + if [ -z "$MK404_PRINTER" ]; then echo "Tried to determine MK404 printer from hex file, but failed!" echo "Add argument -p with 'MK25', 'MK25S', 'MK3' or 'MK3S' to start MK404" + exit 8 fi if [ ! -z $mk404_printer_flag ]; then @@ -361,12 +382,11 @@ if [ ! -z $mk404_printer_flag ]; then ;; esac done - fi fi if [ -z $MK404_PRINTER ]; then - exit 7 + exit 9 fi if [[ "$MK404_PRINTER" == "MK25" || "$MK404_PRINTER" == "MK25S" ]]; then @@ -388,20 +408,25 @@ fi # Run MK404 with grafics if [ ! -z "$graphics_flag" ]; then if [ ! -z "$MK404_options" ]; then - MK404_options="${MK404_options} --colour-extrusion --extrusion Quad_HR -g " + MK404_options="${MK404_options} -g " else - MK404_options="--colour-extrusion --extrusion Quad_HR -g " + MK404_options=" -g " fi - if [[ "$graphics_flag" == "1" || "$graphics_flag" == "lite" ]]; then + if [[ "$graphics_flag" == "1" || "$graphics_flag" == "lite" || "$graphics_flag" == "3" ]]; then MK404_options="${MK404_options}lite" - elif [[ "$graphics_flag" == "2" || "$graphics_flag" == "fancy" ]]; then + elif [[ "$graphics_flag" == "2" || "$graphics_flag" == "fancy" || "$graphics_flag" == "4" ]]; then MK404_options="${MK404_options}fancy" else echo "$(tput setaf 1)Unsupported MK404 graphics option $graphics_flag$(tput sgr 0)" fi + if [[ "$graphics_flag" == "3" || "$graphics_flag" == "4" ]]; then + MK404_options="${MK404_options} --colour-extrusion --extrusion Quad_HR" + else + MK404_options="${MK404_options} --extrusion Line" + fi fi if [ ! -z $firmware_version_flag ]; then - MK404_firmware_file=$firmware_version_flag + MK404_firmware_file=" -f $firmware_version_flag" fi #Run MK404 SIM @@ -419,8 +444,8 @@ if [ ! -z $mk404_flag ]; then # Start MK404 # default with serial output and terminal to manipulate it via terminal echo "" - echo "./MK404 Prusa_$MK404_PRINTER -s --terminal $MK404_options -f $MK404_firmware_file" + echo "./MK404 Prusa_$MK404_PRINTER -s --terminal $MK404_options $MK404_firmware_file" sleep 5 - ./MK404 Prusa_$MK404_PRINTER -s --terminal $MK404_options -f $MK404_firmware_file || exit 8 + ./MK404 Prusa_$MK404_PRINTER -s --terminal $MK404_options $MK404_firmware_file || exit 10 fi #### End of MK404 Simulator \ No newline at end of file From 7a67d578fd146fff42ad9ae6efce655e72554bfb Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Mon, 21 Jun 2021 09:16:19 +0200 Subject: [PATCH 26/34] Pf-build.sh Change atmega404 board flash argument to y Use newer version of MK404-build.sh instead start the program MK404-build.sh Change board_flash argument to 'y' and firmware_version to 'f --- MK404-build.sh | 34 +++++++++++++++++++--------------- PF-build.sh | 49 ++++++++++++++++++++++++------------------------- 2 files changed, 43 insertions(+), 40 deletions(-) diff --git a/MK404-build.sh b/MK404-build.sh index 3e18a1e4c..6f9829ee4 100755 --- a/MK404-build.sh +++ b/MK404-build.sh @@ -10,7 +10,7 @@ # 3. Install latest updates with 'sudo apt-get upgrade' # # -# Version: 1.0.0-Build_7 +# Version: 1.0.0-Build_8 # Change log: # 11 Feb 2021, 3d-gussner, Inital # 11 Feb 2021, 3d-gussner, Optional flags to check for updates @@ -21,61 +21,65 @@ # 18 Jun 2021, 3d-gussner, Default extrusion graphics to line. Thanks @vintagepc point it out # 18 Jun 2021, 3d-gussner, Added -g 3 and 4 for more details extrusion lines # 18 Jun 2021, 3d-gussner, Check for updates is default. Fix update if internet connection is lost. +# 21 Jun 2021, 3d-gussner, Change board_flash argument to 'y' and firmware_version to 'f' -while getopts c:f:g:m:n:p:u:v:x:?h flag +while getopts c:f:g:m:n:p:u:x:y:?h flag do case "${flag}" in c) check_flag=${OPTARG};; - f) board_flash_flag=${OPTARG};; + f) firmware_version_flag=${OPTARG};; g) graphics_flag=${OPTARG};; h) help_flag=1;; m) mk404_flag=${OPTARG};; n) new_build_flag=${OPTARG};; p) mk404_printer_flag=${OPTARG};; u) update_flag=${OPTARG};; - v) firmware_version_flag=${OPTARG};; x) board_mem_flag=${OPTARG};; + y) board_flash_flag=${OPTARG};; ?) help_flag=1;; esac done #Debug echos -#echo "$check_flag" -#echo "$update_flag" -#echo "$new_build_flag" -#echo "$mk404_flag" -#echo "$graphics_flag" -#echo "$mk404_printer_flag" +echo "c: $check_flag" +echo "f: $firmware_version_flag" +echo "g: $graphics_flag" +echo "m: $mk404_flag" +echo "n: $new_build_flag" +echo "p: $mk404_printer_flag" +echo "u: $update_flag" +echo "x: $board_mem_flag" +echo "y: $board_flash_flag" # '?' 'h' argument usage and help if [ "$help_flag" == "1" ] ; then echo "***************************************" -echo "* MK404-build.sh Version: 1.0.0-Build_7 *" +echo "* MK404-build.sh Version: 1.0.0-Build_8 *" echo "***************************************" echo "Arguments:" echo "$(tput setaf 2)-c$(tput sgr0) Check for update" -echo "$(tput setaf 2)-f$(tput sgr0) Board flash size" +echo "$(tput setaf 2)-f$(tput sgr0) Prusa-Firmware version" echo "$(tput setaf 2)-g$(tput sgr0) Start MK404 graphics" echo "$(tput setaf 2)-h$(tput sgr0) Help" echo "$(tput setaf 2)-m$(tput sgr0) Start MK404 sim" echo "$(tput setaf 2)-n$(tput sgr0) Force new build" echo "$(tput setaf 2)-p$(tput sgr0) MK404 Printer" echo "$(tput setaf 2)-u$(tput sgr0) Update MK404" -echo "$(tput setaf 2)-v$(tput sgr0) Prusa-Firmware version" echo "$(tput setaf 2)-x$(tput sgr0) Board memory size" +echo "$(tput setaf 2)-y$(tput sgr0) Board flash size" echo "$(tput setaf 2)-?$(tput sgr0) Help" echo echo "Brief USAGE:" echo " $(tput setaf 2)./MK404-build.sh$(tput sgr0) [-c] [-f] [-g] [-m] [-n] [-p] [-u] [-v] [-x] [-h] [-?]" echo echo " -c : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes" -echo " -f : '$(tput setaf 2)256$(tput sgr0)','$(tput setaf 2)384$(tput sgr0)','$(tput setaf 2)512$(tput sgr0)','$(tput setaf 2)1024$(tput sgr0)''$(tput setaf 2)32M$(tput sgr0)'" +echo " -f : '$(tput setaf 2)path+file name$(tput sgr0)'" echo " -g : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' lite, '$(tput setaf 2)2$(tput sgr0)' fancy, '$(tput setaf 2)3$(tput sgr0)' lite with Quad_HR, '$(tput setaf 2)4$(tput sgr0)' fancy with Quad_HR" echo " -m : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes '$(tput setaf 2)2$(tput sgr0)' with MMU2" echo " -n : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes" echo " -p : '$(tput setaf 2)MK25$(tput sgr0)', '$(tput setaf 2)MK25S$(tput sgr0)', '$(tput setaf 2)MK3$(tput sgr0)' or '$(tput setaf 2)MK3S$(tput sgr0)'" echo " -u : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes '" -echo " -v : '$(tput setaf 2)path+file name$(tput sgr0)'" echo " -x : '$(tput setaf 2)8$(tput sgr0)' or '$(tput setaf 2)64$(tput sgr0)' Kb." +echo " -y : '$(tput setaf 2)256$(tput sgr0)','$(tput setaf 2)384$(tput sgr0)','$(tput setaf 2)512$(tput sgr0)','$(tput setaf 2)1024$(tput sgr0)''$(tput setaf 2)32M$(tput sgr0)'" echo echo "Example:" echo " $(tput setaf 2)./MK404-build.sh -f 1$(tput sgr0)" diff --git a/PF-build.sh b/PF-build.sh index 921ac82c0..ce9a67f2d 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -56,7 +56,7 @@ # Some may argue that this is only used by a script, BUT as soon someone accidentally or on purpose starts Arduino IDE # it will use the default Arduino IDE folders and so can corrupt the build environment. # -# Version: 2.0.0-Build_56 +# Version: 2.0.0-Build_57 # Change log: # 12 Jan 2019, 3d-gussner, Fixed "compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections" in 'platform.txt' # 16 Jan 2019, 3d-gussner, Build_2, Added development check to modify 'Configuration.h' to prevent unwanted LCD messages that Firmware is unknown @@ -154,6 +154,8 @@ # 17 Jun 2021, 3d-gussner, Change version to v2.0.0 # 18 Jun 2021, 3d-gussner, Use atmega404 if extanded RAM or FLASH size are chosen # 18 Jun 2021, 3d-gussner, Remove MK404 copy of lang file as it has been fixed in MK404 +# 21 Jun 2021, 3d-gussner, Change atmega404 board flash argument to y +# Use newer version of MK404-build.sh instead start the program #### Start check if OSTYPE is supported @@ -263,13 +265,12 @@ fi #### End prepare bash / Linux environment # Check for options/flags -while getopts b:c:d:f:g:h:i:j:l:m:n:o:p:v:x:?h flag +while getopts b:c:d:g:h:i:j:l:m:n:o:p:v:x:y:?h flag do case "${flag}" in b) build_flag=${OPTARG};; c) clean_flag=${OPTARG};; d) devel_flag=${OPTARG};; - f) board_flash_flag=${OPTARG};; g) graphics_flag=${OPTARG};; h) help_flag=1;; i) IDE_flag=${OPTARG};; @@ -281,6 +282,7 @@ while getopts b:c:d:f:g:h:i:j:l:m:n:o:p:v:x:?h flag p) prusa_flag=${OPTARG};; v) variant_flag=${OPTARG};; x) board_mem_flag=${OPTARG};; + y) board_flash_flag=${OPTARG};; ?) help_flag=1;; esac done @@ -289,14 +291,13 @@ while getopts b:c:d:f:g:h:i:j:l:m:n:o:p:v:x:?h flag # '?' 'h' argument usage and help if [ "$help_flag" == "1" ] ; then echo "***************************************" -echo "* PF-build.sh Version: 2.0.0-Build_56 *" +echo "* PF-build.sh Version: 2.0.0-Build_57 *" echo "***************************************" echo "Arguments:" echo "$(tput setaf 2)-b$(tput sgr0) Build/commit number '$(tput setaf 2)Auto$(tput sgr0)' needs git or a number" echo "$(tput setaf 2)-c$(tput sgr0) Do not clean up lang build'$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" echo "$(tput setaf 2)-d$(tput sgr0) Devel build '$(tput setaf 2)GOLD$(tput sgr0)', '$(tput setaf 2)RC$(tput sgr0)', '$(tput setaf 2)BETA$(tput sgr0)', '$(tput setaf 2)ALPHA$(tput sgr0)', '$(tput setaf 2)DEBUG$(tput sgr0)', '$(tput setaf 2)DEVEL$(tput sgr0)' and '$(tput setaf 2)UNKNOWN$(tput sgr0)'" -echo "$(tput setaf 2)-f$(tput sgr0) Board flash size '$(tput setaf 2)256$(tput sgr0)','$(tput setaf 2)384$(tput sgr0)','$(tput setaf 2)512$(tput sgr0)','$(tput setaf 2)1024$(tput sgr0)''$(tput setaf 2)32M$(tput sgr0)'" -echo "$(tput setaf 2)-g$(tput sgr0) Start MK404 grafics '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' lite '$(tput setaf 2)2$(tput sgr0)' fancy" +echo "$(tput setaf 2)-g$(tput sgr0) Start MK404 grafics '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' lite '$(tput setaf 2)2$(tput sgr0)' fancy '$(tput setaf 2)3$(tput sgr0)' lite with Quad_HR '$(tput setaf 2)2$(tput sgr0)' fancy with Quad_HR" echo "$(tput setaf 2)-h$(tput sgr0) Help" echo "$(tput setaf 2)-i$(tput sgr0) Arduino IDE version '$(tput setaf 2)1.8.5$(tput sgr0)', '$(tput setaf 2)1.8.13$(tput sgr0)'" echo "$(tput setaf 2)-j$(tput sgr0) Arduino IDE verbose output '$(tput setaf 2)0$(tput sgr0)', '$(tput setaf 2)1$(tput sgr0) active'" @@ -307,10 +308,11 @@ echo "$(tput setaf 2)-o$(tput sgr0) Output '$(tput setaf 2)1$(tput sgr0)' force echo "$(tput setaf 2)-p$(tput sgr0) Keep Configuration_prusa.h '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" echo "$(tput setaf 2)-v$(tput sgr0) Variant '$(tput setaf 2)All$(tput sgr0)' or variant file name" echo "$(tput setaf 2)-x$(tput sgr0) Board memory size '$(tput setaf 2)8$(tput sgr0)' or '$(tput setaf 2)64$(tput sgr0)' Kb." +echo "$(tput setaf 2)-y$(tput sgr0) Board flash size '$(tput setaf 2)256$(tput sgr0)','$(tput setaf 2)384$(tput sgr0)','$(tput setaf 2)512$(tput sgr0)','$(tput setaf 2)1024$(tput sgr0)''$(tput setaf 2)32M$(tput sgr0)'" echo "$(tput setaf 2)-?$(tput sgr0) Help" echo echo "Brief USAGE:" -echo " $(tput setaf 2)./PF-build.sh$(tput sgr0) [-v] [-l] [-d] [-b] [-o] [-c] [-p] [-n]" +echo " $(tput setaf 2)./PF-build.sh$(tput sgr0) [-b] [-c] [-d] [-g] [-i] [-j] [-l] [-m] [-n] [-o] [-p ] -[v] [-x] [-y] [-h] [-?]" echo echo "Example:" echo " $(tput setaf 2)./PF-build.sh -v All -l ALL -d GOLD$(tput sgr0)" @@ -1174,7 +1176,6 @@ echo "more information how to flash firmware https://www.prusa3d.com/drivers/ $( # Check/compile MK404 sim if [ ! -z "$mk404_flag" ]; then - ./MK404-build.sh -c1 || exit 61 # For Prusa MK2, MK2.5/S if [ "$MOTHERBOARD" == "BOARD_RAMBO_MINI_1_3" ]; then @@ -1186,26 +1187,19 @@ if [ ! -z "$mk404_flag" ]; then fi # Run MK404 with 'debugcore' and/or 'bootloader-file' - if [[ ! -z $MK404_DEBUG && "$MK404_DEBUG" == "atmega404" || ! -z $BOARD_MEM && "$BOARD_MEM" == "0xFFFF" ]]; then - MK404_options="--debugcore" + if [ ! -z "$board_mem_flag" ]; then + MK404_options="-x $board_mem_flag" fi - if [[ ! -z $MK404_DEBUG && "$MK404_DEBUG" == "atmega404_no_bootloader" || ! -z $BOARD_FLASH && "$BOARD_FLASH" != "0x3FFFF" ]]; then - MK404_options='--debugcore --bootloader-file ""' + if [ ! -z "$board_flash_flag" ]; then + MK404_options="${MK404_options} -y $board_flash_flag" fi # Run MK404 with grafics if [ ! -z "$graphics_flag" ]; then - if [ ! -z "$MK404_options" ]; then - MK404_options="${MK404_options} --colour-extrusion --extrusion Quad_HR -g " + if [[ "$graphics_flag" == "1" || "$graphics_flag" == "2" || "$graphics_flag" == "3" || "$graphics_flag" == "4" ]]; then + MK404_options="${MK404_options} -g $graphics_flag" else - MK404_options="--colour-extrusion --extrusion Quad_HR -g " - fi - if [[ "$graphics_flag" == "1" || "$graphics_flag" == "lite" ]]; then - MK404_options="${MK404_options}lite" - elif [[ "$graphics_flag" == "2" || "$graphics_flag" == "fancy" ]]; then - MK404_options="${MK404_options}fancy" - else - echo "$(tput setaf 1)Unsupported MK404 graphics option $graphics_flag$(tput sgr 0)" + echo "$(tput setaf 1)Unsupported MK404 graphics option $graphics_flag$(tput sgr 0)" fi fi @@ -1217,7 +1211,7 @@ if [ ! -z "$mk404_flag" ]; then echo "" # Change to MK404 build folder - cd ../MK404/master/build + #cd ../MK404/master/build #Decide which hex file to use EN_ONLY or Multi language @@ -1229,9 +1223,14 @@ fi # Start MK404 # default with serial output and terminal to manipulate it via terminal + #echo "" + #echo "./MK404 Prusa_$MK404_PRINTER -s --terminal $MK404_options -f $MK404_firmware_file" + #sleep 5 + #./MK404 Prusa_$MK404_PRINTER -s --terminal $MK404_options -f $MK404_firmware_file || exit 62 echo "" - echo "./MK404 Prusa_$MK404_PRINTER -s --terminal $MK404_options -f $MK404_firmware_file" + echo "./MK404-build.sh -m $mk404_flag -p $MK404_PRINTER $MK404_options -f $MK404_firmware_file" sleep 5 - ./MK404 Prusa_$MK404_PRINTER -s --terminal $MK404_options -f $MK404_firmware_file || exit 62 + ./MK404-build.sh -m $mk404_flag -p $MK404_PRINTER $MK404_options -f $MK404_firmware_file|| exit 61 + fi #### End of MK404 Simulator From 8d376ebee038537c13d8b0db0ae51b471a26f89b Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Mon, 21 Jun 2021 09:22:35 +0200 Subject: [PATCH 27/34] comment out debug echos --- MK404-build.sh | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/MK404-build.sh b/MK404-build.sh index 6f9829ee4..9e95fa9c9 100755 --- a/MK404-build.sh +++ b/MK404-build.sh @@ -10,7 +10,7 @@ # 3. Install latest updates with 'sudo apt-get upgrade' # # -# Version: 1.0.0-Build_8 +# Version: 1.0.0-Build_9 # Change log: # 11 Feb 2021, 3d-gussner, Inital # 11 Feb 2021, 3d-gussner, Optional flags to check for updates @@ -40,20 +40,20 @@ while getopts c:f:g:m:n:p:u:x:y:?h flag esac done #Debug echos -echo "c: $check_flag" -echo "f: $firmware_version_flag" -echo "g: $graphics_flag" -echo "m: $mk404_flag" -echo "n: $new_build_flag" -echo "p: $mk404_printer_flag" -echo "u: $update_flag" -echo "x: $board_mem_flag" -echo "y: $board_flash_flag" +#echo "c: $check_flag" +#echo "f: $firmware_version_flag" +#echo "g: $graphics_flag" +#echo "m: $mk404_flag" +#echo "n: $new_build_flag" +#echo "p: $mk404_printer_flag" +#echo "u: $update_flag" +#echo "x: $board_mem_flag" +#echo "y: $board_flash_flag" # '?' 'h' argument usage and help if [ "$help_flag" == "1" ] ; then echo "***************************************" -echo "* MK404-build.sh Version: 1.0.0-Build_8 *" +echo "* MK404-build.sh Version: 1.0.0-Build_9 *" echo "***************************************" echo "Arguments:" echo "$(tput setaf 2)-c$(tput sgr0) Check for update" From 2b29e52d533554faa1734d7c76f6242ba5b8b33d Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Tue, 22 Jun 2021 09:20:48 +0200 Subject: [PATCH 28/34] Defined OUTPUT_FILENAME in one location Added _RAM- and _FLASH- as OUTPUT_FILE_SUFFIX if someone builds an atmega404 firmware Added some logic if IDE 1.8.13 is used Added some logic if Arduino_boards 1.0.4 is used Fixed typo --- MK404-build.sh | 2 +- PF-build.sh | 126 +++++++++++++++++++++++++++++-------------------- 2 files changed, 75 insertions(+), 53 deletions(-) diff --git a/MK404-build.sh b/MK404-build.sh index 9e95fa9c9..66d89185c 100755 --- a/MK404-build.sh +++ b/MK404-build.sh @@ -409,7 +409,7 @@ fi MK404_options='--debugcore --bootloader-file ""' fi -# Run MK404 with grafics +# Run MK404 with graphics if [ ! -z "$graphics_flag" ]; then if [ ! -z "$MK404_options" ]; then MK404_options="${MK404_options} -g " diff --git a/PF-build.sh b/PF-build.sh index ce9a67f2d..74e58900f 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -297,7 +297,7 @@ echo "Arguments:" echo "$(tput setaf 2)-b$(tput sgr0) Build/commit number '$(tput setaf 2)Auto$(tput sgr0)' needs git or a number" echo "$(tput setaf 2)-c$(tput sgr0) Do not clean up lang build'$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" echo "$(tput setaf 2)-d$(tput sgr0) Devel build '$(tput setaf 2)GOLD$(tput sgr0)', '$(tput setaf 2)RC$(tput sgr0)', '$(tput setaf 2)BETA$(tput sgr0)', '$(tput setaf 2)ALPHA$(tput sgr0)', '$(tput setaf 2)DEBUG$(tput sgr0)', '$(tput setaf 2)DEVEL$(tput sgr0)' and '$(tput setaf 2)UNKNOWN$(tput sgr0)'" -echo "$(tput setaf 2)-g$(tput sgr0) Start MK404 grafics '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' lite '$(tput setaf 2)2$(tput sgr0)' fancy '$(tput setaf 2)3$(tput sgr0)' lite with Quad_HR '$(tput setaf 2)2$(tput sgr0)' fancy with Quad_HR" +echo "$(tput setaf 2)-g$(tput sgr0) Start MK404 graphics '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' lite '$(tput setaf 2)2$(tput sgr0)' fancy '$(tput setaf 2)3$(tput sgr0)' lite with Quad_HR '$(tput setaf 2)2$(tput sgr0)' fancy with Quad_HR" echo "$(tput setaf 2)-h$(tput sgr0) Help" echo "$(tput setaf 2)-i$(tput sgr0) Arduino IDE version '$(tput setaf 2)1.8.5$(tput sgr0)', '$(tput setaf 2)1.8.13$(tput sgr0)'" echo "$(tput setaf 2)-j$(tput sgr0) Arduino IDE verbose output '$(tput setaf 2)0$(tput sgr0)', '$(tput setaf 2)1$(tput sgr0) active'" @@ -351,18 +351,23 @@ if [ ! -z "$board_flash_flag" ] ; then BOARD_FLASH="0x5FFFF" BOARD_maximum_size="385024" echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + OUTPUT_FILENAME_SUFFIX="${OUTPUT_FILENAME_SUFFIX}_FLASH-$board_flash_flag" + elif [ "$board_flash_flag" == "512" ] ; then BOARD_FLASH="0x7FFFF" BOARD_maximum_size="516096" echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + OUTPUT_FILENAME_SUFFIX="${OUTPUT_FILENAME_SUFFIX}_FLASH-$board_flash_flag" elif [ "$board_flash_flag" == "1024" ] ; then BOARD_FLASH="0xFFFFF" BOARD_maximum_size="1040384" echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + OUTPUT_FILENAME_SUFFIX="${OUTPUT_FILENAME_SUFFIX}_FLASH-$board_flash_flag" elif [[ "$board_flash_flag" == "32M" || "$board_flash_flag" == "32768" ]] ; then BOARD_FLASH="0x1FFFFFF" BOARD_maximum_size="33546240" echo "Board flash size : 32 Mb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + OUTPUT_FILENAME_SUFFIX="${OUTPUT_FILENAME_SUFFIX}_FLASH-$board_flash_flag" else echo "Unsupported board flash size chosen. Only '256', '384', '512', '1024' and '32M' are allowed." exit 7 @@ -377,6 +382,7 @@ if [ ! -z "$board_mem_flag" ] ; then elif [ "$board_mem_flag" == "64" ] ; then BOARD_MEM="0xFFFF" echo "Board mem size : $board_mem_flag Kb, $BOARD_MEM (hex)" + OUTPUT_FILENAME_SUFFIX="${OUTPUT_FILENAME_SUFFIX}_RAM-$board_mem_flag" else echo "Unsupported board mem size chosen. Only '8', '64' are allowed." exit 8 @@ -398,14 +404,20 @@ fi BUILD_ENV="1.0.6" BOARD="prusa_einsy_rambo" BOARD_PACKAGE_NAME="PrusaResearch" -BOARD_VERSION="1.0.3" +if [ "$ARDUINO_ENV" == "1.8.13" ]; then + BOARD_VERSION="1.0.4" +else + BOARD_VERSION="1.0.3" +fi #BOARD_URL="https://raw.githubusercontent.com/3d-gussner/Arduino_Boards/master/IDE_Board_Manager/package_prusa3d_index.json" BOARD_URL="https://raw.githubusercontent.com/prusa3d/Arduino_Boards/master/IDE_Board_Manager/package_prusa3d_index.json" BOARD_FILENAME="prusa3dboards" -#BOARD_FILE_URL="https://raw.githubusercontent.com/3d-gussner/Arduino_Boards/master/IDE_Board_Manager/prusa3dboards-1.0.3.tar.bz2" -BOARD_FILE_URL="https://raw.githubusercontent.com/prusa3d/Arduino_Boards/master/IDE_Board_Manager/prusa3dboards-1.0.3.tar.bz2" +#BOARD_FILE_URL="https://raw.githubusercontent.com/3d-gussner/Arduino_Boards/master/IDE_Board_Manager/prusa3dboards-$BOARD_VERSION.tar.bz2" +BOARD_FILE_URL="https://raw.githubusercontent.com/prusa3d/Arduino_Boards/master/IDE_Board_Manager/prusa3dboards-$BOARD_VERSION.tar.bz2" #PF_BUILD_FILE_URL="https://github.com/3d-gussner/PF-build-env-1/releases/download/$BUILD_ENV-WinLin/PF-build-env-WinLin-$BUILD_ENV.zip" -PF_BUILD_FILE_URL="https://github.com/prusa3d/PF-build-env/releases/download/$BUILD_ENV-WinLin/PF-build-env-WinLin-$BUILD_ENV.zip" +if [[ "$BOARD_VERSION" == "1.0.3" || "$BOARD_VERSION" == "1.0.2" || "$BOARD_VERSION" == "1.0.1" ]]; then + PF_BUILD_FILE_URL="https://github.com/prusa3d/PF-build-env/releases/download/$BUILD_ENV-WinLin/PF-build-env-WinLin-$BUILD_ENV.zip" +fi LIB="PrusaLibrary" SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )" @@ -557,18 +569,20 @@ if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$P fi # Download and extract Prusa Firmware specific library files -if [ ! -f "PF-build-env-WinLin-$BUILD_ENV.zip" ]; then - echo "$(tput setaf 6)Downloading Prusa Firmware build environment...$(tput setaf 2)" - sleep 2 - wget $PF_BUILD_FILE_URL || exit 12 - echo "$(tput sgr 0)" -fi -if [ ! -e "../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]; then - echo "$(tput setaf 6)Unzipping Prusa Firmware build environment...$(tput setaf 2)" - sleep 2 - unzip -o PF-build-env-WinLin-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || exit 13 - echo "# PF-build-env-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt - echo "$(tput sgr0)" +if [[ "$BOARD_VERSION" == "1.0.3" || "$BOARD_VERSION" == "1.0.2" || "$BOARD_VERSION" == "1.0.1" ]]; then + if [ ! -f "PF-build-env-WinLin-$BUILD_ENV.zip" ]; then + echo "$(tput setaf 6)Downloading Prusa Firmware build environment...$(tput setaf 2)" + sleep 2 + wget $PF_BUILD_FILE_URL || exit 12 + echo "$(tput sgr 0)" + fi + if [ ! -e "../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]; then + echo "$(tput setaf 6)Unzipping Prusa Firmware build environment...$(tput setaf 2)" + sleep 2 + unzip -o PF-build-env-WinLin-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || exit 13 + echo "# PF-build-env-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt + echo "$(tput sgr0)" + fi fi # Check if User updated Arduino IDE 1.8.5 boardsmanager and tools @@ -850,25 +864,32 @@ do OUTPUT_FOLDER="PF-build-hex/FW$FW-Build$BUILD/$BOARD" fi + #Define OUTPUT_FILENAME + OUTPUT_FILENAME=FW$FW-Build$BUILD-$VARIANT + #Check for OUTPUT_FILENAME_SUFFIX and add it + if [ ! -z $OUTPUT_FILENAME_SUFFIX ]; then + OUTPUT_FILENAME="${OUTPUT_FILENAME}$OUTPUT_FILENAME_SUFFIX" + fi + #Check if exactly the same hexfile already exists - if [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex" && "$LANGUAGES" == "ALL" ]]; then + if [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME.hex" && "$LANGUAGES" == "ALL" ]]; then echo "" - ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex | xargs -n1 basename + ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME.hex | xargs -n1 basename echo "$(tput setaf 6)This hex file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)" if [ $OUTPUT == "1" ] ; then read -t 10 -p "Press Enter to continue..." fi - elif [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex" && "$LANGUAGES" == "EN_ONLY" ]]; then + elif [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-EN_ONLY.hex" && "$LANGUAGES" == "EN_ONLY" ]]; then echo "" - ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex | xargs -n1 basename + ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-EN_ONLY.hex | xargs -n1 basename echo "$(tput setaf 6)This hex file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)" if [ $OUTPUT == "1" ] ; then read -t 10 -p "Press Enter to continue..." fi fi - if [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip" && "$LANGUAGES" == "ALL" ]]; then + if [[ -f "$SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME.zip" && "$LANGUAGES" == "ALL" ]]; then echo "" - ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip | xargs -n1 basename + ls -1 $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME.zip | xargs -n1 basename echo "$(tput setaf 6)This zip file to be compiled already exists! To cancel this process press CRTL+C and rename existing hex file.$(tput sgr 0)" if [ $OUTPUT == "1" ] ; then read -t 10 -p "Press Enter to continue..." @@ -877,17 +898,18 @@ do #List some useful data echo "$(tput setaf 2)$(tput setab 7) " - echo "Printer :" $MK404_PRINTER - echo "Variant :" $VARIANT - echo "Firmware :" $FW - echo "Build # :" $BUILD - echo "Dev Check :" $DEV_CHECK - echo "DEV Status :" $DEV_STATUS - echo "Motherboard:" $MOTHERBOARD - echo "Board flash:" $BOARD_FLASH - echo "Board mem :" $BOARD_MEM - echo "Languages :" $LANGUAGES + echo "Printer :" $MK404_PRINTER + echo "Variant :" $VARIANT + echo "Firmware :" $FW + echo "Build # :" $BUILD + echo "Dev Check :" $DEV_CHECK + echo "DEV Status :" $DEV_STATUS + echo "Motherboard :" $MOTHERBOARD + echo "Board flash :" $BOARD_FLASH + echo "Board mem :" $BOARD_MEM + echo "Languages :" $LANGUAGES echo "Hex-file Folder:" $OUTPUT_FOLDER + echo "Hex filename :" $OUTPUT_FILENAME echo "$(tput sgr0)" #Prepare Firmware to be compiled by copying variant as Configuration_prusa.h @@ -1074,28 +1096,28 @@ do if [ "$MOTHERBOARD" = "BOARD_EINSY_1_0a" ]; then echo "$(tput setaf 2)Copying multi language firmware for MK3/Einsy board to PF-build-hex folder$(tput sgr 0)" # End of "lang.bin" for MK3 and MK3S copy - cp -f firmware.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex - cp -f $BUILD_PATH/Firmware.ino.elf $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.elf + cp -f firmware.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME.hex + cp -f $BUILD_PATH/Firmware.ino.elf $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME.elf else echo "$(tput setaf 2)Zip multi language firmware for MK2.5/miniRAMbo board to PF-build-hex folder$(tput sgr 0)" - cp -f firmware_cz.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-cz.hex - cp -f firmware_de.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-de.hex - cp -f firmware_es.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-es.hex - cp -f firmware_fr.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-fr.hex - cp -f firmware_it.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-it.hex - cp -f firmware_pl.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-pl.hex - cp -f firmware_nl.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-nl.hex - cp -f $BUILD_PATH/Firmware.ino.elf $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.elf + cp -f firmware_cz.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-cz.hex + cp -f firmware_de.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-de.hex + cp -f firmware_es.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-es.hex + cp -f firmware_fr.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-fr.hex + cp -f firmware_it.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-it.hex + cp -f firmware_pl.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-pl.hex + cp -f firmware_nl.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-nl.hex + cp -f $BUILD_PATH/Firmware.ino.elf $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME.elf if [ $TARGET_OS == "windows" ]; then - zip a $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex - rm $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex + zip a $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME.zip $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-??.hex + rm $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-??.hex elif [ $TARGET_OS == "linux" ]; then # Make a copy for MK404 sim of MK2, MK2.5, MK2.5S firmware if [ ! -z "$mk404_flag" ]; then - cp -f firmware_de.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex + cp -f firmware_de.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME.hex fi # End of MK2, MK2.5, MK2.5S firmware copy - zip -m -j ../../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.zip ../../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-??.hex + zip -m -j ../../$OUTPUT_FOLDER/$OUTPUT_FILENAME.zip ../../$OUTPUT_FOLDER/$OUTPUT_FILENAME-??.hex fi fi @@ -1109,9 +1131,9 @@ do else echo "$(tput setaf 2)Copying English only firmware to PF-build-hex folder$(tput sgr 0)" - cp -f $BUILD_PATH/Firmware.ino.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex || exit 47 + cp -f $BUILD_PATH/Firmware.ino.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-EN_ONLY.hex || exit 47 echo "$(tput setaf 2)Copying English only elf file to PF-build-hex folder$(tput sgr 0)" - cp -f $BUILD_PATH/Firmware.ino.elf $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.elf || exit 47 + cp -f $BUILD_PATH/Firmware.ino.elf $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-EN_ONLY.elf || exit 47 fi # Cleanup Firmware @@ -1194,7 +1216,7 @@ if [ ! -z "$mk404_flag" ]; then MK404_options="${MK404_options} -y $board_flash_flag" fi -# Run MK404 with grafics +# Run MK404 with graphics if [ ! -z "$graphics_flag" ]; then if [[ "$graphics_flag" == "1" || "$graphics_flag" == "2" || "$graphics_flag" == "3" || "$graphics_flag" == "4" ]]; then MK404_options="${MK404_options} -g $graphics_flag" @@ -1216,9 +1238,9 @@ if [ ! -z "$mk404_flag" ]; then #Decide which hex file to use EN_ONLY or Multi language if [ "$LANGUAGES" == "ALL" ]; then - MK404_firmware_file=$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT.hex + MK404_firmware_file=$SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME.hex else - MK404_firmware_file=$SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex + MK404_firmware_file=$SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-EN_ONLY.hex fi # Start MK404 From 9f9203b2809b3ef8d0fbe130a96a284da73fb5b9 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Wed, 23 Jun 2021 20:14:30 +0200 Subject: [PATCH 29/34] Change atmega404 board flash argument to y Use newer version of MK404-build.sh instead start the program Added _RAM- and _FLASH- as OUTPUT_FILE_SUFFIX if someone builds an atmega404 firmware Added some logic if IDE 1.8.13 is used Added some logic if Arduino_boards 1.0.4 is used Fixed typo Restore original `Configuration.h` and `config.h` in case of cannceled script or failed compiling during next start of this script. use function Improve MK404 usage --- .gitignore | 2 + MK404-build.sh | 20 +- PF-build.sh | 652 ++++++++++++++++++++++++++++++++++++------------- 3 files changed, 501 insertions(+), 173 deletions(-) diff --git a/.gitignore b/.gitignore index dae307af4..f80085a0a 100644 --- a/.gitignore +++ b/.gitignore @@ -52,3 +52,5 @@ Firmware/Doc /Firmware/Firmware.vcxproj /Firmware/Configuration_prusa_bckp.h /Firmware/variants/printers.h +Configuration.tmp +config.tmp diff --git a/MK404-build.sh b/MK404-build.sh index 66d89185c..b2efcd690 100755 --- a/MK404-build.sh +++ b/MK404-build.sh @@ -10,7 +10,7 @@ # 3. Install latest updates with 'sudo apt-get upgrade' # # -# Version: 1.0.0-Build_9 +# Version: 1.0.0-Build_11 # Change log: # 11 Feb 2021, 3d-gussner, Inital # 11 Feb 2021, 3d-gussner, Optional flags to check for updates @@ -28,7 +28,7 @@ while getopts c:f:g:m:n:p:u:x:y:?h flag case "${flag}" in c) check_flag=${OPTARG};; f) firmware_version_flag=${OPTARG};; - g) graphics_flag=${OPTARG};; + g) mk404_graphics_flag=${OPTARG};; h) help_flag=1;; m) mk404_flag=${OPTARG};; n) new_build_flag=${OPTARG};; @@ -42,7 +42,7 @@ while getopts c:f:g:m:n:p:u:x:y:?h flag #Debug echos #echo "c: $check_flag" #echo "f: $firmware_version_flag" -#echo "g: $graphics_flag" +#echo "g: $mk404_graphics_flag" #echo "m: $mk404_flag" #echo "n: $new_build_flag" #echo "p: $mk404_printer_flag" @@ -53,7 +53,7 @@ while getopts c:f:g:m:n:p:u:x:y:?h flag # '?' 'h' argument usage and help if [ "$help_flag" == "1" ] ; then echo "***************************************" -echo "* MK404-build.sh Version: 1.0.0-Build_9 *" +echo "* MK404-build.sh Version: 1.0.0-Build_11 *" echo "***************************************" echo "Arguments:" echo "$(tput setaf 2)-c$(tput sgr0) Check for update" @@ -396,7 +396,7 @@ fi if [[ "$MK404_PRINTER" == "MK25" || "$MK404_PRINTER" == "MK25S" ]]; then MK404_PRINTER="${MK404_PRINTER}_mR13" else - if [[ "$mk404_flag" == "2" || "$mk404_flag" == "MMU2" || "$mk404_flag" == "MMU2S" ]]; then # Check if MMU2 is selected only for MK3/S + if [ "$mk404_flag" == "2" ]; then # Check if MMU2 is selected only for MK3/S MK404_PRINTER="${MK404_PRINTER}MMU2" fi fi @@ -410,20 +410,20 @@ fi fi # Run MK404 with graphics - if [ ! -z "$graphics_flag" ]; then + if [ ! -z "$mk404_graphics_flag" ]; then if [ ! -z "$MK404_options" ]; then MK404_options="${MK404_options} -g " else MK404_options=" -g " fi - if [[ "$graphics_flag" == "1" || "$graphics_flag" == "lite" || "$graphics_flag" == "3" ]]; then + if [[ "$mk404_graphics_flag" == "1" || "$mk404_graphics_flag" == "lite" || "$mk404_graphics_flag" == "3" ]]; then MK404_options="${MK404_options}lite" - elif [[ "$graphics_flag" == "2" || "$graphics_flag" == "fancy" || "$graphics_flag" == "4" ]]; then + elif [[ "$mk404_graphics_flag" == "2" || "$mk404_graphics_flag" == "fancy" || "$mk404_graphics_flag" == "4" ]]; then MK404_options="${MK404_options}fancy" else - echo "$(tput setaf 1)Unsupported MK404 graphics option $graphics_flag$(tput sgr 0)" + echo "$(tput setaf 1)Unsupported MK404 graphics option $mk404_graphics_flag$(tput sgr 0)" fi - if [[ "$graphics_flag" == "3" || "$graphics_flag" == "4" ]]; then + if [[ "$mk404_graphics_flag" == "3" || "$mk404_graphics_flag" == "4" ]]; then MK404_options="${MK404_options} --colour-extrusion --extrusion Quad_HR" else MK404_options="${MK404_options} --extrusion Line" diff --git a/PF-build.sh b/PF-build.sh index 74e58900f..94a452239 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -56,7 +56,7 @@ # Some may argue that this is only used by a script, BUT as soon someone accidentally or on purpose starts Arduino IDE # it will use the default Arduino IDE folders and so can corrupt the build environment. # -# Version: 2.0.0-Build_57 +# Version: 2.0.0-Build_59 # Change log: # 12 Jan 2019, 3d-gussner, Fixed "compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections" in 'platform.txt' # 16 Jan 2019, 3d-gussner, Build_2, Added development check to modify 'Configuration.h' to prevent unwanted LCD messages that Firmware is unknown @@ -156,9 +156,85 @@ # 18 Jun 2021, 3d-gussner, Remove MK404 copy of lang file as it has been fixed in MK404 # 21 Jun 2021, 3d-gussner, Change atmega404 board flash argument to y # Use newer version of MK404-build.sh instead start the program +# 22 Jun 2021, 3d-gussner, Added _RAM- and _FLASH- as OUTPUT_FILE_SUFFIX if someone builds an atmega404 firmware +# Added some logic if IDE 1.8.13 is used +# Added some logic if Arduino_boards 1.0.4 is used +# Fixed typo +# Restore original `Configuration.h` and `config.h` in case of cannceled script or failed compiling during next start of this script. +# use function +# 23 Jun 2021, 3d-gussner, Improve MK404 usage +SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )" -#### Start check if OSTYPE is supported +#### Start: Failures +failures() +{ +case "$1" in + 0) echo "$(tput setaf 2)PF-build.sh finished with success$(tput sgr0)" ;; + 1) echo "$(tput setaf 1)This script doesn't support your Operating system!$(tput sgr0)" ; exit 1 ;; + 4) echo "$(tput setaf 5)Follow the instructions above $(tput sgr0)" ; exit 4 ;; + 5) echo "$(tput setaf 5)Invalid argument $(tput sgr0)" ; exit 5 ;; + 8) echo "$(tput setaf 5)Failed to download $(tput sgr0)" ; exit 8 ;; + 9) echo "$(tput setaf 5)Failed to create folder $(tput sgr0)" ; exit 9 ;; + 10) echo "$(tput setaf 5)Failed to change folder $(tput sgr0)"; exit 10 ;; + 11) echo "$(tput setaf 5)Failed to unzip $(tput sgr0)" ; exit 11 ;; + 12) echo "$(tput setaf 5)Failed to copy file $(tput sgr0)" ; exit 12 ;; + 13) echo "$(tput setaf 5)Failed to delete $(tput sgr0)" ; exit 13 ;; + 20) echo "$(tput setaf 2)Conditional stop initiated by user $(tput sgr0)" ; exit 20 ;; + 21) echo "$(tput setaf 1)PF-build.sh has been interrupted/failed. $(tput setaf 6)Restoring 'Configuration.h'$(tput sgr0)" ; sleep 5 ;; + 22) echo "$(tput setaf 1)PF-build.sh has been interrupted/failed. $(tput setaf 6)Restoring 'config.h'$(tput sgr0)" ; sleep 5 ;; + 24) echo "$(tput setaf 1)PF-build.sh stopped due to compiling errors! Try to restore modified files.$(tput sgr0)"; check_script_failed_nr1 ; check_script_failed_nr2 ; cleanup_firmware ; exit 24 ;; + 25) echo "$(tput setaf 1)Failed to execute $(tput sgr0)" ; exit 25 ;; +esac +} +#### End: Failures + +#### Start: Make backup of Configuration.h +make_backup1() +{ +if [ ! -f "$SCRIPT_PATH/Firmware/Configuration.tmp" ]; then + cp -f $SCRIPT_PATH/Firmware/Configuration.h $SCRIPT_PATH/Firmware/Configuration.tmp +fi +} +#### End: Make backup of Configuration.h + +#### Start: Make backup of config.h +make_backup2() +{ +if [ ! -f "$SCRIPT_PATH/Firmware/config.tmp" ]; then + cp -f $SCRIPT_PATH/Firmware/config.h $SCRIPT_PATH/Firmware/config.tmp +fi +} +#### End: Make backup of config.h + +#### Start: Check Check if script has been canceled or failed nr1. +check_script_failed_nr1() +{ +#Check for "Configuration.tmp" +if [ -f "$SCRIPT_PATH/Firmware/Configuration.tmp" ]; then + cp -f $SCRIPT_PATH/Firmware/Configuration.tmp $SCRIPT_PATH/Firmware/Configuration.h + #echo "Found Configuration.tmp restore Configuration.h" + failures 21 +fi +} +#### End: Check Check if script has been canceled or failed nr1. + +#### Start: Check if script has been canceled or failed nr2. +check_script_failed_nr2() +{ +#Check for "config.tmp" + #echo "No config.tmp" +if [ -f "$SCRIPT_PATH/Firmware/config.tmp" ]; then + cp -f $SCRIPT_PATH/Firmware/config.tmp $SCRIPT_PATH/Firmware/config.h + #echo "Found config.tmp restore config.h" + failures 22 +fi +} +#### End: Check if script has been canceled or failed nr2. + +#### Start: Check if OSTYPE is supported +check_OS() +{ OS_FOUND=$( command -v uname) case $( "${OS_FOUND}" | tr '[:upper:]' '[:lower:]') in @@ -186,8 +262,7 @@ if [ $TARGET_OS == "windows" ]; then Processor="32" else echo "$(tput setaf 1)Unsupported OS: Windows $(uname -m)" - echo "Please refer to the notes of build.sh$(tput sgr0)" - exit 1 + failures 1 fi # Linux elif [ $TARGET_OS == "linux" ]; then @@ -199,27 +274,35 @@ elif [ $TARGET_OS == "linux" ]; then Processor="32" else echo "$(tput setaf 1)Unsupported OS: Linux $(uname -m)" - echo "Please refer to the notes of build.sh$(tput sgr0)" - exit 1 + failures 1 fi else - echo "$(tput setaf 1)This script doesn't support your Operating system!" - echo "Please use Linux 64-bit or Windows 10 64-bit with Linux subsystem / git-bash" - echo "Read the notes of build.sh$(tput sgr0)" - exit 1 + #echo "$(tput setaf 1)This script doesn't support your Operating system!" + #echo "Please use Linux 64-bit or Windows 10 64-bit with Linux subsystem / git-bash" + #echo "Read the notes of build.sh$(tput sgr0)" + failures 1 fi -sleep 2 -#### End check if OSTYPE is supported +if [ $OUTPUT == "1" ] ; then + sleep 2 +fi +} +#### End: Check if OSTYPE is supported -#### Prepare bash environment and check if wget, zip and other needed things are available -# Check wget +#### Start: Prepare bash environment and check if wget, zip and other needed things are available +# Start: Check wget +check_wget() +{ if ! type wget > /dev/null; then echo "$(tput setaf 1)Missing 'wget' which is important to run this script" echo "Please follow these instructions https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058 to install wget$(tput sgr0)" - exit 2 + failures 4 fi +} +# End: Check wget -# Check for zip +# Start: Check for zip +check_zip() +{ if ! type zip > /dev/null; then if [ $TARGET_OS == "windows" ]; then echo "$(tput setaf 1)Missing 'zip' which is important to run this script" @@ -228,19 +311,23 @@ if ! type zip > /dev/null; then echo "Run git Bash under Administrator privilege and" echo "navigate to the directory /c/Program Files/Git/mingw64/bin," echo "you can run the command $(tput setaf 2)ln -s /c/Program Files/7-Zip/7z.exe zip.exe$(tput sgr0)" - exit 3 + failures 4 elif [ $TARGET_OS == "linux" ]; then echo "$(tput setaf 1)Missing 'zip' which is important to run this script" echo "install it with the command $(tput setaf 2)'sudo apt-get install zip'$(tput sgr0)" - #sudo apt-get update && apt-get install zip - exit 3 + failures 4 fi fi -# Check python ... needed during language build +} +# End: Check for zip + +# Start: Check python ... needed during language build +check_python() +{ if ! type python > /dev/null; then if [ $TARGET_OS == "windows" ]; then echo "$(tput setaf 1)Missing 'python3' which is important to run this script" - exit 4 + failures 4 elif [ $TARGET_OS == "linux" ]; then echo "$(tput setaf 1)Missing 'python' which is important to run this script" echo "As Python 2.x will not be maintained from 2020 please," @@ -248,30 +335,34 @@ if ! type python > /dev/null; then echo "Check which version of Python3 has been installed using 'ls /usr/bin/python3*'" echo "Use 'sudo ln -sf /usr/bin/python3.x /usr/bin/python' (where 'x' is your version number) to make it default.$(tput sgr0)" #sudo apt-get update && apt-get install python3 && ln -sf /usr/bin/python3 /usr/bin/python - exit 4 + failures 4 fi fi +} +# End: Check python ... needed during language build -# Check gawk ... needed during language build +#Start: Check gawk ... needed during language build +check_gawk() +{ if ! type gawk > /dev/null; then if [ $TARGET_OS == "linux" ]; then echo "$(tput setaf 1)Missing 'gawk' which is important to run this script" echo "install it with the command $(tput setaf 2)'sudo apt-get install gawk'." #sudo apt-get update && apt-get install gawk - exit 5 + failures 4 fi fi +} +#End: Check gawk ... needed during language build -#### End prepare bash / Linux environment - -# Check for options/flags +#### Start: Check for options/flags while getopts b:c:d:g:h:i:j:l:m:n:o:p:v:x:y:?h flag do case "${flag}" in b) build_flag=${OPTARG};; c) clean_flag=${OPTARG};; d) devel_flag=${OPTARG};; - g) graphics_flag=${OPTARG};; + g) mk404_graphics_flag=${OPTARG};; h) help_flag=1;; i) IDE_flag=${OPTARG};; j) verbose_IDE_flag=${OPTARG};; @@ -291,29 +382,43 @@ while getopts b:c:d:g:h:i:j:l:m:n:o:p:v:x:y:?h flag # '?' 'h' argument usage and help if [ "$help_flag" == "1" ] ; then echo "***************************************" -echo "* PF-build.sh Version: 2.0.0-Build_57 *" +echo "* PF-build.sh Version: 2.0.0-Build_59 *" echo "***************************************" echo "Arguments:" -echo "$(tput setaf 2)-b$(tput sgr0) Build/commit number '$(tput setaf 2)Auto$(tput sgr0)' needs git or a number" -echo "$(tput setaf 2)-c$(tput sgr0) Do not clean up lang build'$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" -echo "$(tput setaf 2)-d$(tput sgr0) Devel build '$(tput setaf 2)GOLD$(tput sgr0)', '$(tput setaf 2)RC$(tput sgr0)', '$(tput setaf 2)BETA$(tput sgr0)', '$(tput setaf 2)ALPHA$(tput sgr0)', '$(tput setaf 2)DEBUG$(tput sgr0)', '$(tput setaf 2)DEVEL$(tput sgr0)' and '$(tput setaf 2)UNKNOWN$(tput sgr0)'" -echo "$(tput setaf 2)-g$(tput sgr0) Start MK404 graphics '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' lite '$(tput setaf 2)2$(tput sgr0)' fancy '$(tput setaf 2)3$(tput sgr0)' lite with Quad_HR '$(tput setaf 2)2$(tput sgr0)' fancy with Quad_HR" -echo "$(tput setaf 2)-h$(tput sgr0) Help" -echo "$(tput setaf 2)-i$(tput sgr0) Arduino IDE version '$(tput setaf 2)1.8.5$(tput sgr0)', '$(tput setaf 2)1.8.13$(tput sgr0)'" -echo "$(tput setaf 2)-j$(tput sgr0) Arduino IDE verbose output '$(tput setaf 2)0$(tput sgr0)', '$(tput setaf 2)1$(tput sgr0) active'" -echo "$(tput setaf 2)-l$(tput sgr0) Languages '$(tput setaf 2)ALL$(tput sgr0)' for multi language or '$(tput setaf 2)EN_ONLY$(tput sgr0)' for English only" -echo "$(tput setaf 2)-m$(tput sgr0) Start MK404 sim '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes '$(tput setaf 2)2$(tput sgr0)' with MMU2" -echo "$(tput setaf 2)-n$(tput sgr0) New fresh build '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" -echo "$(tput setaf 2)-o$(tput sgr0) Output '$(tput setaf 2)1$(tput sgr0)' force or '$(tput setaf 2)0$(tput sgr0)' block output and delays" -echo "$(tput setaf 2)-p$(tput sgr0) Keep Configuration_prusa.h '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' yes" -echo "$(tput setaf 2)-v$(tput sgr0) Variant '$(tput setaf 2)All$(tput sgr0)' or variant file name" -echo "$(tput setaf 2)-x$(tput sgr0) Board memory size '$(tput setaf 2)8$(tput sgr0)' or '$(tput setaf 2)64$(tput sgr0)' Kb." -echo "$(tput setaf 2)-y$(tput sgr0) Board flash size '$(tput setaf 2)256$(tput sgr0)','$(tput setaf 2)384$(tput sgr0)','$(tput setaf 2)512$(tput sgr0)','$(tput setaf 2)1024$(tput sgr0)''$(tput setaf 2)32M$(tput sgr0)'" +echo "$(tput setaf 2)-b$(tput sgr0) Build/commit number" +echo "$(tput setaf 2)-c$(tput sgr0) Do not clean up lang build" +echo "$(tput setaf 2)-d$(tput sgr0) Devel build" +echo "$(tput setaf 2)-g$(tput sgr0) Start MK404 graphics" +echo "$(tput setaf 2)-i$(tput sgr0) Arduino IDE version" +echo "$(tput setaf 2)-j$(tput sgr0) Arduino IDE verbose output" +echo "$(tput setaf 2)-l$(tput sgr0) Languages" +echo "$(tput setaf 2)-m$(tput sgr0) Start MK404 sim" +echo "$(tput setaf 2)-n$(tput sgr0) New fresh build" +echo "$(tput setaf 2)-o$(tput sgr0) Output" +echo "$(tput setaf 2)-p$(tput sgr0) Keep Configuration_prusa.h" +echo "$(tput setaf 2)-v$(tput sgr0) Variant" +echo "$(tput setaf 2)-x$(tput sgr0) Board memory size" +echo "$(tput setaf 2)-y$(tput sgr0) Board flash size" echo "$(tput setaf 2)-?$(tput sgr0) Help" -echo +echo echo "Brief USAGE:" echo " $(tput setaf 2)./PF-build.sh$(tput sgr0) [-b] [-c] [-d] [-g] [-i] [-j] [-l] [-m] [-n] [-o] [-p ] -[v] [-x] [-y] [-h] [-?]" echo +echo " -b : '$(tput setaf 2)Auto$(tput sgr0)' needs git or a number" +echo " -c : '$(tput setaf 2)0$(tput sgr0)' clean up, '$(tput setaf 2)1$(tput sgr0)' keep" +echo " -d : '$(tput setaf 2)GOLD$(tput sgr0)', '$(tput setaf 2)RC$(tput sgr0)', '$(tput setaf 2)BETA$(tput sgr0)', '$(tput setaf 2)ALPHA$(tput sgr0)', '$(tput setaf 2)DEBUG$(tput sgr0)', '$(tput setaf 2)DEVEL$(tput sgr0)' and '$(tput setaf 2)UNKNOWN$(tput sgr0)'" +echo " -g : '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' lite '$(tput setaf 2)2$(tput sgr0)' fancy '$(tput setaf 2)3$(tput sgr0)' lite with Quad_HR '$(tput setaf 2)4$(tput sgr0)' fancy with Quad_HR" +echo " -i : '$(tput setaf 2)1.8.5$(tput sgr0)', '$(tput setaf 2)1.8.13$(tput sgr0)'" +echo " -j : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes" +echo " -l : '$(tput setaf 2)ALL$(tput sgr0)' for multi language or '$(tput setaf 2)EN_ONLY$(tput sgr0)' for English only" +echo " -m : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes '$(tput setaf 2)2$(tput sgr0)' with MMU2" +echo " -n : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes" +echo " -o : '$(tput setaf 2)1$(tput sgr0)' force or '$(tput setaf 2)0$(tput sgr0)' block output and delays" +echo " -p : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes" +echo " -v : '$(tput setaf 2)All$(tput sgr0)' or variant file name" +echo " -x : '$(tput setaf 2)8$(tput sgr0)' or '$(tput setaf 2)64$(tput sgr0)' Kb." +echo " -y : '$(tput setaf 2)256$(tput sgr0)','$(tput setaf 2)384$(tput sgr0)','$(tput setaf 2)512$(tput sgr0)','$(tput setaf 2)1024$(tput sgr0)''$(tput setaf 2)32M$(tput sgr0)'" +echo echo "Example:" echo " $(tput setaf 2)./PF-build.sh -v All -l ALL -d GOLD$(tput sgr0)" echo " Will build all variants as multi language and final GOLD version" @@ -335,7 +440,7 @@ if [ ! -z "$verbose_IDE_flag" ]; then verbose_IDE="0" else echo "Only '0' and '1' are valid verbose_IDE values." - exit + failures 5 fi else verbose_IDE="0" @@ -370,7 +475,7 @@ if [ ! -z "$board_flash_flag" ] ; then OUTPUT_FILENAME_SUFFIX="${OUTPUT_FILENAME_SUFFIX}_FLASH-$board_flash_flag" else echo "Unsupported board flash size chosen. Only '256', '384', '512', '1024' and '32M' are allowed." - exit 7 + failures 5 fi fi @@ -385,11 +490,11 @@ if [ ! -z "$board_mem_flag" ] ; then OUTPUT_FILENAME_SUFFIX="${OUTPUT_FILENAME_SUFFIX}_RAM-$board_mem_flag" else echo "Unsupported board mem size chosen. Only '8', '64' are allowed." - exit 8 + failures 5 fi fi -#Check if Arduino IDE version is correct +#Start: Check if Arduino IDE version is correct if [ ! -z "$IDE_flag" ]; then if [[ "$IDE_flag" == "1.8.5" || "$IDE_flag" == "1.8.13" ]]; then ARDUINO_ENV="${IDE_flag}" @@ -399,8 +504,12 @@ if [ ! -z "$IDE_flag" ]; then else ARDUINO_ENV="1.8.5" fi +#End: Check if Arduino IDE version is correct +#### End: Check for options/flags -#### Set build environment +#### Start: Set build environment +set_build_env_variables() +{ BUILD_ENV="1.0.6" BOARD="prusa_einsy_rambo" BOARD_PACKAGE_NAME="PrusaResearch" @@ -419,9 +528,12 @@ if [[ "$BOARD_VERSION" == "1.0.3" || "$BOARD_VERSION" == "1.0.2" || "$BOARD_VERS PF_BUILD_FILE_URL="https://github.com/prusa3d/PF-build-env/releases/download/$BUILD_ENV-WinLin/PF-build-env-WinLin-$BUILD_ENV.zip" fi LIB="PrusaLibrary" -SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )" +} +#### End: Set build environment -# List few useful data +#### Start: List few useful data +output_useful_data() +{ echo echo "Script path :" $SCRIPT_PATH echo "OS :" $OS @@ -440,15 +552,19 @@ echo "Package name:" $BOARD_PACKAGE_NAME echo "Board v. :" $BOARD_VERSION echo "Specific Lib:" $LIB echo "" +} +#### End: List few useful data -#### Start prepare building environment +#### Start: Prepare building environment -#Check if build exists and creates it if not +# Start: Check if build exists and creates it if not +check_create_build_folders() +{ if [ ! -d "../PF-build-dl" ]; then - mkdir ../PF-build-dl || exit 9 + mkdir ../PF-build-dl || failures 9 fi -cd ../PF-build-dl || exit 10 +cd ../PF-build-dl || failures 10 BUILD_ENV_PATH="$( cd "$(dirname "$0")" ; pwd -P )" # Check if PF-build-env- exists and downloads + creates it if not @@ -456,22 +572,32 @@ BUILD_ENV_PATH="$( cd "$(dirname "$0")" ; pwd -P )" if [ ! -d "../PF-build-env-$BUILD_ENV" ]; then echo "$(tput setaf 6)PF-build-env-$BUILD_ENV is missing ... creating it now for you$(tput sgr 0)" mkdir ../PF-build-env-$BUILD_ENV - sleep 5 + if [ $OUTPUT == "1" ] ; then + sleep 2 + fi fi +} +# End: Check if build exists and creates it if not -# Download and extract supported Arduino IDE depending on OS +# Start: Download and extract supported Arduino IDE depending on OS +download_prepare_arduinoIDE() +{ # Windows if [ $TARGET_OS == "windows" ]; then if [ ! -f "arduino-$ARDUINO_ENV-windows.zip" ]; then echo "$(tput setaf 6)Downloading Windows 32/64-bit Arduino IDE portable...$(tput setaf 2)" - sleep 2 - wget https://downloads.arduino.cc/arduino-$ARDUINO_ENV-windows.zip || exit 8 + if [ $OUTPUT == "1" ] ; then + sleep 2 + fi + wget https://downloads.arduino.cc/arduino-$ARDUINO_ENV-windows.zip || failures 8 echo "$(tput sgr 0)" fi if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then echo "$(tput setaf 6)Unzipping Windows 32/64-bit Arduino IDE portable...$(tput setaf 2)" - sleep 2 - unzip arduino-$ARDUINO_ENV-windows.zip -d ../PF-build-env-$BUILD_ENV || exit 9 + if [ $OUTPUT == "1" ] ; then + sleep 2 + fi + unzip arduino-$ARDUINO_ENV-windows.zip -d ../PF-build-env-$BUILD_ENV || failures 11 mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor echo "# arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt echo "$(tput sgr0)" @@ -482,20 +608,29 @@ if [ $TARGET_OS == "linux" ]; then # 32 or 64 bit version if [ ! -f "arduino-$ARDUINO_ENV-linux$Processor.tar.xz" ]; then echo "$(tput setaf 6)Downloading Linux $Processor Arduino IDE portable...$(tput setaf 2)" - sleep 2 - wget --no-check-certificate https://downloads.arduino.cc/arduino-$ARDUINO_ENV-linux$Processor.tar.xz || exit 8 + if [ $OUTPUT == "1" ] ; then + sleep 2 + fi + wget --no-check-certificate https://downloads.arduino.cc/arduino-$ARDUINO_ENV-linux$Processor.tar.xz || failures 8 echo "$(tput sgr 0)" fi if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then echo "$(tput setaf 6)Unzipping Linux $Processor Arduino IDE portable...$(tput setaf 2)" - sleep 2 - tar -xvf arduino-$ARDUINO_ENV-linux$Processor.tar.xz -C ../PF-build-env-$BUILD_ENV/ || exit 9 + if [ $OUTPUT == "1" ] ; then + sleep 2 + fi + tar -xvf arduino-$ARDUINO_ENV-linux$Processor.tar.xz -C ../PF-build-env-$BUILD_ENV/ || failures 11 mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor echo "# arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt echo "$(tput sgr0)" fi fi -# Make Arduino IDE portable +} +# End: Download and extract supported Arduino IDE depending on OS + +# Start: Make Arduino IDE portable +portable_ArduinoIDE() +{ if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/ ]; then mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/ fi @@ -518,11 +653,17 @@ fi if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/staging/ ]; then mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/staging fi +} +# End: Make Arduino IDE portable -# Change Arduino IDE preferences +# Start: Change Arduino IDE preferences +change_ArduinoIDEpreferances() +{ if [ ! -e ../PF-build-env-$BUILD_ENV/Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt ]; then echo "$(tput setaf 6)Setting $ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor Arduino IDE preferences for portable GUI usage...$(tput setaf 2)" - sleep 2 + if [ $OUTPUT == "1" ] ; then + sleep 2 + fi echo "update.check" sed -i 's/update.check = true/update.check = false/g' ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt echo "board" @@ -537,18 +678,26 @@ if [ ! -e ../PF-build-env-$BUILD_ENV/Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TA echo "# Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt echo "$(tput sgr0)" fi +} +# End: Change Arduino IDE preferences -# Download and extract Prusa Firmware related parts +# Start: Download and extract Prusa Firmware related parts +download_prepare_Prusa_build_files() +{ # Download and extract PrusaResearchRambo board if [ ! -f "$BOARD_FILENAME-$BOARD_VERSION.tar.bz2" ]; then echo "$(tput setaf 6)Downloading Prusa Research AVR MK3 RAMBo EINSy build environment...$(tput setaf 2)" - sleep 2 - wget $BOARD_FILE_URL || exit 10 + if [ $OUTPUT == "1" ] ; then + sleep 2 + fi + wget $BOARD_FILE_URL || failures 8 fi if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr/$BOARD_VERSION" || ! -e "../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then echo "$(tput setaf 6)Unzipping $BOARD_PACKAGE_NAME Arduino IDE portable...$(tput setaf 2)" - sleep 2 - tar -xvf $BOARD_FILENAME-$BOARD_VERSION.tar.bz2 -C ../PF-build-env-$BUILD_ENV/ || exit 11 + if [ $OUTPUT == "1" ] ; then + sleep 2 + fi + tar -xvf $BOARD_FILENAME-$BOARD_VERSION.tar.bz2 -C ../PF-build-env-$BUILD_ENV/ || failures 11 if [ ! -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME ]; then mkdir ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/$BOARD_PACKAGE_NAME fi @@ -572,30 +721,44 @@ fi if [[ "$BOARD_VERSION" == "1.0.3" || "$BOARD_VERSION" == "1.0.2" || "$BOARD_VERSION" == "1.0.1" ]]; then if [ ! -f "PF-build-env-WinLin-$BUILD_ENV.zip" ]; then echo "$(tput setaf 6)Downloading Prusa Firmware build environment...$(tput setaf 2)" - sleep 2 - wget $PF_BUILD_FILE_URL || exit 12 + if [ $OUTPUT == "1" ] ; then + sleep 2 + fi + wget $PF_BUILD_FILE_URL || failures 8 echo "$(tput sgr 0)" fi if [ ! -e "../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]; then echo "$(tput setaf 6)Unzipping Prusa Firmware build environment...$(tput setaf 2)" - sleep 2 - unzip -o PF-build-env-WinLin-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || exit 13 + if [ $OUTPUT == "1" ] ; then + sleep 2 + fi + unzip -o PF-build-env-WinLin-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || failures 11 echo "# PF-build-env-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt echo "$(tput sgr0)" fi fi +} +# End: Download and extract Prusa Firmware related parts -# Check if User updated Arduino IDE 1.8.5 boardsmanager and tools +# Start: Check if User updated Arduino IDE 1.8.5 boardsmanager and tools +check_ArduinoIDE_User_interaction() +{ if [ -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools" ]; then echo "$(tput setaf 6)Arduino IDE boards / tools have been manually updated...$" echo "Please don't update the 'Arduino AVR boards' as this will prevent running this script (tput setaf 2)" - sleep 2 + if [ $OUTPUT == "1" ] ; then + sleep 2 + fi fi if [ -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2" ]; then echo "$(tput setaf 6)PrusaReasearch compatible tools have been manually updated...$(tput setaf 2)" - sleep 2 + if [ $OUTPUT == "1" ] ; then + sleep 2 + fi echo "$(tput setaf 6)Copying Prusa Firmware build environment to manually updated boards / tools...$(tput setaf 2)" - sleep 2 + if [ $OUTPUT == "1" ] ; then + sleep 2 + fi cp -f ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/hardware/tools/avr/avr/lib/ldscripts/avr6.xn ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/portable/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2/avr/lib/ldscripts/avr6.xn echo "# PF-build-env-portable-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-portable-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt echo "$(tput sgr0)" @@ -604,17 +767,21 @@ if [ -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Proc echo "$(tput setaf 1)Arduino IDE tools have been updated manually to a non supported version!!!" echo "Delete ../PF-build-env-$BUILD_ENV and start the script again" echo "Script will not continue until this have been fixed $(tput setaf 2)" - sleep 2 + if [ $OUTPUT == "1" ] ; then + sleep 2 + fi echo "$(tput sgr0)" - exit 14 + failures 4 fi - - +} +# End: Check if User updated Arduino IDE 1.8.5 boardsmanager and tools +# +#### End: prepare bash / Linux environment #### End prepare building - -#### Start -cd $SCRIPT_PATH +#### Start: Getting arguments for command line compiling +get_arguments() +{ # Check if git is available if type git > /dev/null; then @@ -643,8 +810,8 @@ if [ -z "$variant_flag" ] ; then ;; "Quit") echo "You chose to stop" - exit 22 - ;; + failures 20 + ;; *) echo "$(tput setaf 1)This is not a valid variant$(tput sgr0)" ;; @@ -664,7 +831,7 @@ else echo "Only $(tput setaf 2)'All'$(tput sgr0) and file names below are allowed as variant '-v' argument.$(tput setaf 2)" ls -1 $SCRIPT_PATH/Firmware/variants/*.h | xargs -n1 basename echo "$(tput sgr0)" - exit 23 + failures 4 fi fi @@ -697,7 +864,7 @@ else else echo "$(tput setaf 1)Language argument is wrong!$(tput sgr0)" echo "Only $(tput setaf 2)'ALL'$(tput sgr0) or $(tput setaf 2)'EN_ONLY'$(tput sgr0) are allowed as language '-l' argument!" - exit 24 + failures 5 fi fi #Check if DEV_STATUS is selected via argument '-d' @@ -709,7 +876,7 @@ if [ ! -z "$devel_flag" ] ; then else echo "$(tput setaf 1)Development argument is wrong!$(tput sgr0)" echo "Only $(tput setaf 2)'GOLD', 'RC', 'BETA', 'ALPHA', 'DEVEL', 'DEBUG' or 'UNKNOWN' $(tput sgr0) are allowed as devel '-d' argument!$(tput sgr0)" - exit 25 + failures 5 fi fi @@ -723,19 +890,17 @@ if [ ! -z "$build_flag" ] ; then else echo "$(tput setaf 1)Build number argument is wrong!$(tput sgr0)" echo "Only $(tput setaf 2)'Auto' (git needed) or numbers $(tput sgr0) are allowed as build '-b' argument!$(tput sgr0)" - exit 26 - + failures 5 fi echo "New Build number is: $BUILD" fi -# check if script has been started with arguments -if [[ "$#" -eq "0" || "$output_flag" == 1 ]] ; then +#Check if Output is selecetd via argument '-o' +if [[ -z "$output_flag" || "$output_flag" == 1 ]] ; then OUTPUT=1 else OUTPUT=0 fi -#echo "Output is:" $OUTPUT #Check git branch has changed if [ ! -z "git_available" ]; then @@ -756,32 +921,44 @@ else fi fi fi +} +#### End: Getting arguments for command line compiling -#Set BUILD_ENV_PATH -cd ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || exit 27 +#### Start: Set needed Paths +set_paths() +{ +cd ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || failures 10 BUILD_ENV_PATH="$( pwd -P )" cd ../.. #Checkif BUILD_PATH exists and if not creates it if [ ! -d "Prusa-Firmware-build" ]; then - mkdir Prusa-Firmware-build || exit 28 + mkdir Prusa-Firmware-build || failures 9 fi #Set the BUILD_PATH for Arduino IDE -cd Prusa-Firmware-build || exit 29 +cd Prusa-Firmware-build || failures 10 BUILD_PATH="$( pwd -P )" +} +#### End: Set needed Paths -#Check git branch has changed +#### Start: Check git branch has changed +check_branch_changed() +{ if [ "$CLEAN_PF_FW_BUILD" == "1" ]; then read -t 10 -p "Branch changed, cleaning Prusa-Firmware-build folder" rm -r * else echo "Nothing to clean up" fi +} +#### End: Check git branch has changed -for v in ${VARIANTS[*]} -do +#### Start: Prepare code for compiling + +prepare_code_for_compiling() +{ VARIANT=$(basename "$v" ".h") MK404_PRINTER=$(grep --max-count=1 "\bPRINTER_TYPE\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3 | cut -d '_' -f2) # Find firmware version in Configuration.h file and use it to generate the hex filename @@ -797,7 +974,10 @@ do # Find and replace build version in Configuration.h file BUILD_ORG=$(grep --max-count=1 "\bFW_COMMIT_NR\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/ */ /g'|cut -d ' ' -f3) echo "Original build number: $BUILD_ORG" - sed -i -- "s/^#define FW_COMMIT_NR.*/#define FW_COMMIT_NR $BUILD/g" $SCRIPT_PATH/Firmware/Configuration.h + if [ "$BUILD_ORG" != "$BUILD" ]; then + echo "New build number : $BUILD" + sed -i -- "s/^#define FW_COMMIT_NR.*/#define FW_COMMIT_NR $BUILD/g" $SCRIPT_PATH/Firmware/Configuration.h + fi fi # Check if the motherboard is an EINSY and if so only one hex file will generated MOTHERBOARD=$(grep --max-count=1 "\bMOTHERBOARD\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/ */ /g' |cut -d ' ' -f3) @@ -852,14 +1032,18 @@ do else DEV_STATUS=$DEV_STATUS_SELECTED fi - #Prepare hex files folders +} +#### End: Prepare code for compiling + +prepare_hex_folders() +{ if [ ! -d "$SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD" ]; then - mkdir -p $SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD || exit 28 + mkdir -p $SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD || failures 9 fi OUTPUT_FOLDER="PF-build-hex/FW$FW-Build$BUILD/$MOTHERBOARD" if [ "$BOARD" != "prusa_einsy_rambo" ]; then if [ ! -d "$SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$BOARD" ]; then - mkdir -p $SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$BOARD || exit 28 + mkdir -p $SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/$BOARD || failures 9 fi OUTPUT_FOLDER="PF-build-hex/FW$FW-Build$BUILD/$BOARD" fi @@ -895,8 +1079,12 @@ do read -t 10 -p "Press Enter to continue..." fi fi - - #List some useful data +} +#### End: Prepare hex files folder + +#### Start: List usefull data +list_usefull_data() +{ echo "$(tput setaf 2)$(tput setab 7) " echo "Printer :" $MK404_PRINTER echo "Variant :" $VARIANT @@ -912,15 +1100,21 @@ do echo "Hex filename :" $OUTPUT_FILENAME echo "$(tput sgr0)" - #Prepare Firmware to be compiled by copying variant as Configuration_prusa.h +} +#### End: List usefull data + +#### Start: Prepare Firmware to be compiled +prepare_variant_for_compiling() +{ + # Copy variant as Configuration_prusa.h if [ ! -f "$SCRIPT_PATH/Firmware/Configuration_prusa.h" ]; then - cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 31 + cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || failures 12 else echo "$(tput setaf 6)Configuration_prusa.h already exist it will be overwritten in 10 seconds by the chosen variant.$(tput sgr 0)" if [ $OUTPUT == "1" ] ; then read -t 10 -p "Press Enter to continue..." fi - cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 31 + cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || failures 12 fi #Prepare Configuration.h to use the correct FW_DEV_VERSION to prevent LCD messages when connecting with OctoPrint @@ -949,10 +1143,16 @@ do #New fresh PF-Firmware-build if [ "$new_build_flag" == "1" ]; then - rm -r -f $BUILD_PATH/* || exit 54 + rm -r -f $BUILD_PATH/* || failures 13 fi - # Prepare Board mem and flash modifications +} +#### End: Prepare Firmware to be compiled +#### End of Prepare building + +#### Start: Compiling EN Prusa Firmware +compile_en_firmware() +{ ## Check board mem size CURRENT_BOARD_MEM=$(grep "#define RAMEND" $BUILD_ENV_PATH/hardware/tools/avr/avr/include/avr/iom2560.h | sed -e's/.* //g'|cut -d ' ' -f3|tr -d $'\n') if [ $CURRENT_BOARD_MEM != "0x21FF" ] ; then @@ -1042,12 +1242,16 @@ do fi if [ $verbose_IDE == "1" ]; then - $BUILD_ENV_PATH/arduino-builder -dump-prefs -debug-level 10 -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 41 + $BUILD_ENV_PATH/arduino-builder -dump-prefs -debug-level 10 -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || failures 24 fi - $BUILD_ENV_PATH/arduino-builder -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all -verbose=$verbose_IDE $SCRIPT_PATH/Firmware/Firmware.ino || exit 42 - echo "$(tput sgr 0)" + $BUILD_ENV_PATH/arduino-builder -compile -hardware $ARDUINO/hardware -hardware $ARDUINO/portable/packages -tools $ARDUINO/tools-builder -tools $ARDUINO/hardware/tools/avr -tools $ARDUINO/portable/packages -built-in-libraries $ARDUINO/libraries -libraries $ARDUINO/portable/sketchbook/libraries -fqbn=$BOARD_PACKAGE_NAME:avr:$BOARD -build-path=$BUILD_PATH -warnings=all -verbose=$verbose_IDE $SCRIPT_PATH/Firmware/Firmware.ino || failures 24 +} +#### End: Compiling EN Prusa Firmware - if [ $LANGUAGES == "ALL" ]; then +#### Start: Create and save Multi Language Prusa Firmware +create_multi_firmware() +{ + #if [ $LANGUAGES == "ALL" ]; then echo "$(tput setaf 2)" echo "Building multi language firmware" $MULTI_LANGUAGE_CHECK @@ -1057,7 +1261,7 @@ do fi cd $SCRIPT_PATH/lang echo "$(tput setaf 3)" - ./config.sh || exit 43 + ./config.sh || failures 25 echo "$(tput sgr 0)" # Check if previous languages and firmware build exist and if so clean them up if [ -f "lang_en.tmp" ]; then @@ -1082,11 +1286,11 @@ do fi # build languages echo "$(tput setaf 3)" - ./lang-build.sh || exit 44 + ./lang-build.sh || failures 25 # build community languages - ./lang-community.sh || exit 45 + ./lang-community.sh || failures 25 # Combine compiled firmware with languages - ./fw-build.sh || exit 46 + ./fw-build.sh || failures 25 cp not_tran.txt not_tran_$VARIANT.txt cp not_used.txt not_used_$VARIANT.txt echo "$(tput sgr 0)" @@ -1124,44 +1328,53 @@ do # Cleanup after build if [[ -z "$clean_flag" || "$clean_flag" == "0" ]]; then echo "$(tput setaf 3)" - ./fw-clean.sh || exit 51 - ./lang-clean.sh || exit 52 + ./fw-clean.sh || failures 25 + ./lang-clean.sh || failures 25 echo "$(tput sgr 0)" fi +} +#### End: Create and save Multi Language Prusa Firmware - else +#### Start: Save EN_ONLY language Prusa Firmware +save_en_firmware() +{ + #else echo "$(tput setaf 2)Copying English only firmware to PF-build-hex folder$(tput sgr 0)" - cp -f $BUILD_PATH/Firmware.ino.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-EN_ONLY.hex || exit 47 + cp -f $BUILD_PATH/Firmware.ino.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-EN_ONLY.hex || failures 12 echo "$(tput setaf 2)Copying English only elf file to PF-build-hex folder$(tput sgr 0)" - cp -f $BUILD_PATH/Firmware.ino.elf $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-EN_ONLY.elf || exit 47 - fi + cp -f $BUILD_PATH/Firmware.ino.elf $SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-EN_ONLY.elf || failures 12 + #fi +} +#### End: Save EN_ONLY language Prusa Firmware - # Cleanup Firmware +#### Start: Cleanup Firmware +cleanup_firmware() +{ if [[ -z "$prusa_flag" || "$prusa_flag" == "0" ]]; then - rm $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 53 + rm $SCRIPT_PATH/Firmware/Configuration_prusa.h || failures 13 fi # Delete dupblicates if find $SCRIPT_PATH/lang/ -name '*RAMBo10a*.txt' -printf 1 -quit | grep -q 1 then - rm $SCRIPT_PATH/lang/*RAMBo10a*.txt + rm $SCRIPT_PATH/lang/*RAMBo10a*.txt || failures 13 fi # MK2 not supported in this branch if find $SCRIPT_PATH/lang/ -name '*MK2-RAMBo13a*' -printf 1 -quit | grep -q 1 then - rm $SCRIPT_PATH/lang/*MK2-RAMBo13a*.txt + rm $SCRIPT_PATH/lang/*MK2-RAMBo13a*.txt || failures 13 fi if find $SCRIPT_PATH/lang/ -name 'not_tran.txt' -printf 1 -quit | grep -q 1 then - rm $SCRIPT_PATH/lang/not_tran.txt + rm $SCRIPT_PATH/lang/not_tran.txt || failures 13 fi if find $SCRIPT_PATH/lang/ -name 'not_used.txt' -printf 1 -quit | grep -q 1 then - rm $SCRIPT_PATH/lang/not_used.txt + rm $SCRIPT_PATH/lang/not_used.txt || failures 13 fi #New fresh PF-Firmware-build if [ "$new_build_flag" == "1" ]; then - rm -r -f $BUILD_PATH/* || exit 54 + rm -r -f $BUILD_PATH/* || failures 13 fi # Restore files to previous state @@ -1175,7 +1388,18 @@ do sed -i -- "s/^#define LANG_MODE *1/#define LANG_MODE ${MULTI_LANGUAGE_CHECK}/g" $SCRIPT_PATH/Firmware/config.h sed -i -- "s/^#define LANG_MODE *0/#define LANG_MODE ${MULTI_LANGUAGE_CHECK}/g" $SCRIPT_PATH/Firmware/config.h if [ $OUTPUT == "1" ] ; then - sleep 5 + sleep 2 + fi + #Check for "Configuration.tmp" and delete it + if [ -e "$SCRIPT_PATH/Firmware/Configuration.tmp" ]; then + rm $SCRIPT_PATH/Firmware/Configuration.tmp + fi + #Check for "config.tmp" and delete it + if [ -e "$SCRIPT_PATH/Firmware/config.tmp" ]; then + rm $SCRIPT_PATH/Firmware/config.tmp + fi + if [ $OUTPUT == "1" ] ; then + sleep 2 fi # Restore build env files to previous state @@ -1183,29 +1407,78 @@ do sed -i -- "s/^prusa_einsy_rambo.upload.maximum_size.*/prusa_einsy_rambo.upload.maximum_size=253952/g" $BUILD_ENV_PATH/portable/packages/$BOARD_PACKAGE_NAME/hardware/avr/$BOARD_VERSION/boards.txt sed -i -- "s/^#define RAMEND.*/#define RAMEND 0x21FF/g" $BUILD_ENV_PATH/hardware/tools/avr/avr/include/avr/iom2560.h -done +} +#### End: Prepare code for compiling +#done -# Switch to hex path and list build files +#### Start: Finish script +# List hex path and list build files +finish_pf-build() +{ cd $SCRIPT_PATH +cd .. echo "$(tput setaf 2) " echo " " +failures 0 echo "Build done, please use Slic3rPE > 1.41.0 to upload the firmware" echo "more information how to flash firmware https://www.prusa3d.com/drivers/ $(tput sgr 0)" -#### End building +echo +echo "Files:" +ls -r -h $SCRIPT_PATH/../PF-build-hex/FW$FW-Build$BUILD/* +} +#### End: Finish script +#### End: building -#### MK404 Simulator - +####Start: MK404 Simulator +MK404_SIM() +{ +cd $SCRIPT_PATH # Check/compile MK404 sim -if [ ! -z "$mk404_flag" ]; then +if [[ "$output_flag" == "1" || -z "$output_flag" ]]; then + if [[ -z "$mk404_flag" && "$VARIANTS" != "All " ]]; then + echo + read -t 10 -n 1 -p "Do you want to start MK404? Y/$(tput setaf 2)n$(tput sgr 0)" mk404_start + if [ "$mk404_start" == "Y" ]; then + echo + read -t 10 -n 1 -p "Do you want to start MK404 with or without MMU2S? $(tput setaf 2)1$(tput sgr 0)/2" mk404_choose1 + if [ "$mk404_choose1" == "1" ]; then + mk404_flag=1 + elif [ "$mk404_choose1" == "2" ]; then + mk404_flag=2 + fi + echo + echo "Choose MK404 graphics" + echo "0 = no graphics" + echo "1 = lite" + echo "2 = fancy" + echo "3 = lite with Quad_HR" + echo "4 = fancy lite with Quad_HR" + read -t 10 -n 1 -p "Which one do you want? $(tput setaf 2)1$(tput sgr 0)/2/3/4" mk404_choose2 + if [ "$mk404_choose2" == "1" ]; then + mk404_graphics_flag=1 + elif [ "$mk404_choose2" == "2" ]; then + mk404_graphics_flag=2 + elif [ "$mk404_choose2" == "3" ]; then + mk404_graphics_flag=3 + elif [ "$mk404_choose2" == "4" ]; then + mk404_graphics_flag=4 + fi + fi + echo + fi +fi + +# For MMU2S + if [[ "$mk404_flag" == "2" || "$mk404_flag" == "MMU2" || "$mk404_flag" == "MMU2S" ]]; then # Check if MMU2 is selected only for MK3/S + mk404_flag=2 + fi + +if [[ ! -z "$mk404_flag" && "$VARIANTS" != "All " ]]; then # For Prusa MK2, MK2.5/S if [ "$MOTHERBOARD" == "BOARD_RAMBO_MINI_1_3" ]; then MK404_PRINTER="${MK404_PRINTER}_mR13" - else - if [[ "$mk404_flag" == "2" || "$mk404_flag" == "MMU2" || "$mk404_flag" == "MMU2S" ]]; then # Check if MMU2 is selected only for MK3/S - MK404_PRINTER="${MK404_PRINTER}MMU2" - fi fi # Run MK404 with 'debugcore' and/or 'bootloader-file' @@ -1217,11 +1490,11 @@ if [ ! -z "$mk404_flag" ]; then fi # Run MK404 with graphics - if [ ! -z "$graphics_flag" ]; then - if [[ "$graphics_flag" == "1" || "$graphics_flag" == "2" || "$graphics_flag" == "3" || "$graphics_flag" == "4" ]]; then - MK404_options="${MK404_options} -g $graphics_flag" + if [ ! -z "$mk404_graphics_flag" ]; then + if [[ "$mk404_graphics_flag" == "1" || "$mk404_graphics_flag" == "2" || "$mk404_graphics_flag" == "3" || "$mk404_graphics_flag" == "4" ]]; then + MK404_options="${MK404_options} -g $mk404_graphics_flag" else - echo "$(tput setaf 1)Unsupported MK404 graphics option $graphics_flag$(tput sgr 0)" + echo "$(tput setaf 1)Unsupported MK404 graphics option $mk404_graphics_flag$(tput sgr 0)" fi fi @@ -1229,7 +1502,7 @@ if [ ! -z "$mk404_flag" ]; then echo "Printer: $MK404_PRINTER" echo "Options: $MK404_options" echo "" - read -t 5 -p "Press $(tput setaf 2)Enter$(tput sgr 0) to start MK404" + #read -t 5 -p "Press $(tput setaf 2)Enter$(tput sgr 0) to start MK404" echo "" # Change to MK404 build folder @@ -1237,11 +1510,11 @@ if [ ! -z "$mk404_flag" ]; then #Decide which hex file to use EN_ONLY or Multi language -if [ "$LANGUAGES" == "ALL" ]; then - MK404_firmware_file=$SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME.hex -else - MK404_firmware_file=$SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-EN_ONLY.hex -fi + if [ "$LANGUAGES" == "ALL" ]; then + MK404_firmware_file=$SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME.hex + else + MK404_firmware_file=$SCRIPT_PATH/../$OUTPUT_FOLDER/$OUTPUT_FILENAME-EN_ONLY.hex + fi # Start MK404 # default with serial output and terminal to manipulate it via terminal @@ -1251,8 +1524,61 @@ fi #./MK404 Prusa_$MK404_PRINTER -s --terminal $MK404_options -f $MK404_firmware_file || exit 62 echo "" echo "./MK404-build.sh -m $mk404_flag -p $MK404_PRINTER $MK404_options -f $MK404_firmware_file" - sleep 5 - ./MK404-build.sh -m $mk404_flag -p $MK404_PRINTER $MK404_options -f $MK404_firmware_file|| exit 61 - + if [ $OUTPUT == "1" ] ; then + sleep 2 + fi + ./MK404-build.sh -m $mk404_flag -p $MK404_PRINTER $MK404_options -f $MK404_firmware_file|| failures 25 fi -#### End of MK404 Simulator +} +#### End: MK404 Simulator + + +#### Check OS and needed apps +echo "Check OS" +check_OS +check_wget +check_zip +check_python +check_gawk + +#### Check for options/flags +echo "Check for options" + +#### Prepare build environment +echo "Prepare build env" +get_arguments +set_build_env_variables +output_useful_data +check_create_build_folders + +#### Download/set needed apps and dependencies +download_prepare_arduinoIDE +portable_ArduinoIDE +change_ArduinoIDEpreferances +download_prepare_Prusa_build_files +check_ArduinoIDE_User_interaction + +#### Start +set_paths +check_branch_changed + +for v in ${VARIANTS[*]} +do + check_script_failed_nr1 + check_script_failed_nr2 + make_backup1 + make_backup2 + prepare_code_for_compiling + prepare_hex_folders + list_usefull_data + prepare_variant_for_compiling + compile_en_firmware + if [ $LANGUAGES == "ALL" ]; then + create_multi_firmware + else + save_en_firmware + fi + cleanup_firmware +done +finish_pf-build +MK404_SIM From 17d7fdf333475b001d4a50b15165b1b6b4fd949d Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Thu, 24 Jun 2021 05:50:20 +0200 Subject: [PATCH 30/34] Fix MK404 user interaction not to show if compiling 'All' variants --- PF-build.sh | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/PF-build.sh b/PF-build.sh index 94a452239..22a8ada54 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -56,7 +56,7 @@ # Some may argue that this is only used by a script, BUT as soon someone accidentally or on purpose starts Arduino IDE # it will use the default Arduino IDE folders and so can corrupt the build environment. # -# Version: 2.0.0-Build_59 +# Version: 2.0.0-Build_60 # Change log: # 12 Jan 2019, 3d-gussner, Fixed "compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections" in 'platform.txt' # 16 Jan 2019, 3d-gussner, Build_2, Added development check to modify 'Configuration.h' to prevent unwanted LCD messages that Firmware is unknown @@ -163,6 +163,7 @@ # Restore original `Configuration.h` and `config.h` in case of cannceled script or failed compiling during next start of this script. # use function # 23 Jun 2021, 3d-gussner, Improve MK404 usage +# 24 Jun 2021, 3d-gussner, Fix MK404 user interaction not to show if compiling 'All' variants SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )" @@ -382,7 +383,7 @@ while getopts b:c:d:g:h:i:j:l:m:n:o:p:v:x:y:?h flag # '?' 'h' argument usage and help if [ "$help_flag" == "1" ] ; then echo "***************************************" -echo "* PF-build.sh Version: 2.0.0-Build_59 *" +echo "* PF-build.sh Version: 2.0.0-Build_60 *" echo "***************************************" echo "Arguments:" echo "$(tput setaf 2)-b$(tput sgr0) Build/commit number" @@ -806,6 +807,7 @@ if [ -z "$variant_flag" ] ; then "All") VARIANT="All" VARIANTS=${options[*]} + variant_flag="All" break ;; "Quit") @@ -1436,7 +1438,7 @@ MK404_SIM() cd $SCRIPT_PATH # Check/compile MK404 sim if [[ "$output_flag" == "1" || -z "$output_flag" ]]; then - if [[ -z "$mk404_flag" && "$VARIANTS" != "All " ]]; then + if [[ -z "$mk404_flag" && "$variant_flag" != "All" ]]; then echo read -t 10 -n 1 -p "Do you want to start MK404? Y/$(tput setaf 2)n$(tput sgr 0)" mk404_start if [ "$mk404_start" == "Y" ]; then @@ -1474,7 +1476,7 @@ fi mk404_flag=2 fi -if [[ ! -z "$mk404_flag" && "$VARIANTS" != "All " ]]; then +if [[ ! -z "$mk404_flag" && "$variant_flag" != "All " ]]; then # For Prusa MK2, MK2.5/S if [ "$MOTHERBOARD" == "BOARD_RAMBO_MINI_1_3" ]; then From 9fd9ce34a9f74bfc923b9d5432f943c1424cc84a Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Thu, 24 Jun 2021 07:29:54 +0200 Subject: [PATCH 31/34] MK404 is only supported on Linux at this moment. --- PF-build.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/PF-build.sh b/PF-build.sh index 22a8ada54..f091d045f 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -56,7 +56,7 @@ # Some may argue that this is only used by a script, BUT as soon someone accidentally or on purpose starts Arduino IDE # it will use the default Arduino IDE folders and so can corrupt the build environment. # -# Version: 2.0.0-Build_60 +# Version: 2.0.0-Build_61 # Change log: # 12 Jan 2019, 3d-gussner, Fixed "compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections" in 'platform.txt' # 16 Jan 2019, 3d-gussner, Build_2, Added development check to modify 'Configuration.h' to prevent unwanted LCD messages that Firmware is unknown @@ -164,6 +164,7 @@ # use function # 23 Jun 2021, 3d-gussner, Improve MK404 usage # 24 Jun 2021, 3d-gussner, Fix MK404 user interaction not to show if compiling 'All' variants +# 24 Jun 2021, 3d-gussner, MK404 is only supported on Linux at this moment. SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )" @@ -383,7 +384,7 @@ while getopts b:c:d:g:h:i:j:l:m:n:o:p:v:x:y:?h flag # '?' 'h' argument usage and help if [ "$help_flag" == "1" ] ; then echo "***************************************" -echo "* PF-build.sh Version: 2.0.0-Build_60 *" +echo "* PF-build.sh Version: 2.0.0-Build_61 *" echo "***************************************" echo "Arguments:" echo "$(tput setaf 2)-b$(tput sgr0) Build/commit number" @@ -1583,4 +1584,6 @@ do cleanup_firmware done finish_pf-build -MK404_SIM +if [ $TARGET_OS == "linux" ]; then + MK404_SIM +fi \ No newline at end of file From ffb74126373fedfebc132944501398a99a633b9e Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Sat, 17 Jul 2021 19:06:58 +0200 Subject: [PATCH 32/34] Fix fresh build --- MK404-build.sh | 9 ++++++++- PF-build.sh | 8 +++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/MK404-build.sh b/MK404-build.sh index b2efcd690..79c191df4 100755 --- a/MK404-build.sh +++ b/MK404-build.sh @@ -305,9 +305,16 @@ if [ "$update_flag" == "1" ]; then fi # Prepare MK404 -mkdir -p $MK404_BUILD_PATH +if [ ! -d $MK404_BUILD_PATH ]; then + mkdir -p $MK404_BUILD_PATH +fi + if [[ ! -f "$MK404_BUILD_PATH/Makefile" || "$new_build_flag" == "1" ]]; then # Init and update submodules + if [ -d $MK404_BUILD_PATH ]; then + rm -rf $MK404_BUILD_PATH + mkdir -p $MK404_BUILD_PATH + fi git submodule init git submodule update cmake -B$MK404_BUILD_PATH -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" diff --git a/PF-build.sh b/PF-build.sh index f091d045f..5cc0b34e2 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -1449,6 +1449,8 @@ if [[ "$output_flag" == "1" || -z "$output_flag" ]]; then mk404_flag=1 elif [ "$mk404_choose1" == "2" ]; then mk404_flag=2 + else + mk404_flag=1 #default fi echo echo "Choose MK404 graphics" @@ -1457,7 +1459,7 @@ if [[ "$output_flag" == "1" || -z "$output_flag" ]]; then echo "2 = fancy" echo "3 = lite with Quad_HR" echo "4 = fancy lite with Quad_HR" - read -t 10 -n 1 -p "Which one do you want? $(tput setaf 2)1$(tput sgr 0)/2/3/4" mk404_choose2 + read -t 10 -n 1 -p "Which one do you want? $(tput setaf 2)0$(tput sgr 0)/1/2/3/4" mk404_choose2 if [ "$mk404_choose2" == "1" ]; then mk404_graphics_flag=1 elif [ "$mk404_choose2" == "2" ]; then @@ -1466,6 +1468,10 @@ if [[ "$output_flag" == "1" || -z "$output_flag" ]]; then mk404_graphics_flag=3 elif [ "$mk404_choose2" == "4" ]; then mk404_graphics_flag=4 + elif [ "$mk404_choose2" == "0" ]; then + mk404_graphics_flag="" + else + mk404_graphics_flag="" #default fi fi echo From e779803261351a30f805c5a856dcfdd169c6a7d1 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Thu, 29 Jul 2021 10:57:05 +0200 Subject: [PATCH 33/34] Add/fix few functions Check MK404 for latest stable release instead of dev branch --- MK404-build.sh | 506 ++++++++++++++++++++++++++++--------------------- PF-build.sh | 332 ++++++++++++++++---------------- 2 files changed, 467 insertions(+), 371 deletions(-) diff --git a/MK404-build.sh b/MK404-build.sh index 79c191df4..4402a444c 100755 --- a/MK404-build.sh +++ b/MK404-build.sh @@ -10,7 +10,7 @@ # 3. Install latest updates with 'sudo apt-get upgrade' # # -# Version: 1.0.0-Build_11 +# Version: 1.0.0-Build_13 # Change log: # 11 Feb 2021, 3d-gussner, Inital # 11 Feb 2021, 3d-gussner, Optional flags to check for updates @@ -23,6 +23,27 @@ # 18 Jun 2021, 3d-gussner, Check for updates is default. Fix update if internet connection is lost. # 21 Jun 2021, 3d-gussner, Change board_flash argument to 'y' and firmware_version to 'f' +#### Start: Failures +failures() +{ +case "$1" in + 0) echo "$(tput setaf 2)MK404-build.sh finished with success$(tput sgr0)" ;; + 2) echo "$(tput setaf 1)Unsupported OS: Linux $(uname -m)" ; echo "Please refer to the notes of MK404-build.sh$(tput sgr0)" ; exit 2 ;; + 3) echo "$(tput setaf 1)This script doesn't support your Operating system!"; echo "Please use Linux 64-bit"; echo "Read the notes of MK404-build.sh$(tput sgr0)" ; exit 2 ;; + 4) echo "$(tput setaf 1)Some packages are missing please install these!$(tput sgr0)" ; exit 4 ;; + 5) echo "$(tput setaf 1)Wrong printer chosen.$(tput sgr0) Following Printers are supported: MK25, MK25S, MK3 and MK3S" ; exit 5 ;; + 6) echo "$(tput setaf 1)Unsupported board flash size chosen.$(tput sgr0) Only '256', '384', '512', '1024' and '32M' are allowed." ; exit 6 ;; + 7) echo "$(tput setaf 1)Unsupported board mem size chosen.$(tput sgr0) Only '8', '16', '32' and '64' are allowed." ; exit 7 ;; + 8) echo "$(tput setaf 1)No firmware version file selected!$(tput sgr0)" ; echo "Add argument -f with path and hex filename to start MK404" ; exit 8 ;; + 9) echo "$(tput setaf 1)Tried to determine MK404 printer from hex file, but failed!$(tput sgr0)" ; "Add argument -p with 'MK25', 'MK25S', 'MK3' or 'MK3S' to start MK404" ; exit 9 ;; + 10) echo "$(tput setaf 1)Missing printer$(tput sgr0)" ; exit 10 ;; +esac +} +#### End: Failures + +#### Start: Check options +##check_options() +##{ while getopts c:f:g:m:n:p:u:x:y:?h flag do case "${flag}" in @@ -53,7 +74,7 @@ while getopts c:f:g:m:n:p:u:x:y:?h flag # '?' 'h' argument usage and help if [ "$help_flag" == "1" ] ; then echo "***************************************" -echo "* MK404-build.sh Version: 1.0.0-Build_11 *" +echo "* MK404-build.sh Version: 1.0.0-Build_13 *" echo "***************************************" echo "Arguments:" echo "$(tput setaf 2)-c$(tput sgr0) Check for update" @@ -78,124 +99,32 @@ echo " -m : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' y echo " -n : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes" echo " -p : '$(tput setaf 2)MK25$(tput sgr0)', '$(tput setaf 2)MK25S$(tput sgr0)', '$(tput setaf 2)MK3$(tput sgr0)' or '$(tput setaf 2)MK3S$(tput sgr0)'" echo " -u : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes '" -echo " -x : '$(tput setaf 2)8$(tput sgr0)' or '$(tput setaf 2)64$(tput sgr0)' Kb." +echo " -x : '$(tput setaf 2)8$(tput sgr0)',$(tput setaf 2)16$(tput sgr0)',$(tput setaf 2)32$(tput sgr0)' or '$(tput setaf 2)64$(tput sgr0)' Kb." echo " -y : '$(tput setaf 2)256$(tput sgr0)','$(tput setaf 2)384$(tput sgr0)','$(tput setaf 2)512$(tput sgr0)','$(tput setaf 2)1024$(tput sgr0)''$(tput setaf 2)32M$(tput sgr0)'" echo echo "Example:" echo " $(tput setaf 2)./MK404-build.sh -f 1$(tput sgr0)" echo " Will force an update and rebuild the MK404 SIM" echo -echo " $(tput setaf 2)./MK404-build.sh -m 1 -g 1 -v ../../../../Prusa-Firmware/PF-build-hex/FW3100-Build4481/BOAD_EINSY_1_0a/FW3100-Build4481-1_75mm_MK3S-EINSy10a-E3Dv6full.hex$(tput sgr0)" +echo " $(tput setaf 2)./MK404-build.sh -m 1 -g 1 -f ../../../../Prusa-Firmware/PF-build-hex/FW3100-Build4481/BOARD_EINSY_1_0a/FW3100-Build4481-1_75mm_MK3S-EINSy10a-E3Dv6full.hex$(tput sgr0)" echo " Will start MK404 with Prusa_MK3S and Prusa-Firmware 3.10.0-Build4481" exit 1 fi -#### Start check if OSTYPE is supported -OS_FOUND=$( command -v uname) -case $( "${OS_FOUND}" | tr '[:upper:]' '[:lower:]') in - linux*) - TARGET_OS="linux" - ;; - *) - TARGET_OS='unknown' - ;; -esac -# Linux -if [ $TARGET_OS == "linux" ]; then - if [ $(uname -m) == "x86_64" ]; then - echo "$(tput setaf 2)Linux 64-bit found$(tput sgr0)" - Processor="64" - #elif [[ $(uname -m) == "i386" || $(uname -m) == "i686" ]]; then - # echo "$(tput setaf 2)Linux 32-bit found$(tput sgr0)" - # Processor="32" - else - echo "$(tput setaf 1)Unsupported OS: Linux $(uname -m)" - echo "Please refer to the notes of build.sh$(tput sgr0)" - exit 2 - fi -else - echo "$(tput setaf 1)This script doesn't support your Operating system!" - echo "Please use Linux 64-bit" - echo "Read the notes of build.sh$(tput sgr0)" - exit 2 -fi -sleep 2 -#### End check if OSTYPE is supported - -#### Check MK404 dependencies -packages=( -"libelf-dev" -"gcc-7" -"gcc-avr" -"libglew-dev" -"freeglut3-dev" -"libsdl-sound1.2-dev" -"libpng-dev" -"cmake" -"zip" -"wget" -"git" -"build-essential" -"lcov" -"mtools" -) - -for check_package in ${packages[@]}; do - if dpkg-query -W -f'${db:Status-Abbrev}\n' $check_package 2>/dev/null \ - | grep -q '^.i $'; then - echo "$(tput setaf 2)$check_package: Installed$(tput sgr0)" - else - echo "$(tput setaf 1)$check_package: Not installed use $(tput setaf 3)'sudo apt install $check_package'$(tput setaf 1) to install missing package$(tput sgr0)" - not_installed=1; - fi -done - -if [ "$not_installed" = "1" ]; then - exit 3 -fi -#### End Check MK404 dependencies - -#### Set build environment -MK404_SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )" -MK404_URL="https://github.com/vintagepc/MK404.git" -MK404_owner="vintagepc" -MK404_project="MK404" -MK404_PATH="$MK404_SCRIPT_PATH/../MK404/master" -MK404_BUILD_PATH="$MK404_PATH/build" - - -# List few useful data -echo -echo "Script path :" $MK404_SCRIPT_PATH -echo "OS :" $TARGET_OS -echo "" -echo "MK404 path :" $MK404_PATH - -# Clone MK404 if needed -if [ ! -d $MK404_PATH ]; then - #release_url=$(curl -Ls -o /dev/null -w %{url_effective} https://github.com/$MK404_owner/$MK404_project/releases/latest) - #release_tag=$(basename $release_url) - #git clone -b $release_tag -- https://github.com/$MK404_owner/$MK404_project.git $MK404_PATH - git clone $MK404_URL $MK404_PATH -fi - -# -cd $MK404_PATH - #Check MK404 agruments #Set Check for updates as default check_flag=1 -#Check mk404_printer_flag +#Start: Check mk404_printer_flag if [ ! -z $mk404_printer_flag ]; then if [[ "$mk404_printer_flag" == "MK3" || "$mk404_printer_flag" == "MK3S" || "$mk404_printer_flag" == "MK25" || "$mk404_printer_flag" == "MK25S" ]]; then MK404_PRINTER_TEMP=$mk404_printer_flag else - echo "Following Printers are supported: MK25, MK25S, MK3 and MK3S" - exit 4 + failures 5 fi fi +#End: Check mk404_printer_flag -#Check if Build is selected with argument '-f' +#Start: Check if Build is selected with argument '-f' if [ ! -z "$board_flash_flag" ] ; then if [ "$board_flash_flag" == "256" ] ; then BOARD_FLASH="0x3FFFF" @@ -213,26 +142,32 @@ if [ ! -z "$board_flash_flag" ] ; then BOARD_FLASH="0x1FFFFFF" echo "Board flash size : 32 Mb, $BOARD_FLASH (hex)" else - echo "Unsupported board flash size chosen. Only '256', '384', '512', '1024' and '32M' are allowed." - exit 5 + failures 6 fi fi +#End: Check if Build is selected with argument '-f' -#Check if Build is selected with argument '-x' +#Start: Check if Build is selected with argument '-x' if [ ! -z "$board_mem_flag" ] ; then if [ "$board_mem_flag" == "8" ] ; then BOARD_MEM="0x21FF" echo "Board mem size : $board_mem_flag Kb, $BOARD_MEM (hex)" + elif [ "$board_mem_flag" == "16" ] ; then + BOARD_MEM="0x3DFF" + echo "Board mem size : $board_mem_flag Kb, $BOARD_MEM (hex)" + elif [ "$board_mem_flag" == "32" ] ; then + BOARD_MEM="0x7DFF" + echo "Board mem size : $board_mem_flag Kb, $BOARD_MEM (hex)" elif [ "$board_mem_flag" == "64" ] ; then BOARD_MEM="0xFFFF" echo "Board mem size : $board_mem_flag Kb, $BOARD_MEM (hex)" else - echo "Unsupported board mem size chosen. Only '8', '64' are allowed." - exit 6 + failures 7 fi fi +#End: Check if Build is selected with argument '-x' - +#Start: Check if new build is selected if [ "$new_build_flag" == "1" ]; then check_flag=1 update_flag=1 @@ -240,102 +175,7 @@ fi if [ "$update_flag" == "1" ]; then check_flag=1 fi - -#End Check MK404 agruments - -#Check for updates -if [ "$check_flag" == "1" ]; then - if [ -d $MK404_BUILD_PATH ]; then - cd $MK404_BUILD_PATH - MK404_current_version=$( command ./MK404 --version | grep "MK404" | cut -f 4 -d " ") - cd $MK404_PATH - else - echo "Cannot check current version as it has not been build." - fi -# Get local Commit_Hash - MK404_local_GIT_COMMIT_HASH=$(git log --pretty=format:"%H" -1) -# Get local Commit_Number - MK404_local_GIT_COMMIT_NUMBER=$(git rev-list HEAD --count) -# Get remote Commit_Hash - MK404_remote_GIT_COMMIT_HASH=$(git ls-remote --heads $(git config --get remote.origin.url) | grep "refs/heads/master" | cut -f 1) -# Get remote Commit_Number - MK404_remote_GIT_COMMIT_NUMBER=$(git rev-list origin/master --count) -# Output - echo "" - echo "Current version : $MK404_current_version" - echo "" - echo "Current local hash : $MK404_local_GIT_COMMIT_HASH" - echo "Current local commit nr : $MK404_local_GIT_COMMIT_NUMBER" - if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_remote_GIT_COMMIT_HASH" ]; then - echo "$(tput setaf 1)" - else - echo "$(tput setaf 2)" - fi - echo "Current remote hash : $MK404_remote_GIT_COMMIT_HASH" - echo "Current remote commit nr: $MK404_remote_GIT_COMMIT_NUMBER" - echo "$(tput sgr 0)" - -# Check for updates - if [ ! -z $MK404_remote_GIT_COMMIT_HASH ]; then - if [[ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_remote_GIT_COMMIT_HASH" && -z "$update_flag" ]]; then - echo "$(tput setaf 2)Update is availible.$(tput sgr 0)" - read -t 10 -n 1 -p "$(tput setaf 3)Update now Y/n$(tput sgr 0)" update_answer - if [ "$update_answer" == "Y" ]; then - update_flag=1 - fi - echo "" - fi - fi -fi - -# Fetch updates and force new build -if [ "$update_flag" == "1" ]; then - if [ ! -z $MK404_remote_GIT_COMMIT_HASH ]; then - if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_remote_GIT_COMMIT_HASH" ]; then - echo "" - git fetch --all - read -t 10 -p "$(tput setaf 2)Updating MK404 !$(tput sgr 0)" - echo "" - git reset --hard origin/master - read -t 10 -p "$(tput setaf 2)Compiling MK404 !$(tput sgr 0)" - echo "" - new_build_flag=1 - fi - fi -fi - -# Prepare MK404 -if [ ! -d $MK404_BUILD_PATH ]; then - mkdir -p $MK404_BUILD_PATH -fi - -if [[ ! -f "$MK404_BUILD_PATH/Makefile" || "$new_build_flag" == "1" ]]; then -# Init and update submodules - if [ -d $MK404_BUILD_PATH ]; then - rm -rf $MK404_BUILD_PATH - mkdir -p $MK404_BUILD_PATH - fi - git submodule init - git submodule update - cmake -B$MK404_BUILD_PATH -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" -fi - -# Make MK404 -cd $MK404_BUILD_PATH -if [[ ! -f "$MK404_BUILD_PATH/MK404" || "$new_build_flag" == "1" ]]; then - make -fi - -# Make SDcards -if [[ ! -f "$MK404_BUILD_PATH/Prusa_MK3S_SDcard.bin" || "$new_build_flag" == "1" ]]; then - cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3S_SDcard.bin - cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3_SDcard.bin - cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK25_13_SDcard.bin - cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK25S_13_SDcard.bin - cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3SMMU2_SDcard.bin - cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3MMU2_SDcard.bin -fi - +#End: Check if new build is selected # Prepare run MK404 #Check MK404_Printer @@ -357,15 +197,11 @@ if [ ! -z $firmware_version_flag ]; then MK404_PRINTER=MK25S fi else - echo "No firmware version file selected!" - echo "Add argument -f with path and hex filename to start MK404" - exit 7 + failures 8 fi if [ -z "$MK404_PRINTER" ]; then - echo "Tried to determine MK404 printer from hex file, but failed!" - echo "Add argument -p with 'MK25', 'MK25S', 'MK3' or 'MK3S' to start MK404" - exit 8 + failures 9 fi if [ ! -z $mk404_printer_flag ]; then @@ -397,7 +233,7 @@ if [ ! -z $mk404_printer_flag ]; then fi if [ -z $MK404_PRINTER ]; then - exit 9 + failures 10 fi if [[ "$MK404_PRINTER" == "MK25" || "$MK404_PRINTER" == "MK25S" ]]; then @@ -440,7 +276,230 @@ if [ ! -z $firmware_version_flag ]; then MK404_firmware_file=" -f $firmware_version_flag" fi -#Run MK404 SIM +#End: Check MK404 agruments +##} +#### End: Check for options/flags + +#### Start: Check if OSTYPE is supported +check_OS() +{ +OS_FOUND=$( command -v uname) +case $( "${OS_FOUND}" | tr '[:upper:]' '[:lower:]') in + linux*) + TARGET_OS="linux" + ;; + *) + TARGET_OS='unknown' + ;; +esac +# Linux +if [ $TARGET_OS == "linux" ]; then + if [ $(uname -m) == "x86_64" ]; then + echo "$(tput setaf 2)Linux 64-bit found$(tput sgr0)" + Processor="64" + #elif [[ $(uname -m) == "i386" || $(uname -m) == "i686" ]]; then + # echo "$(tput setaf 2)Linux 32-bit found$(tput sgr0)" + # Processor="32" + else + failures 2 + fi +else + failures 3 +fi +sleep 2 +} +#### End: Check if OSTYPE is supported + +#### Start: Check MK404 dependencies +check_packages() +{ +packages=( +"libelf-dev" +"gcc-7" +"gcc-avr" +"libglew-dev" +"freeglut3-dev" +"libsdl-sound1.2-dev" +"libpng-dev" +"cmake" +"zip" +"wget" +"git" +"build-essential" +"lcov" +"mtools" +) + +for check_package in ${packages[@]}; do + if dpkg-query -W -f'${db:Status-Abbrev}\n' $check_package 2>/dev/null \ + | grep -q '^.i $'; then + echo "$(tput setaf 2)$check_package: Installed$(tput sgr0)" + else + echo "$(tput setaf 1)$check_package: Not installed use $(tput setaf 3)'sudo apt install $check_package'$(tput setaf 1) to install missing package$(tput sgr0)" + not_installed=1; + fi +done + +if [ "$not_installed" = "1" ]; then + failures 4 +fi +} +#### End: Check MK404 dependencies + +#### Start: Set build environment +set_build_env_variables() +{ +MK404_SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )" +MK404_URL="https://github.com/vintagepc/MK404.git" +MK404_owner="vintagepc" +MK404_project="MK404" +MK404_PATH="$MK404_SCRIPT_PATH/../MK404/master" +MK404_BUILD_PATH="$MK404_PATH/build" +} +#### End: Set build environment + +#### Start: List few useful data +output_useful_data() +{ +echo +echo "Script path :" $MK404_SCRIPT_PATH +echo "OS :" $TARGET_OS +echo "" +echo "MK404 path :" $MK404_PATH +} +#### End: List few useful data + +#### Start: Clone MK404 if needed +get_MK404() +{ +if [ ! -d $MK404_PATH ]; then + #release_url=$(curl -Ls -o /dev/null -w %{url_effective} https://github.com/$MK404_owner/$MK404_project/releases/latest) + #release_tag=$(basename $release_url) + #git clone -b $release_tag -- https://github.com/$MK404_owner/$MK404_project.git $MK404_PATH + git clone $MK404_URL $MK404_PATH +fi +} +#### End: Clone MK404 if needed + +#### Start: Check for updates +check_for_updates() +{ +if [ "$check_flag" == "1" ]; then + if [ -d $MK404_BUILD_PATH ]; then + cd $MK404_BUILD_PATH + MK404_current_version=$( command ./MK404 --version | grep "MK404" | cut -f 4 -d " ") + cd $MK404_PATH + else + echo "Cannot check current version as it has not been build." + fi +# Get local Commit_Hash + MK404_local_GIT_COMMIT_HASH=$(git log --pretty=format:"%H" -1) +# Get local Commit_Number + MK404_local_GIT_COMMIT_NUMBER=$(git rev-list HEAD --count) +# Get latest release + MK404_release_url=$(curl -Ls -o /dev/null -w %{url_effective} https://github.com/$MK404_owner/$MK404_project/releases/latest) + MK404_release_tag=$(basename $MK404_release_url) +# Get remote Commit_Hash + #MK404_remote_GIT_COMMIT_HASH=$(git ls-remote --heads $(git config --get remote.origin.url) | grep "refs/heads/master" | cut -f 1) + MK404_remote_GIT_COMMIT_HASH=$(git ls-remote | grep "refs/tags/$MK404_release_tag" | cut -f 1) +# Get remote Commit_Number + MK404_remote_GIT_COMMIT_NUMBER=$(git rev-list $MK404_release_tag --count) +# Output + echo "" + echo "Current version : $MK404_current_version" + echo "" + echo "Current local hash : $MK404_local_GIT_COMMIT_HASH" + echo "Current local commit nr : $MK404_local_GIT_COMMIT_NUMBER" + if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_remote_GIT_COMMIT_HASH" ]; then + echo "$(tput setaf 1)" + else + echo "$(tput setaf 2)" + fi + echo "Latest release tag : $MK404_release_tag" + echo "Latest release hash : $MK404_remote_GIT_COMMIT_HASH" + echo "Latest remote commit nr : $MK404_remote_GIT_COMMIT_NUMBER" + echo "$(tput sgr 0)" + +# Check for updates + if [ ! -z $MK404_remote_GIT_COMMIT_HASH ]; then + if [[ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_remote_GIT_COMMIT_HASH" && -z "$update_flag" ]]; then + echo "$(tput setaf 2)Update is availible.$(tput sgr 0)" + read -t 10 -n 1 -p "$(tput setaf 3)Update now Y/n$(tput sgr 0)" update_answer + if [ "$update_answer" == "Y" ]; then + update_flag=1 + fi + echo "" + fi + fi +fi +} +#### End: Check for updates + +#### Start: Fetch updates and force new build +fetch_updates() +{ +if [ "$update_flag" == "1" ]; then + if [ ! -z $MK404_remote_GIT_COMMIT_HASH ]; then + if [ "$MK404_local_GIT_COMMIT_HASH" != "$MK404_remote_GIT_COMMIT_HASH" ]; then + echo "" + git fetch --all + read -t 10 -p "$(tput setaf 2)Updating MK404 !$(tput sgr 0)" + echo "" + git reset --hard $MK404_release_tag + read -t 10 -p "$(tput setaf 2)Compiling MK404 !$(tput sgr 0)" + echo "" + new_build_flag=1 + fi + fi +fi +} +#### End: Fetch updates and force new build + +#### Start: Prepare MK404 build +prepare_MK404() +{ +if [ ! -d $MK404_BUILD_PATH ]; then + mkdir -p $MK404_BUILD_PATH +fi +} +#### End: Prepare MK404 build + +#### Start: Build MK404 +build_MK404() +{ +if [[ ! -f "$MK404_BUILD_PATH/Makefile" || "$new_build_flag" == "1" ]]; then +# Init and update submodules + if [ -d $MK404_BUILD_PATH ]; then + rm -rf $MK404_BUILD_PATH + mkdir -p $MK404_BUILD_PATH + fi + git submodule init + git submodule update + cmake -B$MK404_BUILD_PATH -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" +fi + +# Make MK404 +cd $MK404_BUILD_PATH +if [[ ! -f "$MK404_BUILD_PATH/MK404" || "$new_build_flag" == "1" ]]; then + make +fi + +# Make SDcards +if [[ ! -f "$MK404_BUILD_PATH/Prusa_MK3S_SDcard.bin" || "$new_build_flag" == "1" ]]; then + cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3S_SDcard.bin + cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3_SDcard.bin + cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK25_13_SDcard.bin + cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK25S_13_SDcard.bin + cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3SMMU2_SDcard.bin + cmake --build $MK404_BUILD_PATH --config Release --target Prusa_MK3MMU2_SDcard.bin +fi +} +#### End: Build MK404 + + +#### Start: Run MK404 SIM +run_MK404_SIM() +{ if [ ! -z $mk404_flag ]; then # Output some useful data echo "Printer : $MK404_PRINTER" @@ -459,4 +518,29 @@ if [ ! -z $mk404_flag ]; then sleep 5 ./MK404 Prusa_$MK404_PRINTER -s --terminal $MK404_options $MK404_firmware_file || exit 10 fi -#### End of MK404 Simulator \ No newline at end of file +} +#### End: Run MK404 SIM + +#### Check OS and needed packages +echo "Check OS" +check_OS +check_packages + +#### Check for options/flags +echo "Check for options" + +#### Prepare build environment +echo "Prepare build env" +set_build_env_variables +output_useful_data +get_MK404 + +# +cd $MK404_PATH + +check_for_updates +fetch_updates +prepare_MK404 +build_MK404 +run_MK404_SIM +#### End of MK404 Simulator diff --git a/PF-build.sh b/PF-build.sh index 5cc0b34e2..78b2cb6fb 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -56,7 +56,7 @@ # Some may argue that this is only used by a script, BUT as soon someone accidentally or on purpose starts Arduino IDE # it will use the default Arduino IDE folders and so can corrupt the build environment. # -# Version: 2.0.0-Build_61 +# Version: 2.0.0-Build_63 # Change log: # 12 Jan 2019, 3d-gussner, Fixed "compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections" in 'platform.txt' # 16 Jan 2019, 3d-gussner, Build_2, Added development check to modify 'Configuration.h' to prevent unwanted LCD messages that Firmware is unknown @@ -191,6 +191,177 @@ esac } #### End: Failures +#### Start: Check for options/flags +##check_options() +##{ +while getopts b:c:d:g:h:i:j:l:m:n:o:p:v:x:y:?h flag + do + case "${flag}" in + b) build_flag=${OPTARG};; + c) clean_flag=${OPTARG};; + d) devel_flag=${OPTARG};; + g) mk404_graphics_flag=${OPTARG};; + h) help_flag=1;; + i) IDE_flag=${OPTARG};; + j) verbose_IDE_flag=${OPTARG};; + l) language_flag=${OPTARG};; + m) mk404_flag=${OPTARG};; + n) new_build_flag=${OPTARG};; + o) output_flag=${OPTARG};; + p) prusa_flag=${OPTARG};; + v) variant_flag=${OPTARG};; + x) board_mem_flag=${OPTARG};; + y) board_flash_flag=${OPTARG};; + ?) help_flag=1;; + esac + done + +# +# '?' 'h' argument usage and help +if [ "$help_flag" == "1" ] ; then +echo "***************************************" +echo "* PF-build.sh Version: 2.0.0-Build_63 *" +echo "***************************************" +echo "Arguments:" +echo "$(tput setaf 2)-b$(tput sgr0) Build/commit number" +echo "$(tput setaf 2)-c$(tput sgr0) Do not clean up lang build" +echo "$(tput setaf 2)-d$(tput sgr0) Devel build" +echo "$(tput setaf 2)-g$(tput sgr0) Start MK404 graphics" +echo "$(tput setaf 2)-i$(tput sgr0) Arduino IDE version" +echo "$(tput setaf 2)-j$(tput sgr0) Arduino IDE verbose output" +echo "$(tput setaf 2)-l$(tput sgr0) Languages" +echo "$(tput setaf 2)-m$(tput sgr0) Start MK404 sim" +echo "$(tput setaf 2)-n$(tput sgr0) New fresh build" +echo "$(tput setaf 2)-o$(tput sgr0) Output" +echo "$(tput setaf 2)-p$(tput sgr0) Keep Configuration_prusa.h" +echo "$(tput setaf 2)-v$(tput sgr0) Variant" +echo "$(tput setaf 2)-x$(tput sgr0) Board memory size" +echo "$(tput setaf 2)-y$(tput sgr0) Board flash size" +echo "$(tput setaf 2)-?$(tput sgr0) Help" +echo +echo "Brief USAGE:" +echo " $(tput setaf 2)./PF-build.sh$(tput sgr0) [-b] [-c] [-d] [-g] [-i] [-j] [-l] [-m] [-n] [-o] [-p ] -[v] [-x] [-y] [-h] [-?]" +echo +echo " -b : '$(tput setaf 2)Auto$(tput sgr0)' needs git or a number" +echo " -c : '$(tput setaf 2)0$(tput sgr0)' clean up, '$(tput setaf 2)1$(tput sgr0)' keep" +echo " -d : '$(tput setaf 2)GOLD$(tput sgr0)', '$(tput setaf 2)RC$(tput sgr0)', '$(tput setaf 2)BETA$(tput sgr0)', '$(tput setaf 2)ALPHA$(tput sgr0)', '$(tput setaf 2)DEBUG$(tput sgr0)', '$(tput setaf 2)DEVEL$(tput sgr0)' and '$(tput setaf 2)UNKNOWN$(tput sgr0)'" +echo " -g : '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' lite '$(tput setaf 2)2$(tput sgr0)' fancy '$(tput setaf 2)3$(tput sgr0)' lite with Quad_HR '$(tput setaf 2)4$(tput sgr0)' fancy with Quad_HR" +echo " -i : '$(tput setaf 2)1.8.5$(tput sgr0)', '$(tput setaf 2)1.8.13$(tput sgr0)'" +echo " -j : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes" +echo " -l : '$(tput setaf 2)ALL$(tput sgr0)' for multi language or '$(tput setaf 2)EN_ONLY$(tput sgr0)' for English only" +echo " -m : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes '$(tput setaf 2)2$(tput sgr0)' with MMU2" +echo " -n : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes" +echo " -o : '$(tput setaf 2)1$(tput sgr0)' force or '$(tput setaf 2)0$(tput sgr0)' block output and delays" +echo " -p : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes" +echo " -v : '$(tput setaf 2)All$(tput sgr0)' or variant file name" +echo " -x : '$(tput setaf 2)8$(tput sgr0)' or '$(tput setaf 2)64$(tput sgr0)' Kb." +echo " -y : '$(tput setaf 2)256$(tput sgr0)','$(tput setaf 2)384$(tput sgr0)','$(tput setaf 2)512$(tput sgr0)','$(tput setaf 2)1024$(tput sgr0)''$(tput setaf 2)32M$(tput sgr0)'" +echo +echo "Example:" +echo " $(tput setaf 2)./PF-build.sh -v All -l ALL -d GOLD$(tput sgr0)" +echo " Will build all variants as multi language and final GOLD version" +echo +echo " $(tput setaf 2) ./PF-build.sh -v 1_75mm_MK3S-EINSy10a-E3Dv6full.h -b Auto -l ALL -d GOLD -o 1 -c 1 -p 1 -n 1$(tput sgr0)" +echo " Will build MK3S multi language final GOLD firmware " +echo " with current commit count number and output extra information," +echo " not delete lang build temporary files, keep Configuration_prusa.h and build with new fresh build folder." +echo +exit 6 +fi + +#Check if verbose_IDE is selected with argument '-j' + +if [ ! -z "$verbose_IDE_flag" ]; then + if [ $verbose_IDE_flag == "1" ]; then + verbose_IDE="1" + elif [ $verbose_IDE_flag == "0" ]; then + verbose_IDE="0" + else + echo "Only '0' and '1' are valid verbose_IDE values." + failures 5 + fi +else + verbose_IDE="0" +fi + +#Check if Build is selected with argument '-f' +if [ ! -z "$board_flash_flag" ] ; then + if [ "$board_flash_flag" == "256" ] ; then + BOARD_FLASH="0x3FFFF" + BOARD_maximum_size="253952" + echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + elif [ "$board_flash_flag" == "384" ] ; then + BOARD_FLASH="0x5FFFF" + BOARD_maximum_size="385024" + echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + OUTPUT_FILENAME_SUFFIX="${OUTPUT_FILENAME_SUFFIX}_FLASH-$board_flash_flag" + + elif [ "$board_flash_flag" == "512" ] ; then + BOARD_FLASH="0x7FFFF" + BOARD_maximum_size="516096" + echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + OUTPUT_FILENAME_SUFFIX="${OUTPUT_FILENAME_SUFFIX}_FLASH-$board_flash_flag" + elif [ "$board_flash_flag" == "1024" ] ; then + BOARD_FLASH="0xFFFFF" + BOARD_maximum_size="1040384" + echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + OUTPUT_FILENAME_SUFFIX="${OUTPUT_FILENAME_SUFFIX}_FLASH-$board_flash_flag" + elif [[ "$board_flash_flag" == "32M" || "$board_flash_flag" == "32768" ]] ; then + BOARD_FLASH="0x1FFFFFF" + BOARD_maximum_size="33546240" + echo "Board flash size : 32 Mb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" + OUTPUT_FILENAME_SUFFIX="${OUTPUT_FILENAME_SUFFIX}_FLASH-$board_flash_flag" + else + echo "Unsupported board flash size chosen. Only '256', '384', '512', '1024' and '32M' are allowed." + failures 5 + fi +fi + +#Check if Build is selected with argument '-x' +if [ ! -z "$board_mem_flag" ] ; then + if [ "$board_mem_flag" == "8" ] ; then + BOARD_MEM="0x21FF" + echo "Board mem size : $board_mem_flag Kb, $BOARD_MEM (hex)" + elif [ "$board_mem_flag" == "16" ] ; then + BOARD_MEM="0x3DFF" + echo "Board mem size : $board_mem_flag Kb, $BOARD_MEM (hex)" + OUTPUT_FILENAME_SUFFIX="${OUTPUT_FILENAME_SUFFIX}_RAM-$board_mem_flag" + elif [ "$board_mem_flag" == "32" ] ; then + BOARD_MEM="0x7DFF" + echo "Board mem size : $board_mem_flag Kb, $BOARD_MEM (hex)" + OUTPUT_FILENAME_SUFFIX="${OUTPUT_FILENAME_SUFFIX}_RAM-$board_mem_flag" + elif [ "$board_mem_flag" == "64" ] ; then + BOARD_MEM="0xFFFF" + echo "Board mem size : $board_mem_flag Kb, $BOARD_MEM (hex)" + OUTPUT_FILENAME_SUFFIX="${OUTPUT_FILENAME_SUFFIX}_RAM-$board_mem_flag" + else + echo "Unsupported board mem size chosen. Only '8', '64' are allowed." + failures 5 + fi +fi + +#Start: Check if Arduino IDE version is correct +if [ ! -z "$IDE_flag" ]; then + if [[ "$IDE_flag" == "1.8.5" || "$IDE_flag" == "1.8.13" ]]; then + ARDUINO_ENV="${IDE_flag}" + else + ARDUINO_ENV="1.8.5" + fi +else + ARDUINO_ENV="1.8.5" +fi +#End: Check if Arduino IDE version is correct + +#Start: Check if Output is selecetd via argument '-o' +if [[ -z "$output_flag" || "$output_flag" == 1 ]] ; then + OUTPUT=1 +else + OUTPUT=0 +fi +#End: Check if Output is selecetd via argument '-o' +##} +#### End: Check for options/flags + #### Start: Make backup of Configuration.h make_backup1() { @@ -357,158 +528,6 @@ fi } #End: Check gawk ... needed during language build -#### Start: Check for options/flags -while getopts b:c:d:g:h:i:j:l:m:n:o:p:v:x:y:?h flag - do - case "${flag}" in - b) build_flag=${OPTARG};; - c) clean_flag=${OPTARG};; - d) devel_flag=${OPTARG};; - g) mk404_graphics_flag=${OPTARG};; - h) help_flag=1;; - i) IDE_flag=${OPTARG};; - j) verbose_IDE_flag=${OPTARG};; - l) language_flag=${OPTARG};; - m) mk404_flag=${OPTARG};; - n) new_build_flag=${OPTARG};; - o) output_flag=${OPTARG};; - p) prusa_flag=${OPTARG};; - v) variant_flag=${OPTARG};; - x) board_mem_flag=${OPTARG};; - y) board_flash_flag=${OPTARG};; - ?) help_flag=1;; - esac - done - -# -# '?' 'h' argument usage and help -if [ "$help_flag" == "1" ] ; then -echo "***************************************" -echo "* PF-build.sh Version: 2.0.0-Build_61 *" -echo "***************************************" -echo "Arguments:" -echo "$(tput setaf 2)-b$(tput sgr0) Build/commit number" -echo "$(tput setaf 2)-c$(tput sgr0) Do not clean up lang build" -echo "$(tput setaf 2)-d$(tput sgr0) Devel build" -echo "$(tput setaf 2)-g$(tput sgr0) Start MK404 graphics" -echo "$(tput setaf 2)-i$(tput sgr0) Arduino IDE version" -echo "$(tput setaf 2)-j$(tput sgr0) Arduino IDE verbose output" -echo "$(tput setaf 2)-l$(tput sgr0) Languages" -echo "$(tput setaf 2)-m$(tput sgr0) Start MK404 sim" -echo "$(tput setaf 2)-n$(tput sgr0) New fresh build" -echo "$(tput setaf 2)-o$(tput sgr0) Output" -echo "$(tput setaf 2)-p$(tput sgr0) Keep Configuration_prusa.h" -echo "$(tput setaf 2)-v$(tput sgr0) Variant" -echo "$(tput setaf 2)-x$(tput sgr0) Board memory size" -echo "$(tput setaf 2)-y$(tput sgr0) Board flash size" -echo "$(tput setaf 2)-?$(tput sgr0) Help" -echo -echo "Brief USAGE:" -echo " $(tput setaf 2)./PF-build.sh$(tput sgr0) [-b] [-c] [-d] [-g] [-i] [-j] [-l] [-m] [-n] [-o] [-p ] -[v] [-x] [-y] [-h] [-?]" -echo -echo " -b : '$(tput setaf 2)Auto$(tput sgr0)' needs git or a number" -echo " -c : '$(tput setaf 2)0$(tput sgr0)' clean up, '$(tput setaf 2)1$(tput sgr0)' keep" -echo " -d : '$(tput setaf 2)GOLD$(tput sgr0)', '$(tput setaf 2)RC$(tput sgr0)', '$(tput setaf 2)BETA$(tput sgr0)', '$(tput setaf 2)ALPHA$(tput sgr0)', '$(tput setaf 2)DEBUG$(tput sgr0)', '$(tput setaf 2)DEVEL$(tput sgr0)' and '$(tput setaf 2)UNKNOWN$(tput sgr0)'" -echo " -g : '$(tput setaf 2)0$(tput sgr0)' no '$(tput setaf 2)1$(tput sgr0)' lite '$(tput setaf 2)2$(tput sgr0)' fancy '$(tput setaf 2)3$(tput sgr0)' lite with Quad_HR '$(tput setaf 2)4$(tput sgr0)' fancy with Quad_HR" -echo " -i : '$(tput setaf 2)1.8.5$(tput sgr0)', '$(tput setaf 2)1.8.13$(tput sgr0)'" -echo " -j : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes" -echo " -l : '$(tput setaf 2)ALL$(tput sgr0)' for multi language or '$(tput setaf 2)EN_ONLY$(tput sgr0)' for English only" -echo " -m : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes '$(tput setaf 2)2$(tput sgr0)' with MMU2" -echo " -n : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes" -echo " -o : '$(tput setaf 2)1$(tput sgr0)' force or '$(tput setaf 2)0$(tput sgr0)' block output and delays" -echo " -p : '$(tput setaf 2)0$(tput sgr0)' no, '$(tput setaf 2)1$(tput sgr0)' yes" -echo " -v : '$(tput setaf 2)All$(tput sgr0)' or variant file name" -echo " -x : '$(tput setaf 2)8$(tput sgr0)' or '$(tput setaf 2)64$(tput sgr0)' Kb." -echo " -y : '$(tput setaf 2)256$(tput sgr0)','$(tput setaf 2)384$(tput sgr0)','$(tput setaf 2)512$(tput sgr0)','$(tput setaf 2)1024$(tput sgr0)''$(tput setaf 2)32M$(tput sgr0)'" -echo -echo "Example:" -echo " $(tput setaf 2)./PF-build.sh -v All -l ALL -d GOLD$(tput sgr0)" -echo " Will build all variants as multi language and final GOLD version" -echo -echo " $(tput setaf 2) ./PF-build.sh -v 1_75mm_MK3S-EINSy10a-E3Dv6full.h -b Auto -l ALL -d GOLD -o 1 -c 1 -p 1 -n 1$(tput sgr0)" -echo " Will build MK3S multi language final GOLD firmware " -echo " with current commit count number and output extra information," -echo " not delete lang build temporary files, keep Configuration_prusa.h and build with new fresh build folder." -echo -exit 6 -fi - -#Check if verbose_IDE is selected with argument '-j' - -if [ ! -z "$verbose_IDE_flag" ]; then - if [ $verbose_IDE_flag == "1" ]; then - verbose_IDE="1" - elif [ $verbose_IDE_flag == "0" ]; then - verbose_IDE="0" - else - echo "Only '0' and '1' are valid verbose_IDE values." - failures 5 - fi -else - verbose_IDE="0" -fi - -#Check if Build is selected with argument '-f' -if [ ! -z "$board_flash_flag" ] ; then - if [ "$board_flash_flag" == "256" ] ; then - BOARD_FLASH="0x3FFFF" - BOARD_maximum_size="253952" - echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" - elif [ "$board_flash_flag" == "384" ] ; then - BOARD_FLASH="0x5FFFF" - BOARD_maximum_size="385024" - echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" - OUTPUT_FILENAME_SUFFIX="${OUTPUT_FILENAME_SUFFIX}_FLASH-$board_flash_flag" - - elif [ "$board_flash_flag" == "512" ] ; then - BOARD_FLASH="0x7FFFF" - BOARD_maximum_size="516096" - echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" - OUTPUT_FILENAME_SUFFIX="${OUTPUT_FILENAME_SUFFIX}_FLASH-$board_flash_flag" - elif [ "$board_flash_flag" == "1024" ] ; then - BOARD_FLASH="0xFFFFF" - BOARD_maximum_size="1040384" - echo "Board flash size : $board_flash_flag Kb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" - OUTPUT_FILENAME_SUFFIX="${OUTPUT_FILENAME_SUFFIX}_FLASH-$board_flash_flag" - elif [[ "$board_flash_flag" == "32M" || "$board_flash_flag" == "32768" ]] ; then - BOARD_FLASH="0x1FFFFFF" - BOARD_maximum_size="33546240" - echo "Board flash size : 32 Mb, $BOARD_maximum_size bytes, $BOARD_FLASH (hex)" - OUTPUT_FILENAME_SUFFIX="${OUTPUT_FILENAME_SUFFIX}_FLASH-$board_flash_flag" - else - echo "Unsupported board flash size chosen. Only '256', '384', '512', '1024' and '32M' are allowed." - failures 5 - fi -fi - -#Check if Build is selected with argument '-x' -if [ ! -z "$board_mem_flag" ] ; then - if [ "$board_mem_flag" == "8" ] ; then - BOARD_MEM="0x21FF" - echo "Board mem size : $board_mem_flag Kb, $BOARD_MEM (hex)" - elif [ "$board_mem_flag" == "64" ] ; then - BOARD_MEM="0xFFFF" - echo "Board mem size : $board_mem_flag Kb, $BOARD_MEM (hex)" - OUTPUT_FILENAME_SUFFIX="${OUTPUT_FILENAME_SUFFIX}_RAM-$board_mem_flag" - else - echo "Unsupported board mem size chosen. Only '8', '64' are allowed." - failures 5 - fi -fi - -#Start: Check if Arduino IDE version is correct -if [ ! -z "$IDE_flag" ]; then - if [[ "$IDE_flag" == "1.8.5" || "$IDE_flag" == "1.8.13" ]]; then - ARDUINO_ENV="${IDE_flag}" - else - ARDUINO_ENV="1.8.5" - fi -else - ARDUINO_ENV="1.8.5" -fi -#End: Check if Arduino IDE version is correct -#### End: Check for options/flags - #### Start: Set build environment set_build_env_variables() { @@ -898,13 +917,6 @@ if [ ! -z "$build_flag" ] ; then echo "New Build number is: $BUILD" fi -#Check if Output is selecetd via argument '-o' -if [[ -z "$output_flag" || "$output_flag" == 1 ]] ; then - OUTPUT=1 -else - OUTPUT=0 -fi - #Check git branch has changed if [ ! -z "git_available" ]; then BRANCH="" From da910fe86172572c328d3dc076818f6e0a0c752b Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Mon, 2 Aug 2021 08:34:35 +0200 Subject: [PATCH 34/34] Switch to arduino_boards v1.0.4 --- PF-build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PF-build.sh b/PF-build.sh index 78b2cb6fb..a72ad676a 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -537,7 +537,7 @@ BOARD_PACKAGE_NAME="PrusaResearch" if [ "$ARDUINO_ENV" == "1.8.13" ]; then BOARD_VERSION="1.0.4" else - BOARD_VERSION="1.0.3" + BOARD_VERSION="1.0.4" fi #BOARD_URL="https://raw.githubusercontent.com/3d-gussner/Arduino_Boards/master/IDE_Board_Manager/package_prusa3d_index.json" BOARD_URL="https://raw.githubusercontent.com/prusa3d/Arduino_Boards/master/IDE_Board_Manager/package_prusa3d_index.json"