Skip to content

Tools/environment_install: Update Linux Mint codename handling in script#32208

Merged
peterbarker merged 1 commit intoArduPilot:masterfrom
gaurav23b:patch-1
Feb 17, 2026
Merged

Tools/environment_install: Update Linux Mint codename handling in script#32208
peterbarker merged 1 commit intoArduPilot:masterfrom
gaurav23b:patch-1

Conversation

@gaurav23b
Copy link
Contributor

Title
Tools: add Linux Mint 'zena' codename to Ubuntu prerequisite script

Description
This PR adds support for Linux Mint "Zena" to the Ubuntu prerequisite installation script.

Currently, the script fails on Mint Zena because it cannot map the codename to an underlying Ubuntu release. Since Zena is based on Ubuntu 24.04 (Noble), I have added it to the existing mapping logic for wilma and xia.

Changes:
Updated Tools/environment_install/install-prereqs-ubuntu.sh to include zena in the Linux Mint codename translation case statement.

Testing Performed

  • Verified that the script now correctly identifies the OS as noble on a Linux Mint Zena installation.
  • Successfully ran the full installation of prerequisites, including the STM32 toolchain and Python environment.

@gaurav23b gaurav23b marked this pull request as draft February 15, 2026 19:42
@gaurav23b gaurav23b changed the title Update Linux Mint codename handling in script Tools/environment_install: Update Linux Mint codename handling in script Feb 15, 2026
@gaurav23b gaurav23b marked this pull request as ready for review February 15, 2026 20:21
@tpwrules
Copy link
Contributor

#31626 #31910

@gaurav23b
Copy link
Contributor Author

#31626 #31910

Testing Evidence for Linux Mint "Zena" (Ubuntu 24.04.3 base)

Following the feedback from @peterbarker, I have verified the environment installation by running the following tests from the Vagrantfile.

OS Info

  1. cat /etc/os-release
NAME="Linux Mint"
VERSION="22.3 (Zena)"
ID=linuxmint
ID_LIKE="ubuntu debian"
PRETTY_NAME="Linux Mint 22.3"
VERSION_ID="22.3"
HOME_URL="https://www.linuxmint.com/"
SUPPORT_URL="https://forums.linuxmint.com/"
BUG_REPORT_URL="http://linuxmint-troubleshooting-guide.readthedocs.io/en/latest/"
PRIVACY_POLICY_URL="https://www.linuxmint.com/"
VERSION_CODENAME=zena
UBUNTU_CODENAME=noble
  1. uname -a
Linux victus 6.17.0-14-generic

Modem Manager check

dpkg -l | grep modemmanager
Confirmed not running

rc  modemmanager                               1.23.4-0ubuntu2                            amd64        D-Bus service for managing modems

Build Test (FMUv3):

Successfully configured and compiled ArduCopter for the fmuv3 target.

  1. ./waf clean
'clean' finished successfully (1.043s)
  1. ./waf configure --board=fmuv3
Setting top to                           : /home/gaurav/Downloads/github-ap/ardupilot 
Setting out to                           : /home/gaurav/Downloads/github-ap/ardupilot/build 
Autoconfiguration                        : enabled 
Checking for program 'python'            : /home/gaurav/venv-ardupilot/bin/python3 
Checking for python version >= 3.8.0     : 3.12.3 
Setting board to                         : fmuv3 
Using toolchain                          : arm-none-eabi 
Checking for 'g++' (C++ compiler)        : /opt/gcc-arm-none-eabi-10-2020-q4-major/bin/arm-none-eabi-g++ 
Checking for 'gcc' (C compiler)          : /opt/gcc-arm-none-eabi-10-2020-q4-major/bin/arm-none-eabi-gcc 
Checking for c flags '-MMD'              : yes 
Checking for cxx flags '-MMD'            : yes 
Checking for program 'arm-none-eabi-nm'  : /opt/gcc-arm-none-eabi-10-2020-q4-major/bin/arm-none-eabi-nm 
CXX Compiler                             : g++ 10.2.1 
Checking for program 'make'              : /usr/bin/make 
Checking for program 'arm-none-eabi-objcopy' : /opt/gcc-arm-none-eabi-10-2020-q4-major/bin/arm-none-eabi-objcopy 
Processing /home/gaurav/Downloads/github-ap/ardupilot/libraries/AP_HAL_ChibiOS/hwdef/fmuv3/hwdef.dat
Removing AP_BATTERY_SMBUS_SOLO_ENABLED
Removing AP_BATTERY_SMBUS_SOLO_ENABLED
Setup for MCU STM32F427xx
No default parameter file found
Writing hwdef setup in /home/gaurav/Downloads/github-ap/ardupilot/build/fmuv3/hwdef.h
Writing DMA map
Setting up as normal
Generating ldscript.ld
env set ENABLE_DFU_BOOT=0
env set WITH_FATFS=1
env set PROCESS_STACK=0x1C00
env set MAIN_STACK=0x600
env set IOMCU_FW=0
env set IOMCU_FW_WITH_HEATER=0
env set PERIPH_FW=0
env set HAL_NUM_CAN_IFACES=2
env set HAL_CANFD_SUPPORTED=0
env set BOARD_FLASH_SIZE=2048
env set EXT_FLASH_SIZE_MB=0
env set INT_FLASH_PRIMARY=False
env set ENABLE_CRASHDUMP=True
env set CPU_FLAGS=['-mcpu=cortex-m4', '-mfpu=fpv4-sp-d16', '-mfloat-abi=hard', '-DARM_MATH_CM4', '-u_printf_float']
env set CORTEX=cortex-m4
env set APJ_BOARD_ID=9
env set APJ_BOARD_TYPE=STM32F427xx
env set USBID=0x1209/0x5741
env set FLASH_RESERVE_START_KB=16
env set EXT_FLASH_RESERVE_START_KB=0
env set FLASH_TOTAL=2080768
env set HAS_EXTERNAL_FLASH_SECTIONS=0
env set ROMFS_FILES=[('io_firmware.bin', 'Tools/IO_Firmware/iofirmware_lowpolh.bin'), ('hwdef.dat', '/home/gaurav/Downloads/github-ap/ardupilot/build/fmuv3/hw.dat'), ('bootloader.bin', '/home/gaurav/Downloads/github-ap/ardupilot/Tools/bootloaders/fmuv3_bl.bin')]
env set CHIBIOS_BUILD_FLAGS=USE_FATFS=yes CHIBIOS_STARTUP_MK=os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f4xx.mk CHIBIOS_PLATFORM_MK=os/hal/ports/STM32/STM32F4xx/platform.mk MCU=cortex-m4 ENV_UDEFS=-DCHPRINTF_USE_FLOAT=1
Enabling ChibiOS asserts                     : no 
Disabling Watchdog                           : no 
Enabling malloc guard                        : no 
Enabling ChibiOS thread statistics           : no 
Enabling -Werror                             : yes 
Checking for intelhex module:                : OK 
Enabled OpenDroneID                          : no 
Enabled firmware ID checking                 : no 
GPS Debug Logging                            : no 
Enabled custom controller                    : no 
Checking for HAVE_CMATH_ISFINITE             : yes 
Checking for HAVE_CMATH_ISINF                : yes 
Checking for HAVE_CMATH_ISNAN                : yes 
Checking for NEED_CMATH_ISFINITE_STD_NAMESPACE : yes 
Checking for NEED_CMATH_ISINF_STD_NAMESPACE    : yes 
Checking for NEED_CMATH_ISNAN_STD_NAMESPACE    : yes 
Checking for header endian.h                   : not found 
Checking for header byteswap.h                 : not found 
Checking for HAVE_MEMRCHR                      : no 
Configured VSCode Intellisense:                : no 
DC_DSDL compiler in                            : /home/gaurav/Downloads/github-ap/ardupilot/modules/DroneCAN/dronecan_dsdlc 
Source is git repository                       : yes 
Update submodules                              : yes 
Checking for program 'git'                     : /usr/bin/git 
Gtest                                          : STM32 boards currently don't support compiling gtest 
Checking for program 'arm-none-eabi-size'      : /opt/gcc-arm-none-eabi-10-2020-q4-major/bin/arm-none-eabi-size 
Benchmarks                                     : disabled 
Unit tests                                     : disabled 
Scripting                                      : maybe 
Scripting runtime checks                       : enabled 
Debug build                                    : disabled 
Coverage build                                 : disabled 
Consistent build                               : disabled 
Force 32-bit build                             : disabled 
Checking for program 'rsync'                   : /usr/bin/rsync 
Removing target_list file /home/gaurav/Downloads/github-ap/ardupilot/build/fmuv3/target_list
'configure' finished successfully (0.859s)
  1. ./waf copter
Waf: Entering directory `/home/gaurav/Downloads/github-ap/ardupilot/build/fmuv3'
Embedding file bootloader.bin:/home/gaurav/Downloads/github-ap/ardupilot/Tools/bootloaders/fmuv3_bl.bin
Embedding file hwdef.dat:/home/gaurav/Downloads/github-ap/ardupilot/build/fmuv3/hw.dat
Embedding file io_firmware.bin:Tools/IO_Firmware/iofirmware_lowpolh.bin
[ 4/11] Creating build/fmuv3/modules/ChibiOS/include_dirs
[ 5/11] Compiling libraries/AP_Scripting/generator/src/main.c
.
.
.
.
BUILD SUMMARY
Build directory: /home/gaurav/Downloads/github-ap/ardupilot/build/fmuv3
Target          Text (B)  Data (B)  BSS (B)  Total Flash Used (B)  Free Flash (B)  External Flash Used (B)
----------------------------------------------------------------------------------------------------------
bin/arducopter   1548444      4612   101288               1553056          527700  Not Applicable         

'copter' finished successfully (1m53.415s)

Functional SITL Tests

  1. SITL Launch
    ./Tools/autotest/sim_vehicle.py -v ArduCopter --map --console
SIM_VEHICLE: Start
SIM_VEHICLE: Killing tasks
SIM_VEHICLE: Starting up at SITL location
.
.
.
BUILD SUMMARY
Build directory: /home/gaurav/Downloads/github-ap/ardupilot/build/sitl
Target          Text (B)  Data (B)  BSS (B)  Total Flash Used (B)  Free Flash (B)  External Flash Used (B)
----------------------------------------------------------------------------------------------------------
bin/arducopter   4318805    205117   223680               4523922  Not Applicable  Not Applicable         

'build' finished successfully (2m14.844s)
SIM_VEHICLE: Using defaults from (Tools/autotest/default_params/copter.parm)
SIM_VEHICLE: Run ArduCopter
SIM_VEHICLE: "/home/gaurav/Downloads/github-ap/ardupilot/Tools/autotest/run_in_terminal_window.sh" "ArduCopter" "/home/gaurav/Downloads/github-ap/ardupilot/build/sitl/bin/arducopter" "--model" "+" "--speedup" "1" "--slave" "0" "--defaults" "Tools/autotest/default_params/copter.parm" "--sim-address=127.0.0.1" "-I0"
SIM_VEHICLE: Run MavProxy
SIM_VEHICLE: "mavproxy.py" "--retries" "5" "--out" "127.0.0.1:14550" "--master" "tcp:127.0.0.1:5760" "--sitl" "127.0.0.1:5501" "--map" "--console"
RiTW: Starting ArduCopter : /home/gaurav/Downloads/github-ap/ardupilot/build/sitl/bin/arducopter --model + --speedup 1 --slave 0 --defaults Tools/autotest/default_params/copter.parm --sim-address=127.0.0.1 -I0
Connect tcp:127.0.0.1:5760 source_system=255
Loaded module console
Loaded module map
Log Directory: 
Telemetry log: mav.tlog
Waiting for heartbeat from tcp:127.0.0.1:5760
MAV> Detected vehicle 1:1 on link 0
STABILIZE> Received 1369 parameters (ftp)
Saved 1369 parameters to mav.parm
MAV> SIM_VEHICLE: Keyboard Interrupt received ...
SIM_VEHICLE: Killing tasks

Screenshot:
SITL

  1. GDB
    ./Tools/autotest/sim_vehicle.py -v ArduCopter --debug --gdb
SIM_VEHICLE: Start
SIM_VEHICLE: Killing tasks
SIM_VEHICLE: Starting up at SITL location
SIM_VEHICLE: WAF build
SIM_VEHICLE: Configure waf
SIM_VEHICLE: "/home/gaurav/Downloads/github-ap/ardupilot/modules/waf/waf-light" "configure" "--board" "sitl" "--debug"
Setting top to                           : /home/gaurav/Downloads/github-ap/ardupilot 
Setting out to                           : /home/gaurav/Downloads/github-ap/ardupilot/build 
Autoconfiguration                        : enabled 
Checking for program 'python'            : /home/gaurav/venv-ardupilot/bin/python3 
Checking for python version >= 3.8.0     : 3.12.3 
Setting board to                         : sitl 
Processing /home/gaurav/Downloads/github-ap/ardupilot/libraries/AP_HAL_SITL/hwdef/sitl/hwdef.dat
Writing hwdef setup in /home/gaurav/Downloads/github-ap/ardupilot/build/sitl/hwdef.h
Using toolchain                          : native 
Checking for 'g++' (C++ compiler)        : /usr/bin/g++ 
Checking for 'gcc' (C compiler)          : /usr/bin/gcc 
Checking for c flags '-MMD'              : yes 
Checking for cxx flags '-MMD'            : yes 
CXX Compiler                             : g++ 13.3.0 
Checking for need to link with librt     : not necessary 
Checking for feenableexcept              : yes 
Enabling -Werror                         : no 
Enabled OpenDroneID                      : no 
Enabled firmware ID checking             : no 
GPS Debug Logging                        : no 
Enabled custom controller                : yes 
Checking for HAVE_CMATH_ISFINITE         : yes 
Checking for HAVE_CMATH_ISINF            : yes 
Checking for HAVE_CMATH_ISNAN            : yes 
Checking for NEED_CMATH_ISFINITE_STD_NAMESPACE : yes 
Checking for NEED_CMATH_ISINF_STD_NAMESPACE    : yes 
Checking for NEED_CMATH_ISNAN_STD_NAMESPACE    : yes 
Checking for header endian.h                   : yes 
Checking for header byteswap.h                 : yes 
Checking for HAVE_MEMRCHR                      : yes 
Configured VSCode Intellisense:                : no 
DC_DSDL compiler in                            : /home/gaurav/Downloads/github-ap/ardupilot/modules/DroneCAN/dronecan_dsdlc 
Source is git repository                       : yes 
Update submodules                              : yes 
Checking for program 'git'                     : /usr/bin/git 
Littlefs                                       : disabled 
Checking for program 'size'                    : /usr/bin/size 
Benchmarks                                     : disabled 
Unit tests                                     : enabled 
Scripting                                      : maybe 
Scripting runtime checks                       : enabled 
Debug build                                    : enabled 
VS Code launch                                 : disabled 
Coverage build                                 : disabled 
Consistent build                               : disabled 
Force 32-bit build                             : disabled 
Checking for program 'rsync'                   : /usr/bin/rsync 
Removing target_list file /home/gaurav/Downloads/github-ap/ardupilot/build/sitl/target_list
'configure' finished successfully (1.033s)
.
.
.
Flight battery 100 percent
AP: EKF3 IMU1 origin set
AP: Field Elevation Set: 584m
AP: EKF3 IMU0 origin set
AP: EKF3 IMU0 is using GPS
AP: EKF3 IMU1 is using GPS
MAV> Flight battery 100 percent
SIM_VEHICLE: Keyboard Interrupt received ...

Screenshot:
gdb

  1. Valgrind
    ./Tools/autotest/sim_vehicle.py -v ArduCopter --debug --valgrind
SIM_VEHICLE: Start
SIM_VEHICLE: Killing tasks
SIM_VEHICLE: Starting up at SITL location
SIM_VEHICLE: WAF build
SIM_VEHICLE: Configure waf
SIM_VEHICLE: "/home/gaurav/Downloads/github-ap/ardupilot/modules/waf/waf-light" "configure" "--board" "sitl" "--debug"
Setting top to                           : /home/gaurav/Downloads/github-ap/ardupilot 
Setting out to                           : /home/gaurav/Downloads/github-ap/ardupilot/build 
Autoconfiguration                        : enabled 
Checking for program 'python'            : /home/gaurav/venv-ardupilot/bin/python3 
Checking for python version >= 3.8.0     : 3.12.3 
Setting board to                         : sitl 
Processing /home/gaurav/Downloads/github-ap/ardupilot/libraries/AP_HAL_SITL/hwdef/sitl/hwdef.dat
Writing hwdef setup in /home/gaurav/Downloads/github-ap/ardupilot/build/sitl/hwdef.h
Using toolchain                          : native 
Checking for 'g++' (C++ compiler)        : /usr/bin/g++ 
Checking for 'gcc' (C compiler)          : /usr/bin/gcc 
Checking for c flags '-MMD'              : yes 
Checking for cxx flags '-MMD'            : yes 
CXX Compiler                             : g++ 13.3.0 
Checking for need to link with librt     : not necessary 
Checking for feenableexcept              : yes 
Enabling -Werror                         : no 
Enabled OpenDroneID                      : no 
Enabled firmware ID checking             : no 
GPS Debug Logging                        : no 
Enabled custom controller                : yes 
Checking for HAVE_CMATH_ISFINITE         : yes 
Checking for HAVE_CMATH_ISINF            : yes 
Checking for HAVE_CMATH_ISNAN            : yes 
Checking for NEED_CMATH_ISFINITE_STD_NAMESPACE : yes 
Checking for NEED_CMATH_ISINF_STD_NAMESPACE    : yes 
Checking for NEED_CMATH_ISNAN_STD_NAMESPACE    : yes 
Checking for header endian.h                   : yes 
Checking for header byteswap.h                 : yes 
Checking for HAVE_MEMRCHR                      : yes 
Configured VSCode Intellisense:                : no 
DC_DSDL compiler in                            : /home/gaurav/Downloads/github-ap/ardupilot/modules/DroneCAN/dronecan_dsdlc 
Source is git repository                       : yes 
Update submodules                              : yes 
Checking for program 'git'                     : /usr/bin/git 
Littlefs                                       : disabled 
Checking for program 'size'                    : /usr/bin/size 
Benchmarks                                     : disabled 
Unit tests                                     : enabled 
Scripting                                      : maybe 
Scripting runtime checks                       : enabled 
Debug build                                    : enabled 
VS Code launch                                 : disabled 
Coverage build                                 : disabled 
Consistent build                               : disabled 
Force 32-bit build                             : disabled 
Checking for program 'rsync'                   : /usr/bin/rsync 
Removing target_list file /home/gaurav/Downloads/github-ap/ardupilot/build/sitl/target_list
'configure' finished successfully (1.069s)
.
.
.
fence present
Flight battery 100 percent
AP: GPS 1: probing for u-blox at 230400 baud
AP: GPS 1: detected u-blox
AP: EKF3 IMU1 origin set
AP: Field Elevation Set: 584m
AP: EKF3 IMU0 origin set
SIM_VEHICLE: Keyboard Interrupt received ...
SIM_VEHICLE: Killing tasks

Screenshot:
valgrind

@peterbarker
Copy link
Contributor

LGTM, but CI must pass. We don't allow merge commits into ArduPilot. You can update the branch and choose "rebase on master" from the github interface.

Copy link
Contributor

@peterbarker peterbarker left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@peterbarker peterbarker merged commit 9474561 into ArduPilot:master Feb 17, 2026
17 checks passed
@peterbarker
Copy link
Contributor

Merged, thanks!

@gaurav23b
Copy link
Contributor Author

Merged, thanks!
@peterbarker Thank you for the guidance and for merging this! Glad to contribute.

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