Skip to content

Errors building for rp2040/2350: clock_gettime / __atomic_test_and_set #177

@snaens

Description

@snaens

Issue template

  • Hardware description: pi pico * / rp2040 / rp2350
  • Installation type: platformio CLI
  • Version or commit hash: microros jazzy

Steps to reproduce the issue

Try to build a simple script for rp2040 or rp2350, using…

  1. https://github.com/maxgerhardt/platform-raspberrypi.git#1ab176cd4d4edd38a156e0c25e12e86ad96b21ef
  2. https://github.com/maxgerhardt/platform-raspberrypi.git
  3. https://github.com/hippo5329/platform-raspberrypi.git

Platformio.ini:

[env:pico]
platform = <platform link>
board = rpipico <or rpipico2>
framework = arduino
board_build.core = earlephilhower

board_microros_distro = jazzy
board_microros_transport = serial
lib_ldf_mode = chain+

lib_deps =
    https://github.com/micro-ROS/micro_ros_platformio

Code:
https://github.com/micro-ROS/micro_ros_platformio/blob/main/examples/micro-ros_publisher/src/Main.cpp

Procedure:
3 Docker debian containers, each with a fresh platformio install.

Dockerfile
FROM debian:bookworm

RUN apt update && apt install \
      git python3-venv wget nano gcc-arm-none-eabi cmake g++ gcc -y \
      && rm -rf /var/cache/apt/

RUN wget -O get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py &&\
    python3 get-platformio.py

RUN mkdir -p /usr/local/bin &&\
    ln -s ~/.platformio/penv/bin/platformio /usr/local/bin/platformio &&\
    ln -s ~/.platformio/penv/bin/pio /usr/local/bin/pio &&\
    ln -s ~/.platformio/penv/bin/piodebuggdb /usr/local/bin/piodebuggdb &&\
    mkdir -p /etc/udev/rules.d/ &&\
    wget -O /etc/udev/rules.d/99-platformio-udev.rules https://raw.githubusercontent.com/platformio/platformio-core/develop/platformio/assets/system/99-platformio-udev.rules

ENTRYPOINT ["/bin/bash"]

run:

git clone https://github.com/micro-ROS/micro_ros_platformio/
cd micro_ros_platformio/examples/micro-ros_publisher/ #use aforementioned example 
nano -n platformio.ini #replace with my `platformio.ini`
# each container uses one of the 3 platform links
pio run

Expected behavior

All 3 platforms should build fine.

Actual behavior

  1. Compiles fine: https://github.com/maxgerhardt/platform-raspberrypi.git#1ab176cd4d4edd38a156e0c25e12e86ad96b21ef
