Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Quote linker script path in compilation recipe #363

Merged
merged 1 commit into from
Nov 25, 2021
Merged

Quote linker script path in compilation recipe #363

merged 1 commit into from
Nov 25, 2021

Conversation

per1234
Copy link
Contributor

@per1234 per1234 commented Nov 25, 2021

An unquoted path to the linker script caused compilation to fail when the temporary build folder path contained spaces:

$ arduino-cli compile --fqbn arduino:mbed_portenta:envie_m7 --build-path "/tmp/some path with spaces"
arm-none-eabi-g++: error: path: No such file or directory
arm-none-eabi-g++: error: with: No such file or directory
arm-none-eabi-g++: error: spaces/linker_script.ld: No such file or directory

The above demo uses Arduino CLI as an easy way to guarantee the build path has spaces, but this bug affects users of all Arduino development software with a space in their temporary folder path (e.g., Windows users with a space in their user name) under normal conditions.

An unquoted path to the linker script caused compilation to fail when the temporary build folder path contained spaces:

```
$ arduino-cli compile --fqbn arduino:mbed_portenta:envie_m7 --build-path "/tmp/some path with spaces"
arm-none-eabi-g++: error: path: No such file or directory
arm-none-eabi-g++: error: with: No such file or directory
arm-none-eabi-g++: error: spaces/linker_script.ld: No such file or directory
```
@github-actions
Copy link

Memory usage change @ 07749a4

Board flash % RAM for global variables %
arduino:mbed:envie_m4 0 - 0 0.0 - 0.0 0 - 0 0.0 - 0.0
arduino:mbed:envie_m7 0 - 0 0.0 - 0.0 0 - 0 0.0 - 0.0
arduino:mbed:nano33ble 0 - 0 0.0 - 0.0 0 - 0 0.0 - 0.0
arduino:mbed:nanorp2040connect 0 - 0 0.0 - 0.0 0 - 0 0.0 - 0.0
arduino:mbed:nicla_sense 0 - 0 0.0 - 0.0 0 - 0 0.0 - 0.0
Click for full report table
Board libraries/Scheduler/examples/MultipleBlinks
flash
% libraries/Scheduler/examples/MultipleBlinks
RAM for global variables
% libraries/doom/examples/Doom
flash
% libraries/doom/examples/Doom
RAM for global variables
% libraries/KernelDebug/examples/KernelDebug
flash
% libraries/KernelDebug/examples/KernelDebug
RAM for global variables
% libraries/Portenta_SDCARD/examples/TestSDCARD
flash
% libraries/Portenta_SDCARD/examples/TestSDCARD
RAM for global variables
% libraries/Portenta_SDRAM/examples/SDRAM_operations
flash
% libraries/Portenta_SDRAM/examples/SDRAM_operations
RAM for global variables
% libraries/Portenta_Video/examples/ArduinoLogo
flash
% libraries/Portenta_Video/examples/ArduinoLogo
RAM for global variables
% libraries/RPC/examples/BootM4_from_SDRAM
flash
% libraries/RPC/examples/BootM4_from_SDRAM
RAM for global variables
% libraries/RPC/examples/RPC_m4
flash
% libraries/RPC/examples/RPC_m4
RAM for global variables
% libraries/RPC/examples/SerialPassthrough_RPC
flash
% libraries/RPC/examples/SerialPassthrough_RPC
RAM for global variables
% libraries/PDM/examples/PDMSerialPlotter
flash
% libraries/PDM/examples/PDMSerialPlotter
RAM for global variables
% libraries/Portenta_Camera/examples/CameraCaptureRawBytes
flash
% libraries/Portenta_Camera/examples/CameraCaptureRawBytes
RAM for global variables
% libraries/Portenta_Camera/examples/CameraMotionDetect
flash
% libraries/Portenta_Camera/examples/CameraMotionDetect
RAM for global variables
% libraries/Portenta_lvgl/examples/Portenta_lvgl
flash
% libraries/Portenta_lvgl/examples/Portenta_lvgl
RAM for global variables
% libraries/Portenta_System/examples/PortentaH7_getBootloaderInfo
flash
% libraries/Portenta_System/examples/PortentaH7_getBootloaderInfo
RAM for global variables
% libraries/Portenta_System/examples/PortentaH7_updateBootloader
flash
% libraries/Portenta_System/examples/PortentaH7_updateBootloader
RAM for global variables
% libraries/ThreadDebug/examples/ThreadDebug
flash
% libraries/ThreadDebug/examples/ThreadDebug
RAM for global variables
% libraries/USBHID/examples/Keyboard
flash
% libraries/USBHID/examples/Keyboard
RAM for global variables
% libraries/USBHID/examples/Mouse
flash
% libraries/USBHID/examples/Mouse
RAM for global variables
% libraries/USBHOST/examples/KeyboardController
flash
% libraries/USBHOST/examples/KeyboardController
RAM for global variables
% libraries/USBHOST/examples/Shell
flash
% libraries/USBHOST/examples/Shell
RAM for global variables
% libraries/USBMSD/examples/AccessFlashAsUSBDisk
flash
% libraries/USBMSD/examples/AccessFlashAsUSBDisk
RAM for global variables
% libraries/WiFi/examples/PortentaWiFiFirmwareUpdater
flash
% libraries/WiFi/examples/PortentaWiFiFirmwareUpdater
RAM for global variables
% libraries/WiFi/examples/WiFiWebClient
flash
% libraries/WiFi/examples/WiFiWebClient
RAM for global variables
% libraries/USBMSD/examples/Nano33BLE_FlashMassStorage
flash
% libraries/USBMSD/examples/Nano33BLE_FlashMassStorage
RAM for global variables
% /home/runner/Arduino/libraries/WiFiNINA/examples/AP_SimpleWebServer
flash
% /home/runner/Arduino/libraries/WiFiNINA/examples/AP_SimpleWebServer
RAM for global variables
% /home/runner/Arduino/libraries/WiFiNINA/examples/ConnectNoEncryption
flash
% /home/runner/Arduino/libraries/WiFiNINA/examples/ConnectNoEncryption
RAM for global variables
% /home/runner/Arduino/libraries/WiFiNINA/examples/ConnectWithWEP
flash
% /home/runner/Arduino/libraries/WiFiNINA/examples/ConnectWithWEP
RAM for global variables
% /home/runner/Arduino/libraries/WiFiNINA/examples/ConnectWithWPA
flash
% /home/runner/Arduino/libraries/WiFiNINA/examples/ConnectWithWPA
RAM for global variables
% /home/runner/Arduino/libraries/WiFiNINA/examples/ConnectWithWPA2Enterprise
flash
% /home/runner/Arduino/libraries/WiFiNINA/examples/ConnectWithWPA2Enterprise
RAM for global variables
% /home/runner/Arduino/libraries/WiFiNINA/examples/ScanNetworks
flash
% /home/runner/Arduino/libraries/WiFiNINA/examples/ScanNetworks
RAM for global variables
% /home/runner/Arduino/libraries/WiFiNINA/examples/ScanNetworksAdvanced
flash
% /home/runner/Arduino/libraries/WiFiNINA/examples/ScanNetworksAdvanced
RAM for global variables
% /home/runner/Arduino/libraries/WiFiNINA/examples/SimpleWebServerWiFi
flash
% /home/runner/Arduino/libraries/WiFiNINA/examples/SimpleWebServerWiFi
RAM for global variables
% /home/runner/Arduino/libraries/WiFiNINA/examples/Tools/CheckFirmwareVersion
flash
% /home/runner/Arduino/libraries/WiFiNINA/examples/Tools/CheckFirmwareVersion
RAM for global variables
% /home/runner/Arduino/libraries/WiFiNINA/examples/Tools/FirmwareUpdater
flash
% /home/runner/Arduino/libraries/WiFiNINA/examples/Tools/FirmwareUpdater
RAM for global variables
% /home/runner/Arduino/libraries/WiFiNINA/examples/Tools/SerialNINAPassthrough
flash
% /home/runner/Arduino/libraries/WiFiNINA/examples/Tools/SerialNINAPassthrough
RAM for global variables
% /home/runner/Arduino/libraries/WiFiNINA/examples/WiFiChatServer
flash
% /home/runner/Arduino/libraries/WiFiNINA/examples/WiFiChatServer
RAM for global variables
% /home/runner/Arduino/libraries/WiFiNINA/examples/WiFiPing
flash
% /home/runner/Arduino/libraries/WiFiNINA/examples/WiFiPing
RAM for global variables
% /home/runner/Arduino/libraries/WiFiNINA/examples/WiFiSSLClient
flash
% /home/runner/Arduino/libraries/WiFiNINA/examples/WiFiSSLClient
RAM for global variables
% /home/runner/Arduino/libraries/WiFiNINA/examples/WiFiStorage
flash
% /home/runner/Arduino/libraries/WiFiNINA/examples/WiFiStorage
RAM for global variables
% /home/runner/Arduino/libraries/WiFiNINA/examples/WiFiUdpNtpClient
flash
% /home/runner/Arduino/libraries/WiFiNINA/examples/WiFiUdpNtpClient
RAM for global variables
% /home/runner/Arduino/libraries/WiFiNINA/examples/WiFiUdpSendReceiveString
flash
% /home/runner/Arduino/libraries/WiFiNINA/examples/WiFiUdpSendReceiveString
RAM for global variables
% /home/runner/Arduino/libraries/WiFiNINA/examples/WiFiWebClient
flash
% /home/runner/Arduino/libraries/WiFiNINA/examples/WiFiWebClient
RAM for global variables
% /home/runner/Arduino/libraries/WiFiNINA/examples/WiFiWebClientRepeating
flash
% /home/runner/Arduino/libraries/WiFiNINA/examples/WiFiWebClientRepeating
RAM for global variables
% /home/runner/Arduino/libraries/WiFiNINA/examples/WiFiWebServer
flash
% /home/runner/Arduino/libraries/WiFiNINA/examples/WiFiWebServer
RAM for global variables
% libraries/Nicla_System/examples/Blink_Nicla
flash
% libraries/Nicla_System/examples/Blink_Nicla
RAM for global variables
%
arduino:mbed:envie_m4 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0
arduino:mbed:envie_m7 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0
arduino:mbed:nano33ble 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0
arduino:mbed:nanorp2040connect 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0 0 0.0
arduino:mbed:nicla_sense 0 0.0 0 0.0 0 0.0 0 0.0
Click for full report CSV
Board,libraries/Scheduler/examples/MultipleBlinks<br>flash,%,libraries/Scheduler/examples/MultipleBlinks<br>RAM for global variables,%,libraries/doom/examples/Doom<br>flash,%,libraries/doom/examples/Doom<br>RAM for global variables,%,libraries/KernelDebug/examples/KernelDebug<br>flash,%,libraries/KernelDebug/examples/KernelDebug<br>RAM for global variables,%,libraries/Portenta_SDCARD/examples/TestSDCARD<br>flash,%,libraries/Portenta_SDCARD/examples/TestSDCARD<br>RAM for global variables,%,libraries/Portenta_SDRAM/examples/SDRAM_operations<br>flash,%,libraries/Portenta_SDRAM/examples/SDRAM_operations<br>RAM for global variables,%,libraries/Portenta_Video/examples/ArduinoLogo<br>flash,%,libraries/Portenta_Video/examples/ArduinoLogo<br>RAM for global variables,%,libraries/RPC/examples/BootM4_from_SDRAM<br>flash,%,libraries/RPC/examples/BootM4_from_SDRAM<br>RAM for global variables,%,libraries/RPC/examples/RPC_m4<br>flash,%,libraries/RPC/examples/RPC_m4<br>RAM for global variables,%,libraries/RPC/examples/SerialPassthrough_RPC<br>flash,%,libraries/RPC/examples/SerialPassthrough_RPC<br>RAM for global variables,%,libraries/PDM/examples/PDMSerialPlotter<br>flash,%,libraries/PDM/examples/PDMSerialPlotter<br>RAM for global variables,%,libraries/Portenta_Camera/examples/CameraCaptureRawBytes<br>flash,%,libraries/Portenta_Camera/examples/CameraCaptureRawBytes<br>RAM for global variables,%,libraries/Portenta_Camera/examples/CameraMotionDetect<br>flash,%,libraries/Portenta_Camera/examples/CameraMotionDetect<br>RAM for global variables,%,libraries/Portenta_lvgl/examples/Portenta_lvgl<br>flash,%,libraries/Portenta_lvgl/examples/Portenta_lvgl<br>RAM for global variables,%,libraries/Portenta_System/examples/PortentaH7_getBootloaderInfo<br>flash,%,libraries/Portenta_System/examples/PortentaH7_getBootloaderInfo<br>RAM for global variables,%,libraries/Portenta_System/examples/PortentaH7_updateBootloader<br>flash,%,libraries/Portenta_System/examples/PortentaH7_updateBootloader<br>RAM for global variables,%,libraries/ThreadDebug/examples/ThreadDebug<br>flash,%,libraries/ThreadDebug/examples/ThreadDebug<br>RAM for global variables,%,libraries/USBHID/examples/Keyboard<br>flash,%,libraries/USBHID/examples/Keyboard<br>RAM for global variables,%,libraries/USBHID/examples/Mouse<br>flash,%,libraries/USBHID/examples/Mouse<br>RAM for global variables,%,libraries/USBHOST/examples/KeyboardController<br>flash,%,libraries/USBHOST/examples/KeyboardController<br>RAM for global variables,%,libraries/USBHOST/examples/Shell<br>flash,%,libraries/USBHOST/examples/Shell<br>RAM for global variables,%,libraries/USBMSD/examples/AccessFlashAsUSBDisk<br>flash,%,libraries/USBMSD/examples/AccessFlashAsUSBDisk<br>RAM for global variables,%,libraries/WiFi/examples/PortentaWiFiFirmwareUpdater<br>flash,%,libraries/WiFi/examples/PortentaWiFiFirmwareUpdater<br>RAM for global variables,%,libraries/WiFi/examples/WiFiWebClient<br>flash,%,libraries/WiFi/examples/WiFiWebClient<br>RAM for global variables,%,libraries/USBMSD/examples/Nano33BLE_FlashMassStorage<br>flash,%,libraries/USBMSD/examples/Nano33BLE_FlashMassStorage<br>RAM for global variables,%,/home/runner/Arduino/libraries/WiFiNINA/examples/AP_SimpleWebServer<br>flash,%,/home/runner/Arduino/libraries/WiFiNINA/examples/AP_SimpleWebServer<br>RAM for global variables,%,/home/runner/Arduino/libraries/WiFiNINA/examples/ConnectNoEncryption<br>flash,%,/home/runner/Arduino/libraries/WiFiNINA/examples/ConnectNoEncryption<br>RAM for global variables,%,/home/runner/Arduino/libraries/WiFiNINA/examples/ConnectWithWEP<br>flash,%,/home/runner/Arduino/libraries/WiFiNINA/examples/ConnectWithWEP<br>RAM for global variables,%,/home/runner/Arduino/libraries/WiFiNINA/examples/ConnectWithWPA<br>flash,%,/home/runner/Arduino/libraries/WiFiNINA/examples/ConnectWithWPA<br>RAM for global variables,%,/home/runner/Arduino/libraries/WiFiNINA/examples/ConnectWithWPA2Enterprise<br>flash,%,/home/runner/Arduino/libraries/WiFiNINA/examples/ConnectWithWPA2Enterprise<br>RAM for global variables,%,/home/runner/Arduino/libraries/WiFiNINA/examples/ScanNetworks<br>flash,%,/home/runner/Arduino/libraries/WiFiNINA/examples/ScanNetworks<br>RAM for global variables,%,/home/runner/Arduino/libraries/WiFiNINA/examples/ScanNetworksAdvanced<br>flash,%,/home/runner/Arduino/libraries/WiFiNINA/examples/ScanNetworksAdvanced<br>RAM for global variables,%,/home/runner/Arduino/libraries/WiFiNINA/examples/SimpleWebServerWiFi<br>flash,%,/home/runner/Arduino/libraries/WiFiNINA/examples/SimpleWebServerWiFi<br>RAM for global variables,%,/home/runner/Arduino/libraries/WiFiNINA/examples/Tools/CheckFirmwareVersion<br>flash,%,/home/runner/Arduino/libraries/WiFiNINA/examples/Tools/CheckFirmwareVersion<br>RAM for global variables,%,/home/runner/Arduino/libraries/WiFiNINA/examples/Tools/FirmwareUpdater<br>flash,%,/home/runner/Arduino/libraries/WiFiNINA/examples/Tools/FirmwareUpdater<br>RAM for global variables,%,/home/runner/Arduino/libraries/WiFiNINA/examples/Tools/SerialNINAPassthrough<br>flash,%,/home/runner/Arduino/libraries/WiFiNINA/examples/Tools/SerialNINAPassthrough<br>RAM for global variables,%,/home/runner/Arduino/libraries/WiFiNINA/examples/WiFiChatServer<br>flash,%,/home/runner/Arduino/libraries/WiFiNINA/examples/WiFiChatServer<br>RAM for global variables,%,/home/runner/Arduino/libraries/WiFiNINA/examples/WiFiPing<br>flash,%,/home/runner/Arduino/libraries/WiFiNINA/examples/WiFiPing<br>RAM for global variables,%,/home/runner/Arduino/libraries/WiFiNINA/examples/WiFiSSLClient<br>flash,%,/home/runner/Arduino/libraries/WiFiNINA/examples/WiFiSSLClient<br>RAM for global variables,%,/home/runner/Arduino/libraries/WiFiNINA/examples/WiFiStorage<br>flash,%,/home/runner/Arduino/libraries/WiFiNINA/examples/WiFiStorage<br>RAM for global variables,%,/home/runner/Arduino/libraries/WiFiNINA/examples/WiFiUdpNtpClient<br>flash,%,/home/runner/Arduino/libraries/WiFiNINA/examples/WiFiUdpNtpClient<br>RAM for global variables,%,/home/runner/Arduino/libraries/WiFiNINA/examples/WiFiUdpSendReceiveString<br>flash,%,/home/runner/Arduino/libraries/WiFiNINA/examples/WiFiUdpSendReceiveString<br>RAM for global variables,%,/home/runner/Arduino/libraries/WiFiNINA/examples/WiFiWebClient<br>flash,%,/home/runner/Arduino/libraries/WiFiNINA/examples/WiFiWebClient<br>RAM for global variables,%,/home/runner/Arduino/libraries/WiFiNINA/examples/WiFiWebClientRepeating<br>flash,%,/home/runner/Arduino/libraries/WiFiNINA/examples/WiFiWebClientRepeating<br>RAM for global variables,%,/home/runner/Arduino/libraries/WiFiNINA/examples/WiFiWebServer<br>flash,%,/home/runner/Arduino/libraries/WiFiNINA/examples/WiFiWebServer<br>RAM for global variables,%,libraries/Nicla_System/examples/Blink_Nicla<br>flash,%,libraries/Nicla_System/examples/Blink_Nicla<br>RAM for global variables,%
arduino:mbed:envie_m4,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0
arduino:mbed:envie_m7,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0
arduino:mbed:nano33ble,0,0.0,0,0.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,0.0,0,0.0,,,,,,,,,,,,,,,,,,,,,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,,,,,,,,,,,,,,,,,,,,,0,0.0,0,0.0
arduino:mbed:nanorp2040connect,0,0.0,0,0.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,0.0,0,0.0,,,,,,,,,,,,,,,,,,,,,,,,,0,0.0,0,0.0,0,0.0,0,0.0,,,,,,,,,,,,,,,,,,,,,,,,,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0,0,0.0
arduino:mbed:nicla_sense,0,0.0,0,0.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0,0.0,0,0.0

@facchinm facchinm merged commit 64bf2aa into arduino:master Nov 25, 2021
@facchinm
Copy link
Member

Thanks a lot for spotting this @per1234 ! Do you think it makes sense to make a new release immediately? How many users do you think are currently affected?

@per1234
Copy link
Contributor Author

per1234 commented Nov 25, 2021

How many users do you think are currently affected?

A search for the error message only returns one report.

I believe @jhansson-ard was also affected.

So that's a total of two affected users that I am aware of, over the course of the ~7 days since it was released.

@umbynos
Copy link
Contributor

umbynos commented Nov 25, 2021

I can confirm the fix is working on windows

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants