Beginner friendly -vs- developer details: compile output options?

35 views
Skip to first unread message

John Plocher

unread,
Apr 3, 2021, 2:35:34 PM4/3/21
to devel...@arduino.cc
Having a boolean ON or OFF option for compile verbosity isn't very user friendly.

The default of OFF means that a beginner gets no output, and thus can't learn about how things work; yet when it gets turned ON, they get way too much on way too long lines, making it effectively useless and overwhelming.

The ONLY audience for a verbose compile seems to be the developers of the arduino-cli, developers of hardware platform packages and (maybe) library developers - none of whom are the primary audience for arduino-cli and arduino-ide :-)

Digging into what is emitted, I see a bunch of probing compiles (with -E and -o /dev/null) followed by library compiles followed by a final link stage.

These stages are easier to visualize if one were to pipe the output of arduino-cli compile -v through a script that removes the noise:

#!/bin/sh

sed -e "s:^..*g++ :g++ :" \

    -e "s:^..*gcc :gcc :" \

    -e "s:^..*ar :ar :" \

    -e "s:${HOME}/:~/:g" \

    -e "s:-f[^ ]* : :g" \

    -e "s:-l[^ ]* : :g" \

    -e "s:-L[^ ]* : :g" \

    -e "s:-D[^ ]* : :g" \

    -e "s:-I[^ ]* : :g" \

    -e "s:-W[^ ]* : :g" \

    -e "s:/var/..*libraries/:.../:g" \

    -e "s:/var/..*sketch/:.../:g" \

    -e "s:/var/..*core/:.../:g" \

    -e "s:  *: :g"



Suggestion:
  • assign the existing -v/--verbose behavior to a new flag (-d/--debug ?), aimed at the existing developer focused "detailed debugging output" of the compile process itself
  • change the behavior  of the -v/--verbose flag to be a logical play-by-play overview of the process, for users who don't need / can't understand / don't want the full debug output.  It could simply run the output through a simplifier script like the above, or involve more coding changes to omit the command lines themselves and provide a higher level commentary instead.
Here's the output of a project run thru the above sed script.  It isn't 'perfect', but IMHO is a good example of making the verbose compile output considerably easier to follow:

jplocher@dispatcher CP_Watsonville_South % arduino-cli compile --clean   -v CP_Watsonville_South.ino | sh /tmp/x                                                                                                                                     

Using board 'esp32doit-devkit-v1' from platform in folder: ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4

Using core 'esp32' from platform in folder: ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4

bash -c "[ ! ~/Dropbox/Arduino/SPCoast/CP_Watsonville_South/partitions.csv ] || cp ~/Dropbox/Arduino/SPCoast/CP_Watsonville_South/partitions.csv /var/folders/pb/wv1s4jx154l6r0xgrg7xps400000gp/T/arduino-sketch-AAFD7AEBA7A91AF5EA4DFC2A6F89283A/partitions.csv"

bash -c "[ /var/folders/pb/wv1s4jx154l6r0xgrg7xps400000gp/T/arduino-sketch-AAFD7AEBA7A91AF5EA4DFC2A6F89283A/partitions.csv ] || cp ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/tools/partitions/default.csv /var/folders/pb/wv1s4jx154l6r0xgrg7xps400000gp/T/arduino-sketch-AAFD7AEBA7A91AF5EA4DFC2A6F89283A/partitions.csv"

Detecting libraries used...

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " .../CP_Watsonville_South.ino.cpp -o /dev/null

Alternatives for Wire.h: [Wi...@1.0.1]

ResolveLibrary(Wire.h)

 -> candidates: [Wi...@1.0.1]

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " .../CP_Watsonville_South.ino.cpp -o /dev/null

Alternatives for elapsedMillis.h: [elapse...@1.0.6]

ResolveLibrary(elapsedMillis.h)

 -> candidates: [elapse...@1.0.6]

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " .../CP_Watsonville_South.ino.cpp -o /dev/null

Alternatives for I2Cexpander.h: [I2Cex...@2.0.3]

ResolveLibrary(I2Cexpander.h)

 -> candidates: [I2Cex...@2.0.3]

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " .../CP_Watsonville_South.ino.cpp -o /dev/null

Alternatives for MaintainerDisplay.h: [MaintainerDisplay@0.1]

ResolveLibrary(MaintainerDisplay.h)

 -> candidates: [MaintainerDisplay@0.1]

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " .../CP_Watsonville_South.ino.cpp -o /dev/null

Alternatives for SimpleHashTable.h: [SimpleHashTable]

ResolveLibrary(SimpleHashTable.h)

 -> candidates: [SimpleHashTable]

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " .../CP_Watsonville_South.ino.cpp -o /dev/null

Alternatives for CodeLineMQTT.h: [CodeLineMQTT@0.2]

ResolveLibrary(CodeLineMQTT.h)

 -> candidates: [CodeLineMQTT@0.2]

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " .../CP_Watsonville_South.ino.cpp -o /dev/null

Alternatives for WiFi.h: [Wi...@1.2.7 WiFi@1.0]

ResolveLibrary(WiFi.h)

 -> candidates: [Wi...@1.2.7 WiFi@1.0]

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " .../CP_Watsonville_South.ino.cpp -o /dev/null

Alternatives for ESPmDNS.h: [ESPmDNS@1.0]

ResolveLibrary(ESPmDNS.h)

 -> candidates: [ESPmDNS@1.0]

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " .../CP_Watsonville_South.ino.cpp -o /dev/null

Alternatives for ArduinoOTA.h: [ArduinoOTA@1.0]

ResolveLibrary(ArduinoOTA.h)

 -> candidates: [ArduinoOTA@1.0]

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " .../CP_Watsonville_South.ino.cpp -o /dev/null

Alternatives for Update.h: [Update@1.0]

ResolveLibrary(Update.h)

 -> candidates: [Update@1.0]

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " .../CP_Watsonville_South.ino.cpp -o /dev/null

Alternatives for PubSubClient.h: [PubSubClient@2.8]

ResolveLibrary(PubSubClient.h)

 -> candidates: [PubSubClient@2.8]

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " .../CP_Watsonville_South.ino.cpp -o /dev/null

Alternatives for I2CMatrix.h: [I2CMatrix]

ResolveLibrary(I2CMatrix.h)

 -> candidates: [I2CMatrix]

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " .../CP_Watsonville_South.ino.cpp -o /dev/null

Alternatives for Adafruit_GFX.h: [arduino...@1.10.4]

ResolveLibrary(Adafruit_GFX.h)

 -> candidates: [arduino...@1.10.4]

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " .../CP_Watsonville_South.ino.cpp -o /dev/null

Alternatives for Adafruit_SSD1306.h: [Adafruit...@2.4.2]

ResolveLibrary(Adafruit_SSD1306.h)

 -> candidates: [Adafruit...@2.4.2]

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " .../CP_Watsonville_South.ino.cpp -o /dev/null

Alternatives for SPI.h: [SPI@1.0]

ResolveLibrary(SPI.h)

 -> candidates: [SPI@1.0]

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " .../CP_Watsonville_South.ino.cpp -o /dev/null

Alternatives for FieldUnit.h: [Fiel...@0.0.1]

ResolveLibrary(FieldUnit.h)

 -> candidates: [Fiel...@0.0.1]

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " .../CP_Watsonville_South.ino.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/Wire/src/Wire.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/I2Cexpander/src/I2Cexpander.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/MaintainerDisplay/src/MaintainerDisplay_NONE.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/MaintainerDisplay/src/MaintainerDisplay_SSD1306.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/SimpleHashTable/SimpleHashTable.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/CodeLineMQTT/src/CodeLineMQTT.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/WiFi/src/ETH.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/WiFi/src/WiFi.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/WiFi/src/WiFiAP.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/WiFi/src/WiFiClient.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/WiFi/src/WiFiGeneric.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/WiFi/src/WiFiMulti.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/WiFi/src/WiFiSTA.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/WiFi/src/WiFiScan.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/WiFi/src/WiFiServer.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/WiFi/src/WiFiUdp.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/ESPmDNS/src/ESPmDNS.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/ArduinoOTA/src/ArduinoOTA.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/Update/src/HttpsOTAUpdate.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/Update/src/Updater.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/PubSubClient/src/PubSubClient.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/I2CMatrix/I2CMatrix.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/arduino_290757/Adafruit_GFX.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/arduino_290757/Adafruit_GrayOLED.cpp -o /dev/null

Alternatives for Adafruit_I2CDevice.h: [Adafrui...@1.7.1]

ResolveLibrary(Adafruit_I2CDevice.h)

 -> candidates: [Adafrui...@1.7.1]

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/arduino_290757/Adafruit_GrayOLED.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/arduino_290757/Adafruit_SPITFT.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/arduino_290757/glcdfont.c -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/Adafruit_SSD1306/Adafruit_SSD1306.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/SPI/src/SPI.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/FieldUnit/src/Aspects.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/FieldUnit/src/Device_MaintainerCall.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/FieldUnit/src/Device_RemoteTC.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/FieldUnit/src/Device_Section.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/FieldUnit/src/Device_Signal.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/FieldUnit/src/Device_Switch.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/FieldUnit/src/Device_TrackCircuit.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/FieldUnit/src/FieldIO.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/FieldUnit/src/FieldUnit.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/FieldUnit/src/RouteDependency.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/FieldUnit/src/SignalHeadRoutes.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/FieldUnit/src/SignalHead_1HeadColorLight.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/FieldUnit/src/SignalHead_2HeadColorLight.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/FieldUnit/src/SignalMast.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/Adafruit_BusIO/Adafruit_BusIO_Register.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/Adafruit_BusIO/Adafruit_I2CDevice.cpp -o /dev/null

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " ~/Dropbox/Arduino/libraries/Adafruit_BusIO/Adafruit_SPIDevice.cpp -o /dev/null

Generating function prototypes...

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " .../CP_Watsonville_South.ino.cpp -o /var/folders/pb/wv1s4jx154l6r0xgrg7xps400000gp/T/arduino-sketch-AAFD7AEBA7A91AF5EA4DFC2A6F89283A/preproc/ctags_target_for_gcc_minus_e.cpp

~/Library/Arduino15/packages/builtin/tools/ctags/5.8-arduino11/ctags -u - - --c++-kinds=svpf - - /var/folders/pb/wv1s4jx154l6r0xgrg7xps400000gp/T/arduino-sketch-AAFD7AEBA7A91AF5EA4DFC2A6F89283A/preproc/ctags_target_for_gcc_minus_e.cpp

Compiling sketch...

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " .../CP_Watsonville_South.ino.cpp.o

Compiling libraries...

Compiling library "Wire"

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/Wire/src/Wire.cpp -o .../Wire/Wire.cpp.o

Compiling library "elapsedMillis"

Compiling library "I2Cexpander"

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/I2Cexpander/src/I2Cexpander.cpp -o .../I2Cexpander/I2Cexpander.cpp.o

Compiling library "MaintainerDisplay"

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/MaintainerDisplay/src/MaintainerDisplay_NONE.cpp -o .../MaintainerDisplay/MaintainerDisplay_NONE.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/MaintainerDisplay/src/MaintainerDisplay_SSD1306.cpp -o .../MaintainerDisplay/MaintainerDisplay_SSD1306.cpp.o

Compiling library "SimpleHashTable"

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/SimpleHashTable/SimpleHashTable.cpp -o .../SimpleHashTable/SimpleHashTable.cpp.o

Compiling library "CodeLineMQTT"

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/CodeLineMQTT/src/CodeLineMQTT.cpp -o .../CodeLineMQTT/CodeLineMQTT.cpp.o

Compiling library "WiFi"

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/WiFi/src/WiFiScan.cpp -o .../WiFi/WiFiScan.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/WiFi/src/ETH.cpp -o .../WiFi/ETH.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/WiFi/src/WiFiServer.cpp -o .../WiFi/WiFiServer.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/WiFi/src/WiFiAP.cpp -o .../WiFi/WiFiAP.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/WiFi/src/WiFiSTA.cpp -o .../WiFi/WiFiSTA.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/WiFi/src/WiFiGeneric.cpp -o .../WiFi/WiFiGeneric.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/WiFi/src/WiFi.cpp -o .../WiFi/WiFi.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/WiFi/src/WiFiClient.cpp -o .../WiFi/WiFiClient.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/WiFi/src/WiFiUdp.cpp -o .../WiFi/WiFiUdp.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/WiFi/src/WiFiMulti.cpp -o .../WiFi/WiFiMulti.cpp.o

Compiling library "ESPmDNS"

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/ESPmDNS/src/ESPmDNS.cpp -o .../ESPmDNS/ESPmDNS.cpp.o

Compiling library "ArduinoOTA"

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/ArduinoOTA/src/ArduinoOTA.cpp -o .../ArduinoOTA/ArduinoOTA.cpp.o

Compiling library "Update"

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/Update/src/HttpsOTAUpdate.cpp -o .../Update/HttpsOTAUpdate.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/Update/src/Updater.cpp -o .../Update/Updater.cpp.o

Compiling library "PubSubClient"

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/PubSubClient/src/PubSubClient.cpp -o .../PubSubClient/PubSubClient.cpp.o

Compiling library "I2CMatrix"

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/I2CMatrix/I2CMatrix.cpp -o .../I2CMatrix/I2CMatrix.cpp.o

Compiling library "arduino_290757"

gcc " -std=gnu99 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/arduino_290757/glcdfont.c -o .../arduino_290757/glcdfont.c.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/arduino_290757/Adafruit_GFX.cpp -o .../arduino_290757/Adafruit_GFX.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/arduino_290757/Adafruit_SPITFT.cpp -o .../arduino_290757/Adafruit_SPITFT.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/arduino_290757/Adafruit_GrayOLED.cpp -o .../arduino_290757/Adafruit_GrayOLED.cpp.o

Compiling library "Adafruit_SSD1306"

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/Adafruit_SSD1306/Adafruit_SSD1306.cpp -o .../Adafruit_SSD1306/Adafruit_SSD1306.cpp.o

Compiling library "SPI"

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/SPI/src/SPI.cpp -o .../SPI/SPI.cpp.o

Compiling library "FieldUnit"

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/FieldUnit/src/RouteDependency.cpp -o .../FieldUnit/RouteDependency.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/FieldUnit/src/Device_RemoteTC.cpp -o .../FieldUnit/Device_RemoteTC.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/FieldUnit/src/Aspects.cpp -o .../FieldUnit/Aspects.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/FieldUnit/src/Device_Section.cpp -o .../FieldUnit/Device_Section.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/FieldUnit/src/FieldIO.cpp -o .../FieldUnit/FieldIO.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/FieldUnit/src/Device_Signal.cpp -o .../FieldUnit/Device_Signal.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/FieldUnit/src/Device_MaintainerCall.cpp -o .../FieldUnit/Device_MaintainerCall.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/FieldUnit/src/FieldUnit.cpp -o .../FieldUnit/FieldUnit.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/FieldUnit/src/SignalHeadRoutes.cpp -o .../FieldUnit/SignalHeadRoutes.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/FieldUnit/src/Device_TrackCircuit.cpp -o .../FieldUnit/Device_TrackCircuit.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/FieldUnit/src/Device_Switch.cpp -o .../FieldUnit/Device_Switch.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/FieldUnit/src/SignalHead_1HeadColorLight.cpp -o .../FieldUnit/SignalHead_1HeadColorLight.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/FieldUnit/src/SignalMast.cpp -o .../FieldUnit/SignalMast.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/FieldUnit/src/SignalHead_2HeadColorLight.cpp -o .../FieldUnit/SignalHead_2HeadColorLight.cpp.o

Compiling library "Adafruit_BusIO"

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/Adafruit_BusIO/Adafruit_I2CDevice.cpp -o .../Adafruit_BusIO/Adafruit_I2CDevice.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/Adafruit_BusIO/Adafruit_BusIO_Register.cpp -o .../Adafruit_BusIO/Adafruit_BusIO_Register.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Dropbox/Arduino/libraries/Adafruit_BusIO/Adafruit_SPIDevice.cpp -o .../Adafruit_BusIO/Adafruit_SPIDevice.cpp.o

Compiling core...

gcc " -std=gnu99 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/esp32-hal-misc.c -o .../esp32-hal-misc.c.o

gcc " -std=gnu99 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/esp32-hal-matrix.c -o .../esp32-hal-matrix.c.o

gcc " -std=gnu99 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/esp32-hal-cpu.c -o .../esp32-hal-cpu.c.o

gcc " -std=gnu99 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/esp32-hal-touch.c -o .../esp32-hal-touch.c.o

gcc " -std=gnu99 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/esp32-hal-i2c.c -o .../esp32-hal-i2c.c.o

gcc " -std=gnu99 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/esp32-hal-gpio.c -o .../esp32-hal-gpio.c.o

gcc " -std=gnu99 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/libb64/cdecode.c -o .../libb64/cdecode.c.o

gcc " -std=gnu99 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/wiring_shift.c -o .../wiring_shift.c.o

gcc " -std=gnu99 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/libb64/cencode.c -o .../libb64/cencode.c.o

gcc " -std=gnu99 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/esp32-hal-dac.c -o .../esp32-hal-dac.c.o

gcc " -std=gnu99 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/esp32-hal-adc.c -o .../esp32-hal-adc.c.o

gcc " -std=gnu99 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/esp32-hal-time.c -o .../esp32-hal-time.c.o

gcc " -std=gnu99 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/esp32-hal-sigmadelta.c -o .../esp32-hal-sigmadelta.c.o

gcc " -std=gnu99 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/stdlib_noniso.c -o .../stdlib_noniso.c.o

gcc " -std=gnu99 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/esp32-hal -o .../esp32-hal-ledc.c.o

gcc " -std=gnu99 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/wiring_pulse.c -o .../wiring_pulse.c.o

gcc " -std=gnu99 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/esp32-hal-uart.c -o .../esp32-hal-uart.c.o

gcc " -std=gnu99 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/esp32-hal-spi.c -o .../esp32-hal-spi.c.o

gcc " -std=gnu99 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/esp32-hal-bt.c -o .../esp32-hal-bt.c.o

gcc " -std=gnu99 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/esp32-hal-rmt.c -o .../esp32-hal-rmt.c.o

gcc " -std=gnu99 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/esp32-hal-timer.c -o .../esp32-hal-timer.c.o

gcc " -std=gnu99 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/esp32-hal-psram.c -o .../esp32-hal-psram.c.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/StreamString.cpp -o .../StreamString.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/MD5Builder.cpp -o .../MD5Builder.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/main.cpp -o .../main.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/WMath.cpp -o .../WMath.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/HardwareSerial.cpp -o .../HardwareSerial.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/Stream.cpp -o .../Stream.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/Print.cpp -o .../Print.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/FunctionalInterrupt.cpp -o .../FunctionalInterrupt.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/Esp.cpp -o .../Esp.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/cbuf.cpp -o .../cbuf.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/base64.cpp -o .../base64.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/IPAddress.cpp -o .../IPAddress.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/WString.cpp -o .../WString.cpp.o

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -MMD -c " " ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/cores/esp32/IPv6Address.cpp -o .../IPv6Address.cpp.o

ar cru .../esp32-hal-adc.c.o

ar cru .../esp32-hal-bt.c.o

ar cru .../esp32-hal-cpu.c.o

ar cru .../esp32-hal-dac.c.o

ar cru .../esp32-hal-gpio.c.o

ar cru .../esp32-hal-i2c.c.o

ar cru .../esp32-hal-ledc.c.o

ar cru .../esp32-hal-matrix.c.o

ar cru .../esp32-hal-misc.c.o

ar cru .../esp32-hal-psram.c.o

ar cru .../esp32-hal-rmt.c.o

ar cru .../esp32-hal-sigmadelta.c.o

ar cru .../esp32-hal-spi.c.o

ar cru .../esp32-hal-time.c.o

ar cru .../esp32-hal-timer.c.o

ar cru .../esp32-hal-touch.c.o

ar cru .../esp32-hal-uart.c.o

ar cru .../libb64/cdecode.c.o

ar cru .../libb64/cencode.c.o

ar cru .../stdlib_noniso.c.o

ar cru .../wiring_pulse.c.o

ar cru .../wiring_shift.c.o

ar cru .../Esp.cpp.o

ar cru .../FunctionalInterrupt.cpp.o

ar cru .../HardwareSerial.cpp.o

ar cru .../IPAddress.cpp.o

ar cru .../IPv6Address.cpp.o

ar cru .../MD5Builder.cpp.o

ar cru .../Print.cpp.o

ar cru .../Stream.cpp.o

ar cru .../StreamString.cpp.o

ar cru .../WMath.cpp.o

ar cru .../WString.cpp.o

ar cru .../base64.cpp.o

ar cru .../cbuf.cpp.o

ar cru .../main.cpp.o

Archiving built core (caching) in: /var/folders/pb/wv1s4jx154l6r0xgrg7xps400000gp/T/arduino-core-cache/core_esp32_esp32_esp32doit-devkit-v1_61684adef20b8cfa6099a024823745f7.a

Linking everything together...

gcc -o /var/folders/pb/wv1s4jx154l6r0xgrg7xps400000gp/T/arduino-sketch-AAFD7AEBA7A91AF5EA4DFC2A6F89283A/CP_Watsonville_South.ino.elf

~/Library/Arduino15/packages/esp32/tools/esptool_py/3.0.0/esptool --chip esp32 elf2image - dio - 80m - 4MB -o /var/folders/pb/wv1s4jx154l6r0xgrg7xps400000gp/T/arduino-sketch-AAFD7AEBA7A91AF5EA4DFC2A6F89283A/CP_Watsonville_South.ino.bin /var/folders/pb/wv1s4jx154l6r0xgrg7xps400000gp/T/arduino-sketch-AAFD7AEBA7A91AF5EA4DFC2A6F89283A/CP_Watsonville_South.ino.elf

esptool.py v3.0-dev

python ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/tools/gen_esp32part.py -q /var/folders/pb/wv1s4jx154l6r0xgrg7xps400000gp/T/arduino-sketch-AAFD7AEBA7A91AF5EA4DFC2A6F89283A/partitions.csv /var/folders/pb/wv1s4jx154l6r0xgrg7xps400000gp/T/arduino-sketch-AAFD7AEBA7A91AF5EA4DFC2A6F89283A/CP_Watsonville_South.ino.partitions.bin

Multiple libraries were found for "WiFi.h"

 Used: ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/WiFi

 Not used: /Applications/Arduino-189.app/Contents/Java/libraries/WiFi

Using library Wire at version 1.0.1 in folder: ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/Wire 

Using library elapsedMillis at version 1.0.6 in folder: ~/Dropbox/Arduino/libraries/elapsedMillis 

Using library I2Cexpander at version 2.0.3 in folder: ~/Dropbox/Arduino/libraries/I2Cexpander 

Using library MaintainerDisplay at version 0.1 in folder: ~/Dropbox/Arduino/libraries/MaintainerDisplay 

Using library SimpleHashTable in folder: ~/Dropbox/Arduino/libraries/SimpleHashTable (legacy)

Using library CodeLineMQTT at version 0.2 in folder: ~/Dropbox/Arduino/libraries/CodeLineMQTT 

Using library WiFi at version 1.0 in folder: ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/WiFi 

Using library ESPmDNS at version 1.0 in folder: ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/ESPmDNS 

Using library ArduinoOTA at version 1.0 in folder: ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/ArduinoOTA 

Using library Update at version 1.0 in folder: ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/Update 

Using library PubSubClient at version 2.8 in folder: ~/Dropbox/Arduino/libraries/PubSubClient 

Using library I2CMatrix in folder: ~/Dropbox/Arduino/libraries/I2CMatrix (legacy)

Using library arduino_290757 at version 1.10.4 in folder: ~/Dropbox/Arduino/libraries/arduino_290757 

Using library Adafruit_SSD1306 at version 2.4.2 in folder: ~/Dropbox/Arduino/libraries/Adafruit_SSD1306 

Using library SPI at version 1.0 in folder: ~/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc4/libraries/SPI 

Using library FieldUnit at version 0.0.1 in folder: ~/Dropbox/Arduino/libraries/FieldUnit 

Using library Adafruit_BusIO at version 1.7.1 in folder: ~/Dropbox/Arduino/libraries/Adafruit_BusIO 

~/Library/Arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/1.22.0-96-g2852398-5.2.0/bin/xtensa-esp32-elf-size -A /var/folders/pb/wv1s4jx154l6r0xgrg7xps400000gp/T/arduino-sketch-AAFD7AEBA7A91AF5EA4DFC2A6F89283A/CP_Watsonville_South.ino.elf

Sketch uses 826058 bytes (63%) of program storage space. Maximum is 1310720 bytes.

Global variables use 46924 bytes (14%) of dynamic memory, leaving 280756 bytes for local variables. Maximum is 327680 bytes.



  -John





Ken Perry

unread,
Apr 3, 2021, 4:06:42 PM4/3/21
to devel...@arduino.cc

For the beginners  I work with at Schools I am not sure that the output after the sed script is very useful.  These are students that just need to get a project working for the first time and are not really worried about warnings or to many messages.  As a 30 year software Engineer I agree that some of the messages come in handy when you need them.  I am not sure that students need this kind of extra information.    What would be your key use for this? 

 

Ken

--
You received this message because you are subscribed to the Google Groups "Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to developers+...@arduino.cc.
To view this discussion on the web visit https://groups.google.com/a/arduino.cc/d/msgid/developers/CAKFrckqYmENMkBVEmzXYTTpGZNYCuMuWec822dKEiFxwQt9iBw%40mail.gmail.com.

Peter Feerick

unread,
Apr 3, 2021, 8:07:11 PM4/3/21
to devel...@arduino.cc
I agree. For beginners/students, this is still way too much information. If anything, the bit at the end about the libraries was useful, as if the code doesn't behave like you expect, and it says it picked the wrong library, you have a starting point.

Some level of granularity for verbose output would be nice though... because at the moment is all or nothing... there is no middle ground where you can say you want more verbose than none, but you don't want the whole kitchen sink. i.e. Something similar to the compiler options would be nice. But perhaps this is something that might already be possible in the Pro IDE?

Peter Feerick
BIT, BLDes, LLB CQU


Lonnie Howell

unread,
Apr 5, 2021, 5:35:58 AM4/5/21
to devel...@arduino.cc
I respectfully disagree. The information doesn't affect the process so they can either ignore the information, *or* maybe some of the more curious will gloss through it and see something that catches their eye and start asking questions, or even better, start researching. The information is quite technical, but laid out well enough to perhaps generate some curiosity.

The extra info can be tossed if no interest is shown, so no harm done. Perhaps make it a switch in the IDE settings?

It seems to me to be a chance to further education, even if only for a few.

Ken Perry

unread,
Apr 5, 2021, 6:33:31 AM4/5/21
to devel...@arduino.cc

I don’t mind making it a property in the IDE .  In this discussion the one thing I do agree with is that if done should not be something you put in the code.  Any verbosity setting should be an IDE setting. It should also be done without an operating system requirement .  So if SED is to be used it should be installed with the IDE.  I think it could be done without sed.  The less requirements this IDE has the better.   Java has enough Regex to be able to do this easy enough in some kind of filter class.    In fact error’s and warnings could be parsed so that the error window allows for users to press enter or click on the error or warning and instantly taken to the place in the code..  No matter how it is accomplished this should not be the default set but since that is not what is being sought then I see no problem with adding extra property features to the IDE.  I am not sure this is the most important change that needs to be made to the IDE but that is what is so great about open source.  If  a person thinks it is important they can do it and get it done.

--

You received this message because you are subscribed to the Google Groups "Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to developers+...@arduino.cc.

William Westfield

unread,
Apr 6, 2021, 7:59:40 PM4/6/21
to 'Owen Lyke' via Developers
Here's the output of a project run thru the above sed script.  It isn't 'perfect', but IMHO is a good example of making the verbose compile output considerably easier to follow:

g++ " -std=gnu++11 -Os -g3 -mlongcalls -nostdlib -w -c -w -x c++ -E -CC " " .../CP_Watsonville_South.ino.cpp -o /dev/null

While I vaguely agree that the current output is too verbose, I think that the times that it is used most often is for debugging compile issues (often by an “experienced helper” on the forums), and your current script removes important info like “which C++ compiler is actually being used.”

The build is currently divided into phases.  How about separate “verbose” switches for each phase?
With a tiny bit of effort, the existing phase titles could be more easily detectable...

Detecting libraries used...
Generating function prototypes...
Compiling sketch...
Compiling libraries...
Compiling core...
Linking everything together...

BillW/WestfW


Paul Stoffregen

unread,
Apr 8, 2021, 8:07:24 PM4/8/21
to devel...@arduino.cc
On 4/3/21 11:35 AM, John Plocher wrote:
Having a boolean ON or OFF option for compile verbosity isn't very user friendly.

I wish to respectfully disagree with the notion the IDE offers only a binary choice of compile verbosity.

The Preferences dialog gives users a 4-way choice of how verbose they wish to see compiler warnings, which is probably the most important aspect of compiler verbosity.

Indeed the checkbox just above the compiler warnings setting turns on an avalanche of information which is mostly useful for board / library / platform developers.  But to suggest that's the only option users have and to call the IDE "very user friendly" seems, at least to me, like a pretty unfair & inaccurate characterization of how the IDE actually works.



Reply all
Reply to author
Forward
0 new messages