Shortened log
Building in release mode
Compiling .pio/build/pico/FrameworkArduinoBootloader/boot2_w25q080_2_padded_checksum.S.o
Compiling .pio/build/pico/src/Main.cpp.o
Generating linkerscript /root/micro_ros_platformio/examples/micro-ros_publisher/.pio/build/pico/memmap_default.ld
Compiling .pio/build/pico/libd94/micro_ros_platformio/platform_code/arduino/clock_gettime.cpp.o
Compiling .pio/build/pico/libd94/micro_ros_platformio/platform_code/arduino/serial/micro_ros_transport.cpp.o
Compiling .pio/build/pico/FrameworkArduino/BluetoothDebug.cpp.o
Compiling .pio/build/pico/FrameworkArduino/Bootsel.cpp.o
Compiling .pio/build/pico/FrameworkArduino/CoreMutex.cpp.o
Compiling .pio/build/pico/FrameworkArduino/FS.cpp.o
Compiling .pio/build/pico/FrameworkArduino/PIOProgram.cpp.o
Compiling .pio/build/pico/FrameworkArduino/RP2040Support.cpp.o
Compiling .pio/build/pico/FrameworkArduino/RP2040USB.cpp.o
Compiling .pio/build/pico/FrameworkArduino/SerialPIO.cpp.o
Compiling .pio/build/pico/FrameworkArduino/SerialUART.cpp.o
Compiling .pio/build/pico/FrameworkArduino/SerialUSB.cpp.o
Compiling .pio/build/pico/FrameworkArduino/StackThunk.cpp.o
Compiling .pio/build/pico/FrameworkArduino/Tone.cpp.o
Compiling .pio/build/pico/FrameworkArduino/WMath.cpp.o
Compiling .pio/build/pico/FrameworkArduino/_freertos.cpp.o
Compiling .pio/build/pico/FrameworkArduino/api/Common.cpp.o
Compiling .pio/build/pico/FrameworkArduino/api/IPAddress.cpp.o
Compiling .pio/build/pico/FrameworkArduino/api/PluggableUSB.cpp.o
Compiling .pio/build/pico/FrameworkArduino/api/Print.cpp.o
src/Main.cpp: In function 'void setup()':
src/Main.cpp:64:34: warning: 'rcl_ret_t rclc_timer_init_default(rcl_timer_t*, rclc_support_t*, uint64_t, rcl_timer_callback_t)' is deprecated: Call rclc_timer_init_default2 instead [-Wdeprecated-declarations]
   64 |   RCCHECK(rclc_timer_init_default(
      |           ~~~~~~~~~~~~~~~~~~~~~~~^
   65 |     &timer,
      |     ~~~~~~~                       
   66 |     &support,
      |     ~~~~~~~~~                     
   67 |     RCL_MS_TO_NS(timer_timeout),
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
   68 |     timer_callback));
      |     ~~~~~~~~~~~~~~~               
src/Main.cpp:23:43: note: in definition of macro 'RCCHECK'
   23 | #define RCCHECK(fn) { rcl_ret_t temp_rc = fn; if((temp_rc != RCL_RET_OK)){error_loop();}}
      |                                           ^~
In file included from .pio/libdeps/pico/micro_ros_platformio/libmicroros/include/rclc/rclc.h:32,
                 from src/Main.cpp:5:
.pio/libdeps/pico/micro_ros_platformio/libmicroros/include/rclc/timer.h:63:1: note: declared here
   63 | rclc_timer_init_default(
      | ^~~~~~~~~~~~~~~~~~~~~~~
Compiling .pio/build/pico/FrameworkArduino/api/Stream.cpp.o
Compiling .pio/build/pico/FrameworkArduino/api/String.cpp.o
Compiling .pio/build/pico/FrameworkArduino/cyw43_wrappers.cpp.o
Compiling .pio/build/pico/FrameworkArduino/delay.cpp.o
Archiving .pio/build/pico/libd94/libmicro_ros_platformio.a
Indexing .pio/build/pico/libd94/libmicro_ros_platformio.a
Compiling .pio/build/pico/FrameworkArduino/libb64/cdecode.cpp.o
Compiling .pio/build/pico/FrameworkArduino/libb64/cencode.cpp.o
Compiling .pio/build/pico/FrameworkArduino/lock.cpp.o
Compiling .pio/build/pico/FrameworkArduino/lwip_wrap.cpp.o
Compiling .pio/build/pico/FrameworkArduino/main.cpp.o
Compiling .pio/build/pico/FrameworkArduino/malloc-lock.cpp.o
Compiling .pio/build/pico/FrameworkArduino/posix.cpp.o
Compiling .pio/build/pico/FrameworkArduino/sdkoverride/att_db.c.o
Compiling .pio/build/pico/FrameworkArduino/sdkoverride/btstack_flash_bank.cpp.o
Compiling .pio/build/pico/FrameworkArduino/sdkoverride/hids_device.c.o
Compiling .pio/build/pico/FrameworkArduino/sdkoverride/inet_chksum.cpp.o
Compiling .pio/build/pico/FrameworkArduino/sdkoverride/pico_bootsel_via_double_reset.c.o
Compiling .pio/build/pico/FrameworkArduino/stdlib_noniso.cpp.o
Compiling .pio/build/pico/FrameworkArduino/wiring_analog.cpp.o
Compiling .pio/build/pico/FrameworkArduino/wiring_digital.cpp.o
Compiling .pio/build/pico/FrameworkArduino/wiring_private.cpp.o
Compiling .pio/build/pico/FrameworkArduino/wiring_pulse.cpp.o
Compiling .pio/build/pico/FrameworkArduino/wiring_shift.cpp.o
Archiving .pio/build/pico/libFrameworkArduino.a
Indexing .pio/build/pico/libFrameworkArduino.a
Linking .pio/build/pico/firmware.elf
Generating UF2 image
elf2uf2 ".pio/build/pico/firmware.elf" ".pio/build/pico/firmware.uf2"
Retrieving maximum program size .pio/build/pico/firmware.elf
Flash size: 2.00MB
Sketch size: 2.00MB
Filesystem size: 0.00MB
Maximium Sketch size: 2093056 EEPROM start: 0x101ff000 Filesystem start: 0x101ff000 Filesystem end: 0x101ff000
Checking size .pio/build/pico/firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [=         ]  11.5% (used 30140 bytes from 262144 bytes)
Flash: [=         ]   5.7% (used 118272 bytes from 2093056 bytes)
Building .pio/build/pico/firmware.bin
Building .pio/build/pico/firmware.bin.signed

log_1.txt

  1. Doesn't compile: https://github.com/maxgerhardt/platform-raspberrypi.git
Shortened log
Building micro-ROS library
Build mcu micro-ROS environment failed: 
--- stderr: rmw_implementation_cmake
CMake Warning:
  Manually-specified variables were not used by the project:

    BUILD_SHARED_LIBS
    CMAKE_POSITION_INDEPENDENT_CODE
    THIRDPARTY


---
--- stderr: test_interface_files
CMake Warning:
  Manually-specified variables were not used by the project:

    BUILD_SHARED_LIBS
    CMAKE_POSITION_INDEPENDENT_CODE
    THIRDPARTY


---
--- stderr: rosidl_typesupport_interface
CMake Warning:
  Manually-specified variables were not used by the project:

    CMAKE_POSITION_INDEPENDENT_CODE
    THIRDPARTY


---
--- stderr: tracetools
CMake Warning:
  Manually-specified variables were not used by the project:

    THIRDPARTY


---
--- stderr: rcutils
CMake Warning:
  Manually-specified variables were not used by the project:

    ENABLE_TESTING
    THIRDPARTY


In file included from /root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/error_handling.c:35:
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/./error_handling_helpers.h: In function '__rcutils_convert_uint64_t_into_c_str':
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/./error_handling_helpers.h:109:48: warning: unused parameter 'number' [-Wunused-parameter]
  109 | __rcutils_convert_uint64_t_into_c_str(uint64_t number, char * buffer, size_t buffer_size)
      |                                       ~~~~~~~~~^~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/./error_handling_helpers.h:109:63: warning: unused parameter 'buffer' [-Wunused-parameter]
  109 | __rcutils_convert_uint64_t_into_c_str(uint64_t number, char * buffer, size_t buffer_size)
      |                                                        ~~~~~~~^~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/./error_handling_helpers.h:109:78: warning: unused parameter 'buffer_size' [-Wunused-parameter]
  109 | __rcutils_convert_uint64_t_into_c_str(uint64_t number, char * buffer, size_t buffer_size)
      |                                                                       ~~~~~~~^~~~~~~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/./error_handling_helpers.h: In function '__rcutils_format_error_string':
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/./error_handling_helpers.h:142:28: warning: unused parameter 'error_string' [-Wunused-parameter]
  142 |   rcutils_error_string_t * error_string,
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/./error_handling_helpers.h:143:33: warning: unused parameter 'error_state' [-Wunused-parameter]
  143 |   const rcutils_error_state_t * error_state)
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/error_handling.c: In function 'rcutils_get_error_string':
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/error_handling.c:240:38: warning: initializer-string for array of 'char' is too long
  240 |     return (rcutils_error_string_t) {"error not set"};  // NOLINT(readability/braces)
      |                                      ^~~~~~~~~~~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/error_handling.c:240:38: note: (near initialization for '(anonymous).str')
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/./error_handling_helpers.h: At top level:
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/./error_handling_helpers.h:109:1: warning: '__rcutils_convert_uint64_t_into_c_str' defined but not used [-Wunused-function]
  109 | __rcutils_convert_uint64_t_into_c_str(uint64_t number, char * buffer, size_t buffer_size)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/./error_handling_helpers.h:91:1: warning: '__rcutils_reverse_str' defined but not used [-Wunused-function]
   91 | __rcutils_reverse_str(char * string_in, size_t string_len)
      | ^~~~~~~~~~~~~~~~~~~~~
In function 'rcutils_strndup',
    inlined from 'rcutils_strdup' at /root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/strdup.c:35:10:
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/strdup.c:47:14: warning: 'memchr' specified bound 4294967295 exceeds maximum object size 2147483647 [-Wstringop-overread]
   47 |   char * p = memchr(str, '\0', max_length);
      |              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/atomic_64bits.c:53:10: warning: conflicting types for built-in function '__atomic_load_8'; expected 'long long unsigned int(const volatile void *, int)' [-Wbuiltin-declaration-mismatch]
   53 | uint64_t __atomic_load_8(uint64_t *mem, int model) {
      |          ^~~~~~~~~~~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/atomic_64bits.c:62:6: warning: conflicting types for built-in function '__atomic_store_8'; expected 'void(volatile void *, long long unsigned int,  int)' [-Wbuiltin-declaration-mismatch]
   62 | void __atomic_store_8(uint64_t *mem, uint64_t val, int model) {
      |      ^~~~~~~~~~~~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/atomic_64bits.c:70:10: warning: conflicting types for built-in function '__atomic_exchange_8'; expected 'long long unsigned int(volatile void *, long long unsigned int,  int)' [-Wbuiltin-declaration-mismatch]
   70 | uint64_t __atomic_exchange_8(uint64_t *mem, uint64_t val, int model) {
      |          ^~~~~~~~~~~~~~~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/atomic_64bits.c:80:10: warning: conflicting types for built-in function '__atomic_fetch_add_8'; expected 'long long unsigned int(volatile void *, long long unsigned int,  int)' [-Wbuiltin-declaration-mismatch]
   80 | uint64_t __atomic_fetch_add_8(uint64_t *mem, uint64_t val, int model) {
      |          ^~~~~~~~~~~~~~~~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/time_unix.c:48:4: warning: #warning before C23 is a GCC extension
   48 | #  warning no monotonic clock function available
      |    ^~~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/time_unix.c:48:4: warning: #warning no monotonic clock function available [-Wcpp]
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/time_unix.c: In function 'rcutils_system_time_now':
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/time_unix.c:65:7: error: implicit declaration of function 'clock_gettime' [-Wimplicit-function-declaration]
   65 |   if (clock_gettime(CLOCK_REALTIME, &timespec_now) < 0) {
      |       ^~~~~~~~~~~~~
gmake[2]: *** [CMakeFiles/rcutils.dir/build.make:432: CMakeFiles/rcutils.dir/src/time_unix.c.obj] Error 1
gmake[2]: *** Waiting for unfinished jobs....
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/logging.c: In function 'rcutils_get_env_var_zero_or_one':
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/logging.c:154:35: warning: unused parameter 'zero_semantic' [-Wunused-parameter]
  154 |   const char * name, const char * zero_semantic,
      |                      ~~~~~~~~~~~~~^~~~~~~~~~~~~
/root/micro_ros_platformio/examples/micro-ros_publisher/.pio/libdeps/pico/micro_ros_platformio/build/mcu/src/rcutils/src/logging.c:155:16: warning: unused parameter 'one_semantic' [-Wunused-parameter]
  155 |   const char * one_semantic)
      |   ~~~~~~~~~~~~~^~~~~~~~~~~~
gmake[1]: *** [CMakeFiles/Makefile2:192: CMakeFiles/rcutils.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2
---
Failed   <<< rcutils [4.10s, exited with code 2]

log_2.txt

  1. Doesn't compile: https://github.com/hippo5329/platform-raspberrypi.git
Shortened log
Linking .pio/build/pico/firmware.elf
/root/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/14.2.0/../../../../arm-none-eabi/bin/ld: /root/.platformio/packages/framework-arduinopico/lib/rp2040/libpico.a(atomic.c.o): in function `__atomic_load_8':
/home/earle/Arduino/hardware/pico/rp2040/pico-sdk/src/rp2_common/pico_atomic/atomic.c:121: multiple definition of `__atomic_load_8'; .pio/libdeps/pico/micro_ros_platformio/libmicroros/libmicroros.a(librcutils__atomic_64bits.c.obj):atomic_64bits.c:(.text.__atomic_load_8+0x0): first defined here
/root/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/14.2.0/../../../../arm-none-eabi/bin/ld: /root/.platformio/packages/framework-arduinopico/lib/rp2040/libpico.a(atomic.c.o): in function `__atomic_store_8':
/home/earle/Arduino/hardware/pico/rp2040/pico-sdk/src/rp2_common/pico_atomic/atomic.c:132: multiple definition of `__atomic_store_8'; .pio/libdeps/pico/micro_ros_platformio/libmicroros/libmicroros.a(librcutils__atomic_64bits.c.obj):atomic_64bits.c:(.text.__atomic_store_8+0x0): first defined here
/root/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/14.2.0/../../../../arm-none-eabi/bin/ld: /root/.platformio/packages/framework-arduinopico/lib/rp2040/libpico.a(atomic.c.o): in function `__atomic_exchange_8':
/home/earle/Arduino/hardware/pico/rp2040/pico-sdk/src/rp2_common/pico_atomic/atomic.c:163: multiple definition of `__atomic_exchange_8'; .pio/libdeps/pico/micro_ros_platformio/libmicroros/libmicroros.a(librcutils__atomic_64bits.c.obj):atomic_64bits.c:(.text.__atomic_exchange_8+0x0): first defined here
/root/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/14.2.0/../../../../arm-none-eabi/bin/ld: /root/.platformio/packages/framework-arduinopico/lib/rp2040/libpico.a(atomic.c.o): in function `__atomic_fetch_add_8':
/home/earle/Arduino/hardware/pico/rp2040/pico-sdk/src/rp2_common/pico_atomic/atomic.c:189: multiple definition of `__atomic_fetch_add_8'; .pio/libdeps/pico/micro_ros_platformio/libmicroros/libmicroros.a(librcutils__atomic_64bits.c.obj):atomic_64bits.c:(.text.__atomic_fetch_add_8+0x0): first defined here
/root/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/14.2.0/../../../../arm-none-eabi/bin/ld: .pio/libdeps/pico/micro_ros_platformio/libmicroros/libmicroros.a(librcutils__atomic_64bits.c.obj): in function `__atomic_load_8':
atomic_64bits.c:(.text.__atomic_load_8+0x2a): undefined reference to `__atomic_test_and_set'
/root/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/14.2.0/../../../../arm-none-eabi/bin/ld: .pio/libdeps/pico/micro_ros_platformio/libmicroros/libmicroros.a(librcutils__atomic_64bits.c.obj): in function `__atomic_store_8':
atomic_64bits.c:(.text.__atomic_store_8+0x2e): undefined reference to `__atomic_test_and_set'
/root/.platformio/packages/toolchain-rp2040-earlephilhower/bin/../lib/gcc/arm-none-eabi/14.2.0/../../../../arm-none-eabi/bin/ld: .pio/libdeps/pico/micro_ros_platformio/libmicroros/libmicroros.a(librcutils__atomic_64bits.c.obj): in function `__atomic_exchange_8':
atomic_64bits.c:(.text.__atomic_exchange_8+0x2e): undefined reference to `__atomic_test_and_set'
collect2: error: ld returned 1 exit status
*** [.pio/build/pico/firmware.elf] Error 1

log_3.txt

rp2040 and rp2350 fail in the exact same fashion.

Additional information

Unfortunately I cannot use the older commit version, as it is lacking features I need :(

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions