From 25b9193ce06706182f9e18038cf9c1795320d70b Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Wed, 17 Jul 2019 13:51:34 +0200 Subject: [PATCH 1/7] PF-build for v1.0.6 What has changed: - It downloads Arduino IDE 1.8.5 just once. Good for future build enviroment versions - Uses Prusa Arduino_Boards. At this moment it download my 3d-gussner fork/branch/release. Pull request is made to DRracers his fork ... and finally to Prusa repository - Minimized PF-build-env to changed files only. At this moment it only \hardware\tools\avr\avr\lib\ldscripts\avr6.xn Old but updated: Arduino IDE is portable and this build environment can be used with GUI. Important preferences are set during istallation. One thing users need to do is to go to Boardsmanager and search for Prusa and use EINSy board. --- PF-build.sh | 271 +++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 204 insertions(+), 67 deletions(-) diff --git a/PF-build.sh b/PF-build.sh index 3c0c31ddc..dd157afe1 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -2,6 +2,7 @@ # This bash script is used to compile automatically the Prusa firmware with a dedicated build environment and settings # # Supported OS: Windows 10, Linux64 bit +# Beta OS: Linux32 bit # # Linux: # @@ -44,11 +45,19 @@ # gussner@WIN01 MINGW64 /d/Data/Prusa-Firmware # FW351-Build1778-1_75mm_MK25-RAMBo13a-E3Dv6full.hex # -# Version: 1.0.1-Build_8 +# Why make Arduino IDE portable? +# To have a distinguished Prusa Firmware build environment I decided to use Arduino IDE in portable mode. +# - Changes made to other Arduino instances do not change anything in this build environment. +# By default Arduino IDE uses "users" and shared library folders which is useful as soon you update the Software. +# But in this case we need a stable and defined build environment, so keep it separated it kind of important. +# 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_2 # 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 -# 17 Jan 2019, 3d-gussner, Build_3, Check for OS Windows or Linux and use the right build enviroment +# 17 Jan 2019, 3d-gussner, Build_3, Check for OS Windows or Linux and use the right build environment # 10 Feb 2019, ropaha, Pull Request, Select variant from list while using build.sh # 10 Feb 2019, ropaha, change FW_DEV_VERSION automatically depending on FW_VERSION RC/BETA/ALPHA # 10 Feb 2019, 3d-gussner, 1st tests with english only @@ -76,18 +85,41 @@ # $2 = multi language OR english only [ALL/EN_ONLY] # $3 = development status [GOLD/RC/BETA/ALPHA/DEVEL/DEBUG] # If one argument is wrong a list of valid one will be shown -# 13 Mar 2019, 3d-gussner, MKbel updated the linux build enviromentto version 1.0.2 with an Fix maximum firmware flash size. +# 13 Mar 2019, 3d-gussner, MKbel updated the linux build environmentto 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 +# - Splitted 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 Ardunio IDE and Prusa parts also for Linux64 +# 13 Jul 2019, 3d-gussner, Added Linux 32-bit version (untested yet) +# MacOS could be added in future if needs +# 14 Jul 2019, 3d-gussner, Update preferences and make it really portable +# 15 Jul 2019, 3d-gussner, New PF-build-env gihub branch +# 16 Jul 2019, 3d-gussner, New Arduino_boards github fork +# 17 Jul 2019, 3d-gussner, Final tests under Windows 10 and Linux Subsystem for Windows - -###Check if OSTYPE is supported +#### Start check if OSTYPE is supported +# Windows if [ $OSTYPE == "msys" ]; 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" fi +# Linux 64-bit elif [ $OSTYPE == "linux-gnu" ]; then if [ $(uname -m) == "x86_64" ]; then echo "$(tput setaf 2)Linux 64-bit found$(tput sgr0)" + Processor="64" + fi +# Linux 32-bit +elif [ $OSTYPE == "linux-gnu" ]; then + if [ $(uname -m) == "i386" ]; then + echo "$(tput setaf 2)Linux 32-bit found$(tput sgr0)" + Processor="32" fi else echo "$(tput setaf 1)This script doesn't support your Operating system!" @@ -96,12 +128,17 @@ else exit fi sleep 2 -###Prepare bash enviroment and check if wget and zip are available +#### End check if OSTYPE is supported + +#### 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 fi + +# Check for zip if ! type zip > /dev/null; then if [ $OSTYPE == "msys" ]; then echo "$(tput setaf 1)Missing 'zip' which is important to run this script" @@ -117,19 +154,46 @@ if ! type zip > /dev/null; then exit fi fi -###End prepare bash enviroment +# Check python ... needed during language build +#if ! type python > /dev/null; then +# if [ $OSTYPE == "msys" ]; then +# echo "$(tput setaf 1)Missing 'python' which is important to run this script" +# exit +# elif [ $OSTYPE == "linux-gnu" ]; then +# echo "$(tput setaf 1)Missing 'python' which is important to run this script" +# echo "install it with the command $(tput setaf 2)'sudo apt-get install python3'$(tput sgr0)" +# exit +# fi +#fi -BUILD_ENV="1.0.2" +#### End prepare bash environment + + +#### Set build environment +ARDUINO_ENV="1.8.5" +BUILD_ENV="1.0.6" +BOARD="PrusaResearchRambo" +BOARD_VERSION="1.0.1" +BOARD_URL="https://raw.githubusercontent.com/3d-gussner/Arduino_Boards/Fix_maximum_firmware_flash_size/IDE_Board_Manager/package_prusa3d_index.json" +BOARD_FILENAME="prusa3drambo" +BOARD_FILE_URL="https://raw.githubusercontent.com/3d-gussner/Arduino_Boards/Fix_maximum_firmware_flash_size/IDE_Board_Manager/prusa3drambo-1.0.1.tar.bz2" +PF_BUILD_FILE_URL="https://github.com/3d-gussner/PF-build-env/releases/download/1.0.6/PF-build-env-1.0.6.zip" +LIB="PrusaLibrary" SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )" # List few useful data echo -echo "Script path:" $SCRIPT_PATH -echo "OS :" $OS -echo "OS type :" $OSTYPE +echo "Script path :" $SCRIPT_PATH +echo "OS :" $OS +echo "OS type :" $OSTYPE +echo "" +echo "Ardunio IDE :" $ARDUINO_ENV +echo "Build env :" $BUILD_ENV +echo "Board :" $BOARD +echo "Specific Lib:" $LIB echo "" -#### Start prepare building +#### Start prepare building environment #Check if build exists and creates it if not if [ ! -d "../build-env" ]; then @@ -137,47 +201,143 @@ if [ ! -d "../build-env" ]; then fi cd ../build-env || exit 3 +BUILD_ENV_PATH="$( cd "$(dirname "$0")" ; pwd -P )" # Check if PF-build-env- exists and downloads + creates it if not -# The build enviroment is based on the Arduino IDE 1.8.5 portal version with some changes +# The build environment is based on the supported Arduino IDE portablel 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 fi +# Download and extract supported Arduino IDE depending on OS +# Windows if [ $OSTYPE == "msys" ]; then - if [ ! -f "PF-build-env-Win-$BUILD_ENV.zip" ]; then - echo "$(tput setaf 6)Downloading Windows build environment...$(tput setaf 2)" + 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://github.com/3d-gussner/PF-build-env/releases/download/Win-$BUILD_ENV/PF-build-env-Win-$BUILD_ENV.zip || exit 4 - #cp -f ../../PF-build-env/PF-build-env-Win-$BUILD_ENV.zip PF-build-env-Win-$BUILD_ENV.zip || exit4 + wget https://downloads.arduino.cc/arduino-$ARDUINO_ENV-windows.zip || exit 4 + echo "$(tput sgr 0)" echo "$(tput sgr 0)" fi - if [ ! -d "../PF-build-env-$BUILD_ENV/$OSTYPE" ]; then - echo "$(tput setaf 6)Unzipping Windows build environment...$(tput setaf 2)" + if [ ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$OSTYPE-$Processor" ]; then + echo "$(tput setaf 6)Unzipping Windows 32/64-bit Arduino IDE portable...$(tput setaf 2)" sleep 2 - unzip PF-build-env-Win-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$OSTYPE || exit 4 + unzip arduino-$ARDUINO_ENV-windows.zip -d ../PF-build-env-$BUILD_ENV || exit 4 + mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor + echo "# arduino-$ARDUINO_ENV-$OSTYPE-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$OSTYPE-$Processor echo "$(tput sgr0)" fi +fi +# Linux +if [ $OSTYPE == "linux-gnu" ]; 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 4 + echo "$(tput sgr 0)" + echo "$(tput sgr 0)" + fi + if [ ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$OSTYPE-$Processor" ]; 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 4 + mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor + echo "# arduino-$ARDUINO_ENV-$OSTYPE-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$OSTYPE-$Processor + echo "$(tput sgr0)" + fi +fi +# Make Arduino IDE portable +if [ ! -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/ ]; then + mkdir ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable +fi +if [ ! -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/output/ ]; then + mkdir ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/output +fi +if [ ! -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/ ]; then + mkdir ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages +fi +if [ ! -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/sketchbook/ ]; then + mkdir ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/sketchbook +fi +if [ ! -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/sketchbook/libraries/ ]; then + mkdir ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/sketchbook/libraries +fi +if [ ! -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/staging/ ]; then + mkdir ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/staging +fi + +# Change Arduino IDE preferences +if [ ! -e ../PF-build-env-$BUILD_ENV/Preferences-$OSTYPE-$Processor ]; then + echo "$(tput setaf 6)Setting $OSTYPE-$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/$OSTYPE-$Processor/lib/preferences.txt + echo "board" + sed -i 's/board = uno/board = rambo/g' ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/lib/preferences.txt + echo "editor.linenumbers" + sed -i 's/editor.linenumbers = false/editor.linenumbers = true/g' ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/lib/preferences.txt + echo "boardsmanager.additional.urls" + echo "boardsmanager.additional.urls=$BOARD_URL" >>../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/lib/preferences.txt + echo "build.verbose=true" >>../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/lib/preferences.txt + echo "compiler.cache_core=false" >>../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/lib/preferences.txt + echo "compiler.warning_level=all" >>../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/lib/preferences.txt + echo "# Preferences-$OSTYPE-$Processor" >> ../PF-build-env-$BUILD_ENV/Preferences-$OSTYPE-$Processor + 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 5 +fi +if [ ! -e "../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION-$OSTYPE-$Processor" ]; then + echo "$(tput setaf 6)Unzipping $BOARD Arduino IDE portable...$(tput setaf 2)" + sleep 2 + tar -xvf $BOARD_FILENAME-$BOARD_VERSION.tar.bz2 -C ../PF-build-env-$BUILD_ENV/ || exit 5 + if [ ! -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/$BOARD/ ]; then + mkdir ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/$BOARD + fi + if [ ! -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/$BOARD ]; then + mkdir ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/$BOARD + fi + if [ ! -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/$BOARD/hardware ]; then + mkdir ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/$BOARD/hardware + fi + if [ ! -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/$BOARD/hardware/avr ]; then + mkdir ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/$BOARD/hardware/avr + fi -fi + mv ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/$BOARD/hardware/avr/$BOARD_VERSION + echo "# $BOARD_FILENAME-$BOARD_VERSION" >> ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION-$OSTYPE-$Processor + echo "$(tput sgr 0)" +fi -if [ $OSTYPE == "linux-gnu" ]; then - if [ ! -f "PF-build-env-Linux64-$BUILD_ENV.zip" ]; then - echo "$(tput setaf 6)Downloading Linux 64 build environment...$(tput setaf 2)" - sleep 2 - wget https://github.com/mkbel/PF-build-env/releases/download/$BUILD_ENV/PF-build-env-Linux64-$BUILD_ENV.zip || exit 3 - echo "$(tput sgr0)" - fi - - if [ ! -d "../PF-build-env-$BUILD_ENV/$OSTYPE" ]; then - echo "$(tput setaf 6)Unzipping Linux build enviroment...$(tput setaf 2)" - sleep 2 - unzip PF-build-env-Linux64-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$OSTYPE || exit 4 - echo "$(tput sgr0)" - fi +# Download and extract Prusa Firmware specific library files +if [ ! -f "PF-build-env-$BUILD_ENV.zip" ]; then + echo "$(tput setaf 6)Downloading Prusa Firmware build environment...$(tput setaf 2)" + sleep 2 + wget $PF_BUILD_FILE_URL || exit 4 + echo "$(tput sgr 0)" fi +if [ ! -e "../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$OSTYPE-$Processor" ]; then + echo "$(tput setaf 6)Unzipping Prusa Firmware build environment...$(tput setaf 2)" + sleep 2 + unzip -o PF-build-env-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor || exit 4 + echo "# PF-build-env-$OSTYPE-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$OSTYPE-$Processor + echo "$(tput sgr0)" +fi +#exit + + +#### End prepare building + + +#### Start cd $SCRIPT_PATH # First argument defines which variant of the Prusa Firmware will be compiled @@ -265,7 +425,7 @@ if [ ! -z "$3" ] ; then fi #Set BUILD_ENV_PATH -cd ../PF-build-env-$BUILD_ENV/$OSTYPE || exit 5 +cd ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor || exit 5 BUILD_ENV_PATH="$( pwd -P )" cd ../.. @@ -392,20 +552,7 @@ do #Check if compiler flags are set to Prusa specific needs for the rambo board. if [ $OSTYPE == "msys" ]; then - RAMBO_PLATFORM_FILE="rambo/hardware/avr/1.0.1/platform.txt" - COMP_FLAGS="compiler.c.elf.flags={compiler.warning_flags} -Os -g -flto -fuse-linker-plugin -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections" - CHECK_FLAGS=$(grep --max-count=1 "$COMP_FLAGS" $BUILD_ENV_PATH/portable/packages/$RAMBO_PLATFORM_FILE) - if [ -z "$CHECK_FLAGS" ]; then - echo "Compiler flags not found, adding flags" - if [ ! -f $BUILD_ENV_PATH/portable/packages/$RAMBO_PLATFORM_FILE.bck ]; then - echo "making a backup" - ls -1 $BUILD_ENV_PATH/portable/packages/rambo/hardware/avr/1.0.1/ - cp -f $BUILD_ENV_PATH/portable/packages/$RAMBO_PLATFORM_FILE $BUILD_ENV_PATH/portable/packages/$RAMBO_PLATFORM_FILE.bck - fi - echo $COMP_FLAGS >> $BUILD_ENV_PATH/portable/packages/$RAMBO_PLATFORM_FILE - else - echo "Compiler flags are set in rambo platform.txt" $CHECK_FLAGS - fi + RAMBO_PLATFORM_FILE="PrusaResearchRambo/avr/platform.txt" fi #### End of Prepare building @@ -420,25 +567,15 @@ do #read -t 5 -p "Press Enter..." echo - if [ $OSTYPE == "msys" ]; then - echo "Start to build Prusa Firmware under Windows..." - echo "Using variant $VARIANT$(tput setaf 3)" - sleep 2 - #$BUILDER -dump-prefs -logger=machine -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=rambo:avr:rambo -ide-version=10805 -build-path=$BUILD_PATH -warnings=none -quiet $SCRIPT_PATH/Firmware/Firmware.ino || exit 12 - #$BUILDER -compile -logger=machine -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=rambo:avr:rambo -ide-version=10805 -build-path=$BUILD_PATH -warnings=none -quiet $SCRIPT_PATH/Firmware/Firmware.ino || exit 13 - $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=rambo:avr:rambo -ide-version=10805 -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 14 - echo "$(tput sgr 0)" - fi - if [ $OSTYPE == "linux-gnu" ] ; then - echo "Start to build Prusa Firmware under Linux 64..." - echo "Using variant $VARIANT$(tput setaf 3)" - sleep 2 - $BUILD_ENV_PATH/arduino $SCRIPT_PATH/Firmware/Firmware.ino --verify --board rambo:avr:rambo --pref build.path=$BUILD_PATH --pref compiler.warning_level=all || exit 14 - echo "$(tput sgr 0)" - fi + echo "Start to build Prusa Firmware ..." + echo "Using variant $VARIANT$(tput setaf 3)" + sleep 2 + $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:avr:rambo -ide-version=10805 -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 14 + echo "$(tput sgr 0)" if [ $LANGUAGES == "ALL" ]; then echo "$(tput setaf 2)" + echo "Building multi language firmware" $MULTI_LANGUAGE_CHECK echo "$(tput sgr 0)" sleep 2 @@ -516,7 +653,7 @@ done # echo " " # echo "Restore Windows platform.txt" # echo " " -# cp -f $BUILD_ENV_PATH/portable/packages/$RAMBO_PLATFORM_FILE.bck $BUILD_ENV_PATH/portable/packages/$RAMBO_PLATFORM_FILE +# cp -f $BUILD_ENV_PATH/hardware/$RAMBO_PLATFORM_FILE.bck $BUILD_ENV_PATH/hardware/$RAMBO_PLATFORM_FILE #fi # Switch to hex path and list build files From acb761a0aa916656876d707a8c10f00c192390b0 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Thu, 18 Jul 2019 07:17:35 +0200 Subject: [PATCH 2/7] Typo fixes --- PF-build.sh | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/PF-build.sh b/PF-build.sh index dd157afe1..88e3e139a 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -85,7 +85,7 @@ # $2 = multi language OR english only [ALL/EN_ONLY] # $3 = development status [GOLD/RC/BETA/ALPHA/DEVEL/DEBUG] # If one argument is wrong a list of valid one will be shown -# 13 Mar 2019, 3d-gussner, MKbel updated the linux build environmentto version 1.0.2 with an Fix maximum firmware flash size. +# 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 # - Splitted the Download of Windows Arduino IDE 1.8.5 and Prusa specific part @@ -204,7 +204,7 @@ cd ../build-env || exit 3 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 portablel version with some changes +# 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 @@ -648,14 +648,6 @@ do sleep 5 done -# Cleanup compiler flags are set to Prusa specific needs for the rambo board. -#if [ $OSTYPE == "msys" ]; then -# echo " " -# echo "Restore Windows platform.txt" -# echo " " -# cp -f $BUILD_ENV_PATH/hardware/$RAMBO_PLATFORM_FILE.bck $BUILD_ENV_PATH/hardware/$RAMBO_PLATFORM_FILE -#fi - # Switch to hex path and list build files cd $SCRIPT_PATH cd .. From 2d505b78a5914cf2cf034de2e1ccbe75421df3e8 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Mon, 22 Jul 2019 15:49:15 +0200 Subject: [PATCH 3/7] Added few things to prevent an unstable ... build environment using Arduino IDE GUI --- PF-build.sh | 158 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 97 insertions(+), 61 deletions(-) diff --git a/PF-build.sh b/PF-build.sh index 88e3e139a..d944332c1 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -11,9 +11,12 @@ # # Linux Subsystem Ubuntu # 1. Follow these instructions -# 2. Open Ubuntu bash and get latest updates with 'apt-get upgate' +# 2. Open Ubuntu bash and get latest updates with 'apt-get update' # 3. Install zip with 'apt-get install zip' -# 4. Add at top of ~/.bashrc following lines by using 'sudo nano ~/.bashrc' +# 4. Install python3 with 'apt-get install python3' +# 5. Add command 'ln -sf /usr/bin/python3.5 /usr/bin/python' to link python3 to python. +# Donnot istall 'python' as python 2.x has end of life see https://pythonclock.org/ +# 6. Add at top of ~/.bashrc following lines by using 'sudo nano ~/.bashrc' # # export OS="Linux" # export JAVA_TOOL_OPTIONS="-Djava.net.preferIPv4Stack=true" @@ -97,7 +100,13 @@ # 14 Jul 2019, 3d-gussner, Update preferences and make it really portable # 15 Jul 2019, 3d-gussner, New PF-build-env gihub branch # 16 Jul 2019, 3d-gussner, New Arduino_boards github fork -# 17 Jul 2019, 3d-gussner, Final tests under Windows 10 and Linux Subsystem for Windows +# 17 Jul 2019, 3d-gussner, Final tests under Windows 10 and Linux Subsystem for Windows +# 18 Jul 2019, 3d-gussner, Added python check +# 18 Jul 2019, deliopoulos, No need more for changing 'platform.txt' file as it comes with the Arduino Boards. +# 18 Jul 2019, deliopoulos, Modified 'PF_BUILD_FILE_URL' to use 'BUILD_ENV' variable +# 22 Jul 2019, 3d-gussner, Modiffied checks to check folder and/or installation output exists. +# 22 Jul 2019, 3d-gussner, Added check if Arduino IDE 1.8.5 boards have been updated +# 22 Jul 2019, 3d-gussner, Changed exit numbers 1-13 for prepare build env 21-28 for prepare compiling 31-36 compiling #### Start check if OSTYPE is supported # Windows @@ -125,7 +134,7 @@ 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 + exit 1 fi sleep 2 #### End check if OSTYPE is supported @@ -135,7 +144,7 @@ sleep 2 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 + exit 2 fi # Check for zip @@ -147,24 +156,27 @@ 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 + exit 3 elif [ $OSTYPE == "linux-gnu" ]; 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)" - exit + exit 3 fi fi # Check python ... needed during language build -#if ! type python > /dev/null; then -# if [ $OSTYPE == "msys" ]; then -# echo "$(tput setaf 1)Missing 'python' which is important to run this script" -# exit -# elif [ $OSTYPE == "linux-gnu" ]; then -# echo "$(tput setaf 1)Missing 'python' which is important to run this script" -# echo "install it with the command $(tput setaf 2)'sudo apt-get install python3'$(tput sgr0)" -# exit -# fi -#fi +if ! type python > /dev/null; then + if [ $OSTYPE == "msys" ]; then + echo "$(tput setaf 1)Missing 'python' which is important to run this script" + exit 4 + elif [ $OSTYPE == "linux-gnu" ]; 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)" + exit 4 + fi +fi #### End prepare bash environment @@ -177,7 +189,7 @@ BOARD_VERSION="1.0.1" BOARD_URL="https://raw.githubusercontent.com/3d-gussner/Arduino_Boards/Fix_maximum_firmware_flash_size/IDE_Board_Manager/package_prusa3d_index.json" BOARD_FILENAME="prusa3drambo" BOARD_FILE_URL="https://raw.githubusercontent.com/3d-gussner/Arduino_Boards/Fix_maximum_firmware_flash_size/IDE_Board_Manager/prusa3drambo-1.0.1.tar.bz2" -PF_BUILD_FILE_URL="https://github.com/3d-gussner/PF-build-env/releases/download/1.0.6/PF-build-env-1.0.6.zip" +PF_BUILD_FILE_URL="https://github.com/3d-gussner/PF-build-env/releases/download/$BUILD_ENV/PF-build-env-$BUILD_ENV.zip" LIB="PrusaLibrary" SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )" @@ -197,10 +209,10 @@ echo "" #Check if build exists and creates it if not if [ ! -d "../build-env" ]; then - mkdir ../build-env || exit 2 + mkdir ../build-env || exit 5 fi -cd ../build-env || exit 3 +cd ../build-env || exit 6 BUILD_ENV_PATH="$( cd "$(dirname "$0")" ; pwd -P )" # Check if PF-build-env- exists and downloads + creates it if not @@ -217,14 +229,14 @@ if [ $OSTYPE == "msys" ]; 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 4 + wget https://downloads.arduino.cc/arduino-$ARDUINO_ENV-windows.zip || exit 7 echo "$(tput sgr 0)" echo "$(tput sgr 0)" fi - if [ ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$OSTYPE-$Processor" ]; then + if [ ! -d "../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor" ]; 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 4 + 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/$OSTYPE-$Processor echo "# arduino-$ARDUINO_ENV-$OSTYPE-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$OSTYPE-$Processor echo "$(tput sgr0)" @@ -236,16 +248,16 @@ if [ $OSTYPE == "linux-gnu" ]; 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 4 + wget --no-check-certificate https://downloads.arduino.cc/arduino-$ARDUINO_ENV-linux$Processor.tar.xz || exit 8 echo "$(tput sgr 0)" echo "$(tput sgr 0)" fi - if [ ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$OSTYPE-$Processor" ]; then + if [[ ! -d "../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$OSTYPE-$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 4 + 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/$OSTYPE-$Processor - echo "# arduino-$ARDUINO_ENV-$OSTYPE-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$OSTYPE-$Processor + echo "# arduino-$ARDUINO_ENV-$OSTYPE-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$OSTYPE-$Processor.txt echo "$(tput sgr0)" fi fi @@ -270,7 +282,7 @@ if [ ! -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/staging/ ]; the fi # Change Arduino IDE preferences -if [ ! -e ../PF-build-env-$BUILD_ENV/Preferences-$OSTYPE-$Processor ]; then +if [ ! -e ../PF-build-env-$BUILD_ENV/Preferences-$OSTYPE-$Processor.txt ]; then echo "$(tput setaf 6)Setting $OSTYPE-$Processor Arduino IDE preferences for portable GUI usage...$(tput setaf 2)" sleep 2 echo "update.check" @@ -284,7 +296,7 @@ if [ ! -e ../PF-build-env-$BUILD_ENV/Preferences-$OSTYPE-$Processor ]; then echo "build.verbose=true" >>../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/lib/preferences.txt echo "compiler.cache_core=false" >>../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/lib/preferences.txt echo "compiler.warning_level=all" >>../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/lib/preferences.txt - echo "# Preferences-$OSTYPE-$Processor" >> ../PF-build-env-$BUILD_ENV/Preferences-$OSTYPE-$Processor + echo "# Preferences-$OSTYPE-$Processor" >> ../PF-build-env-$BUILD_ENV/Preferences-$OSTYPE-$Processor.txt echo "$(tput sgr0)" fi @@ -293,13 +305,13 @@ 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 5 + wget $BOARD_FILE_URL || exit 9 fi -if [ ! -e "../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION-$OSTYPE-$Processor" ]; then +if [[ ! -d "../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/$BOARD/hardware/avr/$BOARD_VERSION" || ! -e "../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION-$OSTYPE-$Processor.txt" ]]; then echo "$(tput setaf 6)Unzipping $BOARD Arduino IDE portable...$(tput setaf 2)" sleep 2 - tar -xvf $BOARD_FILENAME-$BOARD_VERSION.tar.bz2 -C ../PF-build-env-$BUILD_ENV/ || exit 5 - if [ ! -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/$BOARD/ ]; then + tar -xvf $BOARD_FILENAME-$BOARD_VERSION.tar.bz2 -C ../PF-build-env-$BUILD_ENV/ || exit 10 + if [ ! -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/$BOARD ]; then mkdir ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/$BOARD fi if [ ! -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/$BOARD ]; then @@ -313,7 +325,7 @@ if [ ! -e "../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION-$OSTYPE-$Pr fi mv ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/$BOARD/hardware/avr/$BOARD_VERSION - echo "# $BOARD_FILENAME-$BOARD_VERSION" >> ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION-$OSTYPE-$Processor + echo "# $BOARD_FILENAME-$BOARD_VERSION" >> ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION-$OSTYPE-$Processor.txt echo "$(tput sgr 0)" fi @@ -321,17 +333,40 @@ fi if [ ! -f "PF-build-env-$BUILD_ENV.zip" ]; then echo "$(tput setaf 6)Downloading Prusa Firmware build environment...$(tput setaf 2)" sleep 2 - wget $PF_BUILD_FILE_URL || exit 4 + wget $PF_BUILD_FILE_URL || exit 11 echo "$(tput sgr 0)" fi -if [ ! -e "../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$OSTYPE-$Processor" ]; then +if [ ! -e "../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$OSTYPE-$Processor.txt" ]; then echo "$(tput setaf 6)Unzipping Prusa Firmware build environment...$(tput setaf 2)" sleep 2 - unzip -o PF-build-env-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor || exit 4 - echo "# PF-build-env-$OSTYPE-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$OSTYPE-$Processor + unzip -o PF-build-env-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor || exit 12 + echo "# PF-build-env-$OSTYPE-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$OSTYPE-$Processor.txt echo "$(tput sgr0)" fi -#exit + +# Check if User updated Arduino IDE 1.8.5 boardsmanager and tools +if [ -d "../PF-build-env-$BUILD_ENV/$OSTYPE-$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 +if [ -d "../PF-build-env-$BUILD_ENV/$OSTYPE-$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/$OSTYPE-$Processor/hardware/tools/avr/avr/lib/ldscripts/avr6.xn ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2/avr/lib/ldscripts/avr6.xn + echo "# PF-build-env-portable-$OSTYPE-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-portable-$BUILD_ENV-$OSTYPE-$Processor.txt + echo "$(tput sgr0)" +fi +if [ -d "../PF-build-env-$BUILD_ENV/$OSTYPE-$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 +fi #### End prepare building @@ -361,7 +396,7 @@ if [ -z "$1" ] ; then ;; "Quit") echo "You chose to stop" - exit 1 + exit ;; *) echo "$(tput setaf 1)This is not a valid variant$(tput sgr0)" @@ -375,7 +410,7 @@ else echo "$(tput setaf 1)$1 could not be found in Firmware/variants please choose a valid one$(tput setaf 2)" ls -1 $SCRIPT_PATH/Firmware/variants/*.h | xargs -n1 basename echo "$(tput sgr0)" - exit + exit 21 fi fi @@ -410,7 +445,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 2nd argument!" - exit + exit 22 fi fi #Check if DEV_STATUS is selected via argument 3 @@ -420,23 +455,23 @@ if [ ! -z "$3" ] ; then else echo "$(tput setaf 1)Development argument is wrong!$(tput sgr0)" echo "Only $(tput setaf 2)'GOLD', 'RC', 'BETA', 'ALPHA', 'DEVEL' or 'DEBUG'$(tput sgr0) are allowed as 3rd argument!$(tput sgr0)" - exit + exit 23 fi fi #Set BUILD_ENV_PATH -cd ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor || exit 5 +cd ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor || exit 24 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 6 + mkdir Prusa-Firmware-build || exit 25 fi #Set the BUILD_PATH for Arduino IDE -cd Prusa-Firmware-build || exit 7 +cd Prusa-Firmware-build || exit 26 BUILD_PATH="$( pwd -P )" for v in ${VARIANTS[*]} @@ -489,7 +524,7 @@ do fi #Prepare hex files folders if [ ! -d "$SCRIPT_PATH/../Hex-files/FW$FW-Build$BUILD/$MOTHERBOARD" ]; then - mkdir -p $SCRIPT_PATH/../Hex-files/FW$FW-Build$BUILD/$MOTHERBOARD || exit 10 + mkdir -p $SCRIPT_PATH/../Hex-files/FW$FW-Build$BUILD/$MOTHERBOARD || exit 27 fi OUTPUT_FOLDER="Hex-files/FW$FW-Build$BUILD/$MOTHERBOARD" @@ -526,11 +561,11 @@ 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 11 + cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 28 else echo "$(tput setaf 6)Configuration_prusa.h already exist it will be overwritten in 10 seconds by the chosen variant.$(tput sgr 0)" read -t 10 -p "Press Enter to continue..." - cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 11 + cp -f $SCRIPT_PATH/Firmware/variants/$VARIANT.h $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 28 fi #Prepare Configuration.h to use the correct FW_DEV_VERSION to prevent LCD messages when connecting with OctoPrint @@ -551,9 +586,9 @@ do fi #Check if compiler flags are set to Prusa specific needs for the rambo board. - if [ $OSTYPE == "msys" ]; then - RAMBO_PLATFORM_FILE="PrusaResearchRambo/avr/platform.txt" - fi +# if [ $OSTYPE == "msys" ]; then +# RAMBO_PLATFORM_FILE="PrusaResearchRambo/avr/platform.txt" +# fi #### End of Prepare building @@ -561,7 +596,7 @@ do export ARDUINO=$BUILD_ENV_PATH #echo $BUILD_ENV_PATH - export BUILDER=$ARDUINO/arduino-builder + #export BUILDER=$ARDUINO/arduino-builder echo #read -t 5 -p "Press Enter..." @@ -570,7 +605,8 @@ do echo "Start to build Prusa Firmware ..." echo "Using variant $VARIANT$(tput setaf 3)" sleep 2 - $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:avr:rambo -ide-version=10805 -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 14 + #$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:avr:rambo -ide-version=10805 -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:avr:rambo -ide-version=10805 -build-path=$BUILD_PATH -warnings=all $SCRIPT_PATH/Firmware/Firmware.ino || exit 14 echo "$(tput sgr 0)" if [ $LANGUAGES == "ALL" ]; then @@ -581,7 +617,7 @@ do sleep 2 cd $SCRIPT_PATH/lang echo "$(tput setaf 3)" - ./config.sh || exit 15 + ./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 @@ -602,9 +638,9 @@ do fi # build languages echo "$(tput setaf 3)" - ./lang-build.sh || exit 16 + ./lang-build.sh || exit 32 # Combine compiled firmware with languages - ./fw-build.sh || exit 17 + ./fw-build.sh || exit 33 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) @@ -629,16 +665,16 @@ do fi # Cleanup after build echo "$(tput setaf 3)" - ./fw-clean.sh || exit 18 - ./lang-clean.sh || exit 19 + ./fw-clean.sh || exit 34 + ./lang-clean.sh || exit 35 echo "$(tput sgr 0)" else echo "$(tput setaf 2)Copying English only firmware to Hex-files folder$(tput sgr 0)" - cp -f $BUILD_PATH/Firmware.ino.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex || exit 20 + cp -f $BUILD_PATH/Firmware.ino.hex $SCRIPT_PATH/../$OUTPUT_FOLDER/FW$FW-Build$BUILD-$VARIANT-EN_ONLY.hex || exit 34 fi # Cleanup Firmware - rm $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 17 + rm $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 36 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 echo $MULTI_LANGUAGE_CHECK From 6bf019293e3beb0961cc73d112ba5aed4ea2c216 Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Mon, 22 Jul 2019 17:26:50 +0200 Subject: [PATCH 4/7] Changed BOARD_URL to DRracers respository... after he pulled my PR https://github.com/DRracer/Arduino_Boards/pull/1 --- PF-build.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/PF-build.sh b/PF-build.sh index d944332c1..1d70e4a9c 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_2 +# Version: 1.0.6-Build_7 # 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 @@ -107,6 +107,7 @@ # 22 Jul 2019, 3d-gussner, Modiffied checks to check folder and/or installation output exists. # 22 Jul 2019, 3d-gussner, Added check if Arduino IDE 1.8.5 boards have been updated # 22 Jul 2019, 3d-gussner, Changed exit numbers 1-13 for prepare build env 21-28 for prepare compiling 31-36 compiling +# 22 Jul 2019, 3d-gussner, Changed BOARD_URL to DRracers respository after he pulled my PR https://github.com/DRracer/Arduino_Boards/pull/1 #### Start check if OSTYPE is supported # Windows @@ -186,9 +187,9 @@ ARDUINO_ENV="1.8.5" BUILD_ENV="1.0.6" BOARD="PrusaResearchRambo" BOARD_VERSION="1.0.1" -BOARD_URL="https://raw.githubusercontent.com/3d-gussner/Arduino_Boards/Fix_maximum_firmware_flash_size/IDE_Board_Manager/package_prusa3d_index.json" +BOARD_URL="https://raw.githubusercontent.com/DRracer/Arduino_Boards/master/IDE_Board_Manager/package_prusa3d_index.json" BOARD_FILENAME="prusa3drambo" -BOARD_FILE_URL="https://raw.githubusercontent.com/3d-gussner/Arduino_Boards/Fix_maximum_firmware_flash_size/IDE_Board_Manager/prusa3drambo-1.0.1.tar.bz2" +BOARD_FILE_URL="https://raw.githubusercontent.com/DRracer/Arduino_Boards/master/IDE_Board_Manager/prusa3drambo-1.0.1.tar.bz2" PF_BUILD_FILE_URL="https://github.com/3d-gussner/PF-build-env/releases/download/$BUILD_ENV/PF-build-env-$BUILD_ENV.zip" LIB="PrusaLibrary" SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )" From 1e0a1a45deb22b4e9c22a9421b8611a9e4d3915d Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Mon, 22 Jul 2019 18:02:45 +0200 Subject: [PATCH 5/7] Typo --- PF-build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PF-build.sh b/PF-build.sh index 1d70e4a9c..e7f58620e 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -348,7 +348,7 @@ fi # Check if User updated Arduino IDE 1.8.5 boardsmanager and tools if [ -d "../PF-build-env-$BUILD_ENV/$OSTYPE-$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)" + 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/$OSTYPE-$Processor/portable/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2" ]; then From 396621c12d08008702f51d3de987fae30d06b12c Mon Sep 17 00:00:00 2001 From: 3d-gussner <3d.gussner@gmail.com> Date: Wed, 24 Jul 2019 00:10:32 +0200 Subject: [PATCH 6/7] Changed Folders and Finding OS version - Changed Build-env path to "PF-build-dl" as requested in PR https://github.com/prusa3d/Prusa-Firmware/pull/2028 - Changed Hex-files folder to PF-build-hex as requested in PR - Added Finding OS version routine so supporting new OS should get easier --- PF-build.sh | 170 +++++++++++++++++++++++++++++----------------------- 1 file changed, 96 insertions(+), 74 deletions(-) diff --git a/PF-build.sh b/PF-build.sh index e7f58620e..716160a66 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_7 +# Version: 1.0.6-Build_8 # 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 @@ -108,10 +108,30 @@ # 22 Jul 2019, 3d-gussner, Added check if Arduino IDE 1.8.5 boards have been updated # 22 Jul 2019, 3d-gussner, Changed exit numbers 1-13 for prepare build env 21-28 for prepare compiling 31-36 compiling # 22 Jul 2019, 3d-gussner, Changed BOARD_URL to DRracers respository after he pulled my PR https://github.com/DRracer/Arduino_Boards/pull/1 +# 23 Jul 2019, 3d-gussner, Changed Build-env path to "PF-build-dl" as requested in PR https://github.com/prusa3d/Prusa-Firmware/pull/2028 +# Changed Hex-files folder to PF-build-hex as requested in PR +# 23 Jul 2019, 3d-gussner, Added Finding OS version routine so supporting new OS should get easier #### Start check if OSTYPE is supported +OS_FOUND=$( command -v uname) + +case $( "${OS_FOUND}" | tr '[:upper:]' '[:lower:]') in + linux*) + TARGET_OS="linux" + ;; + msys*|cygwin*|mingw*) + # or possible 'bash on windows' + TARGET_OS='windows' + ;; + nt|win*) + TARGET_OS='windows' + ;; + *) + TARGET_OS='unknown' + ;; +esac # Windows -if [ $OSTYPE == "msys" ]; then +if [ $TARGET_OS == "windows" ]; then if [ $(uname -m) == "x86_64" ]; then echo "$(tput setaf 2)Windows 64-bit found$(tput sgr0)" Processor="64" @@ -120,14 +140,14 @@ if [ $OSTYPE == "msys" ]; then Processor="32" fi # Linux 64-bit -elif [ $OSTYPE == "linux-gnu" ]; then +elif [ $TARGET_OS == "linux" ]; then if [ $(uname -m) == "x86_64" ]; then echo "$(tput setaf 2)Linux 64-bit found$(tput sgr0)" Processor="64" fi # Linux 32-bit -elif [ $OSTYPE == "linux-gnu" ]; then - if [ $(uname -m) == "i386" ]; then +elif [ $TARGET_OS == "linux" ]; then + if [[ $(uname -m) == "i386" || $(uname -m) == "i686" ]]; then echo "$(tput setaf 2)Linux 32-bit found$(tput sgr0)" Processor="32" fi @@ -150,7 +170,7 @@ fi # Check for zip if ! type zip > /dev/null; then - if [ $OSTYPE == "msys" ]; 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." @@ -158,7 +178,7 @@ if ! type zip > /dev/null; then 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 [ $OSTYPE == "linux-gnu" ]; then + 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)" exit 3 @@ -166,10 +186,10 @@ if ! type zip > /dev/null; then fi # Check python ... needed during language build if ! type python > /dev/null; then - if [ $OSTYPE == "msys" ]; then + if [ $TARGET_OS == "windows" ]; then echo "$(tput setaf 1)Missing 'python' which is important to run this script" exit 4 - elif [ $OSTYPE == "linux-gnu" ]; then + 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'." @@ -198,7 +218,7 @@ SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )" echo echo "Script path :" $SCRIPT_PATH echo "OS :" $OS -echo "OS type :" $OSTYPE +echo "OS type :" $TARGET_OS echo "" echo "Ardunio IDE :" $ARDUINO_ENV echo "Build env :" $BUILD_ENV @@ -209,11 +229,11 @@ echo "" #### Start prepare building environment #Check if build exists and creates it if not -if [ ! -d "../build-env" ]; then - mkdir ../build-env || exit 5 +if [ ! -d "../PF-build-dl" ]; then + mkdir ../PF-build-dl || exit 5 fi -cd ../build-env || exit 6 +cd ../PF-build-dl || exit 6 BUILD_ENV_PATH="$( cd "$(dirname "$0")" ; pwd -P )" # Check if PF-build-env- exists and downloads + creates it if not @@ -226,78 +246,80 @@ fi # Download and extract supported Arduino IDE depending on OS # Windows -if [ $OSTYPE == "msys" ]; then +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)" - echo "$(tput sgr 0)" fi - if [ ! -d "../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor" ]; then + if [ ! -d "../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor" ]; 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/$OSTYPE-$Processor - echo "# arduino-$ARDUINO_ENV-$OSTYPE-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$OSTYPE-$Processor + mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor + echo "# arduino-$ARDUINO_ENV-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$TARGET_OS-$Processor echo "$(tput sgr0)" fi fi # Linux -if [ $OSTYPE == "linux-gnu" ]; then +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)" - echo "$(tput sgr 0)" fi - if [[ ! -d "../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$OSTYPE-$Processor.txt" ]]; then + if [[ ! -d "../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor" && ! -e "../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$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/$OSTYPE-$Processor - echo "# arduino-$ARDUINO_ENV-$OSTYPE-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$OSTYPE-$Processor.txt + mv ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor + echo "# arduino-$ARDUINO_ENV-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/arduino-$ARDUINO_ENV-$TARGET_OS-$Processor.txt echo "$(tput sgr0)" fi fi # Make Arduino IDE portable -if [ ! -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable +if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/ ]; then + mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/ fi -if [ ! -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/output/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/output + +if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/ ]; then + mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable fi -if [ ! -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages +if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/output/ ]; then + mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/output fi -if [ ! -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/sketchbook/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/sketchbook +if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/ ]; then + mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages fi -if [ ! -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/sketchbook/libraries/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/sketchbook/libraries +if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/sketchbook/ ]; then + mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/sketchbook fi -if [ ! -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/staging/ ]; then - mkdir ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/staging +if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/sketchbook/libraries/ ]; then + mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/sketchbook/libraries +fi +if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/staging/ ]; then + mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/staging fi # Change Arduino IDE preferences -if [ ! -e ../PF-build-env-$BUILD_ENV/Preferences-$OSTYPE-$Processor.txt ]; then - echo "$(tput setaf 6)Setting $OSTYPE-$Processor Arduino IDE preferences for portable GUI usage...$(tput setaf 2)" +if [ ! -e ../PF-build-env-$BUILD_ENV/Preferences-$TARGET_OS-$Processor.txt ]; then + echo "$(tput setaf 6)Setting $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/$OSTYPE-$Processor/lib/preferences.txt + sed -i 's/update.check = true/update.check = false/g' ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/lib/preferences.txt echo "board" - sed -i 's/board = uno/board = rambo/g' ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/lib/preferences.txt + sed -i 's/board = uno/board = rambo/g' ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/lib/preferences.txt echo "editor.linenumbers" - sed -i 's/editor.linenumbers = false/editor.linenumbers = true/g' ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/lib/preferences.txt + sed -i 's/editor.linenumbers = false/editor.linenumbers = true/g' ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/lib/preferences.txt echo "boardsmanager.additional.urls" - echo "boardsmanager.additional.urls=$BOARD_URL" >>../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/lib/preferences.txt - echo "build.verbose=true" >>../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/lib/preferences.txt - echo "compiler.cache_core=false" >>../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/lib/preferences.txt - echo "compiler.warning_level=all" >>../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/lib/preferences.txt - echo "# Preferences-$OSTYPE-$Processor" >> ../PF-build-env-$BUILD_ENV/Preferences-$OSTYPE-$Processor.txt + echo "boardsmanager.additional.urls=$BOARD_URL" >>../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/lib/preferences.txt + echo "build.verbose=true" >>../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/lib/preferences.txt + echo "compiler.cache_core=false" >>../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/lib/preferences.txt + echo "compiler.warning_level=all" >>../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/lib/preferences.txt + echo "# Preferences-$TARGET_OS-$Processor" >> ../PF-build-env-$BUILD_ENV/Preferences-$TARGET_OS-$Processor.txt echo "$(tput sgr0)" fi @@ -308,25 +330,25 @@ if [ ! -f "$BOARD_FILENAME-$BOARD_VERSION.tar.bz2" ]; then sleep 2 wget $BOARD_FILE_URL || exit 9 fi -if [[ ! -d "../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/$BOARD/hardware/avr/$BOARD_VERSION" || ! -e "../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION-$OSTYPE-$Processor.txt" ]]; then +if [[ ! -d "../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD/hardware/avr/$BOARD_VERSION" || ! -e "../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]]; then echo "$(tput setaf 6)Unzipping $BOARD 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/$OSTYPE-$Processor/portable/packages/$BOARD ]; then - mkdir ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/$BOARD + if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD ]; then + mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD fi - if [ ! -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/$BOARD ]; then - mkdir ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/$BOARD + if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD ]; then + mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD fi - if [ ! -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/$BOARD/hardware ]; then - mkdir ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/$BOARD/hardware + if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD/hardware ]; then + mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD/hardware fi - if [ ! -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/$BOARD/hardware/avr ]; then - mkdir ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/$BOARD/hardware/avr + if [ ! -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD/hardware/avr ]; then + mkdir ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD/hardware/avr fi - mv ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/$BOARD/hardware/avr/$BOARD_VERSION - echo "# $BOARD_FILENAME-$BOARD_VERSION" >> ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION-$OSTYPE-$Processor.txt + mv ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/portable/packages/$BOARD/hardware/avr/$BOARD_VERSION + echo "# $BOARD_FILENAME-$BOARD_VERSION" >> ../PF-build-env-$BUILD_ENV/$BOARD_FILENAME-$BOARD_VERSION-$TARGET_OS-$Processor.txt echo "$(tput sgr 0)" fi @@ -337,30 +359,30 @@ if [ ! -f "PF-build-env-$BUILD_ENV.zip" ]; then wget $PF_BUILD_FILE_URL || exit 11 echo "$(tput sgr 0)" fi -if [ ! -e "../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$OSTYPE-$Processor.txt" ]; then +if [ ! -e "../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$TARGET_OS-$Processor.txt" ]; then echo "$(tput setaf 6)Unzipping Prusa Firmware build environment...$(tput setaf 2)" sleep 2 - unzip -o PF-build-env-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor || exit 12 - echo "# PF-build-env-$OSTYPE-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$OSTYPE-$Processor.txt + unzip -o PF-build-env-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor || exit 12 + echo "# PF-build-env-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$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/$OSTYPE-$Processor/portable/packages/arduino/tools" ]; then +if [ -d "../PF-build-env-$BUILD_ENV/$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 -if [ -d "../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2" ]; then +if [ -d "../PF-build-env-$BUILD_ENV/$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/$OSTYPE-$Processor/hardware/tools/avr/avr/lib/ldscripts/avr6.xn ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.4-arduino2/avr/lib/ldscripts/avr6.xn - echo "# PF-build-env-portable-$OSTYPE-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-portable-$BUILD_ENV-$OSTYPE-$Processor.txt + cp -f ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor/hardware/tools/avr/avr/lib/ldscripts/avr6.xn ../PF-build-env-$BUILD_ENV/$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-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-portable-$BUILD_ENV-$TARGET_OS-$Processor.txt echo "$(tput sgr0)" fi -if [ -d "../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor/portable/packages/arduino/tools/avr-gcc/5.4.0-atmel3.6.1-arduino2" ]; then +if [ -d "../PF-build-env-$BUILD_ENV/$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)" @@ -461,7 +483,7 @@ if [ ! -z "$3" ] ; then fi #Set BUILD_ENV_PATH -cd ../PF-build-env-$BUILD_ENV/$OSTYPE-$Processor || exit 24 +cd ../PF-build-env-$BUILD_ENV/$TARGET_OS-$Processor || exit 24 BUILD_ENV_PATH="$( pwd -P )" cd ../.. @@ -524,10 +546,10 @@ do DEV_STATUS=$DEV_STATUS_SELECTED fi #Prepare hex files folders - if [ ! -d "$SCRIPT_PATH/../Hex-files/FW$FW-Build$BUILD/$MOTHERBOARD" ]; then - mkdir -p $SCRIPT_PATH/../Hex-files/FW$FW-Build$BUILD/$MOTHERBOARD || exit 27 + 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 27 fi - OUTPUT_FOLDER="Hex-files/FW$FW-Build$BUILD/$MOTHERBOARD" + 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 @@ -587,7 +609,7 @@ do fi #Check if compiler flags are set to Prusa specific needs for the rambo board. -# if [ $OSTYPE == "msys" ]; then +# if [ $TARGET_OS == "windows" ]; then # RAMBO_PLATFORM_FILE="PrusaResearchRambo/avr/platform.txt" # fi @@ -647,20 +669,20 @@ do 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 Hex-files folder$(tput sgr 0)" + 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 Hex-files folder$(tput sgr 0)" + 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 [ $OSTYPE == "msys" ]; then + 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 [ $OSTYPE == "linux-gnu" ]; then + 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 @@ -670,7 +692,7 @@ do ./lang-clean.sh || exit 35 echo "$(tput sgr 0)" else - echo "$(tput setaf 2)Copying English only firmware to Hex-files folder$(tput sgr 0)" + 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 From df00bc9bb57a731e1182a99370c5431621fffe0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20K=C3=BChn?= Date: Wed, 24 Jul 2019 13:14:59 +0200 Subject: [PATCH 7/7] Linux 32-bit recognition fixed --- PF-build.sh | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/PF-build.sh b/PF-build.sh index 716160a66..c780900d4 100755 --- a/PF-build.sh +++ b/PF-build.sh @@ -138,18 +138,23 @@ if [ $TARGET_OS == "windows" ]; then 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 64-bit +# Linux elif [ $TARGET_OS == "linux" ]; then if [ $(uname -m) == "x86_64" ]; then echo "$(tput setaf 2)Linux 64-bit found$(tput sgr0)" Processor="64" - fi -# Linux 32-bit -elif [ $TARGET_OS == "linux" ]; then - if [[ $(uname -m) == "i386" || $(uname -m) == "i686" ]]; then + 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!"