Skip to content

Please make the JSON output of board details deterministic #2209

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

Closed
3 tasks done
dankeboy36 opened this issue Jun 11, 2023 · 1 comment · Fixed by #2419
Closed
3 tasks done

Please make the JSON output of board details deterministic #2209

dankeboy36 opened this issue Jun 11, 2023 · 1 comment · Fixed by #2419
Assignees
Labels
topic: code Related to content of the project itself type: enhancement Proposed improvement

Comments

@dankeboy36
Copy link
Contributor

dankeboy36 commented Jun 11, 2023

Describe the request

If I run ./arduino-cli board details -b arduino:avr:unomini --format json twice, they give different JSON output. The contents are the same, but the JSON structure is not deterministic. It would be great if the CLI could do it. Thanks!

Describe the current behavior

Run ./arduino-cli board details -b arduino:avr:unomini --format json twice and compare the content. They're different.

./arduino-cli version \
&& ./arduino-cli board details -b arduino:avr:unomini --format json >> bd_1.json \
&& ./arduino-cli board details -b arduino:avr:unomini --format json >> bd_2.json \
&& diff bd_1.json bd_2.json >> bd_diff.diff
arduino-cli  Version: git-snapshot Commit: 8cd72974 Date: 2023-06-11T14:33:49Z
Click to see bd_diff.diff

177a178,187
>       "id": "jtag3isp",
>       "name": "Atmel JTAGICE3 (ISP mode)"
>     },
>     {
>       "platform": "Arduino AVR Boards",
>       "id": "parallel",
>       "name": "Parallel Programmer"
>     },
>     {
>       "platform": "Arduino AVR Boards",
183,184c193,194
<       "id": "usbGemma",
<       "name": "Arduino Gemma"
---
>       "id": "avrispmkii",
>       "name": "AVRISP mkII"
193,194c203,204
<       "id": "arduinoasispatmega32u4",
<       "name": "Arduino as ISP (ATmega32U4)"
---
>       "id": "atmel_ice",
>       "name": "Atmel-ICE (AVR)"
198,199c208,209
<       "id": "parallel",
<       "name": "Parallel Programmer"
---
>       "id": "jtag3",
>       "name": "Atmel JTAGICE3 (JTAG mode)"
203,204c213,214
<       "id": "avrispmkii",
<       "name": "AVRISP mkII"
---
>       "id": "usbGemma",
>       "name": "Arduino Gemma"
208,209c218,219
<       "id": "arduinoasisp",
<       "name": "Arduino as ISP"
---
>       "id": "buspirate",
>       "name": "BusPirate as ISP"
218,222d227
<       "id": "atmel_ice",
<       "name": "Atmel-ICE (AVR)"
<     },
<     {
<       "platform": "Arduino AVR Boards",
228,234c233,234
<       "id": "arduinoisporg",
<       "name": "ArduinoISP.org"
<     },
<     {
<       "platform": "Arduino AVR Boards",
<       "id": "jtag3",
<       "name": "Atmel JTAGICE3 (JTAG mode)"
---
>       "id": "arduinoisp",
>       "name": "ArduinoISP"
238,239c238,239
<       "id": "jtag3isp",
<       "name": "Atmel JTAGICE3 (ISP mode)"
---
>       "id": "arduinoisporg",
>       "name": "ArduinoISP.org"
243,244c243,244
<       "id": "arduinoisp",
<       "name": "ArduinoISP"
---
>       "id": "arduinoasispatmega32u4",
>       "name": "Arduino as ISP (ATmega32U4)"
248,249c248,249
<       "id": "buspirate",
<       "name": "BusPirate as ISP"
---
>       "id": "arduinoasisp",
>       "name": "Arduino as ISP"
371a372,373
>     "runtime.tools.mklittlefs-3.0.0-gnu12-dc7f933.path=/Users/akos.kitta/Library/Arduino15/packages/esp32/tools/mklittlefs/3.0.0-gnu12-dc7f933",
>     "runtime.tools.mkspiffs-0.2.3.path=/Users/akos.kitta/Library/Arduino15/packages/esp32/tools/mkspiffs/0.2.3",
376d377
<     "runtime.tools.serial-monitor-0.11.0.path=/Users/akos.kitta/Library/Arduino15/packages/builtin/tools/serial-monitor/0.11.0",
378,379c379
<     "runtime.tools.mkspiffs-0.2.3.path=/Users/akos.kitta/Library/Arduino15/packages/esp32/tools/mkspiffs/0.2.3",
<     "runtime.tools.mklittlefs-3.0.0-gnu12-dc7f933.path=/Users/akos.kitta/Library/Arduino15/packages/esp32/tools/mklittlefs/3.0.0-gnu12-dc7f933",
---
>     "runtime.tools.serial-monitor-0.11.0.path=/Users/akos.kitta/Library/Arduino15/packages/builtin/tools/serial-monitor/0.11.0",
385a386,393
>     "runtime.tools.arm-none-eabi-gcc.path=/Users/akos.kitta/Library/Arduino15/packages/arduino/tools/arm-none-eabi-gcc/7-2017q4",
>     "runtime.tools.arm-none-eabi-gcc-7-2017q4.path=/Users/akos.kitta/Library/Arduino15/packages/arduino/tools/arm-none-eabi-gcc/7-2017q4",
>     "runtime.tools.dfu-util.path=/Users/akos.kitta/Library/Arduino15/packages/arduino/tools/dfu-util/0.10.0-arduino1",
>     "runtime.tools.dfu-util-0.10.0-arduino1.path=/Users/akos.kitta/Library/Arduino15/packages/arduino/tools/dfu-util/0.10.0-arduino1",
>     "runtime.tools.ctags.path=/Users/akos.kitta/Library/Arduino15/packages/builtin/tools/ctags/5.8-arduino11",
>     "runtime.tools.ctags-5.8-arduino11.path=/Users/akos.kitta/Library/Arduino15/packages/builtin/tools/ctags/5.8-arduino11",
>     "runtime.tools.mdns-discovery.path=/Users/akos.kitta/Library/Arduino15/packages/builtin/tools/mdns-discovery/1.0.9",
>     "runtime.tools.mdns-discovery-1.0.9.path=/Users/akos.kitta/Library/Arduino15/packages/builtin/tools/mdns-discovery/1.0.9",
388,395d395
<     "runtime.tools.xtensa-esp32s3-elf-gcc.path=/Users/akos.kitta/Library/Arduino15/packages/esp32/tools/xtensa-esp32s3-elf-gcc/esp-2021r2-patch5-8.4.0",
<     "runtime.tools.xtensa-esp32s3-elf-gcc-esp-2021r2-patch5-8.4.0.path=/Users/akos.kitta/Library/Arduino15/packages/esp32/tools/xtensa-esp32s3-elf-gcc/esp-2021r2-patch5-8.4.0",
<     "runtime.tools.python3.path=/Users/akos.kitta/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1",
<     "runtime.tools.python3-3.7.2-post1.path=/Users/akos.kitta/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1",
<     "runtime.tools.mkspiffs.path=/Users/akos.kitta/Library/Arduino15/packages/esp8266/tools/mkspiffs/3.1.0-gcc10.3-e5f9fec",
<     "runtime.tools.mkspiffs-3.1.0-gcc10.3-e5f9fec.path=/Users/akos.kitta/Library/Arduino15/packages/esp8266/tools/mkspiffs/3.1.0-gcc10.3-e5f9fec",
<     "runtime.tools.xtensa-lx106-elf-gcc.path=/Users/akos.kitta/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.1.0-gcc10.3-e5f9fec",
<     "runtime.tools.xtensa-lx106-elf-gcc-3.1.0-gcc10.3-e5f9fec.path=/Users/akos.kitta/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.1.0-gcc10.3-e5f9fec",
398,405d397
<     "runtime.tools.imgtool.path=/Users/akos.kitta/Library/Arduino15/packages/arduino/tools/imgtool/1.8.0-arduino.1",
<     "runtime.tools.imgtool-1.8.0-arduino.1.path=/Users/akos.kitta/Library/Arduino15/packages/arduino/tools/imgtool/1.8.0-arduino.1",
<     "runtime.tools.serial-monitor.path=/Users/akos.kitta/Library/Arduino15/packages/builtin/tools/serial-monitor/0.13.0",
<     "runtime.tools.serial-monitor-0.13.0.path=/Users/akos.kitta/Library/Arduino15/packages/builtin/tools/serial-monitor/0.13.0",
<     "runtime.tools.teensy-monitor.path=/Users/akos.kitta/Library/Arduino15/packages/teensy/tools/teensy-monitor/1.57.2",
<     "runtime.tools.teensy-monitor-1.57.2.path=/Users/akos.kitta/Library/Arduino15/packages/teensy/tools/teensy-monitor/1.57.2",
<     "runtime.tools.teensy-compile.path=/Users/akos.kitta/Library/Arduino15/packages/teensy/tools/teensy-compile/5.4.1",
<     "runtime.tools.teensy-compile-5.4.1.path=/Users/akos.kitta/Library/Arduino15/packages/teensy/tools/teensy-compile/5.4.1",
408,409d399
<     "runtime.tools.arm-none-eabi-gcc.path=/Users/akos.kitta/Library/Arduino15/packages/arduino/tools/arm-none-eabi-gcc/7-2017q4",
<     "runtime.tools.arm-none-eabi-gcc-7-2017q4.path=/Users/akos.kitta/Library/Arduino15/packages/arduino/tools/arm-none-eabi-gcc/7-2017q4",
412,417c402,409
<     "runtime.tools.xtensa-esp32-elf-gcc.path=/Users/akos.kitta/Library/Arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0",
<     "runtime.tools.xtensa-esp32-elf-gcc-esp-2021r2-patch5-8.4.0.path=/Users/akos.kitta/Library/Arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0",
<     "runtime.tools.esptool_py.path=/Users/akos.kitta/Library/Arduino15/packages/esp32/tools/esptool_py/4.5.1",
<     "runtime.tools.esptool_py-4.5.1.path=/Users/akos.kitta/Library/Arduino15/packages/esp32/tools/esptool_py/4.5.1",
<     "runtime.tools.bossac.path=/Users/akos.kitta/Library/Arduino15/packages/arduino/tools/bossac/1.9.1-arduino2",
<     "runtime.tools.bossac-1.9.1-arduino2.path=/Users/akos.kitta/Library/Arduino15/packages/arduino/tools/bossac/1.9.1-arduino2",
---
>     "runtime.tools.teensy-monitor.path=/Users/akos.kitta/Library/Arduino15/packages/teensy/tools/teensy-monitor/1.57.2",
>     "runtime.tools.teensy-monitor-1.57.2.path=/Users/akos.kitta/Library/Arduino15/packages/teensy/tools/teensy-monitor/1.57.2",
>     "runtime.tools.teensy-compile.path=/Users/akos.kitta/Library/Arduino15/packages/teensy/tools/teensy-compile/5.4.1",
>     "runtime.tools.teensy-compile-5.4.1.path=/Users/akos.kitta/Library/Arduino15/packages/teensy/tools/teensy-compile/5.4.1",
>     "runtime.tools.xtensa-esp32s2-elf-gcc.path=/Users/akos.kitta/Library/Arduino15/packages/esp32/tools/xtensa-esp32s2-elf-gcc/esp-2021r2-patch5-8.4.0",
>     "runtime.tools.xtensa-esp32s2-elf-gcc-esp-2021r2-patch5-8.4.0.path=/Users/akos.kitta/Library/Arduino15/packages/esp32/tools/xtensa-esp32s2-elf-gcc/esp-2021r2-patch5-8.4.0",
>     "runtime.tools.xtensa-lx106-elf-gcc.path=/Users/akos.kitta/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.1.0-gcc10.3-e5f9fec",
>     "runtime.tools.xtensa-lx106-elf-gcc-3.1.0-gcc10.3-e5f9fec.path=/Users/akos.kitta/Library/Arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/3.1.0-gcc10.3-e5f9fec",
420,423c412,417
<     "runtime.tools.dfu-util.path=/Users/akos.kitta/Library/Arduino15/packages/arduino/tools/dfu-util/0.10.0-arduino1",
<     "runtime.tools.dfu-util-0.10.0-arduino1.path=/Users/akos.kitta/Library/Arduino15/packages/arduino/tools/dfu-util/0.10.0-arduino1",
<     "runtime.tools.ctags.path=/Users/akos.kitta/Library/Arduino15/packages/builtin/tools/ctags/5.8-arduino11",
<     "runtime.tools.ctags-5.8-arduino11.path=/Users/akos.kitta/Library/Arduino15/packages/builtin/tools/ctags/5.8-arduino11",
---
>     "runtime.tools.serial-monitor.path=/Users/akos.kitta/Library/Arduino15/packages/builtin/tools/serial-monitor/0.13.0",
>     "runtime.tools.serial-monitor-0.13.0.path=/Users/akos.kitta/Library/Arduino15/packages/builtin/tools/serial-monitor/0.13.0",
>     "runtime.tools.xtensa-esp-elf-gdb.path=/Users/akos.kitta/Library/Arduino15/packages/esp32/tools/xtensa-esp-elf-gdb/11.2_20220823",
>     "runtime.tools.xtensa-esp-elf-gdb-11.2_20220823.path=/Users/akos.kitta/Library/Arduino15/packages/esp32/tools/xtensa-esp-elf-gdb/11.2_20220823",
>     "runtime.tools.xtensa-esp32s3-elf-gcc.path=/Users/akos.kitta/Library/Arduino15/packages/esp32/tools/xtensa-esp32s3-elf-gcc/esp-2021r2-patch5-8.4.0",
>     "runtime.tools.xtensa-esp32s3-elf-gcc-esp-2021r2-patch5-8.4.0.path=/Users/akos.kitta/Library/Arduino15/packages/esp32/tools/xtensa-esp32s3-elf-gcc/esp-2021r2-patch5-8.4.0",
425a420,429
>     "runtime.tools.teensy-discovery.path=/Users/akos.kitta/Library/Arduino15/packages/teensy/tools/teensy-discovery/1.57.2",
>     "runtime.tools.teensy-discovery-1.57.2.path=/Users/akos.kitta/Library/Arduino15/packages/teensy/tools/teensy-discovery/1.57.2",
>     "runtime.tools.bossac.path=/Users/akos.kitta/Library/Arduino15/packages/arduino/tools/bossac/1.9.1-arduino2",
>     "runtime.tools.bossac-1.9.1-arduino2.path=/Users/akos.kitta/Library/Arduino15/packages/arduino/tools/bossac/1.9.1-arduino2",
>     "runtime.tools.imgtool.path=/Users/akos.kitta/Library/Arduino15/packages/arduino/tools/imgtool/1.8.0-arduino.1",
>     "runtime.tools.imgtool-1.8.0-arduino.1.path=/Users/akos.kitta/Library/Arduino15/packages/arduino/tools/imgtool/1.8.0-arduino.1",
>     "runtime.tools.python3.path=/Users/akos.kitta/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1",
>     "runtime.tools.python3-3.7.2-post1.path=/Users/akos.kitta/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1",
>     "runtime.tools.mkspiffs.path=/Users/akos.kitta/Library/Arduino15/packages/esp8266/tools/mkspiffs/3.1.0-gcc10.3-e5f9fec",
>     "runtime.tools.mkspiffs-3.1.0-gcc10.3-e5f9fec.path=/Users/akos.kitta/Library/Arduino15/packages/esp8266/tools/mkspiffs/3.1.0-gcc10.3-e5f9fec",
428,431d431
<     "runtime.tools.xtensa-esp32s2-elf-gcc.path=/Users/akos.kitta/Library/Arduino15/packages/esp32/tools/xtensa-esp32s2-elf-gcc/esp-2021r2-patch5-8.4.0",
<     "runtime.tools.xtensa-esp32s2-elf-gcc-esp-2021r2-patch5-8.4.0.path=/Users/akos.kitta/Library/Arduino15/packages/esp32/tools/xtensa-esp32s2-elf-gcc/esp-2021r2-patch5-8.4.0",
<     "runtime.tools.xtensa-esp-elf-gdb.path=/Users/akos.kitta/Library/Arduino15/packages/esp32/tools/xtensa-esp-elf-gdb/11.2_20220823",
<     "runtime.tools.xtensa-esp-elf-gdb-11.2_20220823.path=/Users/akos.kitta/Library/Arduino15/packages/esp32/tools/xtensa-esp-elf-gdb/11.2_20220823",
434,439c434,439
<     "runtime.tools.mdns-discovery.path=/Users/akos.kitta/Library/Arduino15/packages/builtin/tools/mdns-discovery/1.0.9",
<     "runtime.tools.mdns-discovery-1.0.9.path=/Users/akos.kitta/Library/Arduino15/packages/builtin/tools/mdns-discovery/1.0.9",
<     "runtime.tools.teensy-discovery.path=/Users/akos.kitta/Library/Arduino15/packages/teensy/tools/teensy-discovery/1.57.2",
<     "runtime.tools.teensy-discovery-1.57.2.path=/Users/akos.kitta/Library/Arduino15/packages/teensy/tools/teensy-discovery/1.57.2",
<     "extra.time.utc=1686494811",
<     "extra.time.local=1686502011",
---
>     "runtime.tools.esptool_py.path=/Users/akos.kitta/Library/Arduino15/packages/esp32/tools/esptool_py/4.5.1",
>     "runtime.tools.esptool_py-4.5.1.path=/Users/akos.kitta/Library/Arduino15/packages/esp32/tools/esptool_py/4.5.1",
>     "runtime.tools.xtensa-esp32-elf-gcc.path=/Users/akos.kitta/Library/Arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0",
>     "runtime.tools.xtensa-esp32-elf-gcc-esp-2021r2-patch5-8.4.0.path=/Users/akos.kitta/Library/Arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/esp-2021r2-patch5-8.4.0",
>     "extra.time.utc=1686494812",
>     "extra.time.local=1686502012",

Arduino CLI version

8cd7297

Operating system

macOS

Operating system version

11.7.7

Additional context

No response

Issue checklist

  • I searched for previous requests in the issue tracker
  • I verified the feature was still missing when using the nightly build
  • My request contains all necessary details
@dankeboy36 dankeboy36 added the type: enhancement Proposed improvement label Jun 11, 2023
@per1234 per1234 added the topic: code Related to content of the project itself label Jun 12, 2023
@umbynos
Copy link
Contributor

umbynos commented Sep 1, 2023

Should be similar to #2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
topic: code Related to content of the project itself type: enhancement Proposed improvement
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants