Package: arduino-mk Version: 1.5.2-2.1 Followup-For: Bug #856870 X-Debbugs-Cc: d...@shallowsky.com
Dear Maintainer, This bug is still a problem in April 2024. I built in an old project that used to work with arduino-mk, but now, make-upload fails with: <charon>- make upload ~/src/arduino/blink ------------------------- Arduino.mk Configuration: - [AUTODETECTED] CURRENT_OS = LINUX - [AUTODETECTED] ARDUINO_DIR = /usr/share/arduino - [COMPUTED] ARDMK_DIR = /usr/share/arduino (relative to Common.mk) - [AUTODETECTED] ARDUINO_VERSION = 1819 - [DEFAULT] ARCHITECTURE = avr - [DEFAULT] ARDMK_VENDOR = arduino - [AUTODETECTED] ARDUINO_PREFERENCES_PATH = /home/akkana/.arduino15/preferences.txt - [AUTODETECTED] ARDUINO_SKETCHBOOK = /home/akkana/Arduino (from arduino preferences file) - [BUNDLED] AVR_TOOLS_DIR = /usr/share/arduino/hardware/tools/avr (in Arduino distribution) - [COMPUTED] ARDUINO_LIB_PATH = /usr/share/arduino/libraries (from ARDUINO_DIR) - [COMPUTED] ARDUINO_PLATFORM_LIB_PATH = /usr/share/arduino/hardware/arduino/avr/libraries (from ARDUINO_DIR) - [COMPUTED] ARDUINO_VAR_PATH = /usr/share/arduino/hardware/arduino/avr/variants (from ARDUINO_DIR) - [COMPUTED] BOARDS_TXT = /usr/share/arduino/hardware/arduino/avr/boards.txt (from ARDUINO_DIR) - [DEFAULT] USER_LIB_PATH = /home/akkana/Arduino/libraries (in user sketchbook) - [DEFAULT] PRE_BUILD_HOOK = pre-build-hook.sh - [USER] BOARD_TAG = uno - [COMPUTED] CORE = arduino (from build.core) - [COMPUTED] VARIANT = standard (from build.variant) - [COMPUTED] OBJDIR = build-uno (from BOARD_TAG) - [COMPUTED] ARDUINO_CORE_PATH = /usr/share/arduino/hardware/arduino/avr/cores/arduino (from ARDUINO_DIR, BOARD_TAG and boards.txt) - [ASSUMED] MONITOR_BAUDRATE = 9600 - [DEFAULT] OPTIMIZATION_LEVEL = s - [DEFAULT] MCU_FLAG_NAME = mmcu - [DEFAULT] CFLAGS_STD = -std=gnu11 -flto -fno-fat-lto-objects - [DEFAULT] CXXFLAGS_STD = -std=gnu++11 -fno-threadsafe-statics -flto - [AUTODETECTED] DEVICE_PATH = /dev/ttyACM0 - [DEFAULT] FORCE_MONITOR_PORT = - [AUTODETECTED] Size utility: AVR-aware for enhanced output - [COMPUTED] BOOTLOADER_PARENT = /usr/share/arduino/hardware/arduino/avr/bootloaders (from ARDUINO_DIR) - [COMPUTED] ARDMK_VERSION = 1.5 - [COMPUTED] CC_VERSION = 7.3.0 (avr-gcc) ------------------------- mkdir -p build-uno make reset make[1]: Entering directory '/home/akkana/src/arduino/blink' /usr/bin/ard-reset-arduino /dev/ttyACM0 make[1]: Leaving directory '/home/akkana/src/arduino/blink' make do_upload make[1]: Entering directory '/home/akkana/src/arduino/blink' /usr/share/arduino/hardware/tools/avr/bin/avrdude -q -V -p atmega328p -C /usr/share/arduino/hardware/tools/avr/etc/avrdude.conf -D -c arduino -b 115200 -P /dev/ttyACM0 \ -U flash:w:build-uno/blink_.hex:i avrdude warning: cannot determine realpath() of config file /usr/share/arduino/hardware/tools/avr/etc/avrdude.conf: No such file or directory avrdude OS error: cannot determine realpath() of config file (null): Invalid argument avrdude error: unable to process system wide configuration file (null) make[1]: *** [/usr/share/arduino/Arduino.mk:1462: do_upload] Error 1 make[1]: Leaving directory '/home/akkana/src/arduino/blink' make: *** [/usr/share/arduino/Arduino.mk:1455: upload] Error 2 The problem is the same as mentioned earlier in this bug: it's running avrdude with -C /usr/share/arduino/hardware/tools/avr/etc/avrdude.conf when the package actually installs that file as: /usr/share/arduino/hardware/tools/avrdude.conf Running the following command by hand successfully installs the binary: /usr/share/arduino/hardware/tools/avr/bin/avrdude -q -V -p atmega328p -C /usr/share/arduino/hardware/tools/avrdude.conf -D -c arduino -b 115200 -P /dev/ttyACM0 -U flash:w:build-uno/blink_.hex:i The arduino-mk package should be changed to reflect where the arduino package is actually installing avrdude.conf (dpkg -S says it comes from arduino, not from avrdude, oddly enough). The problematic lines seem to be in Arduino.mk around line 426: it's comparing whether $(ARDUINO_VERSION) is greater than 157, and the logic earlier for calculating $ARDUINO_VERSION is rather complicated, but it ends up doing cat /usr/share/arduino/lib/version.txt | sed -e 's/^[0-9]://g' -e 's/[.]//g' -e 's/\+.*//g' | head -c5 which ends up with ARDUINO_VERSION = 1819, so it's greater than 157, but the path is actually in the place specified for versions less than 157. Maybe it moved, then moved back? As a workaround, I commented out the version check as follows: ifndef AVRDUDE_CONF # ifeq ($(shell expr $(ARDUINO_VERSION) '>' 157), 1) # AVRDUDE_CONF = $(AVR_TOOLS_DIR)/etc/avrdude.conf # else AVRDUDE_CONF = $(AVR_TOOLS_DIR)/../avrdude.conf # endif endif and now make upload correctly uploads sketches to an Uno. -- System Information: Debian Release: trixie/sid APT prefers unstable APT policy: (600, 'unstable') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 6.7.9-amd64 (SMP w/8 CPU threads; PREEMPT) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set Shell: /bin/sh linked to /usr/bin/dash Init: systemd (via /run/systemd/system) Versions of packages arduino-mk depends on: ii arduino 2:1.8.19+dfsg1-2 ii make 4.3-4.1 ii python3 3.11.8-1 ii python3-serial 3.5-2 Versions of packages arduino-mk recommends: pn screen <none> arduino-mk suggests no packages. -- no debconf information