arduino-cli icon indicating copy to clipboard operation
arduino-cli copied to clipboard

Spurious "No such file or directory" error when library's path contains post-ASCII characters

Open PKGeorgiev opened this issue 5 years ago • 0 comments

Describe the problem

If a library is installed under a path that contains Cyrillic characters, Arduino CLI is unable to discover it.

Compilation of sketches with an #include directive for a header file of a valid library fails with a "No such file or directory" error.

To reproduce

$ arduino-cli version
arduino-cli.exe  Version: git-snapshot Commit: 4b70e023 Date: 2023-01-31T03:19:27Z

$ export ARDUINO_DIRECTORIES_USER="/tmp/arduino-cli-directories/мікроконтролер"

$ arduino-cli lib install Arduino_JSON

[...]

$ mkdir /tmp/FooSketch

$ printf "#include <Arduino_JSON.h>\nvoid setup() {}\nvoid loop() {}" > /tmp/FooSketch/FooSketch.ino

$ arduino-cli compile --fqbn arduino:avr:uno /tmp/FooSketch/FooSketch.ino
C:\Users\per\AppData\Local\Temp\FooSketch\FooSketch.ino:1:10: fatal error: Arduino_JSON.h: No such file or directory
 #include <Arduino_JSON.h>
          ^~~~~~~~~~~~~~~~
compilation terminated.


Used library Version Path
Arduino_JSON 0.2.0   C:\Users\per\AppData\Local\Temp\arduino-cli-directories\мікроконтролер\libraries\Arduino_JSON

Used platform Version Path
arduino:avr   1.8.6   C:\Users\per\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6
Error during build: exit status 1

Expected behavior

Any path supported by the file system is also supported by the library discovery system

Arduino CLI version

Original report

Arduino IDE 1.8.10

Last verified with

a527c7cdea0694da3034ba9995b7c9eaecfe074b

Operating system

Windows

Operating system version

  • 10
  • 11

Additional context

The issue is not specific to Cyrillic. For example, it also occurs with a folder named or Κώστας.


The fault only occurs on Windows. I am not able to reproduce it on Ubuntu 22.04 or macOS Ventura machines.


After changing system's locale from English to Bulgarian (win1251) + restart, the compilation succeeded. Unfortunately this is not viable solution, because we have many computers (>150) and changing system locale requires admin privileges.

My suggestion is that the IDE is not using the unicode version of the API when searching for libraries?


This is more likely to occur for those using Microsoft Onedrive because the default location of the sketchbook is:

C:\Users\<username>\OneDrive\<localized "Documents">\Arduino

The <localized "Documents"> in the path above is a placeholder the word "Documents" localized for the user's locale (e.g., 文档 or Документы)

Additional reports

  • https://forum.arduino.cc/t/wemos-d1-mini-upload-problem/1084371
  • https://forum.arduino.cc/t/no-such-file-or-directory-but-i-already-had-this-file/961118
  • https://forum.arduino.cc/t/fatal-error-adafruit-neopixel-h-no-such-file-or-directory-but-i-have-it/1070069/15
  • https://forum.arduino.cc/t/library-gives-error/1089633
  • https://forum.arduino.cc/t/except-for-the-available-libraries-i-cant-use-other-libraries-even-though-i-have-downloaded-them/1092556
  • https://forum.arduino.cc/t/compilation-error-due-to-library-hpp-file-not-being-detected/1127096
  • https://forum.arduino.cc/t/which-arduino-nano-clone-i-have/1192347/11
  • https://forum.arduino.cc/t/cannot-verify-the-arduino-code-because-the-installed-library-cannot-be-found/1215989
  • https://forum.arduino.cc/t/10-fatal-error-onewire-h-no-such-file-or-directory/1223739
  • https://forum.arduino.cc/t/unknown-error-for-arduino-1-8-19/1234260
  • https://forum.arduino.cc/t/compilation-of-keypad-library-example-fails-key-h-no-such-file-or-directory/1241109
  • https://forum.arduino.cc/t/mg135-library-please-answer/1254438
  • https://forum.arduino.cc/t/i-keep-getting-library-compilation-error-despite-having-the-library/1255423
  • https://forum.arduino.cc/t/no-such-file-or-directory/1255862/1
  • https://forum.arduino.cc/t/no-such-file-or-directory/1255862/18
  • https://forum.arduino.cc/t/arduino-ide-2-3-2-do-not-read-any-installed-library/1256849
  • https://forum.arduino.cc/t/have-library-error-eventhough-installed/1258722
  • https://forum.arduino.cc/t/arduino-ide-cannot-find-time-library-even-though-it-exists/1261462
  • https://forum.arduino.cc/t/adafruit-bmp280-h-no-such-file-or-directory/1265651
  • https://forum.arduino.cc/t/compilation-error-adafruit-mpu6050-h-no-such-file-or-directory/1279099
  • https://forum.arduino.cc/t/pcm-h-no-such-file-or-directory/1282193
  • https://forum.arduino.cc/t/no-such-file-directory-even-though-i-have-already-installed-the-related-library/1300806
  • https://forum.arduino.cc/t/no-such-library-error-please-help/1302038
  • https://forum.arduino.cc/t/fatal-error-no-such-file-or-directory/1304273
  • https://forum.arduino.cc/t/compilation-error-for-missing-header-file-even-though-i-have-the-library-installed/1312514

Issue checklist

  • [X] I searched for previous reports in the issue tracker
  • [X] I verified the problem still occurs when using the nightly build
  • [X] My report contains all necessary details

PKGeorgiev avatar Dec 26 '19 19:12 PKGeorgiev