mirror of
https://github.com/meshtastic/firmware.git
synced 2026-01-19 00:07:38 +00:00
Compare commits
73 Commits
v2.5.19.f9
...
v1.2.65.0a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0adc5ce3de | ||
|
|
1d5e079fa2 | ||
|
|
33fac6d0f5 | ||
|
|
8e8158ebbc | ||
|
|
a9fcc775d9 | ||
|
|
cf465a3d34 | ||
|
|
6520c51b66 | ||
|
|
98552b6d9d | ||
|
|
7f9c07ae37 | ||
|
|
bfd97558d4 | ||
|
|
44159f75f1 | ||
|
|
dfa9c32665 | ||
|
|
c600135b70 | ||
|
|
179a2624a1 | ||
|
|
3fded9aaa9 | ||
|
|
f423d943a8 | ||
|
|
f251727524 | ||
|
|
f3cc732e7d | ||
|
|
8d74c41802 | ||
|
|
89f7968ca2 | ||
|
|
3b2375a27b | ||
|
|
959962530b | ||
|
|
77816f8f68 | ||
|
|
ee8e544ce2 | ||
|
|
887e6fd761 | ||
|
|
d06aa73947 | ||
|
|
72bfee34ee | ||
|
|
fc48fcde96 | ||
|
|
f0965e2ac4 | ||
|
|
7c253bfc3c | ||
|
|
ba894ae95b | ||
|
|
9879494fc6 | ||
|
|
5088940751 | ||
|
|
888af31d4f | ||
|
|
3ddd74edf6 | ||
|
|
186d7f7d33 | ||
|
|
456f8ab7e8 | ||
|
|
d551c17546 | ||
|
|
af4027e8c8 | ||
|
|
3df0fdd239 | ||
|
|
8510ef3ad0 | ||
|
|
ee419f8b9b | ||
|
|
ab959ded0e | ||
|
|
2a76a5527a | ||
|
|
58d91f0a4b | ||
|
|
e09aafa13f | ||
|
|
aca95248ee | ||
|
|
d81c1c08ee | ||
|
|
317ce2c9cd | ||
|
|
b2827597fd | ||
|
|
6af182228c | ||
|
|
1246c7bb1e | ||
|
|
e6731e28c1 | ||
|
|
d57ac39b02 | ||
|
|
67bc6b1419 | ||
|
|
d328823c03 | ||
|
|
7178d3a2fd | ||
|
|
a0f60f1d07 | ||
|
|
b177313e2d | ||
|
|
53d47146b2 | ||
|
|
f7c6955736 | ||
|
|
9a87e1b53e | ||
|
|
f1478a7c93 | ||
|
|
8fd5d83980 | ||
|
|
5895aaa259 | ||
|
|
1787712a5a | ||
|
|
596a73c0a0 | ||
|
|
d56f8c631b | ||
|
|
682f988c2a | ||
|
|
ce20a2b566 | ||
|
|
d0fc836f0b | ||
|
|
d542267e4a | ||
|
|
756317e7e0 |
@@ -1,183 +0,0 @@
|
|||||||
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
#####################################################################################
|
|
||||||
#
|
|
||||||
# INSTALLATION
|
|
||||||
#
|
|
||||||
# Please visit > https://docs.platformio.org/en/latest/core/installation/udev-rules.html
|
|
||||||
#
|
|
||||||
#####################################################################################
|
|
||||||
|
|
||||||
#
|
|
||||||
# Boards
|
|
||||||
#
|
|
||||||
|
|
||||||
# CP210X USB UART
|
|
||||||
ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea[67][013]", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="80a9", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# FT231XS USB UART
|
|
||||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# Prolific Technology, Inc. PL2303 Serial Port
|
|
||||||
ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# QinHeng Electronics HL-340 USB-Serial adapter
|
|
||||||
ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
# QinHeng Electronics CH343 USB-Serial adapter
|
|
||||||
ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="55d3", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
# QinHeng Electronics CH9102 USB-Serial adapter
|
|
||||||
ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="55d4", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# Arduino boards
|
|
||||||
ATTRS{idVendor}=="2341", ATTRS{idProduct}=="[08][023]*", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
ATTRS{idVendor}=="2a03", ATTRS{idProduct}=="[08][02]*", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# Arduino SAM-BA
|
|
||||||
ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="6124", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{MTP_NO_PROBE}="1"
|
|
||||||
|
|
||||||
# Digistump boards
|
|
||||||
ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0753", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# Maple with DFU
|
|
||||||
ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="000[34]", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# USBtiny
|
|
||||||
ATTRS{idProduct}=="0c9f", ATTRS{idVendor}=="1781", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# USBasp V2.0
|
|
||||||
ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# Teensy boards
|
|
||||||
ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789B]?", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789A]?", ENV{MTP_NO_PROBE}="1"
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789ABCD]?", MODE:="0666"
|
|
||||||
KERNEL=="ttyACM*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789B]?", MODE:="0666"
|
|
||||||
|
|
||||||
# TI Stellaris Launchpad
|
|
||||||
ATTRS{idVendor}=="1cbe", ATTRS{idProduct}=="00fd", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# TI MSP430 Launchpad
|
|
||||||
ATTRS{idVendor}=="0451", ATTRS{idProduct}=="f432", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# GD32V DFU Bootloader
|
|
||||||
ATTRS{idVendor}=="28e9", ATTRS{idProduct}=="0189", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# FireBeetle-ESP32
|
|
||||||
ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7522", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# Wio Terminal
|
|
||||||
ATTRS{idVendor}=="2886", ATTRS{idProduct}=="[08]02d", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# Raspberry Pi Pico
|
|
||||||
ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="[01]*", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# AIR32F103
|
|
||||||
ATTRS{idVendor}=="0d28", ATTRS{idProduct}=="0204", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# STM32 virtual COM port
|
|
||||||
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
#
|
|
||||||
# Debuggers
|
|
||||||
#
|
|
||||||
|
|
||||||
# Black Magic Probe
|
|
||||||
SUBSYSTEM=="tty", ATTRS{interface}=="Black Magic GDB Server", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
SUBSYSTEM=="tty", ATTRS{interface}=="Black Magic UART Port", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# opendous and estick
|
|
||||||
ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="204f", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# Original FT232/FT245/FT2232/FT232H/FT4232
|
|
||||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="60[01][104]", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# DISTORTEC JTAG-lock-pick Tiny 2
|
|
||||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="8220", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# TUMPA, TUMPA Lite
|
|
||||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="8a9[89]", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# XDS100v2
|
|
||||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="a6d0", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# Xverve Signalyzer Tool (DT-USB-ST), Signalyzer LITE (DT-USB-SLITE)
|
|
||||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bca[01]", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# TI/Luminary Stellaris Evaluation Board FTDI (several)
|
|
||||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bcd[9a]", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# egnite Turtelizer 2
|
|
||||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bdc8", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# Section5 ICEbear
|
|
||||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="c14[01]", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# Amontec JTAGkey and JTAGkey-tiny
|
|
||||||
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="cff8", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# TI ICDI
|
|
||||||
ATTRS{idVendor}=="0451", ATTRS{idProduct}=="c32a", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# STLink probes
|
|
||||||
ATTRS{idVendor}=="0483", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# Hilscher NXHX Boards
|
|
||||||
ATTRS{idVendor}=="0640", ATTRS{idProduct}=="0028", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# Hitex probes
|
|
||||||
ATTRS{idVendor}=="0640", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# Altera USB Blaster
|
|
||||||
ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6001", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# Amontec JTAGkey-HiSpeed
|
|
||||||
ATTRS{idVendor}=="0fbb", ATTRS{idProduct}=="1000", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# SEGGER J-Link
|
|
||||||
ATTRS{idVendor}=="1366", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# Raisonance RLink
|
|
||||||
ATTRS{idVendor}=="138e", ATTRS{idProduct}=="9000", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# Debug Board for Neo1973
|
|
||||||
ATTRS{idVendor}=="1457", ATTRS{idProduct}=="5118", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# Olimex probes
|
|
||||||
ATTRS{idVendor}=="15ba", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# USBprog with OpenOCD firmware
|
|
||||||
ATTRS{idVendor}=="1781", ATTRS{idProduct}=="0c63", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# TI/Luminary Stellaris In-Circuit Debug Interface (ICDI) Board
|
|
||||||
ATTRS{idVendor}=="1cbe", ATTRS{idProduct}=="00fd", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# Marvell Sheevaplug
|
|
||||||
ATTRS{idVendor}=="9e88", ATTRS{idProduct}=="9e8f", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# Keil Software, Inc. ULink
|
|
||||||
ATTRS{idVendor}=="c251", ATTRS{idProduct}=="2710", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# CMSIS-DAP compatible adapters
|
|
||||||
ATTRS{product}=="*CMSIS-DAP*", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# Atmel AVR Dragon
|
|
||||||
ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2107", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# Espressif USB JTAG/serial debug unit
|
|
||||||
ATTRS{idVendor}=="303a", ATTRS{idProduct}=="1001", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
|
|
||||||
# Zephyr framework USB CDC-ACM
|
|
||||||
ATTRS{idVendor}=="2fe3", ATTRS{idProduct}=="0100", MODE="0666", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1"
|
|
||||||
@@ -1,38 +1,11 @@
|
|||||||
FROM mcr.microsoft.com/devcontainers/cpp:1-debian-12
|
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.162.0/containers/ubuntu/.devcontainer/base.Dockerfile
|
||||||
|
|
||||||
USER root
|
# [Choice] Ubuntu version: bionic, focal
|
||||||
|
ARG VARIANT="focal"
|
||||||
|
FROM mcr.microsoft.com/vscode/devcontainers/base:0-${VARIANT}
|
||||||
|
|
||||||
# trunk-ignore(terrascan/AC_DOCKER_0002): Known terrascan issue
|
# [Optional] Uncomment this section to install additional OS packages.
|
||||||
# trunk-ignore(hadolint/DL3008): Use latest version of packages
|
|
||||||
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
|
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
|
||||||
&& apt-get -y install --no-install-recommends \
|
&& apt-get -y install python3-distutils python3-pip
|
||||||
ca-certificates \
|
RUN pip3 install platformio meshtastic adafruit-nrfutil
|
||||||
g++ \
|
RUN wget https://github.com/protocolbuffers/protobuf/releases/download/v3.15.8/protoc-3.15.8-linux-x86_64.zip -O /tmp/protoc.zip && cd /tmp && unzip protoc.zip && chmod a+x bin/protoc && cp bin/protoc /usr/local/bin
|
||||||
git \
|
|
||||||
libbluetooth-dev \
|
|
||||||
libgpiod-dev \
|
|
||||||
liborcania-dev \
|
|
||||||
libssl-dev \
|
|
||||||
libulfius-dev \
|
|
||||||
libyaml-cpp-dev \
|
|
||||||
pipx \
|
|
||||||
pkg-config \
|
|
||||||
python3 \
|
|
||||||
python3-pip \
|
|
||||||
python3-venv \
|
|
||||||
python3-wheel \
|
|
||||||
wget \
|
|
||||||
zip \
|
|
||||||
usbutils \
|
|
||||||
hwdata \
|
|
||||||
gpg \
|
|
||||||
gnupg2 \
|
|
||||||
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
RUN pipx install platformio==6.1.15
|
|
||||||
|
|
||||||
COPY 99-platformio-udev.rules /etc/udev/rules.d/99-platformio-udev.rules
|
|
||||||
|
|
||||||
USER vscode
|
|
||||||
|
|
||||||
HEALTHCHECK NONE
|
|
||||||
|
|||||||
@@ -1,36 +1,32 @@
|
|||||||
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
|
||||||
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
|
// https://github.com/microsoft/vscode-dev-containers/tree/v0.162.0/containers/ubuntu
|
||||||
{
|
{
|
||||||
"name": "Meshtastic Firmware Dev",
|
"name": "Ubuntu",
|
||||||
"build": {
|
"build": {
|
||||||
"dockerfile": "Dockerfile"
|
"dockerfile": "Dockerfile",
|
||||||
},
|
// Update 'VARIANT' to pick an Ubuntu version: focal, bionic
|
||||||
"features": {
|
"args": { "VARIANT": "focal" }
|
||||||
"ghcr.io/devcontainers/features/python:1": {
|
},
|
||||||
"installTools": true,
|
|
||||||
"version": "latest"
|
// Set *default* container specific settings.json values on container create.
|
||||||
}
|
"settings": {
|
||||||
},
|
"terminal.integrated.shell.linux": "/bin/bash"
|
||||||
"customizations": {
|
},
|
||||||
"vscode": {
|
|
||||||
"extensions": [
|
// Add the IDs of extensions you want installed when the container is created.
|
||||||
"ms-vscode.cpptools",
|
"extensions": [
|
||||||
"platformio.platformio-ide",
|
"platformio.platformio-ide",
|
||||||
"Trunk.io"
|
"xaver.clang-format"
|
||||||
],
|
],
|
||||||
"unwantedRecommendations": ["ms-azuretools.vscode-docker"],
|
|
||||||
"settings": {
|
|
||||||
"extensions.ignoreRecommendations": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
||||||
"forwardPorts": [4403],
|
// "forwardPorts": [],
|
||||||
|
|
||||||
// Use "--device=" to make a local device available inside the container.
|
// Use 'postCreateCommand' to run commands after the container is created.
|
||||||
// "runArgs": ["--device=/dev/ttyACM0"],
|
// "postCreateCommand": "uname -a",
|
||||||
|
|
||||||
// Run commands to prepare the container for use
|
// Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
|
||||||
"postCreateCommand": ".devcontainer/setup.sh"
|
"remoteUser": "vscode",
|
||||||
}
|
|
||||||
|
"postCreateCommand": "git submodule update --init"
|
||||||
|
}
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
git submodule update --init
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
# Absolute path to the local meshtastic config.yaml file
|
|
||||||
CONFIG_PATH=/path/to/meshtastic/config.yaml
|
|
||||||
# USB device to passthrough (`lsusb -t`: look for `ch341`)
|
|
||||||
USB_DEVICE=/dev/bus/usb/001/037
|
|
||||||
4
.gitattributes
vendored
4
.gitattributes
vendored
@@ -1,4 +0,0 @@
|
|||||||
* text=auto eol=lf
|
|
||||||
*.{cmd,[cC][mM][dD]} text eol=crlf
|
|
||||||
*.{bat,[bB][aA][tT]} text eol=crlf
|
|
||||||
*.{sh,[sS][hH]} text eol=lf
|
|
||||||
99
.github/ISSUE_TEMPLATE/Bug Report.yml
vendored
99
.github/ISSUE_TEMPLATE/Bug Report.yml
vendored
@@ -1,99 +0,0 @@
|
|||||||
name: Bug Report
|
|
||||||
description: File a bug report
|
|
||||||
title: "[Bug]: "
|
|
||||||
labels: ["bug", "triage"]
|
|
||||||
body:
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: |
|
|
||||||
Thanks for taking the time to fill out this bug report!
|
|
||||||
|
|
||||||
- type: dropdown
|
|
||||||
id: category
|
|
||||||
attributes:
|
|
||||||
label: Category
|
|
||||||
description: How would you catagorize this issue?
|
|
||||||
multiple: true
|
|
||||||
options:
|
|
||||||
- Hardware Compatibility
|
|
||||||
- BLE
|
|
||||||
- Serial
|
|
||||||
- WiFi
|
|
||||||
- Other
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: dropdown
|
|
||||||
id: hardware
|
|
||||||
attributes:
|
|
||||||
label: Hardware
|
|
||||||
description: What hardware are you encountering this issue on?
|
|
||||||
multiple: true
|
|
||||||
options:
|
|
||||||
- Not Applicable
|
|
||||||
- T-Beam
|
|
||||||
- T-Beam S3
|
|
||||||
- T-Beam 0.7
|
|
||||||
- T-Lora v1
|
|
||||||
- T-Lora v1.3
|
|
||||||
- T-Lora v2 1.6
|
|
||||||
- T-Deck
|
|
||||||
- T-Echo
|
|
||||||
- T-Watch
|
|
||||||
- Rak4631
|
|
||||||
- Rak11200
|
|
||||||
- Rak11310
|
|
||||||
- Heltec v1
|
|
||||||
- Heltec v2
|
|
||||||
- Heltec v2.1
|
|
||||||
- Heltec V3
|
|
||||||
- Heltec Wireless Paper
|
|
||||||
- Heltec Wireless Tracker
|
|
||||||
- Heltec Mesh Node T114
|
|
||||||
- Heltec Vision Master E213
|
|
||||||
- Heltec Vision Master E290
|
|
||||||
- Heltec Vision Master T190
|
|
||||||
- Nano G1
|
|
||||||
- Nano G1 Explorer
|
|
||||||
- Nano G2 Ultra
|
|
||||||
- Raspberry Pi Pico (W)
|
|
||||||
- Relay v1
|
|
||||||
- Relay v2
|
|
||||||
- Seeed Wio Tracker 1110
|
|
||||||
- Seeed Card Tracker T1000-E
|
|
||||||
- Station G1
|
|
||||||
- Station G2
|
|
||||||
- unPhone
|
|
||||||
- CanaryOne
|
|
||||||
- Chatter
|
|
||||||
- Linux Native
|
|
||||||
- DIY
|
|
||||||
- Other
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: input
|
|
||||||
id: version
|
|
||||||
attributes:
|
|
||||||
label: Firmware Version
|
|
||||||
description: This can be found on the device's screen or via one of the apps.
|
|
||||||
placeholder: x.x.x.yyyyyyy
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: body
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
description: Please provide details on what steps you performed for this to happen.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: logs
|
|
||||||
attributes:
|
|
||||||
label: Relevant log output
|
|
||||||
description: If you have any log output to help in diagnosing your bug, please provide it here.
|
|
||||||
render: Shell
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
46
.github/ISSUE_TEMPLATE/New Board.yml
vendored
46
.github/ISSUE_TEMPLATE/New Board.yml
vendored
@@ -1,46 +0,0 @@
|
|||||||
name: New Board
|
|
||||||
description: Request us to support new hardware
|
|
||||||
title: "[Board]: "
|
|
||||||
labels: ["enhancement", "triage"]
|
|
||||||
body:
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: |
|
|
||||||
Thanks for requesting a new board, this will not gurantee that we will support it, but will be on our radar.
|
|
||||||
|
|
||||||
- type: dropdown
|
|
||||||
id: soc
|
|
||||||
attributes:
|
|
||||||
label: SOC
|
|
||||||
description: What SOC does your board have?
|
|
||||||
multiple: true
|
|
||||||
options:
|
|
||||||
- NRF52
|
|
||||||
- ESP32
|
|
||||||
- Other
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: input
|
|
||||||
id: lora
|
|
||||||
attributes:
|
|
||||||
label: Lora IC
|
|
||||||
description: What LoRa IC does the board have?
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: input
|
|
||||||
id: link
|
|
||||||
attributes:
|
|
||||||
label: Product Link
|
|
||||||
description: Where can we find this product?
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- type: textarea
|
|
||||||
id: body
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
description: Please provide any further details you think we may need.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
38
.github/ISSUE_TEMPLATE/bug-report-or-feature-proposal.md
vendored
Normal file
38
.github/ISSUE_TEMPLATE/bug-report-or-feature-proposal.md
vendored
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
name: Bug report or feature proposal
|
||||||
|
about: Create a report to help us improve
|
||||||
|
title: ''
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Please - if you just have a question (i.e. not a bug report or a feature proposal), post in our [forum](https://meshtastic.discourse.group/) instead.
|
||||||
|
|
||||||
|
**Describe the bug**
|
||||||
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
**To Reproduce**
|
||||||
|
Steps to reproduce the behavior:
|
||||||
|
1. Go to '...'
|
||||||
|
2. Click on '....'
|
||||||
|
3. Scroll down to '....'
|
||||||
|
4. See error
|
||||||
|
|
||||||
|
**Expected behavior**
|
||||||
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
|
**Screenshots**
|
||||||
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
|
**Device info:**
|
||||||
|
- Device model: [e.g. TBEAM]
|
||||||
|
- Software Version [e.g. 0.7.8]
|
||||||
|
|
||||||
|
**Smartphone information (if relevant):**
|
||||||
|
- Device: [e.g. iPhone6]
|
||||||
|
- OS: [e.g. iOS8.1]
|
||||||
|
- App Version [e.g. 0.7.2]
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context about the problem here.
|
||||||
31
.github/ISSUE_TEMPLATE/feature.yml
vendored
31
.github/ISSUE_TEMPLATE/feature.yml
vendored
@@ -1,31 +0,0 @@
|
|||||||
name: Feature Request
|
|
||||||
description: Request a new feature
|
|
||||||
title: "[Feature Request]: "
|
|
||||||
labels: ["enhancement"]
|
|
||||||
body:
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: |
|
|
||||||
Thanks for your request this will not gurantee that we will implement it, but it will be reviewed.
|
|
||||||
- type: dropdown
|
|
||||||
id: soc
|
|
||||||
attributes:
|
|
||||||
label: Platform
|
|
||||||
description: What device platform will support your feature?
|
|
||||||
multiple: true
|
|
||||||
options:
|
|
||||||
- NRF52
|
|
||||||
- ESP32
|
|
||||||
- RP2040
|
|
||||||
- Linux Native
|
|
||||||
- Cross-Platform
|
|
||||||
- other
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: textarea
|
|
||||||
id: body
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
description: Please provide details about your enhancement.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
101
.github/actions/build-variant/action.yml
vendored
101
.github/actions/build-variant/action.yml
vendored
@@ -1,101 +0,0 @@
|
|||||||
name: Setup Build Variant Composite Action
|
|
||||||
description: Variant build actions for Meshtastic Platform IO steps
|
|
||||||
|
|
||||||
inputs:
|
|
||||||
board:
|
|
||||||
description: The board to build for
|
|
||||||
required: true
|
|
||||||
github_token:
|
|
||||||
description: GitHub token
|
|
||||||
required: true
|
|
||||||
build-script-path:
|
|
||||||
description: Path to the build script
|
|
||||||
required: true
|
|
||||||
remove-debug-flags:
|
|
||||||
description: A space separated list of files to remove debug flags from
|
|
||||||
required: false
|
|
||||||
default: ""
|
|
||||||
ota-firmware-source:
|
|
||||||
description: The OTA firmware file to pull
|
|
||||||
required: false
|
|
||||||
default: ""
|
|
||||||
ota-firmware-target:
|
|
||||||
description: The target path to store the OTA firmware file
|
|
||||||
required: false
|
|
||||||
default: ""
|
|
||||||
artifact-paths:
|
|
||||||
description: A newline separated list of paths to store as artifacts
|
|
||||||
required: false
|
|
||||||
default: ""
|
|
||||||
include-web-ui:
|
|
||||||
description: Include the web UI in the build
|
|
||||||
required: false
|
|
||||||
default: "false"
|
|
||||||
arch:
|
|
||||||
description: Processor arch name
|
|
||||||
required: true
|
|
||||||
default: "esp32"
|
|
||||||
|
|
||||||
runs:
|
|
||||||
using: composite
|
|
||||||
steps:
|
|
||||||
- name: Build base
|
|
||||||
id: base
|
|
||||||
uses: ./.github/actions/setup-base
|
|
||||||
|
|
||||||
- name: Pull web ui
|
|
||||||
if: inputs.include-web-ui == 'true'
|
|
||||||
uses: dsaltares/fetch-gh-release-asset@master
|
|
||||||
with:
|
|
||||||
repo: meshtastic/web
|
|
||||||
file: build.tar
|
|
||||||
target: build.tar
|
|
||||||
token: ${{ inputs.github_token }}
|
|
||||||
version: tags/v2.5.3
|
|
||||||
|
|
||||||
- name: Unpack web ui
|
|
||||||
if: inputs.include-web-ui == 'true'
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
tar -xf build.tar -C data/static
|
|
||||||
rm build.tar
|
|
||||||
|
|
||||||
- name: Remove debug flags for release
|
|
||||||
shell: bash
|
|
||||||
if: inputs.remove-debug-flags != ''
|
|
||||||
run: |
|
|
||||||
for INI_FILE in ${{ inputs.remove-debug-flags }}; do
|
|
||||||
sed -i '/DDEBUG_HEAP/d' ${INI_FILE}
|
|
||||||
done
|
|
||||||
|
|
||||||
- name: PlatformIO ${{ inputs.arch }} download cache
|
|
||||||
uses: actions/cache@v4
|
|
||||||
with:
|
|
||||||
path: ~/.platformio/.cache
|
|
||||||
key: pio-cache-${{ inputs.arch }}-${{ hashFiles('.github/actions/**', '**.ini') }}
|
|
||||||
|
|
||||||
- name: Build ${{ inputs.board }}
|
|
||||||
shell: bash
|
|
||||||
run: ${{ inputs.build-script-path }} ${{ inputs.board }}
|
|
||||||
|
|
||||||
- name: Pull OTA Firmware
|
|
||||||
if: inputs.ota-firmware-source != '' && inputs.ota-firmware-target != ''
|
|
||||||
uses: dsaltares/fetch-gh-release-asset@master
|
|
||||||
with:
|
|
||||||
repo: meshtastic/firmware-ota
|
|
||||||
file: ${{ inputs.ota-firmware-source }}
|
|
||||||
target: ${{ inputs.ota-firmware-target }}
|
|
||||||
token: ${{ inputs.github_token }}
|
|
||||||
|
|
||||||
- name: Get release version string
|
|
||||||
shell: bash
|
|
||||||
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
|
||||||
id: version
|
|
||||||
|
|
||||||
- name: Store binaries as an artifact
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: firmware-${{ inputs.arch }}-${{ inputs.board }}-${{ steps.version.outputs.long }}.zip
|
|
||||||
overwrite: true
|
|
||||||
path: |
|
|
||||||
${{ inputs.artifact-paths }}
|
|
||||||
39
.github/actions/initbuild/action.yml
vendored
Normal file
39
.github/actions/initbuild/action.yml
vendored
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
name: 'Common init'
|
||||||
|
|
||||||
|
# WARNING due to https://github.com/actions/runner/issues/646
|
||||||
|
# this code can't work - must copy and paste into workflows for now because 'uses' is not supported
|
||||||
|
runs:
|
||||||
|
using: "composite"
|
||||||
|
steps:
|
||||||
|
- name: Setup Python
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: 3.x
|
||||||
|
|
||||||
|
- name: Cache python libs
|
||||||
|
uses: actions/cache@v1
|
||||||
|
id: cache-pip # needed in if test
|
||||||
|
with:
|
||||||
|
path: ~/.cache/pip
|
||||||
|
key: ${{ runner.os }}-pip
|
||||||
|
|
||||||
|
- name: Upgrade python tools
|
||||||
|
# We actually want to run this every time
|
||||||
|
# if: steps.cache-pip.outputs.cache-hit != 'true'
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install -U platformio meshtastic adafruit-nrfutil
|
||||||
|
|
||||||
|
# Don't cache for now because I want to be lazy with portuino updates githashes
|
||||||
|
# - name: Cache platformio
|
||||||
|
# uses: actions/cache@v1
|
||||||
|
# id: cache-platformio # needed in if test
|
||||||
|
# with:
|
||||||
|
# path: ~/.platformio
|
||||||
|
# key: ${{ runner.os }}-platformio
|
||||||
|
|
||||||
|
- name: Upgrade platformio
|
||||||
|
run: |
|
||||||
|
pio upgrade
|
||||||
|
|
||||||
|
|
||||||
46
.github/actions/setup-base/action.yml
vendored
46
.github/actions/setup-base/action.yml
vendored
@@ -1,46 +0,0 @@
|
|||||||
name: "Setup Build Base Composite Action"
|
|
||||||
description: "Base build actions for Meshtastic Platform IO steps"
|
|
||||||
|
|
||||||
runs:
|
|
||||||
using: "composite"
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: "recursive"
|
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
|
|
||||||
- name: Uncomment build epoch
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
sed -i 's/#-DBUILD_EPOCH=$UNIX_TIME/-DBUILD_EPOCH=$UNIX_TIME/' platformio.ini
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
sudo apt-get -y update --fix-missing
|
|
||||||
sudo apt-get install -y cppcheck libbluetooth-dev libgpiod-dev libyaml-cpp-dev lsb-release
|
|
||||||
|
|
||||||
- name: Setup Python
|
|
||||||
uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: 3.x
|
|
||||||
cache: pip
|
|
||||||
cache-dependency-path: |
|
|
||||||
.github/actions/**
|
|
||||||
**.ini
|
|
||||||
|
|
||||||
- name: Upgrade python tools
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
python -m pip install --upgrade pip
|
|
||||||
pip install -U --no-build-isolation --no-cache-dir "setuptools<72"
|
|
||||||
pip install -U platformio adafruit-nrfutil --no-build-isolation
|
|
||||||
pip install -U poetry --no-build-isolation
|
|
||||||
pip install -U meshtastic --pre --no-build-isolation
|
|
||||||
|
|
||||||
- name: Upgrade platformio
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
pio upgrade
|
|
||||||
14
.github/actions/setup-native/action.yml
vendored
14
.github/actions/setup-native/action.yml
vendored
@@ -1,14 +0,0 @@
|
|||||||
name: Setup native build
|
|
||||||
description: Install libraries needed for building the Native/Portduino build
|
|
||||||
|
|
||||||
runs:
|
|
||||||
using: composite
|
|
||||||
steps:
|
|
||||||
- name: Setup base
|
|
||||||
id: base
|
|
||||||
uses: ./.github/actions/setup-base
|
|
||||||
|
|
||||||
- name: Install libs needed for native build
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
sudo apt-get install -y libbluetooth-dev libgpiod-dev libyaml-cpp-dev openssl libssl-dev libulfius-dev liborcania-dev libusb-1.0-0-dev libi2c-dev
|
|
||||||
26
.github/dependabot.yml
vendored
26
.github/dependabot.yml
vendored
@@ -1,26 +0,0 @@
|
|||||||
version: 2
|
|
||||||
updates:
|
|
||||||
- package-ecosystem: docker
|
|
||||||
directory: devcontainer
|
|
||||||
schedule:
|
|
||||||
interval: daily
|
|
||||||
time: "05:00" # trunk-ignore(yamllint/quoted-strings): required by dependabot syntax check
|
|
||||||
timezone: US/Pacific
|
|
||||||
- package-ecosystem: docker
|
|
||||||
directory: /
|
|
||||||
schedule:
|
|
||||||
interval: daily
|
|
||||||
time: "05:00" # trunk-ignore(yamllint/quoted-strings): required by dependabot syntax check
|
|
||||||
timezone: US/Pacific
|
|
||||||
- package-ecosystem: gitsubmodule
|
|
||||||
directory: /
|
|
||||||
schedule:
|
|
||||||
interval: daily
|
|
||||||
time: "05:00" # trunk-ignore(yamllint/quoted-strings): required by dependabot syntax check
|
|
||||||
timezone: US/Pacific
|
|
||||||
- package-ecosystem: github-actions
|
|
||||||
directory: /.github/workflows
|
|
||||||
schedule:
|
|
||||||
interval: daily
|
|
||||||
time: "05:00" # trunk-ignore(yamllint/quoted-strings): required by dependabot syntax check
|
|
||||||
timezone: US/Pacific
|
|
||||||
12
.github/pull_request_template.md
vendored
12
.github/pull_request_template.md
vendored
@@ -1,15 +1,13 @@
|
|||||||
### ❌ (Please delete all these tips and replace them with your text) ❌
|
|
||||||
|
|
||||||
## Thank you for sending in a pull request, here's some tips to get started!
|
## Thank you for sending in a pull request, here's some tips to get started!
|
||||||
|
|
||||||
|
(Please delete all these tips and replace with your text)
|
||||||
|
|
||||||
- Before starting on some new big chunk of code, it it is optional but highly recommended to open an issue first
|
- Before starting on some new big chunk of code, it it is optional but highly recommended to open an issue first
|
||||||
to say "Hey, I think this idea X should be implemented and I'm starting work on it. My general plan is Y, any feedback
|
to say "hey, I think this idea X should be implemented and I'm starting work on it. My general plan is Y, any feedback
|
||||||
is appreciated." This will allow other devs to potentially save you time by not accidentially duplicating work etc...
|
is appreciated." This will allow other devs to potentially save you time by not accidentially duplicating work etc...
|
||||||
- Please do not check in files that don't have real changes
|
- Please do not check in files that don't have real changes
|
||||||
- Please do not reformat lines that you didn't have to change the code on
|
- Please do not reformat lines that you didn't have to change the code on
|
||||||
- We recommend using the [Visual Studio Code](https://platformio.org/install/ide?install=vscode) editor along with the ['Trunk Check' extension](https://marketplace.visualstudio.com/items?itemName=trunk.io) (In beta for windows, WSL2 for the linux version),
|
- We recommend using the [Visual Studio Code](https://platformio.org/install/ide?install=vscode) editor and the 'clang-format' extension,
|
||||||
because it automatically follows our indentation rules and its auto reformatting will not cause spurious changes to lines.
|
because automatically follows our indentation rules and it's auto reformatting will not cause spurious changes to lines.
|
||||||
- If your PR fixes a bug, mention "fixes #bugnum" somewhere in your pull request description.
|
- If your PR fixes a bug, mention "fixes #bugnum" somewhere in your pull request description.
|
||||||
- If your other co-developers have comments on your PR please tweak as needed.
|
- If your other co-developers have comments on your PR please tweak as needed.
|
||||||
- Please also enable "Allow edits by maintainers".
|
|
||||||
- If your PR gets accepted you can request a "Contributor" role in the Meshtastic Discord
|
|
||||||
|
|||||||
72
.github/workflows/build_debian_src.yml
vendored
72
.github/workflows/build_debian_src.yml
vendored
@@ -1,72 +0,0 @@
|
|||||||
name: Build Debian Source Package
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
secrets:
|
|
||||||
PPA_GPG_PRIVATE_KEY:
|
|
||||||
required: true
|
|
||||||
inputs:
|
|
||||||
series:
|
|
||||||
description: Ubuntu/Debian series to target
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
build_location:
|
|
||||||
description: Location where build will execute
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
packages: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-debian-src:
|
|
||||||
runs-on: ubuntu-24.04
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
path: meshtasticd
|
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
|
|
||||||
- name: Install deps
|
|
||||||
shell: bash
|
|
||||||
working-directory: meshtasticd
|
|
||||||
run: |
|
|
||||||
sudo apt-get update -y --fix-missing
|
|
||||||
sudo apt-get install -y software-properties-common build-essential devscripts equivs
|
|
||||||
sudo add-apt-repository ppa:meshtastic/build-tools -y
|
|
||||||
sudo apt-get update -y --fix-missing
|
|
||||||
sudo mk-build-deps --install --remove --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' debian/control
|
|
||||||
|
|
||||||
- name: Import GPG key
|
|
||||||
uses: crazy-max/ghaction-import-gpg@v6
|
|
||||||
with:
|
|
||||||
gpg_private_key: ${{ secrets.PPA_GPG_PRIVATE_KEY }}
|
|
||||||
id: gpg
|
|
||||||
|
|
||||||
- name: Get release version string
|
|
||||||
working-directory: meshtasticd
|
|
||||||
run: |
|
|
||||||
echo "deb=$(./bin/buildinfo.py deb)" >> $GITHUB_OUTPUT
|
|
||||||
env:
|
|
||||||
BUILD_LOCATION: ${{ inputs.build_location }}
|
|
||||||
id: version
|
|
||||||
|
|
||||||
- name: Fetch libdeps, package debian source
|
|
||||||
working-directory: meshtasticd
|
|
||||||
run: debian/ci_pack_sdeb.sh
|
|
||||||
env:
|
|
||||||
SERIES: ${{ inputs.series }}
|
|
||||||
GPG_KEY_ID: ${{ steps.gpg.outputs.keyid }}
|
|
||||||
PKG_VERSION: ${{ steps.version.outputs.deb }}
|
|
||||||
|
|
||||||
- name: Store binaries as an artifact
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: firmware-debian-${{ steps.version.outputs.deb }}~${{ inputs.series }}-src
|
|
||||||
overwrite: true
|
|
||||||
path: |
|
|
||||||
meshtasticd_${{ steps.version.outputs.deb }}*
|
|
||||||
51
.github/workflows/build_docker.yml
vendored
51
.github/workflows/build_docker.yml
vendored
@@ -1,51 +0,0 @@
|
|||||||
name: Build Docker
|
|
||||||
|
|
||||||
on: workflow_call
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
packages: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-native:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
|
|
||||||
- name: Get release version string
|
|
||||||
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
|
||||||
id: version
|
|
||||||
|
|
||||||
- name: Docker login
|
|
||||||
if: ${{ github.event_name != 'pull_request_target' && github.event_name != 'pull_request' }}
|
|
||||||
uses: docker/login-action@v3
|
|
||||||
with:
|
|
||||||
username: meshtastic
|
|
||||||
password: ${{ secrets.DOCKER_FIRMWARE_TOKEN }}
|
|
||||||
|
|
||||||
- name: Docker setup
|
|
||||||
if: ${{ github.event_name != 'pull_request_target' && github.event_name != 'pull_request' }}
|
|
||||||
uses: docker/setup-buildx-action@v3
|
|
||||||
|
|
||||||
- name: Docker build and push tagged versions
|
|
||||||
if: ${{ github.event_name == 'workflow_dispatch' }}
|
|
||||||
uses: docker/build-push-action@v6
|
|
||||||
with:
|
|
||||||
context: .
|
|
||||||
file: ./Dockerfile
|
|
||||||
push: true
|
|
||||||
tags: meshtastic/meshtasticd:${{ steps.version.outputs.long }}
|
|
||||||
|
|
||||||
- name: Docker build and push
|
|
||||||
if: ${{ github.ref == 'refs/heads/master' && github.event_name != 'pull_request_target' && github.event_name != 'pull_request' }}
|
|
||||||
uses: docker/build-push-action@v6
|
|
||||||
with:
|
|
||||||
context: .
|
|
||||||
file: ./Dockerfile
|
|
||||||
push: true
|
|
||||||
tags: meshtastic/meshtasticd:latest
|
|
||||||
37
.github/workflows/build_esp32.yml
vendored
37
.github/workflows/build_esp32.yml
vendored
@@ -1,37 +0,0 @@
|
|||||||
name: Build ESP32
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
board:
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
|
|
||||||
permissions: read-all
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-esp32:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Build ESP32
|
|
||||||
id: build
|
|
||||||
uses: ./.github/actions/build-variant
|
|
||||||
with:
|
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
board: ${{ inputs.board }}
|
|
||||||
remove-debug-flags: >-
|
|
||||||
./arch/esp32/esp32.ini
|
|
||||||
./arch/esp32/esp32s2.ini
|
|
||||||
./arch/esp32/esp32s3.ini
|
|
||||||
./arch/esp32/esp32c3.ini
|
|
||||||
./arch/esp32/esp32c6.ini
|
|
||||||
build-script-path: bin/build-esp32.sh
|
|
||||||
ota-firmware-source: firmware.bin
|
|
||||||
ota-firmware-target: release/bleota.bin
|
|
||||||
artifact-paths: |
|
|
||||||
release/*.bin
|
|
||||||
release/*.elf
|
|
||||||
include-web-ui: true
|
|
||||||
arch: esp32
|
|
||||||
37
.github/workflows/build_esp32_c3.yml
vendored
37
.github/workflows/build_esp32_c3.yml
vendored
@@ -1,37 +0,0 @@
|
|||||||
name: Build ESP32-C3
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
board:
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
|
|
||||||
permissions: read-all
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-esp32-c3:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Build ESP32-C3
|
|
||||||
id: build
|
|
||||||
uses: ./.github/actions/build-variant
|
|
||||||
with:
|
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
board: ${{ inputs.board }}
|
|
||||||
remove-debug-flags: >-
|
|
||||||
./arch/esp32/esp32.ini
|
|
||||||
./arch/esp32/esp32s2.ini
|
|
||||||
./arch/esp32/esp32s3.ini
|
|
||||||
./arch/esp32/esp32c3.ini
|
|
||||||
./arch/esp32/esp32c6.ini
|
|
||||||
build-script-path: bin/build-esp32.sh
|
|
||||||
ota-firmware-source: firmware-c3.bin
|
|
||||||
ota-firmware-target: release/bleota-c3.bin
|
|
||||||
artifact-paths: |
|
|
||||||
release/*.bin
|
|
||||||
release/*.elf
|
|
||||||
include-web-ui: true
|
|
||||||
arch: esp32c3
|
|
||||||
37
.github/workflows/build_esp32_c6.yml
vendored
37
.github/workflows/build_esp32_c6.yml
vendored
@@ -1,37 +0,0 @@
|
|||||||
name: Build ESP32-C6
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
board:
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
|
|
||||||
permissions: read-all
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-esp32-c6:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Build ESP32-C6
|
|
||||||
id: build
|
|
||||||
uses: ./.github/actions/build-variant
|
|
||||||
with:
|
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
board: ${{ inputs.board }}
|
|
||||||
remove-debug-flags: >-
|
|
||||||
./arch/esp32/esp32.ini
|
|
||||||
./arch/esp32/esp32s2.ini
|
|
||||||
./arch/esp32/esp32s3.ini
|
|
||||||
./arch/esp32/esp32c3.ini
|
|
||||||
./arch/esp32/esp32c6.ini
|
|
||||||
build-script-path: bin/build-esp32.sh
|
|
||||||
ota-firmware-source: firmware-c3.bin
|
|
||||||
ota-firmware-target: release/bleota-c3.bin
|
|
||||||
artifact-paths: |
|
|
||||||
release/*.bin
|
|
||||||
release/*.elf
|
|
||||||
include-web-ui: true
|
|
||||||
arch: esp32c6
|
|
||||||
37
.github/workflows/build_esp32_s3.yml
vendored
37
.github/workflows/build_esp32_s3.yml
vendored
@@ -1,37 +0,0 @@
|
|||||||
name: Build ESP32-S3
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
board:
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
|
|
||||||
permissions: read-all
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-esp32-s3:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Build ESP32-S3
|
|
||||||
id: build
|
|
||||||
uses: ./.github/actions/build-variant
|
|
||||||
with:
|
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
board: ${{ inputs.board }}
|
|
||||||
remove-debug-flags: >-
|
|
||||||
./arch/esp32/esp32.ini
|
|
||||||
./arch/esp32/esp32s2.ini
|
|
||||||
./arch/esp32/esp32s3.ini
|
|
||||||
./arch/esp32/esp32c3.ini
|
|
||||||
./arch/esp32/esp32c6.ini
|
|
||||||
build-script-path: bin/build-esp32.sh
|
|
||||||
ota-firmware-source: firmware-s3.bin
|
|
||||||
ota-firmware-target: release/bleota-s3.bin
|
|
||||||
artifact-paths: |
|
|
||||||
release/*.bin
|
|
||||||
release/*.elf
|
|
||||||
include-web-ui: true
|
|
||||||
arch: esp32s3
|
|
||||||
38
.github/workflows/build_native.yml
vendored
38
.github/workflows/build_native.yml
vendored
@@ -1,38 +0,0 @@
|
|||||||
name: Build Native
|
|
||||||
|
|
||||||
on: workflow_call
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
packages: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-native:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
|
|
||||||
- name: Setup native build
|
|
||||||
id: base
|
|
||||||
uses: ./.github/actions/setup-native
|
|
||||||
|
|
||||||
- name: Build Native
|
|
||||||
run: bin/build-native.sh
|
|
||||||
|
|
||||||
- name: Get release version string
|
|
||||||
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
|
||||||
id: version
|
|
||||||
|
|
||||||
- name: Store binaries as an artifact
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: firmware-native-${{ steps.version.outputs.long }}.zip
|
|
||||||
overwrite: true
|
|
||||||
path: |
|
|
||||||
release/meshtasticd_linux_x86_64
|
|
||||||
bin/config-dist.yaml
|
|
||||||
28
.github/workflows/build_nrf52.yml
vendored
28
.github/workflows/build_nrf52.yml
vendored
@@ -1,28 +0,0 @@
|
|||||||
name: Build NRF52
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
board:
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-nrf52:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Build NRF52
|
|
||||||
id: build
|
|
||||||
uses: ./.github/actions/build-variant
|
|
||||||
with:
|
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
board: ${{ inputs.board }}
|
|
||||||
build-script-path: bin/build-nrf52.sh
|
|
||||||
artifact-paths: |
|
|
||||||
release/*.hex
|
|
||||||
release/*.uf2
|
|
||||||
release/*.elf
|
|
||||||
release/*.zip
|
|
||||||
arch: nrf52840
|
|
||||||
52
.github/workflows/build_raspbian.yml
vendored
52
.github/workflows/build_raspbian.yml
vendored
@@ -1,52 +0,0 @@
|
|||||||
name: Build Raspbian
|
|
||||||
|
|
||||||
on: workflow_call
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
packages: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-raspbian:
|
|
||||||
runs-on: [self-hosted, linux, ARM64]
|
|
||||||
steps:
|
|
||||||
- name: Install libbluetooth
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
sudo apt-get update -y --fix-missing
|
|
||||||
sudo apt-get install -y libbluetooth-dev libgpiod-dev libyaml-cpp-dev openssl libssl-dev libulfius-dev liborcania-dev libusb-1.0-0-dev libi2c-dev
|
|
||||||
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
|
|
||||||
- name: Upgrade python tools
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
python -m pip install --upgrade pip
|
|
||||||
pip install -U platformio adafruit-nrfutil
|
|
||||||
pip install -U meshtastic --pre
|
|
||||||
|
|
||||||
- name: Upgrade platformio
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
pio upgrade
|
|
||||||
|
|
||||||
- name: Build Raspbian
|
|
||||||
run: bin/build-native.sh
|
|
||||||
|
|
||||||
- name: Get release version string
|
|
||||||
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
|
||||||
id: version
|
|
||||||
|
|
||||||
- name: Store binaries as an artifact
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: firmware-raspbian-${{ steps.version.outputs.long }}.zip
|
|
||||||
overwrite: true
|
|
||||||
path: |
|
|
||||||
release/meshtasticd_linux_aarch64
|
|
||||||
bin/config-dist.yaml
|
|
||||||
52
.github/workflows/build_raspbian_armv7l.yml
vendored
52
.github/workflows/build_raspbian_armv7l.yml
vendored
@@ -1,52 +0,0 @@
|
|||||||
name: Build Raspbian Arm
|
|
||||||
|
|
||||||
on: workflow_call
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
packages: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-raspbian-armv7l:
|
|
||||||
runs-on: [self-hosted, linux, ARM]
|
|
||||||
steps:
|
|
||||||
- name: Install libbluetooth
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
sudo apt-get update -y --fix-missing
|
|
||||||
sudo apt-get install -y libbluetooth-dev libgpiod-dev libyaml-cpp-dev openssl libssl-dev libulfius-dev liborcania-dev libusb-1.0-0-dev libi2c-dev
|
|
||||||
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
|
|
||||||
- name: Upgrade python tools
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
python -m pip install --upgrade pip
|
|
||||||
pip install -U platformio adafruit-nrfutil
|
|
||||||
pip install -U meshtastic --pre
|
|
||||||
|
|
||||||
- name: Upgrade platformio
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
pio upgrade
|
|
||||||
|
|
||||||
- name: Build Raspbian
|
|
||||||
run: bin/build-native.sh
|
|
||||||
|
|
||||||
- name: Get release version string
|
|
||||||
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
|
||||||
id: version
|
|
||||||
|
|
||||||
- name: Store binaries as an artifact
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: firmware-raspbian-armv7l-${{ steps.version.outputs.long }}.zip
|
|
||||||
overwrite: true
|
|
||||||
path: |
|
|
||||||
release/meshtasticd_linux_armv7l
|
|
||||||
bin/config-dist.yaml
|
|
||||||
26
.github/workflows/build_rpi2040.yml
vendored
26
.github/workflows/build_rpi2040.yml
vendored
@@ -1,26 +0,0 @@
|
|||||||
name: Build RPI2040
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
board:
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-rpi2040:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Build Raspberry Pi 2040
|
|
||||||
id: build
|
|
||||||
uses: ./.github/actions/build-variant
|
|
||||||
with:
|
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
board: ${{ inputs.board }}
|
|
||||||
build-script-path: bin/build-rpi2040.sh
|
|
||||||
artifact-paths: |
|
|
||||||
release/*.uf2
|
|
||||||
release/*.elf
|
|
||||||
arch: rp2040
|
|
||||||
27
.github/workflows/build_stm32.yml
vendored
27
.github/workflows/build_stm32.yml
vendored
@@ -1,27 +0,0 @@
|
|||||||
name: Build STM32
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
board:
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-stm32:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Build STM32WL
|
|
||||||
id: build
|
|
||||||
uses: ./.github/actions/build-variant
|
|
||||||
with:
|
|
||||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
board: ${{ inputs.board }}
|
|
||||||
build-script-path: bin/build-stm32.sh
|
|
||||||
artifact-paths: |
|
|
||||||
release/*.hex
|
|
||||||
release/*.bin
|
|
||||||
release/*.elf
|
|
||||||
arch: stm32
|
|
||||||
45
.github/workflows/daily_packaging.yml
vendored
45
.github/workflows/daily_packaging.yml
vendored
@@ -1,45 +0,0 @@
|
|||||||
name: Daily Packaging
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: 0 9 * * *
|
|
||||||
workflow_dispatch:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
paths:
|
|
||||||
- debian/**
|
|
||||||
- "*.rpkg"
|
|
||||||
- .github/workflows/nightly_packaging.yml
|
|
||||||
- .github/workflows/build_debian_src.yml
|
|
||||||
- .github/workflows/package_ppa.yml
|
|
||||||
- .github/workflows/package_obs.yml
|
|
||||||
- .github/workflows/hook_copr.yml
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
packages: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
package-ppa:
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
series: [plucky, oracular, noble, jammy]
|
|
||||||
uses: ./.github/workflows/package_ppa.yml
|
|
||||||
with:
|
|
||||||
ppa_repo: ppa:meshtastic/daily
|
|
||||||
series: ${{ matrix.series }}
|
|
||||||
secrets: inherit
|
|
||||||
|
|
||||||
package-obs:
|
|
||||||
uses: ./.github/workflows/package_obs.yml
|
|
||||||
with:
|
|
||||||
obs_project: home:meshtastic:daily
|
|
||||||
series: unstable
|
|
||||||
secrets: inherit
|
|
||||||
|
|
||||||
hook-copr:
|
|
||||||
uses: ./.github/workflows/hook_copr.yml
|
|
||||||
with:
|
|
||||||
copr_project: daily
|
|
||||||
secrets: inherit
|
|
||||||
35
.github/workflows/generate-userprefs.yml
vendored
35
.github/workflows/generate-userprefs.yml
vendored
@@ -1,35 +0,0 @@
|
|||||||
name: Generate UsersPrefs JSON manifest
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
paths:
|
|
||||||
- userPrefs.h
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
generate-userprefs:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Install Clang
|
|
||||||
run: sudo apt-get install -y clang
|
|
||||||
|
|
||||||
- name: Install trunk
|
|
||||||
run: curl https://get.trunk.io -fsSL | bash
|
|
||||||
|
|
||||||
- name: Generate userPrefs.jsom
|
|
||||||
run: python3 ./bin/build-userprefs-json.py
|
|
||||||
|
|
||||||
- name: Trunk format json
|
|
||||||
run: trunk format userPrefs.json
|
|
||||||
|
|
||||||
- name: Commit userPrefs.json
|
|
||||||
run: |
|
|
||||||
git config --global user.email "actions@github.com"
|
|
||||||
git config --global user.name "GitHub Actions"
|
|
||||||
git add userPrefs.json
|
|
||||||
git commit -m "Update userPrefs.json"
|
|
||||||
git push
|
|
||||||
61
.github/workflows/hook_copr.yml
vendored
61
.github/workflows/hook_copr.yml
vendored
@@ -1,61 +0,0 @@
|
|||||||
name: Trigger COPR build
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
secrets:
|
|
||||||
COPR_HOOK_DAILY:
|
|
||||||
COPR_HOOK_ALPHA:
|
|
||||||
COPR_HOOK_BETA:
|
|
||||||
inputs:
|
|
||||||
copr_project:
|
|
||||||
description: COPR project to target
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
packages: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-copr-hook:
|
|
||||||
runs-on: ubuntu-24.04
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
ref: ${{ github.ref }}
|
|
||||||
repository: ${{ github.repository }}
|
|
||||||
|
|
||||||
- name: Install Python dependencies
|
|
||||||
run: |
|
|
||||||
pip install requests
|
|
||||||
|
|
||||||
- name: Trigger COPR build
|
|
||||||
shell: python
|
|
||||||
run: |
|
|
||||||
import requests
|
|
||||||
|
|
||||||
project_name = "${{ inputs.copr_project }}"
|
|
||||||
if project_name == "daily":
|
|
||||||
hook_secret = "${{ secrets.COPR_HOOK_DAILY }}"
|
|
||||||
project_id = 160277
|
|
||||||
elif project_name == "alpha":
|
|
||||||
hook_secret = "${{ secrets.COPR_HOOK_ALPHA }}"
|
|
||||||
project_id = 160278
|
|
||||||
elif project_name == "beta":
|
|
||||||
hook_secret = "${{ secrets.COPR_HOOK_BETA }}"
|
|
||||||
project_id = 160279
|
|
||||||
else:
|
|
||||||
raise ValueError(f"Unknown COPR project: {project_name}")
|
|
||||||
|
|
||||||
webhook_url = f"https://copr.fedorainfracloud.org/webhooks/github/{project_id}/{hook_secret}/meshtasticd/"
|
|
||||||
copr_payload = {
|
|
||||||
"ref": "${{ github.ref }}",
|
|
||||||
"after": "${{ github.sha }}",
|
|
||||||
"repository": {
|
|
||||||
"clone_url": "${{ github.server_url }}/${{ github.repository }}.git",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
r = requests.post(webhook_url, json=copr_payload, headers={"X-GitHub-Event": "push"})
|
|
||||||
r.raise_for_status()
|
|
||||||
151
.github/workflows/main.yml
vendored
Normal file
151
.github/workflows/main.yml
vendored
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
name: Continuous Integration (Legacy serial build)
|
||||||
|
on:
|
||||||
|
# Triggers the workflow on push or pull request events but only for the master branch
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
ci-check:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: 'recursive'
|
||||||
|
ref: ${{github.event.pull_request.head.ref}}
|
||||||
|
repository: ${{github.event.pull_request.head.repo.full_name}}
|
||||||
|
|
||||||
|
- name: Install cppcheck
|
||||||
|
run: |
|
||||||
|
sudo apt-get install -y cppcheck
|
||||||
|
|
||||||
|
- name: Setup Python
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: 3.x
|
||||||
|
|
||||||
|
- name: Cache python libs
|
||||||
|
uses: actions/cache@v1
|
||||||
|
id: cache-pip # needed in if test
|
||||||
|
with:
|
||||||
|
path: ~/.cache/pip
|
||||||
|
key: ${{ runner.os }}-pip
|
||||||
|
|
||||||
|
- name: Upgrade python tools and install platformio
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install -U platformio
|
||||||
|
|
||||||
|
- name: Upgrade platformio
|
||||||
|
run: |
|
||||||
|
pio upgrade
|
||||||
|
|
||||||
|
- name: Check everything
|
||||||
|
run: bin/check-all.sh
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ci-build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: 'recursive'
|
||||||
|
ref: ${{github.event.pull_request.head.ref}}
|
||||||
|
repository: ${{github.event.pull_request.head.repo.full_name}}
|
||||||
|
|
||||||
|
- name: Setup Python
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: 3.x
|
||||||
|
|
||||||
|
- name: Cache python libs
|
||||||
|
uses: actions/cache@v1
|
||||||
|
id: cache-pip # needed in if test
|
||||||
|
with:
|
||||||
|
path: ~/.cache/pip
|
||||||
|
key: ${{ runner.os }}-pip
|
||||||
|
|
||||||
|
- name: Upgrade python tools
|
||||||
|
# We actually want to run this every time
|
||||||
|
# if: steps.cache-pip.outputs.cache-hit != 'true'
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install -U platformio meshtastic adafruit-nrfutil
|
||||||
|
|
||||||
|
# - name: Cache platformio
|
||||||
|
# uses: actions/cache@v1
|
||||||
|
# id: cache-platformio # needed in if test
|
||||||
|
# with:
|
||||||
|
# path: ~/.platformio
|
||||||
|
# key: ${{ runner.os }}-platformio
|
||||||
|
|
||||||
|
- name: Upgrade platformio
|
||||||
|
run: |
|
||||||
|
pio upgrade
|
||||||
|
|
||||||
|
- name: Pull web ui
|
||||||
|
uses: dsaltares/fetch-gh-release-asset@master
|
||||||
|
with:
|
||||||
|
repo: "meshtastic/meshtastic-web"
|
||||||
|
file: "build.tar"
|
||||||
|
target: "build.tar"
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Unpack web ui
|
||||||
|
run: |
|
||||||
|
tar -xf build.tar -C data/static
|
||||||
|
rm build.tar
|
||||||
|
|
||||||
|
# We now run integration test before other build steps (to quickly see runtime failures)
|
||||||
|
- name: Build for native
|
||||||
|
run: platformio run -e native
|
||||||
|
- name: Integration test
|
||||||
|
run: |
|
||||||
|
.pio/build/native/program &
|
||||||
|
sleep 20 # 5 seconds was not enough
|
||||||
|
echo "Simulator started, launching python test..."
|
||||||
|
python3 -c 'from meshtastic.test import testSimulator; testSimulator()'
|
||||||
|
|
||||||
|
- name: Cat bin/build-all.sh
|
||||||
|
run: |
|
||||||
|
cat bin/build-all.sh
|
||||||
|
|
||||||
|
- name: Build everything
|
||||||
|
run: bin/build-all.sh
|
||||||
|
|
||||||
|
- name: Get release version string
|
||||||
|
run: echo "::set-output name=version::$(./bin/buildinfo.py long)"
|
||||||
|
id: version
|
||||||
|
|
||||||
|
- name: Store binaries as an artifact
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: firmware-${{ steps.version.outputs.version }}.zip
|
||||||
|
path: release/archive/firmware-${{ steps.version.outputs.version }}.zip
|
||||||
|
retention-days: 90
|
||||||
|
|
||||||
|
- name: Store debugging elf files as an artifact
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: debug-elfs
|
||||||
|
path: release/archive/elfs-*.zip
|
||||||
|
retention-days: 7
|
||||||
|
|
||||||
|
- name: Download firmware.zip
|
||||||
|
uses: actions/download-artifact@master
|
||||||
|
with:
|
||||||
|
name: firmware-${{ steps.version.outputs.version }}.zip
|
||||||
|
path: ./
|
||||||
|
|
||||||
|
- name: Pull request artifacts
|
||||||
|
if: ${{ github.event_name == 'pull_request_target' || github.event_name == 'pull_request' }}
|
||||||
|
uses: gavv/pull-request-artifacts@v1.0.0
|
||||||
|
with:
|
||||||
|
commit: ${{ (github.event.pull_request_target || github.event.pull_request).head.sha }}
|
||||||
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
artifacts-branch: artifacts
|
||||||
|
artifacts: ./firmware-${{ steps.version.outputs.version }}.zip
|
||||||
618
.github/workflows/main_matrix.yml
vendored
618
.github/workflows/main_matrix.yml
vendored
@@ -1,403 +1,349 @@
|
|||||||
name: CI
|
name: Continuous Integration PR Checks (1.2 Legacy)
|
||||||
concurrency:
|
|
||||||
group: ci-${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
on:
|
on:
|
||||||
# # Triggers the workflow on push but only for the master branch
|
# # Triggers the workflow on push but only for the master branch
|
||||||
push:
|
push:
|
||||||
branches: [master, develop]
|
branches: [ 1.2-legacy ]
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- "**.md"
|
- '**.md'
|
||||||
- version.properties
|
- '**.yml'
|
||||||
|
- 'version.properties'
|
||||||
|
|
||||||
# Note: This is different from "pull_request". Need to specify ref when doing checkouts.
|
# Note: This is different from "pull_request". Need to specify ref when doing checkouts.
|
||||||
pull_request_target:
|
pull_request_target:
|
||||||
branches: [master, develop]
|
branches: [ 1.2-legacy ]
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- "**.md"
|
- '**.md'
|
||||||
#- "**.yml"
|
- '**.yml'
|
||||||
|
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
setup:
|
|
||||||
|
check:
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
arch: [esp32, esp32s3, esp32c3, esp32c6, nrf52840, rp2040, stm32, check]
|
include:
|
||||||
|
- board: rak11200
|
||||||
|
- board: tlora-v2
|
||||||
|
- board: tlora-v1
|
||||||
|
- board: tlora_v1_3
|
||||||
|
- board: tlora-v2-1-1.6
|
||||||
|
- board: tbeam
|
||||||
|
- board: heltec-v1
|
||||||
|
- board: heltec-v2.0
|
||||||
|
- board: heltec-v2.1
|
||||||
|
- board: tbeam0.7
|
||||||
|
- board: meshtastic-diy-v1
|
||||||
|
- board: rak4631_5005
|
||||||
|
- board: rak4631_19003
|
||||||
|
- board: t-echo
|
||||||
|
- board: nano-g1
|
||||||
|
- board: meshtastic-dr-dev
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- id: checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
name: Checkout base
|
|
||||||
- id: jsonStep
|
|
||||||
run: |
|
|
||||||
if [[ "${{ github.head_ref }}" == "" ]]; then
|
|
||||||
TARGETS=$(./bin/generate_ci_matrix.py ${{matrix.arch}})
|
|
||||||
else
|
|
||||||
TARGETS=$(./bin/generate_ci_matrix.py ${{matrix.arch}} quick)
|
|
||||||
fi
|
|
||||||
echo "Name: ${{ github.ref_name }} Base: ${{ github.base_ref }} } Ref: ${{ github.ref }} Targets: $TARGETS"
|
|
||||||
echo "${{matrix.arch}}=$(jq -cn --argjson environments "$TARGETS" '{board: $environments}')" >> $GITHUB_OUTPUT
|
|
||||||
outputs:
|
|
||||||
esp32: ${{ steps.jsonStep.outputs.esp32 }}
|
|
||||||
esp32s3: ${{ steps.jsonStep.outputs.esp32s3 }}
|
|
||||||
esp32c3: ${{ steps.jsonStep.outputs.esp32c3 }}
|
|
||||||
esp32c6: ${{ steps.jsonStep.outputs.esp32c6 }}
|
|
||||||
nrf52840: ${{ steps.jsonStep.outputs.nrf52840 }}
|
|
||||||
rp2040: ${{ steps.jsonStep.outputs.rp2040 }}
|
|
||||||
stm32: ${{ steps.jsonStep.outputs.stm32 }}
|
|
||||||
check: ${{ steps.jsonStep.outputs.check }}
|
|
||||||
|
|
||||||
check:
|
- name: Checkout code
|
||||||
needs: setup
|
uses: actions/checkout@v2
|
||||||
strategy:
|
with:
|
||||||
fail-fast: false
|
submodules: 'recursive'
|
||||||
matrix: ${{ fromJson(needs.setup.outputs.check) }}
|
ref: ${{github.event.pull_request.head.ref}}
|
||||||
|
repository: ${{github.event.pull_request.head.repo.full_name}}
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
- name: Install cppcheck
|
||||||
if: ${{ github.event_name != 'workflow_dispatch' }}
|
run: |
|
||||||
steps:
|
sudo apt-get install -y cppcheck
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- name: Build base
|
|
||||||
id: base
|
|
||||||
uses: ./.github/actions/setup-base
|
|
||||||
- name: Check ${{ matrix.board }}
|
|
||||||
run: bin/check-all.sh ${{ matrix.board }}
|
|
||||||
|
|
||||||
build-esp32:
|
- name: Setup Python
|
||||||
needs: setup
|
uses: actions/setup-python@v2
|
||||||
strategy:
|
with:
|
||||||
fail-fast: false
|
python-version: 3.x
|
||||||
matrix: ${{ fromJson(needs.setup.outputs.esp32) }}
|
|
||||||
uses: ./.github/workflows/build_esp32.yml
|
|
||||||
with:
|
|
||||||
board: ${{ matrix.board }}
|
|
||||||
|
|
||||||
build-esp32-s3:
|
- name: Cache python libs
|
||||||
needs: setup
|
uses: actions/cache@v1
|
||||||
strategy:
|
id: cache-pip # needed in if test
|
||||||
fail-fast: false
|
with:
|
||||||
matrix: ${{ fromJson(needs.setup.outputs.esp32s3) }}
|
path: ~/.cache/pip
|
||||||
uses: ./.github/workflows/build_esp32_s3.yml
|
key: ${{ runner.os }}-pip
|
||||||
with:
|
|
||||||
board: ${{ matrix.board }}
|
|
||||||
|
|
||||||
build-esp32-c3:
|
- name: Upgrade python tools and install platformio
|
||||||
needs: setup
|
run: |
|
||||||
strategy:
|
python -m pip install --upgrade pip
|
||||||
fail-fast: false
|
pip install -U platformio
|
||||||
matrix: ${{ fromJson(needs.setup.outputs.esp32c3) }}
|
|
||||||
uses: ./.github/workflows/build_esp32_c3.yml
|
|
||||||
with:
|
|
||||||
board: ${{ matrix.board }}
|
|
||||||
|
|
||||||
build-esp32-c6:
|
- name: Upgrade platformio
|
||||||
needs: setup
|
run: |
|
||||||
strategy:
|
pio upgrade
|
||||||
fail-fast: false
|
|
||||||
matrix: ${{ fromJson(needs.setup.outputs.esp32c6) }}
|
|
||||||
uses: ./.github/workflows/build_esp32_c6.yml
|
|
||||||
with:
|
|
||||||
board: ${{ matrix.board }}
|
|
||||||
|
|
||||||
build-nrf52:
|
|
||||||
needs: setup
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix: ${{ fromJson(needs.setup.outputs.nrf52840) }}
|
|
||||||
uses: ./.github/workflows/build_nrf52.yml
|
|
||||||
with:
|
|
||||||
board: ${{ matrix.board }}
|
|
||||||
|
|
||||||
build-rpi2040:
|
|
||||||
needs: setup
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix: ${{ fromJson(needs.setup.outputs.rp2040) }}
|
|
||||||
uses: ./.github/workflows/build_rpi2040.yml
|
|
||||||
with:
|
|
||||||
board: ${{ matrix.board }}
|
|
||||||
|
|
||||||
build-stm32:
|
|
||||||
needs: setup
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix: ${{ fromJson(needs.setup.outputs.stm32) }}
|
|
||||||
uses: ./.github/workflows/build_stm32.yml
|
|
||||||
with:
|
|
||||||
board: ${{ matrix.board }}
|
|
||||||
|
|
||||||
package-raspbian:
|
|
||||||
uses: ./.github/workflows/package_raspbian.yml
|
|
||||||
|
|
||||||
package-raspbian-armv7l:
|
|
||||||
uses: ./.github/workflows/package_raspbian_armv7l.yml
|
|
||||||
|
|
||||||
package-native:
|
|
||||||
uses: ./.github/workflows/package_amd64.yml
|
|
||||||
|
|
||||||
build-debian-src:
|
|
||||||
uses: ./.github/workflows/build_debian_src.yml
|
|
||||||
with:
|
|
||||||
series: UNRELEASED
|
|
||||||
build_location: local
|
|
||||||
secrets: inherit
|
|
||||||
|
|
||||||
test-native:
|
|
||||||
uses: ./.github/workflows/test_native.yml
|
|
||||||
|
|
||||||
build-docker:
|
|
||||||
if: ${{ github.event_name == 'workflow_dispatch' }}
|
|
||||||
uses: ./.github/workflows/build_docker.yml
|
|
||||||
secrets: inherit
|
|
||||||
|
|
||||||
|
- name: Check ${{ matrix.board }}
|
||||||
|
run: bin/check-all.sh ${{ matrix.board }}
|
||||||
|
|
||||||
after-checks:
|
after-checks:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: ${{ github.event_name != 'workflow_dispatch' }}
|
|
||||||
needs: [check]
|
needs: [check]
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
ref: ${{github.event.pull_request.head.ref}}
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
repository: ${{github.event.pull_request.head.repo.full_name}}
|
||||||
|
|
||||||
gather-artifacts:
|
build-esp32:
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
pull-requests: write
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
arch: [esp32, esp32s3, esp32c3, esp32c6, nrf52840, rp2040, stm32]
|
include:
|
||||||
|
- board: rak11200
|
||||||
|
- board: tlora-v2
|
||||||
|
- board: tlora-v1
|
||||||
|
- board: tlora_v1_3
|
||||||
|
- board: tlora-v2-1-1.6
|
||||||
|
- board: tbeam
|
||||||
|
- board: heltec-v1
|
||||||
|
- board: heltec-v2.0
|
||||||
|
- board: heltec-v2.1
|
||||||
|
- board: tbeam0.7
|
||||||
|
- board: meshtastic-diy-v1
|
||||||
|
- board: nano-g1
|
||||||
|
- board: meshtastic-dr-dev
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs:
|
|
||||||
[
|
|
||||||
build-esp32,
|
|
||||||
build-esp32-s3,
|
|
||||||
build-esp32-c3,
|
|
||||||
build-esp32-c6,
|
|
||||||
build-nrf52,
|
|
||||||
build-rpi2040,
|
|
||||||
build-stm32,
|
|
||||||
]
|
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: 'recursive'
|
||||||
|
ref: ${{github.event.pull_request.head.ref}}
|
||||||
|
repository: ${{github.event.pull_request.head.repo.full_name}}
|
||||||
|
|
||||||
|
- name: Setup Python
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: 3.x
|
||||||
|
|
||||||
|
- name: Cache python libs
|
||||||
|
uses: actions/cache@v1
|
||||||
|
id: cache-pip # needed in if test
|
||||||
|
with:
|
||||||
|
path: ~/.cache/pip
|
||||||
|
key: ${{ runner.os }}-pip
|
||||||
|
|
||||||
|
- name: Upgrade python tools
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install -U platformio meshtastic adafruit-nrfutil
|
||||||
|
|
||||||
|
- name: Upgrade platformio
|
||||||
|
run: |
|
||||||
|
pio upgrade
|
||||||
|
|
||||||
|
- name: Pull web ui
|
||||||
|
uses: dsaltares/fetch-gh-release-asset@master
|
||||||
|
with:
|
||||||
|
repo: "meshtastic/meshtastic-web"
|
||||||
|
file: "build.tar"
|
||||||
|
target: "build.tar"
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Unpack web ui
|
||||||
|
run: |
|
||||||
|
tar -xf build.tar -C data/static
|
||||||
|
rm build.tar
|
||||||
|
|
||||||
|
- name: Build ESP32
|
||||||
|
run: bin/build-esp32.sh ${{ matrix.board }}
|
||||||
|
|
||||||
|
- name: Get release version string
|
||||||
|
run: echo "::set-output name=version::$(./bin/buildinfo.py long)"
|
||||||
|
id: version
|
||||||
|
|
||||||
|
- name: Store binaries as an artifact
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: firmware-${{ matrix.board }}-${{ steps.version.outputs.version }}.zip
|
||||||
|
path: |
|
||||||
|
release/*.bin
|
||||||
|
release/*.elf
|
||||||
|
retention-days: 90
|
||||||
|
|
||||||
|
build-nrf52:
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- board: rak4631_5005
|
||||||
|
- board: rak4631_19003
|
||||||
|
- board: t-echo
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: 'recursive'
|
||||||
|
ref: ${{github.event.pull_request.head.ref}}
|
||||||
|
repository: ${{github.event.pull_request.head.repo.full_name}}
|
||||||
|
|
||||||
|
- name: Setup Python
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: 3.x
|
||||||
|
|
||||||
|
- name: Cache python libs
|
||||||
|
uses: actions/cache@v1
|
||||||
|
id: cache-pip # needed in if test
|
||||||
|
with:
|
||||||
|
path: ~/.cache/pip
|
||||||
|
key: ${{ runner.os }}-pip
|
||||||
|
|
||||||
|
- name: Upgrade python tools
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install -U platformio meshtastic adafruit-nrfutil
|
||||||
|
|
||||||
|
- name: Upgrade platformio
|
||||||
|
run: |
|
||||||
|
pio upgrade
|
||||||
|
|
||||||
|
- name: Build NRF52
|
||||||
|
run: bin/build-nrf52.sh ${{ matrix.board }}
|
||||||
|
|
||||||
|
- name: Get release version string
|
||||||
|
run: echo "::set-output name=version::$(./bin/buildinfo.py long)"
|
||||||
|
id: version
|
||||||
|
|
||||||
|
- name: Store binaries as an artifact
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: firmware-${{ matrix.board }}-${{ steps.version.outputs.version }}.zip
|
||||||
|
path: |
|
||||||
|
release/*.uf2
|
||||||
|
release/*.elf
|
||||||
|
retention-days: 90
|
||||||
|
|
||||||
|
build-native:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: 'recursive'
|
||||||
|
ref: ${{github.event.pull_request.head.ref}}
|
||||||
|
repository: ${{github.event.pull_request.head.repo.full_name}}
|
||||||
|
|
||||||
|
- name: Setup Python
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: 3.x
|
||||||
|
|
||||||
|
- name: Cache python libs
|
||||||
|
uses: actions/cache@v1
|
||||||
|
id: cache-pip # needed in if test
|
||||||
|
with:
|
||||||
|
path: ~/.cache/pip
|
||||||
|
key: ${{ runner.os }}-pip
|
||||||
|
|
||||||
|
- name: Upgrade python tools
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install -U platformio meshtastic adafruit-nrfutil
|
||||||
|
|
||||||
|
- name: Upgrade platformio
|
||||||
|
run: |
|
||||||
|
pio upgrade
|
||||||
|
|
||||||
|
# We now run integration test before other build steps (to quickly see runtime failures)
|
||||||
|
- name: Build for native
|
||||||
|
run: platformio run -e native
|
||||||
|
- name: Integration test
|
||||||
|
run: |
|
||||||
|
.pio/build/native/program &
|
||||||
|
sleep 20 # 5 seconds was not enough
|
||||||
|
echo "Simulator started, launching python test..."
|
||||||
|
python3 -c 'from meshtastic.test import testSimulator; testSimulator()'
|
||||||
|
|
||||||
|
- name: Build Native
|
||||||
|
run: bin/build-native.sh
|
||||||
|
|
||||||
|
- name: Get release version string
|
||||||
|
run: echo "::set-output name=version::$(./bin/buildinfo.py long)"
|
||||||
|
id: version
|
||||||
|
|
||||||
|
- name: Store binaries as an artifact
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: firmware-native-${{ steps.version.outputs.version }}.zip
|
||||||
|
path: |
|
||||||
|
release/meshtasticd_linux_amd64
|
||||||
|
release/device-*.sh
|
||||||
|
release/device-*.bat
|
||||||
|
retention-days: 90
|
||||||
|
|
||||||
|
gather-artifacts:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [build-esp32, build-nrf52, build-native]
|
||||||
|
steps:
|
||||||
|
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
ref: ${{github.event.pull_request.head.ref}}
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
repository: ${{github.event.pull_request.head.repo.full_name}}
|
||||||
|
|
||||||
- uses: actions/download-artifact@v4
|
- uses: actions/download-artifact@v2
|
||||||
with:
|
with:
|
||||||
path: ./
|
path: ./
|
||||||
pattern: firmware-${{matrix.arch}}-*
|
|
||||||
merge-multiple: true
|
|
||||||
|
|
||||||
- name: Display structure of downloaded files
|
|
||||||
run: ls -R
|
|
||||||
|
|
||||||
- name: Get release version string
|
- name: Get release version string
|
||||||
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
run: echo "::set-output name=version::$(./bin/buildinfo.py long)"
|
||||||
id: version
|
id: version
|
||||||
|
|
||||||
- name: Move files up
|
- name: Move files up
|
||||||
run: mv -b -t ./ ./bin/device-*.sh ./bin/device-*.bat
|
run: mv -b -t ./ ./*tbeam-*/spiffs*.bin ./*tbeam-*/system-info.bin ./**/firmware*.bin ./**/*.uf2 ./**/*.elf ./**/meshtasticd_linux_amd64 ./*native*/*device-*.sh ./*native*/*device-*.bat
|
||||||
|
|
||||||
- name: Repackage in single firmware zip
|
- name: Repackage in single firmware zip
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: firmware-${{matrix.arch}}-${{ steps.version.outputs.long }}
|
name: firmware-${{ steps.version.outputs.version }}
|
||||||
overwrite: true
|
path: |
|
||||||
path: |
|
./*.bin
|
||||||
./firmware-*.bin
|
./*.uf2
|
||||||
./firmware-*.uf2
|
./meshtasticd_linux_amd64
|
||||||
./firmware-*.hex
|
|
||||||
./firmware-*-ota.zip
|
|
||||||
./device-*.sh
|
./device-*.sh
|
||||||
./device-*.bat
|
./device-*.bat
|
||||||
./littlefs-*.bin
|
retention-days: 90
|
||||||
./littlefswebui-*.bin
|
|
||||||
./bleota*bin
|
|
||||||
./Meshtastic_nRF52_factory_erase*.uf2
|
|
||||||
retention-days: 30
|
|
||||||
|
|
||||||
- uses: actions/download-artifact@v4
|
- uses: actions/download-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: firmware-${{matrix.arch}}-${{ steps.version.outputs.long }}
|
name: firmware-${{ steps.version.outputs.version }}
|
||||||
merge-multiple: true
|
|
||||||
path: ./output
|
path: ./output
|
||||||
|
|
||||||
# For diagnostics
|
# For diagnostics
|
||||||
- name: Show artifacts
|
- name: Show artifacts
|
||||||
run: ls -lR
|
run: ls -lR
|
||||||
|
|
||||||
- name: Device scripts permissions
|
|
||||||
run: |
|
|
||||||
chmod +x ./output/device-install.sh
|
|
||||||
chmod +x ./output/device-update.sh
|
|
||||||
|
|
||||||
- name: Zip firmware
|
- name: Zip firmware
|
||||||
run: zip -j -9 -r ./firmware-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip ./output
|
run: zip -j -r ./firmware-${{ steps.version.outputs.version }}.zip ./output
|
||||||
|
|
||||||
- name: Repackage in single elfs zip
|
- name: Repackage in single elfs zip
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip
|
name: debug-elfs-${{ steps.version.outputs.version }}.zip
|
||||||
overwrite: true
|
|
||||||
path: ./*.elf
|
path: ./*.elf
|
||||||
retention-days: 30
|
retention-days: 90
|
||||||
|
|
||||||
- uses: scruplelesswizard/comment-artifact@main
|
- name: Create request artifacts
|
||||||
if: ${{ github.event_name == 'pull_request' }}
|
if: ${{ github.event_name == 'pull_request_target' || github.event_name == 'pull_request' }}
|
||||||
|
uses: gavv/pull-request-artifacts@v1.0.0
|
||||||
with:
|
with:
|
||||||
name: firmware-${{matrix.arch}}-${{ steps.version.outputs.long }}
|
commit: ${{ (github.event.pull_request_target || github.event.pull_request).head.sha }}
|
||||||
description: "Download firmware-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip. This artifact will be available for 90 days from creation"
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
artifacts-token: ${{ secrets.ARTIFACTS_TOKEN }}
|
||||||
|
artifacts-repo: meshtastic/artifacts
|
||||||
release-artifacts:
|
artifacts-branch: device
|
||||||
runs-on: ubuntu-latest
|
artifacts-dir: pr
|
||||||
if: ${{ github.event_name == 'workflow_dispatch' }}
|
artifacts: ./firmware-${{ steps.version.outputs.version }}.zip
|
||||||
outputs:
|
|
||||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
|
||||||
needs:
|
|
||||||
[
|
|
||||||
gather-artifacts,
|
|
||||||
package-raspbian,
|
|
||||||
package-raspbian-armv7l,
|
|
||||||
package-native,
|
|
||||||
build-debian-src,
|
|
||||||
]
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Setup Python
|
|
||||||
uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: 3.x
|
|
||||||
|
|
||||||
- name: Get release version string
|
|
||||||
run: |
|
|
||||||
echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
|
||||||
echo "deb=$(./bin/buildinfo.py deb)" >> $GITHUB_OUTPUT
|
|
||||||
id: version
|
|
||||||
env:
|
|
||||||
BUILD_LOCATION: local
|
|
||||||
|
|
||||||
- name: Create release
|
|
||||||
uses: softprops/action-gh-release@v2
|
|
||||||
id: create_release
|
|
||||||
with:
|
|
||||||
draft: true
|
|
||||||
prerelease: true
|
|
||||||
name: Meshtastic Firmware ${{ steps.version.outputs.long }} Alpha
|
|
||||||
tag_name: v${{ steps.version.outputs.long }}
|
|
||||||
body: |
|
|
||||||
Autogenerated by github action, developer should edit as required before publishing...
|
|
||||||
|
|
||||||
- name: Download deb files
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
pattern: meshtasticd_${{ steps.version.outputs.long }}_*.deb
|
|
||||||
merge-multiple: true
|
|
||||||
path: ./output
|
|
||||||
|
|
||||||
- name: Download source deb
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
pattern: firmware-debian-${{ steps.version.outputs.deb }}~UNRELEASED-src
|
|
||||||
merge-multiple: true
|
|
||||||
path: ./output/debian-src
|
|
||||||
|
|
||||||
- name: Zip source deb
|
|
||||||
working-directory: output
|
|
||||||
run: zip -j -9 -r ./meshtasticd-${{ steps.version.outputs.deb }}-src.zip ./debian-src
|
|
||||||
|
|
||||||
# For diagnostics
|
|
||||||
- name: Display structure of downloaded files
|
|
||||||
run: ls -lR
|
|
||||||
|
|
||||||
- name: Add deb files to release
|
|
||||||
run: |
|
|
||||||
gh release upload v${{ steps.version.outputs.long }} ./output/meshtasticd_${{ steps.version.outputs.long }}_arm64.deb
|
|
||||||
gh release upload v${{ steps.version.outputs.long }} ./output/meshtasticd_${{ steps.version.outputs.long }}_armhf.deb
|
|
||||||
gh release upload v${{ steps.version.outputs.long }} ./output/meshtasticd_${{ steps.version.outputs.long }}_amd64.deb
|
|
||||||
gh release upload v${{ steps.version.outputs.long }} ./output/meshtasticd-${{ steps.version.outputs.deb }}-src.zip
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Bump version.properties
|
|
||||||
run: >-
|
|
||||||
bin/bump_version.py
|
|
||||||
|
|
||||||
- name: Update debian changelog
|
|
||||||
run: >-
|
|
||||||
debian/ci_changelog.sh
|
|
||||||
|
|
||||||
- name: Create version.properties pull request
|
|
||||||
uses: peter-evans/create-pull-request@v7
|
|
||||||
with:
|
|
||||||
title: Bump version.properties
|
|
||||||
add-paths: |
|
|
||||||
version.properties
|
|
||||||
debian/changelog
|
|
||||||
|
|
||||||
release-firmware:
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
arch: [esp32, esp32s3, esp32c3, esp32c6, nrf52840, rp2040, stm32]
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
if: ${{ github.event_name == 'workflow_dispatch' }}
|
|
||||||
needs: [release-artifacts]
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Setup Python
|
|
||||||
uses: actions/setup-python@v5
|
|
||||||
with:
|
|
||||||
python-version: 3.x
|
|
||||||
|
|
||||||
- name: Get release version string
|
|
||||||
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
|
||||||
id: version
|
|
||||||
|
|
||||||
- uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
pattern: firmware-${{matrix.arch}}-${{ steps.version.outputs.long }}
|
|
||||||
merge-multiple: true
|
|
||||||
path: ./output
|
|
||||||
|
|
||||||
- name: Display structure of downloaded files
|
|
||||||
run: ls -lR
|
|
||||||
|
|
||||||
- name: Device scripts permissions
|
|
||||||
run: |
|
|
||||||
chmod +x ./output/device-install.sh
|
|
||||||
chmod +x ./output/device-update.sh
|
|
||||||
|
|
||||||
- name: Zip firmware
|
|
||||||
run: zip -j -9 -r ./firmware-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip ./output
|
|
||||||
|
|
||||||
- uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip
|
|
||||||
merge-multiple: true
|
|
||||||
path: ./elfs
|
|
||||||
|
|
||||||
- name: Zip debug elfs
|
|
||||||
run: zip -j -9 -r ./debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip ./elfs
|
|
||||||
|
|
||||||
# For diagnostics
|
|
||||||
- name: Display structure of downloaded files
|
|
||||||
run: ls -lR
|
|
||||||
|
|
||||||
- name: Add bins and debug elfs to release
|
|
||||||
run: |
|
|
||||||
gh release upload v${{ steps.version.outputs.long }} ./firmware-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip
|
|
||||||
gh release upload v${{ steps.version.outputs.long }} ./debug-elfs-${{matrix.arch}}-${{ steps.version.outputs.long }}.zip
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|||||||
19
.github/workflows/nightly.yml
vendored
19
.github/workflows/nightly.yml
vendored
@@ -1,19 +0,0 @@
|
|||||||
name: Nightly
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: 0 8 * * 1-5
|
|
||||||
workflow_dispatch: {}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
trunk_check:
|
|
||||||
name: Trunk Check Upload
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Trunk Check
|
|
||||||
uses: trunk-io/trunk-action@782e83f803ca6e369f035d64c6ba2768174ba61b
|
|
||||||
with:
|
|
||||||
trunk-token: ${{ secrets.TRUNK_TOKEN }}
|
|
||||||
90
.github/workflows/package_amd64.yml
vendored
90
.github/workflows/package_amd64.yml
vendored
@@ -1,90 +0,0 @@
|
|||||||
name: Package Native
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
packages: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-native:
|
|
||||||
uses: ./.github/workflows/build_native.yml
|
|
||||||
|
|
||||||
package-native:
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
needs: build-native
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
|
|
||||||
- name: Pull web ui
|
|
||||||
uses: dsaltares/fetch-gh-release-asset@master
|
|
||||||
with:
|
|
||||||
repo: meshtastic/web
|
|
||||||
file: build.tar
|
|
||||||
target: build.tar
|
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Get release version string
|
|
||||||
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
|
||||||
id: version
|
|
||||||
|
|
||||||
- name: Download artifacts
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: firmware-native-${{ steps.version.outputs.long }}.zip
|
|
||||||
merge-multiple: true
|
|
||||||
|
|
||||||
- name: Display structure of downloaded files
|
|
||||||
run: ls -R
|
|
||||||
|
|
||||||
- name: build .debpkg
|
|
||||||
run: |
|
|
||||||
mkdir -p .debpkg/DEBIAN
|
|
||||||
mkdir -p .debpkg/usr/share/meshtasticd/web
|
|
||||||
mkdir -p .debpkg/usr/sbin
|
|
||||||
mkdir -p .debpkg/etc/meshtasticd
|
|
||||||
mkdir -p .debpkg/etc/meshtasticd/config.d
|
|
||||||
mkdir -p .debpkg/etc/meshtasticd/available.d
|
|
||||||
mkdir -p .debpkg/usr/lib/systemd/system/
|
|
||||||
tar -xf build.tar -C .debpkg/usr/share/meshtasticd/web
|
|
||||||
shopt -s dotglob nullglob
|
|
||||||
if [ -d .debpkg/usr/share/meshtasticd/web/build ]; then mv .debpkg/usr/share/meshtasticd/web/build/* .debpkg/usr/share/meshtasticd/web/; fi
|
|
||||||
if [ -d .debpkg/usr/share/meshtasticd/web/build ]; then rmdir .debpkg/usr/share/meshtasticd/web/build; fi
|
|
||||||
if [ -d .debpkg/usr/share/meshtasticd/web/.DS_Store ]; then rm -f .debpkg/usr/share/meshtasticd/web/.DS_Store; fi
|
|
||||||
gunzip .debpkg/usr/share/meshtasticd/web/ -r
|
|
||||||
cp release/meshtasticd_linux_x86_64 .debpkg/usr/sbin/meshtasticd
|
|
||||||
cp bin/config-dist.yaml .debpkg/etc/meshtasticd/config.yaml
|
|
||||||
cp bin/config.d/* .debpkg/etc/meshtasticd/available.d/ -r
|
|
||||||
chmod +x .debpkg/usr/sbin/meshtasticd
|
|
||||||
cp bin/meshtasticd.service .debpkg/usr/lib/systemd/system/meshtasticd.service
|
|
||||||
echo "/etc/meshtasticd/config.yaml" > .debpkg/DEBIAN/conffiles
|
|
||||||
chmod +x .debpkg/DEBIAN/conffiles
|
|
||||||
# Transition /usr/share/doc/meshtasticd to /usr/share/meshtasticd
|
|
||||||
echo "rm -rf /usr/share/doc/meshtasticd" > .debpkg/DEBIAN/preinst
|
|
||||||
chmod +x .debpkg/DEBIAN/preinst
|
|
||||||
echo "ln -sf /usr/share/meshtasticd /usr/share/doc/meshtasticd" > .debpkg/DEBIAN/postinst
|
|
||||||
chmod +x .debpkg/DEBIAN/postinst
|
|
||||||
|
|
||||||
- uses: jiro4989/build-deb-action@v3
|
|
||||||
with:
|
|
||||||
package: meshtasticd
|
|
||||||
package_root: .debpkg
|
|
||||||
maintainer: Jonathan Bennett
|
|
||||||
version: ${{ steps.version.outputs.long }} # refs/tags/v*.*.*
|
|
||||||
arch: amd64
|
|
||||||
depends: libyaml-cpp0.7, openssl, libulfius2.7, libi2c0
|
|
||||||
desc: Native Linux Meshtastic binary.
|
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: meshtasticd_${{ steps.version.outputs.long }}_amd64.deb
|
|
||||||
overwrite: true
|
|
||||||
path: |
|
|
||||||
./*.deb
|
|
||||||
110
.github/workflows/package_obs.yml
vendored
110
.github/workflows/package_obs.yml
vendored
@@ -1,110 +0,0 @@
|
|||||||
name: Package for OpenSUSE Build Service
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
secrets:
|
|
||||||
OBS_PASSWORD:
|
|
||||||
required: true
|
|
||||||
PPA_GPG_PRIVATE_KEY:
|
|
||||||
required: true
|
|
||||||
inputs:
|
|
||||||
obs_project:
|
|
||||||
description: Meshtastic OBS project to target
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
series:
|
|
||||||
description: Debian series to target
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
packages: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-debian-src:
|
|
||||||
uses: ./.github/workflows/build_debian_src.yml
|
|
||||||
secrets: inherit
|
|
||||||
with:
|
|
||||||
series: ${{ inputs.series }}
|
|
||||||
build_location: obs
|
|
||||||
|
|
||||||
package-obs:
|
|
||||||
runs-on: ubuntu-24.04
|
|
||||||
needs: build-debian-src
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
path: meshtasticd
|
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
|
|
||||||
- name: Install OpenSUSE Build Service deps
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo 'deb http://download.opensuse.org/repositories/openSUSE:/Tools/xUbuntu_24.04/ /' | sudo tee /etc/apt/sources.list.d/openSUSE:Tools.list
|
|
||||||
curl -fsSL https://download.opensuse.org/repositories/openSUSE:Tools/xUbuntu_24.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/openSUSE_Tools.gpg > /dev/null
|
|
||||||
sudo apt-get update -y --fix-missing
|
|
||||||
sudo apt-get install -y osc
|
|
||||||
|
|
||||||
- name: Get release version string
|
|
||||||
working-directory: meshtasticd
|
|
||||||
run: |
|
|
||||||
echo "deb=$(./bin/buildinfo.py deb)" >> $GITHUB_OUTPUT
|
|
||||||
env:
|
|
||||||
BUILD_LOCATION: obs
|
|
||||||
id: version
|
|
||||||
|
|
||||||
- name: Download artifacts
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: firmware-debian-${{ steps.version.outputs.deb }}~${{ inputs.series }}-src
|
|
||||||
merge-multiple: true
|
|
||||||
|
|
||||||
- name: Display structure of downloaded files
|
|
||||||
run: ls -lah
|
|
||||||
|
|
||||||
- name: Configure osc
|
|
||||||
env:
|
|
||||||
OBS_USERNAME: meshtastic
|
|
||||||
run: |
|
|
||||||
# Setup OpenSUSE Build Service credentials
|
|
||||||
mkdir -p ~/.config/osc
|
|
||||||
echo "[general]" > ~/.config/osc/oscrc
|
|
||||||
echo "apiurl=https://api.opensuse.org" >> ~/.config/osc/oscrc
|
|
||||||
echo "[https://api.opensuse.org]" >> ~/.config/osc/oscrc
|
|
||||||
echo "user=${{ env.OBS_USERNAME }}" >> ~/.config/osc/oscrc
|
|
||||||
echo "pass=${{ secrets.OBS_PASSWORD }}" >> ~/.config/osc/oscrc
|
|
||||||
echo "credentials_mgr_class=osc.credentials.PlaintextConfigFileCredentialsManager" >> ~/.config/osc/oscrc
|
|
||||||
# Create a temporary directory for osc checkout
|
|
||||||
mkdir -p osc
|
|
||||||
|
|
||||||
# Intentionally fail if credentials are invalid
|
|
||||||
# Update secrets if this returns `401`
|
|
||||||
- name: Verify OBS authentication
|
|
||||||
run: osc token
|
|
||||||
|
|
||||||
- name: Upload package to OBS
|
|
||||||
shell: bash
|
|
||||||
working-directory: osc
|
|
||||||
env:
|
|
||||||
OBS_PROJECT: ${{ inputs.obs_project }}
|
|
||||||
OBS_PACKAGE: meshtasticd
|
|
||||||
run: |
|
|
||||||
# Initialize the package in the current directory
|
|
||||||
osc checkout --output-dir . $OBS_PROJECT $OBS_PACKAGE
|
|
||||||
|
|
||||||
# Remove the existing package files
|
|
||||||
rm -rf *.dsc *.tar.xz
|
|
||||||
|
|
||||||
# Copy new package files to the directory
|
|
||||||
cp $GITHUB_WORKSPACE/*.dsc .
|
|
||||||
cp $GITHUB_WORKSPACE/*.tar.xz .
|
|
||||||
|
|
||||||
# Add/Remove the files
|
|
||||||
osc addremove
|
|
||||||
|
|
||||||
# Commit changes and push to OpenSUSE Build Service
|
|
||||||
osc commit -m "GitHub Actions: ${{ steps.version.outputs.deb }}~${{ inputs.series }}"
|
|
||||||
74
.github/workflows/package_ppa.yml
vendored
74
.github/workflows/package_ppa.yml
vendored
@@ -1,74 +0,0 @@
|
|||||||
name: Package for Launchpad PPA
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
secrets:
|
|
||||||
PPA_GPG_PRIVATE_KEY:
|
|
||||||
required: true
|
|
||||||
inputs:
|
|
||||||
ppa_repo:
|
|
||||||
description: Meshtastic PPA to target
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
series:
|
|
||||||
description: Ubuntu series to target
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
packages: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-debian-src:
|
|
||||||
uses: ./.github/workflows/build_debian_src.yml
|
|
||||||
secrets: inherit
|
|
||||||
with:
|
|
||||||
series: ${{ inputs.series }}
|
|
||||||
build_location: ppa
|
|
||||||
|
|
||||||
package-ppa:
|
|
||||||
runs-on: ubuntu-24.04
|
|
||||||
needs: build-debian-src
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
path: meshtasticd
|
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
|
|
||||||
- name: Install deps
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
sudo apt-get update -y --fix-missing
|
|
||||||
sudo apt-get install -y dput
|
|
||||||
|
|
||||||
- name: Import GPG key
|
|
||||||
uses: crazy-max/ghaction-import-gpg@v6
|
|
||||||
with:
|
|
||||||
gpg_private_key: ${{ secrets.PPA_GPG_PRIVATE_KEY }}
|
|
||||||
id: gpg
|
|
||||||
|
|
||||||
- name: Get release version string
|
|
||||||
working-directory: meshtasticd
|
|
||||||
run: |
|
|
||||||
echo "deb=$(./bin/buildinfo.py deb)" >> $GITHUB_OUTPUT
|
|
||||||
env:
|
|
||||||
BUILD_LOCATION: ppa
|
|
||||||
id: version
|
|
||||||
|
|
||||||
- name: Download artifacts
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: firmware-debian-${{ steps.version.outputs.deb }}~${{ inputs.series }}-src
|
|
||||||
merge-multiple: true
|
|
||||||
|
|
||||||
- name: Display structure of downloaded files
|
|
||||||
run: ls -lah
|
|
||||||
|
|
||||||
- name: Publish with dput
|
|
||||||
if: ${{ github.event_name != 'pull_request_target' && github.event_name != 'pull_request' }}
|
|
||||||
run: |
|
|
||||||
dput ${{ inputs.ppa_repo }} meshtasticd_${{ steps.version.outputs.deb }}~${{ inputs.series }}_source.changes
|
|
||||||
90
.github/workflows/package_raspbian.yml
vendored
90
.github/workflows/package_raspbian.yml
vendored
@@ -1,90 +0,0 @@
|
|||||||
name: Package Raspbian
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
packages: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-raspbian:
|
|
||||||
uses: ./.github/workflows/build_raspbian.yml
|
|
||||||
|
|
||||||
package-raspbian:
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
needs: build-raspbian
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
|
|
||||||
- name: Pull web ui
|
|
||||||
uses: dsaltares/fetch-gh-release-asset@master
|
|
||||||
with:
|
|
||||||
repo: meshtastic/web
|
|
||||||
file: build.tar
|
|
||||||
target: build.tar
|
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Get release version string
|
|
||||||
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
|
||||||
id: version
|
|
||||||
|
|
||||||
- name: Download artifacts
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: firmware-raspbian-${{ steps.version.outputs.long }}.zip
|
|
||||||
merge-multiple: true
|
|
||||||
|
|
||||||
- name: Display structure of downloaded files
|
|
||||||
run: ls -R
|
|
||||||
|
|
||||||
- name: build .debpkg
|
|
||||||
run: |
|
|
||||||
mkdir -p .debpkg/DEBIAN
|
|
||||||
mkdir -p .debpkg/usr/share/meshtasticd/web
|
|
||||||
mkdir -p .debpkg/usr/sbin
|
|
||||||
mkdir -p .debpkg/etc/meshtasticd
|
|
||||||
mkdir -p .debpkg/etc/meshtasticd/config.d
|
|
||||||
mkdir -p .debpkg/etc/meshtasticd/available.d
|
|
||||||
mkdir -p .debpkg/usr/lib/systemd/system/
|
|
||||||
tar -xf build.tar -C .debpkg/usr/share/meshtasticd/web
|
|
||||||
shopt -s dotglob nullglob
|
|
||||||
if [ -d .debpkg/usr/share/meshtasticd/web/build ]; then mv .debpkg/usr/share/meshtasticd/web/build/* .debpkg/usr/share/meshtasticd/web/; fi
|
|
||||||
if [ -d .debpkg/usr/share/meshtasticd/web/build ]; then rmdir .debpkg/usr/share/meshtasticd/web/build; fi
|
|
||||||
if [ -d .debpkg/usr/share/meshtasticd/web/.DS_Store ]; then rm -f .debpkg/usr/share/meshtasticd/web/.DS_Store; fi
|
|
||||||
gunzip .debpkg/usr/share/meshtasticd/web/ -r
|
|
||||||
cp release/meshtasticd_linux_aarch64 .debpkg/usr/sbin/meshtasticd
|
|
||||||
cp bin/config-dist.yaml .debpkg/etc/meshtasticd/config.yaml
|
|
||||||
cp bin/config.d/* .debpkg/etc/meshtasticd/available.d/ -r
|
|
||||||
chmod +x .debpkg/usr/sbin/meshtasticd
|
|
||||||
cp bin/meshtasticd.service .debpkg/usr/lib/systemd/system/meshtasticd.service
|
|
||||||
echo "/etc/meshtasticd/config.yaml" > .debpkg/DEBIAN/conffiles
|
|
||||||
chmod +x .debpkg/DEBIAN/conffiles
|
|
||||||
# Transition /usr/share/doc/meshtasticd to /usr/share/meshtasticd
|
|
||||||
echo "rm -rf /usr/share/doc/meshtasticd" > .debpkg/DEBIAN/preinst
|
|
||||||
chmod +x .debpkg/DEBIAN/preinst
|
|
||||||
echo "ln -sf /usr/share/meshtasticd /usr/share/doc/meshtasticd" > .debpkg/DEBIAN/postinst
|
|
||||||
chmod +x .debpkg/DEBIAN/postinst
|
|
||||||
|
|
||||||
- uses: jiro4989/build-deb-action@v3
|
|
||||||
with:
|
|
||||||
package: meshtasticd
|
|
||||||
package_root: .debpkg
|
|
||||||
maintainer: Jonathan Bennett
|
|
||||||
version: ${{ steps.version.outputs.long }} # refs/tags/v*.*.*
|
|
||||||
arch: arm64
|
|
||||||
depends: libyaml-cpp0.7, openssl, libulfius2.7, libi2c0
|
|
||||||
desc: Native Linux Meshtastic binary.
|
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: meshtasticd_${{ steps.version.outputs.long }}_arm64.deb
|
|
||||||
overwrite: true
|
|
||||||
path: |
|
|
||||||
./*.deb
|
|
||||||
90
.github/workflows/package_raspbian_armv7l.yml
vendored
90
.github/workflows/package_raspbian_armv7l.yml
vendored
@@ -1,90 +0,0 @@
|
|||||||
name: Package Raspbian
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
packages: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-raspbian_armv7l:
|
|
||||||
uses: ./.github/workflows/build_raspbian_armv7l.yml
|
|
||||||
|
|
||||||
package-raspbian_armv7l:
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
needs: build-raspbian_armv7l
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
|
|
||||||
- name: Pull web ui
|
|
||||||
uses: dsaltares/fetch-gh-release-asset@master
|
|
||||||
with:
|
|
||||||
repo: meshtastic/web
|
|
||||||
file: build.tar
|
|
||||||
target: build.tar
|
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Get release version string
|
|
||||||
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
|
||||||
id: version
|
|
||||||
|
|
||||||
- name: Download artifacts
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: firmware-raspbian-armv7l-${{ steps.version.outputs.long }}.zip
|
|
||||||
merge-multiple: true
|
|
||||||
|
|
||||||
- name: Display structure of downloaded files
|
|
||||||
run: ls -R
|
|
||||||
|
|
||||||
- name: build .debpkg
|
|
||||||
run: |
|
|
||||||
mkdir -p .debpkg/DEBIAN
|
|
||||||
mkdir -p .debpkg/usr/share/meshtasticd/web
|
|
||||||
mkdir -p .debpkg/usr/sbin
|
|
||||||
mkdir -p .debpkg/etc/meshtasticd
|
|
||||||
mkdir -p .debpkg/etc/meshtasticd/config.d
|
|
||||||
mkdir -p .debpkg/etc/meshtasticd/available.d
|
|
||||||
mkdir -p .debpkg/usr/lib/systemd/system/
|
|
||||||
tar -xf build.tar -C .debpkg/usr/share/meshtasticd/web
|
|
||||||
shopt -s dotglob nullglob
|
|
||||||
if [ -d .debpkg/usr/share/meshtasticd/web/build ]; then mv .debpkg/usr/share/meshtasticd/web/build/* .debpkg/usr/share/meshtasticd/web/; fi
|
|
||||||
if [ -d .debpkg/usr/share/meshtasticd/web/build ]; then rmdir .debpkg/usr/share/meshtasticd/web/build; fi
|
|
||||||
if [ -d .debpkg/usr/share/meshtasticd/web/.DS_Store ]; then rm -f .debpkg/usr/share/meshtasticd/web/.DS_Store; fi
|
|
||||||
gunzip .debpkg/usr/share/meshtasticd/web/ -r
|
|
||||||
cp release/meshtasticd_linux_armv7l .debpkg/usr/sbin/meshtasticd
|
|
||||||
cp bin/config-dist.yaml .debpkg/etc/meshtasticd/config.yaml
|
|
||||||
cp bin/config.d/* .debpkg/etc/meshtasticd/available.d/ -r
|
|
||||||
chmod +x .debpkg/usr/sbin/meshtasticd
|
|
||||||
cp bin/meshtasticd.service .debpkg/usr/lib/systemd/system/meshtasticd.service
|
|
||||||
echo "/etc/meshtasticd/config.yaml" > .debpkg/DEBIAN/conffiles
|
|
||||||
chmod +x .debpkg/DEBIAN/conffiles
|
|
||||||
# Transition /usr/share/doc/meshtasticd to /usr/share/meshtasticd
|
|
||||||
echo "rm -rf /usr/share/doc/meshtasticd" > .debpkg/DEBIAN/preinst
|
|
||||||
chmod +x .debpkg/DEBIAN/preinst
|
|
||||||
echo "ln -sf /usr/share/meshtasticd /usr/share/doc/meshtasticd" > .debpkg/DEBIAN/postinst
|
|
||||||
chmod +x .debpkg/DEBIAN/postinst
|
|
||||||
|
|
||||||
- uses: jiro4989/build-deb-action@v3
|
|
||||||
with:
|
|
||||||
package: meshtasticd
|
|
||||||
package_root: .debpkg
|
|
||||||
maintainer: Jonathan Bennett
|
|
||||||
version: ${{ steps.version.outputs.long }} # refs/tags/v*.*.*
|
|
||||||
arch: armhf
|
|
||||||
depends: libyaml-cpp0.7, openssl, libulfius2.7, libi2c0
|
|
||||||
desc: Native Linux Meshtastic binary.
|
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: meshtasticd_${{ steps.version.outputs.long }}_armhf.deb
|
|
||||||
overwrite: true
|
|
||||||
path: |
|
|
||||||
./*.deb
|
|
||||||
93
.github/workflows/release.yml
vendored
Normal file
93
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
name: Make Release
|
||||||
|
on:
|
||||||
|
# Can optionally take parameters from the github UI, more info here https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/#:~:text=You%20can%20now%20create%20workflows,the%20workflow%20is%20run%20on.
|
||||||
|
#workflow_dispatch:
|
||||||
|
# inputs:
|
||||||
|
|
||||||
|
# Only want to run if version.properties is bumped in master
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 1.2-legacy
|
||||||
|
paths:
|
||||||
|
- 'version.properties'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
release-build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: 'recursive'
|
||||||
|
|
||||||
|
- name: Setup Python
|
||||||
|
uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: 3.x
|
||||||
|
|
||||||
|
# Will be available in steps.version.outputs.version
|
||||||
|
- name: Get release version string
|
||||||
|
run: echo "::set-output name=version::$(./bin/buildinfo.py long)"
|
||||||
|
id: version
|
||||||
|
# Note: we don't use caches on release builds because we don't want to accidentally not have a virgin build machine
|
||||||
|
|
||||||
|
- name: Upgrade python tools
|
||||||
|
# We actually want to run this every time
|
||||||
|
# if: steps.cache-pip.outputs.cache-hit != 'true'
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install -U platformio meshtastic adafruit-nrfutil
|
||||||
|
|
||||||
|
- name: Upgrade platformio
|
||||||
|
run: |
|
||||||
|
pio upgrade
|
||||||
|
|
||||||
|
- name: Pull web ui
|
||||||
|
uses: dsaltares/fetch-gh-release-asset@master
|
||||||
|
with:
|
||||||
|
repo: "meshtastic/meshtastic-web"
|
||||||
|
file: "build.tar"
|
||||||
|
target: "build.tar"
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Unpack web ui
|
||||||
|
run: |
|
||||||
|
tar -xf build.tar -C data/static
|
||||||
|
rm build.tar
|
||||||
|
|
||||||
|
- name: Build everything
|
||||||
|
run: bin/build-all.sh
|
||||||
|
|
||||||
|
- name: Create release
|
||||||
|
uses: actions/create-release@v1
|
||||||
|
id: create_release
|
||||||
|
with:
|
||||||
|
draft: true
|
||||||
|
prerelease: true
|
||||||
|
release_name: ${{ steps.version.outputs.version }} alpha
|
||||||
|
tag_name: v${{ steps.version.outputs.version }}
|
||||||
|
body: |
|
||||||
|
Autogenerated by github action, developer should edit as required before publishing...
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ github.token }}
|
||||||
|
|
||||||
|
- name: Add bins to release
|
||||||
|
uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ github.token }}
|
||||||
|
with:
|
||||||
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||||
|
asset_path: release/archive/firmware-${{ steps.version.outputs.version }}.zip
|
||||||
|
asset_name: firmware-${{ steps.version.outputs.version }}.zip
|
||||||
|
asset_content_type: application/zip
|
||||||
|
|
||||||
|
- name: Add debug elfs to release
|
||||||
|
uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ github.token }}
|
||||||
|
with:
|
||||||
|
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||||
|
asset_path: release/archive/elfs-${{ steps.version.outputs.version }}.zip
|
||||||
|
asset_name: debug-elfs-${{ steps.version.outputs.version }}.zip
|
||||||
|
asset_content_type: application/zip
|
||||||
38
.github/workflows/release_channels.yml
vendored
38
.github/workflows/release_channels.yml
vendored
@@ -1,38 +0,0 @@
|
|||||||
name: Trigger release workflows upon Publish
|
|
||||||
|
|
||||||
on:
|
|
||||||
release:
|
|
||||||
types: [published, released]
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
packages: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
package-ppa:
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
series: [plucky, oracular, noble, jammy]
|
|
||||||
uses: ./.github/workflows/package_ppa.yml
|
|
||||||
with:
|
|
||||||
ppa_repo: |-
|
|
||||||
ppa:meshtastic/${{ contains(github.event.release.name, 'Beta') && 'beta' || contains(github.event.release.name, 'Alpha') && 'alpha' }}
|
|
||||||
series: ${{ matrix.series }}
|
|
||||||
secrets: inherit
|
|
||||||
|
|
||||||
package-obs:
|
|
||||||
uses: ./.github/workflows/package_obs.yml
|
|
||||||
with:
|
|
||||||
obs_project: |-
|
|
||||||
home:meshtastic:${{ contains(github.event.release.name, 'Beta') && 'beta' || contains(github.event.release.name, 'Alpha') && 'alpha' }}
|
|
||||||
series: |-
|
|
||||||
${{ contains(github.event.release.name, 'Beta') && 'beta' || contains(github.event.release.name, 'Alpha') && 'alpha' }}
|
|
||||||
secrets: inherit
|
|
||||||
|
|
||||||
# hook-copr:
|
|
||||||
# uses: ./.github/workflows/hook_copr.yml
|
|
||||||
# with:
|
|
||||||
# copr_project: |-
|
|
||||||
# ${{ contains(github.event.release.name, 'Beta') && 'beta' || contains(github.event.release.name, 'Alpha') && 'alpha' }}
|
|
||||||
# secrets: inherit
|
|
||||||
41
.github/workflows/sec_sast_flawfinder.yml
vendored
41
.github/workflows/sec_sast_flawfinder.yml
vendored
@@ -1,41 +0,0 @@
|
|||||||
---
|
|
||||||
name: Flawfinder Scan
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [master, develop]
|
|
||||||
paths-ignore:
|
|
||||||
- "**.md"
|
|
||||||
- "version.properties"
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
flawfinder:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
name: Flawfinder
|
|
||||||
|
|
||||||
steps:
|
|
||||||
# step 1
|
|
||||||
- name: clone application source code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
# step 2
|
|
||||||
- name: flawfinder_scan
|
|
||||||
uses: david-a-wheeler/flawfinder@2.0.19
|
|
||||||
with:
|
|
||||||
arguments: "--sarif ./"
|
|
||||||
output: "flawfinder_report.sarif"
|
|
||||||
|
|
||||||
# step 3
|
|
||||||
- name: save report as pipeline artifact
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: flawfinder_report.sarif
|
|
||||||
overwrite: true
|
|
||||||
path: flawfinder_report.sarif
|
|
||||||
|
|
||||||
# step 4
|
|
||||||
- name: publish code scanning alerts
|
|
||||||
uses: github/codeql-action/upload-sarif@v3
|
|
||||||
with:
|
|
||||||
sarif_file: flawfinder_report.sarif
|
|
||||||
category: flawfinder
|
|
||||||
43
.github/workflows/sec_sast_semgrep_cron.yml
vendored
43
.github/workflows/sec_sast_semgrep_cron.yml
vendored
@@ -1,43 +0,0 @@
|
|||||||
---
|
|
||||||
name: Semgrep Full Scan
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
schedule:
|
|
||||||
- cron: "0 1 * * 6"
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
semgrep-full:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
container:
|
|
||||||
image: semgrep/semgrep
|
|
||||||
|
|
||||||
steps:
|
|
||||||
# step 1
|
|
||||||
- name: clone application source code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
# step 2
|
|
||||||
- name: full scan
|
|
||||||
run: |
|
|
||||||
semgrep \
|
|
||||||
--sarif --output report.sarif \
|
|
||||||
--metrics=off \
|
|
||||||
--config="p/default"
|
|
||||||
|
|
||||||
# step 3
|
|
||||||
- name: save report as pipeline artifact
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: report.sarif
|
|
||||||
overwrite: true
|
|
||||||
path: report.sarif
|
|
||||||
|
|
||||||
# step 4
|
|
||||||
- name: publish code scanning alerts
|
|
||||||
uses: github/codeql-action/upload-sarif@v3
|
|
||||||
with:
|
|
||||||
sarif_file: report.sarif
|
|
||||||
category: semgrep
|
|
||||||
25
.github/workflows/sec_sast_semgrep_pull.yml
vendored
25
.github/workflows/sec_sast_semgrep_pull.yml
vendored
@@ -1,25 +0,0 @@
|
|||||||
---
|
|
||||||
name: Semgrep Differential Scan
|
|
||||||
on: pull_request
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
semgrep-diff:
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
container:
|
|
||||||
image: semgrep/semgrep
|
|
||||||
|
|
||||||
steps:
|
|
||||||
# step 1
|
|
||||||
- name: clone application source code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
# step 2
|
|
||||||
- name: differential scan
|
|
||||||
run: |
|
|
||||||
semgrep scan \
|
|
||||||
--error \
|
|
||||||
--metrics=off \
|
|
||||||
--baseline-commit ${{ github.event.pull_request.base.sha }} \
|
|
||||||
--config="p/default"
|
|
||||||
22
.github/workflows/stale_bot.yml
vendored
22
.github/workflows/stale_bot.yml
vendored
@@ -1,22 +0,0 @@
|
|||||||
name: process stale Issues and PR's
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: 0 6 * * *
|
|
||||||
workflow_dispatch: {}
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
issues: write
|
|
||||||
pull-requests: write
|
|
||||||
actions: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
stale_issues:
|
|
||||||
name: Close Stale Issues
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Stale PR+Issues
|
|
||||||
uses: actions/stale@v9.0.0
|
|
||||||
with:
|
|
||||||
exempt-issue-labels: pinned,3.0
|
|
||||||
exempt-pr-labels: pinned,3.0
|
|
||||||
169
.github/workflows/test_native.yml
vendored
169
.github/workflows/test_native.yml
vendored
@@ -1,169 +0,0 @@
|
|||||||
name: Run Tests on Native platform
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_call:
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions: {}
|
|
||||||
|
|
||||||
env:
|
|
||||||
LCOV_CAPTURE_FLAGS: --quiet --capture --include "${PWD}/src/*" --exclude '*/src/mesh/generated/*' --directory .pio/build/coverage/src --base-directory "${PWD}"
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
simulator-tests:
|
|
||||||
name: Native Simulator Tests
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
submodules: recursive
|
|
||||||
|
|
||||||
- name: Setup native build
|
|
||||||
id: base
|
|
||||||
uses: ./.github/actions/setup-native
|
|
||||||
|
|
||||||
- name: Install simulator dependencies
|
|
||||||
run: pip install -U dotmap
|
|
||||||
|
|
||||||
# We now run integration test before other build steps (to quickly see runtime failures)
|
|
||||||
- name: Build for native/coverage
|
|
||||||
run: platformio run -e coverage
|
|
||||||
|
|
||||||
- name: Capture initial coverage information
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
sudo apt-get install -y lcov
|
|
||||||
lcov ${{ env.LCOV_CAPTURE_FLAGS }} --initial --output-file coverage_base.info
|
|
||||||
sed -i -e "s#${PWD}#.#" coverage_base.info # Make paths relative.
|
|
||||||
|
|
||||||
- name: Integration test
|
|
||||||
run: |
|
|
||||||
.pio/build/coverage/program &
|
|
||||||
PID=$!
|
|
||||||
timeout 20 bash -c "until ls -al /proc/$PID/fd | grep socket; do sleep 1; done"
|
|
||||||
echo "Simulator started, launching python test..."
|
|
||||||
python3 -c 'from meshtastic.test import testSimulator; testSimulator()'
|
|
||||||
wait
|
|
||||||
|
|
||||||
- name: Capture coverage information
|
|
||||||
if: always() # run this step even if previous step failed
|
|
||||||
run: |
|
|
||||||
lcov ${{ env.LCOV_CAPTURE_FLAGS }} --test-name integration --output-file coverage_integration.info
|
|
||||||
sed -i -e "s#${PWD}#.#" coverage_integration.info # Make paths relative.
|
|
||||||
|
|
||||||
- name: Get release version string
|
|
||||||
if: always() # run this step even if previous step failed
|
|
||||||
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
|
||||||
id: version
|
|
||||||
|
|
||||||
- name: Save coverage information
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
if: always() # run this step even if previous step failed
|
|
||||||
with:
|
|
||||||
name: lcov-coverage-info-native-simulator-test-${{ steps.version.outputs.long }}.zip
|
|
||||||
overwrite: true
|
|
||||||
path: ./coverage_*.info
|
|
||||||
|
|
||||||
platformio-tests:
|
|
||||||
name: Native PlatformIO Tests
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
submodules: recursive
|
|
||||||
|
|
||||||
- name: Setup native build
|
|
||||||
id: base
|
|
||||||
uses: ./.github/actions/setup-native
|
|
||||||
|
|
||||||
- name: Get release version string
|
|
||||||
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
|
||||||
id: version
|
|
||||||
|
|
||||||
# Disable (comment-out) BUILD_EPOCH. It causes a full rebuild between tests and resets the
|
|
||||||
# coverage information each time.
|
|
||||||
- name: Disable BUILD_EPOCH
|
|
||||||
run: sed -i 's/-DBUILD_EPOCH=$UNIX_TIME/#-DBUILD_EPOCH=$UNIX_TIME/' platformio.ini
|
|
||||||
|
|
||||||
- name: PlatformIO Tests
|
|
||||||
run: platformio test -e coverage -v --junit-output-path testreport.xml
|
|
||||||
|
|
||||||
- name: Save test results
|
|
||||||
if: always() # run this step even if previous step failed
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: platformio-test-report-${{ steps.version.outputs.long }}.zip
|
|
||||||
overwrite: true
|
|
||||||
path: ./testreport.xml
|
|
||||||
|
|
||||||
- name: Capture coverage information
|
|
||||||
if: always() # run this step even if previous step failed
|
|
||||||
run: |
|
|
||||||
sudo apt-get install -y lcov
|
|
||||||
lcov ${{ env.LCOV_CAPTURE_FLAGS }} --test-name tests --output-file coverage_tests.info
|
|
||||||
sed -i -e "s#${PWD}#.#" coverage_tests.info # Make paths relative.
|
|
||||||
|
|
||||||
- name: Save coverage information
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
if: always() # run this step even if previous step failed
|
|
||||||
with:
|
|
||||||
name: lcov-coverage-info-native-platformio-tests-${{ steps.version.outputs.long }}.zip
|
|
||||||
overwrite: true
|
|
||||||
path: ./coverage_*.info
|
|
||||||
|
|
||||||
generate-reports:
|
|
||||||
name: Generate Test Reports
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions: # Needed for dorny/test-reporter.
|
|
||||||
contents: read
|
|
||||||
actions: read
|
|
||||||
checks: write
|
|
||||||
needs:
|
|
||||||
- simulator-tests
|
|
||||||
- platformio-tests
|
|
||||||
if: always()
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
|
|
||||||
- name: Get release version string
|
|
||||||
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
|
||||||
id: version
|
|
||||||
|
|
||||||
- name: Download test artifacts
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: platformio-test-report-${{ steps.version.outputs.long }}.zip
|
|
||||||
merge-multiple: true
|
|
||||||
|
|
||||||
- name: Test Report
|
|
||||||
uses: dorny/test-reporter@v1.9.1
|
|
||||||
with:
|
|
||||||
name: PlatformIO Tests
|
|
||||||
path: testreport.xml
|
|
||||||
reporter: java-junit
|
|
||||||
|
|
||||||
- name: Download coverage artifacts
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
pattern: lcov-coverage-info-native-*-${{ steps.version.outputs.long }}.zip
|
|
||||||
path: code-coverage-report
|
|
||||||
merge-multiple: true
|
|
||||||
|
|
||||||
- name: Generate Code Coverage Report
|
|
||||||
run: |
|
|
||||||
sudo apt-get install -y lcov
|
|
||||||
lcov --quiet --add-tracefile code-coverage-report/coverage_base.info --add-tracefile code-coverage-report/coverage_integration.info --add-tracefile code-coverage-report/coverage_tests.info --output-file code-coverage-report/coverage_src.info
|
|
||||||
genhtml --quiet --legend --prefix "${PWD}" code-coverage-report/coverage_src.info --output-directory code-coverage-report
|
|
||||||
|
|
||||||
- name: Save Code Coverage Report
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: code-coverage-report-${{ steps.version.outputs.long }}.zip
|
|
||||||
path: code-coverage-report
|
|
||||||
59
.github/workflows/tests.yml
vendored
59
.github/workflows/tests.yml
vendored
@@ -1,59 +0,0 @@
|
|||||||
name: End to end tests
|
|
||||||
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: "0 0 * * *" # Run every day at midnight
|
|
||||||
workflow_dispatch: {}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
native-tests:
|
|
||||||
uses: ./.github/workflows/test_native.yml
|
|
||||||
|
|
||||||
hardware-tests:
|
|
||||||
runs-on: test-runner
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
# - uses: actions/setup-python@v5
|
|
||||||
# with:
|
|
||||||
# python-version: '3.10'
|
|
||||||
|
|
||||||
# pipx install "setuptools<72"
|
|
||||||
- name: Upgrade python tools
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
pipx install adafruit-nrfutil
|
|
||||||
pipx install poetry
|
|
||||||
pipx install meshtastic --pip-args=--pre
|
|
||||||
|
|
||||||
- name: Install PlatformIO from script
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
curl -fsSL -o get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py
|
|
||||||
python3 get-platformio.py
|
|
||||||
|
|
||||||
- name: Upgrade platformio
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
export PATH=$PATH:$HOME/.local/bin
|
|
||||||
pio upgrade
|
|
||||||
|
|
||||||
- name: Setup Node
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: 18
|
|
||||||
|
|
||||||
- name: Setup pnpm
|
|
||||||
uses: pnpm/action-setup@v4
|
|
||||||
with:
|
|
||||||
version: latest
|
|
||||||
|
|
||||||
- name: Install dependencies, setup devices and run
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
git submodule update --init --recursive
|
|
||||||
cd meshtestic/
|
|
||||||
pnpm install
|
|
||||||
pnpm run setup
|
|
||||||
pnpm run test
|
|
||||||
22
.github/workflows/trunk-check.yml
vendored
22
.github/workflows/trunk-check.yml
vendored
@@ -1,22 +0,0 @@
|
|||||||
name: Pull Request
|
|
||||||
on: [pull_request]
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.head_ref || github.run_id }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
permissions: read-all
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
trunk_check:
|
|
||||||
name: Trunk Check Runner
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
checks: write # For trunk to post annotations
|
|
||||||
contents: read # For repo checkout
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Trunk Check
|
|
||||||
uses: trunk-io/trunk-action@v1
|
|
||||||
47
.github/workflows/trunk_format_pr.yml
vendored
47
.github/workflows/trunk_format_pr.yml
vendored
@@ -1,47 +0,0 @@
|
|||||||
name: Run Trunk Fmt on PR Comment
|
|
||||||
|
|
||||||
on:
|
|
||||||
issue_comment:
|
|
||||||
types: [created]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
trunk-fmt:
|
|
||||||
if: github.event.issue.pull_request != null && contains(github.event.comment.body, 'trunk fmt')
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
ref: ${{github.event.pull_request.head.ref}}
|
|
||||||
repository: ${{github.event.pull_request.head.repo.full_name}}
|
|
||||||
|
|
||||||
- name: Install trunk
|
|
||||||
run: curl https://get.trunk.io -fsSL | bash
|
|
||||||
|
|
||||||
- name: Run Trunk Fmt
|
|
||||||
run: trunk fmt
|
|
||||||
|
|
||||||
- name: Get release version string
|
|
||||||
run: echo "long=$(./bin/buildinfo.py long)" >> $GITHUB_OUTPUT
|
|
||||||
id: version
|
|
||||||
|
|
||||||
- name: Commit and push changes
|
|
||||||
run: |
|
|
||||||
git config --global user.name "github-actions[bot]"
|
|
||||||
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
|
||||||
git add .
|
|
||||||
git commit -m "Add firmware version ${{ steps.version.outputs.long }}"
|
|
||||||
git push
|
|
||||||
|
|
||||||
- name: Comment on PR
|
|
||||||
uses: actions/github-script@v7
|
|
||||||
with:
|
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
script: |
|
|
||||||
github.issues.createComment({
|
|
||||||
issue_number: context.issue.number,
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
body: '`trunk fmt` has been run on this PR.'
|
|
||||||
})
|
|
||||||
26
.github/workflows/update_protobufs.yml
vendored
26
.github/workflows/update_protobufs.yml
vendored
@@ -1,4 +1,4 @@
|
|||||||
name: Update protobufs and regenerate classes
|
name: "Update protobufs and regenerate classes"
|
||||||
on: workflow_dispatch
|
on: workflow_dispatch
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
@@ -7,29 +7,27 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
submodules: true
|
submodules: true
|
||||||
|
|
||||||
- name: Update submodule
|
- name: Update submodule
|
||||||
if: ${{ github.ref == 'refs/heads/master' }}
|
|
||||||
run: |
|
run: |
|
||||||
git submodule update --remote protobufs
|
git submodule update --remote proto
|
||||||
|
|
||||||
- name: Download nanopb
|
- name: Download nanopb
|
||||||
run: |
|
run: |
|
||||||
wget https://jpa.kapsi.fi/nanopb/download/nanopb-0.4.9.1-linux-x86.tar.gz
|
wget https://jpa.kapsi.fi/nanopb/download/nanopb-0.4.4-linux-x86.tar.gz
|
||||||
tar xvzf nanopb-0.4.9.1-linux-x86.tar.gz
|
tar xvzf nanopb-0.4.4-linux-x86.tar.gz
|
||||||
mv nanopb-0.4.9.1-linux-x86 nanopb-0.4.9
|
mv nanopb-0.4.4-linux-x86 nanopb-0.4.4
|
||||||
|
|
||||||
- name: Re-generate protocol buffers
|
- name: Re-generate protocol buffers
|
||||||
run: |
|
run: |
|
||||||
./bin/regen-protos.sh
|
./bin/regen-protos.sh
|
||||||
|
|
||||||
- name: Create pull request
|
- name: Create pull request
|
||||||
uses: peter-evans/create-pull-request@v7
|
uses: peter-evans/create-pull-request@v3
|
||||||
with:
|
with:
|
||||||
title: Update protobufs and classes
|
|
||||||
add-paths: |
|
add-paths: |
|
||||||
protobufs
|
proto
|
||||||
src/mesh
|
src/mesh
|
||||||
|
|||||||
9
.gitignore
vendored
9
.gitignore
vendored
@@ -1,8 +1,6 @@
|
|||||||
.pio
|
.pio
|
||||||
pio
|
main/configuration.h
|
||||||
pio.tar
|
main/credentials.h
|
||||||
web
|
|
||||||
web.tar
|
|
||||||
|
|
||||||
# ignore vscode IDE settings files
|
# ignore vscode IDE settings files
|
||||||
.vscode/*
|
.vscode/*
|
||||||
@@ -32,6 +30,3 @@ __pycache__
|
|||||||
venv/
|
venv/
|
||||||
release/
|
release/
|
||||||
.vscode/extensions.json
|
.vscode/extensions.json
|
||||||
/compile_commands.json
|
|
||||||
src/mesh/raspihttp/certificate.pem
|
|
||||||
src/mesh/raspihttp/private_key.pem
|
|
||||||
50
.gitlab-ci.yml
Normal file
50
.gitlab-ci.yml
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
image: python:latest
|
||||||
|
|
||||||
|
variables:
|
||||||
|
# make sure GitLab check out submodules
|
||||||
|
GIT_SUBMODULE_STRATEGY: recursive
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- buildall
|
||||||
|
- upload
|
||||||
|
|
||||||
|
build:
|
||||||
|
stage: buildall
|
||||||
|
|
||||||
|
before_script:
|
||||||
|
# we need zip later for packaging
|
||||||
|
- "apt update;apt -y install zip"
|
||||||
|
- "pip install -U platformio"
|
||||||
|
|
||||||
|
script:
|
||||||
|
# clean up residues from previous run
|
||||||
|
- rm -rf release
|
||||||
|
- bin/build-all.sh
|
||||||
|
|
||||||
|
# This is for my local environment, if your runners are tagged differently, modify or remove
|
||||||
|
tags:
|
||||||
|
- dockerized
|
||||||
|
|
||||||
|
# The files which are to be made available in GitLab
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- release/archive/firmware*.zip
|
||||||
|
|
||||||
|
|
||||||
|
upload:
|
||||||
|
image: curlimages/curl:latest
|
||||||
|
|
||||||
|
stage: upload
|
||||||
|
|
||||||
|
script:
|
||||||
|
- |
|
||||||
|
PACKAGE_REGISTRY_URL="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${CI_PROJECT_NAME}/master"
|
||||||
|
cd release/archive
|
||||||
|
for f in *.zip; do
|
||||||
|
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file ${f} ${PACKAGE_REGISTRY_URL}/${f}
|
||||||
|
done
|
||||||
|
echo 'Package uploaded!'
|
||||||
|
|
||||||
|
# This is for my local environment, if your runners are tagged differently, modify or remove
|
||||||
|
tags:
|
||||||
|
- dockerized
|
||||||
16
.gitmodules
vendored
16
.gitmodules
vendored
@@ -1,6 +1,10 @@
|
|||||||
[submodule "protobufs"]
|
[submodule "proto"]
|
||||||
path = protobufs
|
path = proto
|
||||||
url = https://github.com/meshtastic/protobufs.git
|
url = https://github.com/meshtastic/Meshtastic-protobufs.git
|
||||||
[submodule "meshtestic"]
|
branch = 1.2-legacy
|
||||||
path = meshtestic
|
[submodule "sdk-nrfxlib"]
|
||||||
url = https://github.com/meshtastic/meshTestic
|
path = sdk-nrfxlib
|
||||||
|
url = https://github.com/nrfconnect/sdk-nrfxlib.git
|
||||||
|
[submodule "design"]
|
||||||
|
path = design
|
||||||
|
url = https://github.com/meshtastic/meshtastic-design.git
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
tasks:
|
|
||||||
- init: pip install platformio && pip install --upgrade pip
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
.github/workflows/main_matrix.yml
|
|
||||||
src/mesh/compression/unishox2.cpp
|
|
||||||
9
.trunk/.gitignore
vendored
9
.trunk/.gitignore
vendored
@@ -1,9 +0,0 @@
|
|||||||
*out
|
|
||||||
*logs
|
|
||||||
*actions
|
|
||||||
*notifications
|
|
||||||
*tools
|
|
||||||
plugins
|
|
||||||
user_trunk.yaml
|
|
||||||
user.yaml
|
|
||||||
tmp
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
[bandit]
|
|
||||||
skips = B101
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
# Autoformatter friendly flake8 config (all formatting rules disabled)
|
|
||||||
[flake8]
|
|
||||||
extend-ignore = D1, D2, E1, E2, E3, E501, W1, W2, W3, W5
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
# Following source doesn't work in most setups
|
|
||||||
ignored:
|
|
||||||
- SC1090
|
|
||||||
- SC1091
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
[settings]
|
|
||||||
profile=black
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
# Autoformatter friendly markdownlint config (all formatting rules disabled)
|
|
||||||
default: true
|
|
||||||
blank_lines: false
|
|
||||||
bullet: false
|
|
||||||
html: false
|
|
||||||
indentation: false
|
|
||||||
line_length: false
|
|
||||||
spaces: false
|
|
||||||
url: false
|
|
||||||
whitespace: false
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
enable=all
|
|
||||||
source-path=SCRIPTDIR
|
|
||||||
disable=SC2154
|
|
||||||
disable=SC2248
|
|
||||||
disable=SC2250
|
|
||||||
|
|
||||||
# If you're having issues with shellcheck following source, disable the errors via:
|
|
||||||
# disable=SC1090
|
|
||||||
# disable=SC1091
|
|
||||||
#
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
rules:
|
|
||||||
quoted-strings:
|
|
||||||
required: only-when-needed
|
|
||||||
extra-allowed: ["{|}"]
|
|
||||||
empty-values:
|
|
||||||
forbid-in-block-mappings: false
|
|
||||||
forbid-in-flow-mappings: true
|
|
||||||
key-duplicates: {}
|
|
||||||
octal-values:
|
|
||||||
forbid-implicit-octal: true
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
# Generic, formatter-friendly config.
|
|
||||||
select = ["B", "D3", "D4", "E", "F"]
|
|
||||||
|
|
||||||
# Never enforce `E501` (line length violations). This should be handled by formatters.
|
|
||||||
ignore = ["E501"]
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
plugins: [
|
|
||||||
{
|
|
||||||
name: "preset-default",
|
|
||||||
params: {
|
|
||||||
overrides: {
|
|
||||||
removeViewBox: false, // https://github.com/svg/svgo/issues/1128
|
|
||||||
sortAttrs: true,
|
|
||||||
removeOffCanvasPaths: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
};
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
version: 0.1
|
|
||||||
cli:
|
|
||||||
version: 1.22.8
|
|
||||||
plugins:
|
|
||||||
sources:
|
|
||||||
- id: trunk
|
|
||||||
ref: v1.6.6
|
|
||||||
uri: https://github.com/trunk-io/plugins
|
|
||||||
lint:
|
|
||||||
enabled:
|
|
||||||
- prettier@3.4.2
|
|
||||||
- trufflehog@3.86.1
|
|
||||||
- yamllint@1.35.1
|
|
||||||
- bandit@1.8.0
|
|
||||||
- checkov@3.2.334
|
|
||||||
- terrascan@1.19.9
|
|
||||||
- trivy@0.58.0
|
|
||||||
#- trufflehog@3.63.2-rc0
|
|
||||||
- taplo@0.9.3
|
|
||||||
- ruff@0.8.3
|
|
||||||
- isort@5.13.2
|
|
||||||
- markdownlint@0.43.0
|
|
||||||
- oxipng@9.1.3
|
|
||||||
- svgo@3.3.2
|
|
||||||
- actionlint@1.7.4
|
|
||||||
- flake8@7.1.1
|
|
||||||
- hadolint@2.12.1-beta
|
|
||||||
- shfmt@3.6.0
|
|
||||||
- shellcheck@0.10.0
|
|
||||||
- black@24.10.0
|
|
||||||
- git-diff-check
|
|
||||||
- gitleaks@8.21.2
|
|
||||||
- clang-format@16.0.3
|
|
||||||
#- prettier@3.3.3
|
|
||||||
ignore:
|
|
||||||
- linters: [ALL]
|
|
||||||
paths:
|
|
||||||
- bin/**
|
|
||||||
runtimes:
|
|
||||||
enabled:
|
|
||||||
- python@3.10.8
|
|
||||||
- go@1.21.0
|
|
||||||
- node@18.20.5
|
|
||||||
actions:
|
|
||||||
disabled:
|
|
||||||
- trunk-announce
|
|
||||||
enabled:
|
|
||||||
- trunk-fmt-pre-commit
|
|
||||||
- trunk-check-pre-push
|
|
||||||
- trunk-upgrade-available
|
|
||||||
18
.vscode/extensions.json
vendored
18
.vscode/extensions.json
vendored
@@ -1,10 +1,8 @@
|
|||||||
{
|
{
|
||||||
// See http://go.microsoft.com/fwlink/?LinkId=827846
|
// See http://go.microsoft.com/fwlink/?LinkId=827846
|
||||||
// for the documentation about the extensions.json format
|
// for the documentation about the extensions.json format
|
||||||
"recommendations": [
|
"recommendations": [
|
||||||
"platformio.platformio-ide"
|
"platformio.platformio-ide",
|
||||||
],
|
"xaver.clang-format"
|
||||||
"unwantedRecommendations": [
|
]
|
||||||
"ms-vscode.cpptools-extension-pack"
|
}
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|||||||
91
.vscode/settings.json
vendored
91
.vscode/settings.json
vendored
@@ -1,11 +1,82 @@
|
|||||||
{
|
{
|
||||||
"editor.formatOnSave": true,
|
"files.associations": {
|
||||||
"editor.defaultFormatter": "trunk.io",
|
"type_traits": "cpp",
|
||||||
"trunk.enableWindows": true,
|
"array": "cpp",
|
||||||
"files.insertFinalNewline": false,
|
"*.tcc": "cpp",
|
||||||
"files.trimFinalNewlines": false,
|
"cctype": "cpp",
|
||||||
"cmake.configureOnOpen": false,
|
"clocale": "cpp",
|
||||||
"[cpp]": {
|
"cmath": "cpp",
|
||||||
"editor.defaultFormatter": "trunk.io"
|
"cstdarg": "cpp",
|
||||||
}
|
"cstddef": "cpp",
|
||||||
}
|
"cstdint": "cpp",
|
||||||
|
"cstdio": "cpp",
|
||||||
|
"cstdlib": "cpp",
|
||||||
|
"cstring": "cpp",
|
||||||
|
"ctime": "cpp",
|
||||||
|
"cwchar": "cpp",
|
||||||
|
"cwctype": "cpp",
|
||||||
|
"deque": "cpp",
|
||||||
|
"unordered_map": "cpp",
|
||||||
|
"unordered_set": "cpp",
|
||||||
|
"vector": "cpp",
|
||||||
|
"exception": "cpp",
|
||||||
|
"algorithm": "cpp",
|
||||||
|
"functional": "cpp",
|
||||||
|
"system_error": "cpp",
|
||||||
|
"tuple": "cpp",
|
||||||
|
"fstream": "cpp",
|
||||||
|
"initializer_list": "cpp",
|
||||||
|
"iomanip": "cpp",
|
||||||
|
"iosfwd": "cpp",
|
||||||
|
"istream": "cpp",
|
||||||
|
"limits": "cpp",
|
||||||
|
"memory": "cpp",
|
||||||
|
"new": "cpp",
|
||||||
|
"ostream": "cpp",
|
||||||
|
"numeric": "cpp",
|
||||||
|
"sstream": "cpp",
|
||||||
|
"stdexcept": "cpp",
|
||||||
|
"streambuf": "cpp",
|
||||||
|
"cinttypes": "cpp",
|
||||||
|
"utility": "cpp",
|
||||||
|
"typeinfo": "cpp",
|
||||||
|
"string": "cpp",
|
||||||
|
"*.xbm": "cpp",
|
||||||
|
"list": "cpp",
|
||||||
|
"atomic": "cpp",
|
||||||
|
"memory_resource": "cpp",
|
||||||
|
"optional": "cpp",
|
||||||
|
"string_view": "cpp",
|
||||||
|
"cassert": "cpp",
|
||||||
|
"iterator": "cpp",
|
||||||
|
"shared_mutex": "cpp",
|
||||||
|
"iostream": "cpp",
|
||||||
|
"esp_nimble_hci.h": "c"
|
||||||
|
},
|
||||||
|
"cSpell.words": [
|
||||||
|
"Blox",
|
||||||
|
"EINK",
|
||||||
|
"HFSR",
|
||||||
|
"Meshtastic",
|
||||||
|
"NEMAGPS",
|
||||||
|
"NMEAGPS",
|
||||||
|
"RDEF",
|
||||||
|
"Ublox",
|
||||||
|
"bkpt",
|
||||||
|
"cfsr",
|
||||||
|
"descs",
|
||||||
|
"ocrypto",
|
||||||
|
"protobufs",
|
||||||
|
"wifi"
|
||||||
|
],
|
||||||
|
"C_Cpp.dimInactiveRegions": true,
|
||||||
|
"cmake.configureOnOpen": true,
|
||||||
|
"protoc": {
|
||||||
|
"compile_on_save": false,
|
||||||
|
"compile_all_path": "/home/kevinh/development/meshtastic/meshtastic-esp32/proto",
|
||||||
|
"options": [
|
||||||
|
"--java_out=/tmp",
|
||||||
|
"-I=/home/kevinh/development/meshtastic/meshtastic-esp32/proto"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
30
.vscode/tasks.json
vendored
30
.vscode/tasks.json
vendored
@@ -1,15 +1,17 @@
|
|||||||
{
|
{
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"tasks": [
|
"tasks": [
|
||||||
{
|
{
|
||||||
"type": "PlatformIO",
|
"type": "PlatformIO",
|
||||||
"task": "Build",
|
"task": "Build",
|
||||||
"problemMatcher": ["$platformio"],
|
"problemMatcher": [
|
||||||
"group": {
|
"$platformio"
|
||||||
"kind": "build",
|
],
|
||||||
"isDefault": true
|
"group": {
|
||||||
},
|
"kind": "build",
|
||||||
"label": "PlatformIO: Build"
|
"isDefault": true
|
||||||
}
|
},
|
||||||
]
|
"label": "PlatformIO: Build"
|
||||||
}
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
36
CMakeLists.txt
Normal file
36
CMakeLists.txt
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# !!! WARNING !!! AUTO-GENERATED FILE, PLEASE DO NOT MODIFY IT AND USE
|
||||||
|
# https://docs.platformio.org/page/projectconf/section_env_build.html#build-flags
|
||||||
|
#
|
||||||
|
# If you need to override existing CMake configuration or add extra,
|
||||||
|
# please create `CMakeListsUser.txt` in the root of project.
|
||||||
|
# The `CMakeListsUser.txt` will not be overwritten by PlatformIO.
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 3.13)
|
||||||
|
set(CMAKE_SYSTEM_NAME Generic)
|
||||||
|
set(CMAKE_C_COMPILER_WORKS 1)
|
||||||
|
set(CMAKE_CXX_COMPILER_WORKS 1)
|
||||||
|
|
||||||
|
project("meshtastic-esp32" C CXX)
|
||||||
|
|
||||||
|
include(CMakeListsPrivate.txt)
|
||||||
|
|
||||||
|
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/CMakeListsUser.txt)
|
||||||
|
include(CMakeListsUser.txt)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include_directories("$ENV{HOME}/.platformio/packages/framework-portduino")
|
||||||
|
include_directories("/usr/include")
|
||||||
|
|
||||||
|
add_custom_target(
|
||||||
|
Production ALL
|
||||||
|
COMMAND platformio -c clion run "$<$<NOT:$<CONFIG:All>>:-e${CMAKE_BUILD_TYPE}>"
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
add_custom_target(
|
||||||
|
Debug ALL
|
||||||
|
COMMAND platformio -c clion run --target debug "$<$<NOT:$<CONFIG:All>>:-e${CMAKE_BUILD_TYPE}>"
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
)
|
||||||
|
|
||||||
|
add_executable(Z_DUMMY_TARGET ${SRC_LIST})
|
||||||
2041
CMakeListsPrivate.txt
Normal file
2041
CMakeListsPrivate.txt
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,4 +0,0 @@
|
|||||||
# Contributor Covenant Code of Conduct
|
|
||||||
|
|
||||||
The Meshtastic Firmware project is subject to the code of conduct for the parent project, which can be found here:
|
|
||||||
https://meshtastic.org/docs/legal/conduct/
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
# Contributing to Meshtastic Firmware
|
|
||||||
|
|
||||||
We're excited that you're interested in contributing to the Meshtastic firmware! This document provides a high-level overview of how you can get involved.
|
|
||||||
|
|
||||||
## Important First Steps
|
|
||||||
|
|
||||||
Before you begin, please:
|
|
||||||
|
|
||||||
1. **Read our documentation**: Our [official documentation](https://meshtastic.org/docs/) is a crucial resource. It contains essential information about the project.
|
|
||||||
|
|
||||||
2. **Check out the firmware build guide**: For specific instructions on setting up your development environment and building the firmware, refer to our [Firmware Build Guide](https://meshtastic.org/docs/development/firmware/build/).
|
|
||||||
|
|
||||||
3. Read our [Code of Conduct](https://meshtastic.org/docs/legal/conduct/)
|
|
||||||
|
|
||||||
4. Join our [Discord community](https://discord.com/invite/ktMAKGBnBs) to connect with developers and other contributors to get help.
|
|
||||||
|
|
||||||
## Getting Help and Discussing Ideas
|
|
||||||
|
|
||||||
We encourage open communication and discussion before diving into code changes:
|
|
||||||
|
|
||||||
1. **Use GitHub Discussions**: For new ideas, questions, or to discuss potential changes, start a conversation in our [GitHub Discussions](https://github.com/meshtastic/firmware/discussions) first. This helps us collaborate and avoid duplicate work.
|
|
||||||
|
|
||||||
2. **Join our Discord**: For real-time chat and quick questions, join our [Discord server](https://discord.com/invite/ktMAKGBnBs). It's a great place to get help and connect with other developers and the community.
|
|
||||||
|
|
||||||
3. **Reporting Issues**: If you've identified a bug, please use our bug report template when creating a new issue in the [issue tracker](https://github.com/meshtastic/firmware/issues). Ensure you've searched existing issues to avoid duplicates.
|
|
||||||
|
|
||||||
## Making Contributions
|
|
||||||
|
|
||||||
> [!IMPORTANT]
|
|
||||||
> Before making any contributions, you must sign our Contributor License Agreement (CLA). You can do this by visiting https://cla-assistant.io/meshtastic/firmware. Be sure to use the GitHub account you will use to submit your contributions when signing.
|
|
||||||
|
|
||||||
1. Fork the repository
|
|
||||||
2. Create a new branch for your feature or bug fix
|
|
||||||
3. Make your changes
|
|
||||||
4. Test your changes thoroughly
|
|
||||||
5. Create a pull request with a clear description, using the provided template, of your changes. Be sure to enable "Allow edits from maintainers".
|
|
||||||
|
|
||||||
## Coding Standards
|
|
||||||
|
|
||||||
To ensure consistent code formatting across the project:
|
|
||||||
|
|
||||||
1. Install the [Trunk](https://marketplace.visualstudio.com/items?itemName=Trunk.io) extension for Visual Studio Code.
|
|
||||||
2. Before submitting your changes, run `trunk fmt` to automatically format your code according to our standards.
|
|
||||||
|
|
||||||
Adhering to these formatting guidelines helps maintain code consistency and makes the review process smoother.
|
|
||||||
|
|
||||||
Thank you for contributing to Meshtastic!
|
|
||||||
68
Dockerfile
68
Dockerfile
@@ -1,56 +1,16 @@
|
|||||||
# trunk-ignore-all(terrascan/AC_DOCKER_0002): Known terrascan issue
|
FROM ubuntu
|
||||||
# trunk-ignore-all(hadolint/DL3008): Use latest version of apt packages for buildchain
|
MAINTAINER Kevin Hester <kevinh@geeksville.com>
|
||||||
# trunk-ignore-all(trivy/DS002): We must run as root for this container
|
|
||||||
# trunk-ignore-all(checkov/CKV_DOCKER_8): We must run as root for this container
|
|
||||||
# trunk-ignore-all(hadolint/DL3002): We must run as root for this container
|
|
||||||
|
|
||||||
FROM python:3.12-bookworm AS builder
|
RUN apt-get update
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
RUN DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install wget python3 g++ zip python3-venv git vim
|
||||||
ENV TZ=Etc/UTC
|
RUN wget https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py -O get-platformio.py; chmod +x get-platformio.py
|
||||||
|
RUN python3 get-platformio.py
|
||||||
|
RUN git clone https://github.com/meshtastic/Meshtastic-device.git
|
||||||
|
RUN cd Meshtastic-device; git submodule update --init --recursive
|
||||||
|
# only build the simulator
|
||||||
|
RUN sed -i 's/^BOARDS_ESP32.*/BOARDS_ESP32=""/' Meshtastic-device/bin/build-all.sh
|
||||||
|
RUN sed -i 's/^BOARDS_NRF52.*/BOARDS_NRF52=""/' Meshtastic-device/bin/build-all.sh
|
||||||
|
RUN sed -i 's/echo "Building SPIFFS.*/exit/' Meshtastic-device/bin/build-all.sh
|
||||||
|
RUN . ~/.platformio/penv/bin/activate; cd Meshtastic-device; ./bin/build-all.sh
|
||||||
|
|
||||||
# Install Dependencies
|
CMD ["/Meshtastic-device/release/latest/bins/universal/meshtasticd_linux_amd64"]
|
||||||
ENV PIP_ROOT_USER_ACTION=ignore
|
|
||||||
RUN apt-get update && apt-get install --no-install-recommends -y wget g++ zip git ca-certificates \
|
|
||||||
libgpiod-dev libyaml-cpp-dev libbluetooth-dev libi2c-dev \
|
|
||||||
libusb-1.0-0-dev libulfius-dev liborcania-dev libssl-dev pkg-config && \
|
|
||||||
apt-get clean && rm -rf /var/lib/apt/lists/* && \
|
|
||||||
pip install --no-cache-dir -U platformio==6.1.16 && \
|
|
||||||
mkdir /tmp/firmware
|
|
||||||
|
|
||||||
# Copy source code
|
|
||||||
WORKDIR /tmp/firmware
|
|
||||||
COPY . /tmp/firmware
|
|
||||||
|
|
||||||
# Build
|
|
||||||
RUN bash ./bin/build-native.sh && \
|
|
||||||
cp "/tmp/firmware/release/meshtasticd_linux_$(uname -m)" "/tmp/firmware/release/meshtasticd"
|
|
||||||
|
|
||||||
|
|
||||||
##### PRODUCTION BUILD #############
|
|
||||||
|
|
||||||
FROM debian:bookworm-slim
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
|
||||||
ENV TZ=Etc/UTC
|
|
||||||
|
|
||||||
# nosemgrep: dockerfile.security.last-user-is-root.last-user-is-root
|
|
||||||
USER root
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get --no-install-recommends -y install libc-bin libc6 libgpiod2 libyaml-cpp0.7 libi2c0 libulfius2.7 libusb-1.0-0-dev liborcania2.3 libssl3 && \
|
|
||||||
apt-get clean && rm -rf /var/lib/apt/lists/* \
|
|
||||||
&& mkdir -p /var/lib/meshtasticd \
|
|
||||||
&& mkdir -p /etc/meshtasticd/config.d
|
|
||||||
|
|
||||||
# Fetch compiled binary from the builder
|
|
||||||
COPY --from=builder /tmp/firmware/release/meshtasticd /usr/sbin/
|
|
||||||
# Copy config templates
|
|
||||||
COPY ./bin/config.d /etc/meshtasticd/available.d
|
|
||||||
|
|
||||||
WORKDIR /var/lib/meshtasticd
|
|
||||||
VOLUME /var/lib/meshtasticd
|
|
||||||
|
|
||||||
# Expose Meshtastic TCP API port from the host
|
|
||||||
EXPOSE 4403
|
|
||||||
|
|
||||||
CMD [ "sh", "-cx", "meshtasticd -d /var/lib/meshtasticd" ]
|
|
||||||
|
|
||||||
HEALTHCHECK NONE
|
|
||||||
|
|||||||
22
README.md
22
README.md
@@ -1,18 +1,14 @@
|
|||||||
# Meshtastic Firmware
|
# Meshtastic-device
|
||||||
|
[](https://open.vscode.dev/meshtastic/Meshtastic-device)
|
||||||
|
[](https://github.com/meshtastic/Meshtastic-device/actions/workflows/main.yml)
|
||||||
|

|
||||||
|
|
||||||

|
## This repository contains the device firmware used in the [Meshtastic](https://meshtastic.org) project.
|
||||||
[](https://github.com/meshtastic/firmware/actions/workflows/ci.yml)
|
|
||||||
[](https://cla-assistant.io/meshtastic/firmware)
|
|
||||||
[](https://opencollective.com/meshtastic/)
|
|
||||||
[](https://vercel.com?utm_source=meshtastic&utm_campaign=oss)
|
|
||||||
|
|
||||||
## Overview
|
Update Instructions
|
||||||
|
|
||||||
This repository contains the device firmware for the Meshtastic project.
|
[For ESP32 devices click here](https://meshtastic.org/docs/getting-started/flashing-esp32)
|
||||||
|
|
||||||
- **[Building Instructions](https://meshtastic.org/docs/development/firmware/build)**
|
[For nRF52 devices click here](https://meshtastic.org/docs/getting-started/flashing-nrf52)
|
||||||
- **[Flashing Instructions](https://meshtastic.org/docs/getting-started/flashing-firmware/)**
|
|
||||||
|
|
||||||
## Stats
|
For developer information and specific building instructions, please see the [developer doccumentation](https://meshtastic.org/docs/developers)
|
||||||
|
|
||||||

|
|
||||||
|
|||||||
12
SECURITY.md
12
SECURITY.md
@@ -1,12 +0,0 @@
|
|||||||
# Security Policy
|
|
||||||
|
|
||||||
## Supported Versions
|
|
||||||
|
|
||||||
| Firmware Version | Supported |
|
|
||||||
| ---------------- | ------------------ |
|
|
||||||
| 2.5.x | :white_check_mark: |
|
|
||||||
| <= 2.4.x | :x: |
|
|
||||||
|
|
||||||
## Reporting a Vulnerability
|
|
||||||
|
|
||||||
We support the private reporting of potential security vulnerabilities. Please go to the Security tab to file a report with a description of the potential vulnerability and reproduction scripts (preferred) or steps, and our developers will review.
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
# trunk-ignore-all(trivy/DS002): We must run as root for this container
|
|
||||||
# trunk-ignore-all(checkov/CKV_DOCKER_8): We must run as root for this container
|
|
||||||
# trunk-ignore-all(hadolint/DL3002): We must run as root for this container
|
|
||||||
|
|
||||||
FROM python:3.12-alpine3.21 AS builder
|
|
||||||
|
|
||||||
ENV PIP_ROOT_USER_ACTION=ignore
|
|
||||||
RUN apk add bash g++ libstdc++-dev linux-headers zip git ca-certificates libgpiod-dev yaml-cpp-dev bluez-dev \
|
|
||||||
libusb-dev i2c-tools-dev openssl-dev pkgconf argp-standalone && \
|
|
||||||
pip install --no-cache-dir -U platformio==6.1.16 && \
|
|
||||||
mkdir /tmp/firmware
|
|
||||||
|
|
||||||
WORKDIR /tmp/firmware
|
|
||||||
COPY . /tmp/firmware
|
|
||||||
|
|
||||||
# Create small package (no debugging symbols)
|
|
||||||
# Add `argp` for musl
|
|
||||||
ENV PLATFORMIO_BUILD_FLAGS="-Os -ffunction-sections -fdata-sections -Wl,--gc-sections -largp"
|
|
||||||
|
|
||||||
RUN bash ./bin/build-native.sh && \
|
|
||||||
cp "/tmp/firmware/release/meshtasticd_linux_$(uname -m)" "/tmp/firmware/release/meshtasticd"
|
|
||||||
|
|
||||||
# ##### PRODUCTION BUILD #############
|
|
||||||
|
|
||||||
FROM alpine:3.21
|
|
||||||
|
|
||||||
# nosemgrep: dockerfile.security.last-user-is-root.last-user-is-root
|
|
||||||
USER root
|
|
||||||
|
|
||||||
RUN apk add libstdc++ libgpiod yaml-cpp libusb i2c-tools \
|
|
||||||
&& mkdir -p /var/lib/meshtasticd \
|
|
||||||
&& mkdir -p /etc/meshtasticd/config.d
|
|
||||||
COPY --from=builder /tmp/firmware/release/meshtasticd /usr/sbin/
|
|
||||||
|
|
||||||
WORKDIR /var/lib/meshtasticd
|
|
||||||
VOLUME /var/lib/meshtasticd
|
|
||||||
|
|
||||||
EXPOSE 4403
|
|
||||||
|
|
||||||
CMD [ "sh", "-cx", "meshtasticd --fsdir=/var/lib/meshtasticd" ]
|
|
||||||
|
|
||||||
HEALTHCHECK NONE
|
|
||||||
@@ -1,68 +0,0 @@
|
|||||||
; Common settings for ESP targes, mixin with extends = esp32_base
|
|
||||||
[esp32_base]
|
|
||||||
extends = arduino_base
|
|
||||||
custom_esp32_kind = esp32
|
|
||||||
platform = platformio/espressif32@6.9.0
|
|
||||||
|
|
||||||
build_src_filter =
|
|
||||||
${arduino_base.build_src_filter} -<platform/nrf52/> -<platform/stm32wl> -<platform/rp2xx0> -<mesh/eth/> -<mesh/raspihttp>
|
|
||||||
|
|
||||||
upload_speed = 921600
|
|
||||||
debug_init_break = tbreak setup
|
|
||||||
monitor_filters = esp32_exception_decoder
|
|
||||||
|
|
||||||
board_build.filesystem = littlefs
|
|
||||||
|
|
||||||
# Remove -DMYNEWT_VAL_BLE_HS_LOG_LVL=LOG_LEVEL_CRITICAL for low level BLE logging.
|
|
||||||
# See library directory for BLE logging possible values: .pio/libdeps/tbeam/NimBLE-Arduino/src/log_common/log_common.h
|
|
||||||
# This overrides the BLE logging default of LOG_LEVEL_INFO (1) from: .pio/libdeps/tbeam/NimBLE-Arduino/src/esp_nimble_cfg.h
|
|
||||||
build_unflags = -fno-lto
|
|
||||||
build_flags =
|
|
||||||
${arduino_base.build_flags}
|
|
||||||
-flto
|
|
||||||
-Wall
|
|
||||||
-Wextra
|
|
||||||
-Isrc/platform/esp32
|
|
||||||
-std=c++11
|
|
||||||
-DLOG_LOCAL_LEVEL=ESP_LOG_DEBUG
|
|
||||||
-DCORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG
|
|
||||||
-DMYNEWT_VAL_BLE_HS_LOG_LVL=LOG_LEVEL_CRITICAL
|
|
||||||
-DAXP_DEBUG_PORT=Serial
|
|
||||||
-DCONFIG_BT_NIMBLE_ENABLED
|
|
||||||
-DCONFIG_NIMBLE_CPP_LOG_LEVEL=2
|
|
||||||
-DCONFIG_BT_NIMBLE_MAX_CCCDS=20
|
|
||||||
-DCONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=8192
|
|
||||||
-DESP_OPENSSL_SUPPRESS_LEGACY_WARNING
|
|
||||||
-DSERIAL_BUFFER_SIZE=4096
|
|
||||||
-DLIBPAX_ARDUINO
|
|
||||||
-DLIBPAX_WIFI
|
|
||||||
-DLIBPAX_BLE
|
|
||||||
;-DDEBUG_HEAP
|
|
||||||
|
|
||||||
lib_deps =
|
|
||||||
${arduino_base.lib_deps}
|
|
||||||
${networking_base.lib_deps}
|
|
||||||
${environmental_base.lib_deps}
|
|
||||||
${radiolib_base.lib_deps}
|
|
||||||
https://github.com/meshtastic/esp32_https_server.git#23665b3adc080a311dcbb586ed5941b5f94d6ea2
|
|
||||||
h2zero/NimBLE-Arduino@^1.4.2
|
|
||||||
https://github.com/dbinfrago/libpax.git#3cdc0371c375676a97967547f4065607d4c53fd1
|
|
||||||
lewisxhe/XPowersLib@^0.2.6
|
|
||||||
https://github.com/meshtastic/ESP32_Codec2.git#633326c78ac251c059ab3a8c430fcdf25b41672f
|
|
||||||
rweather/Crypto@^0.4.0
|
|
||||||
|
|
||||||
lib_ignore =
|
|
||||||
segger_rtt
|
|
||||||
ESP32 BLE Arduino
|
|
||||||
|
|
||||||
; leave this commented out to avoid breaking Windows
|
|
||||||
;upload_port = /dev/ttyUSB0
|
|
||||||
;monitor_port = /dev/ttyUSB0
|
|
||||||
|
|
||||||
; Please don't delete these lines. JM uses them.
|
|
||||||
;upload_port = /dev/cu.SLAB_USBtoUART
|
|
||||||
;monitor_port = /dev/cu.SLAB_USBtoUART
|
|
||||||
|
|
||||||
; customize the partition table
|
|
||||||
; http://docs.platformio.org/en/latest/platforms/espressif32.html#partition-tables
|
|
||||||
board_build.partitions = partition-table.csv
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
[esp32c3_base]
|
|
||||||
extends = esp32_base
|
|
||||||
custom_esp32_kind = esp32c3
|
|
||||||
|
|
||||||
monitor_speed = 115200
|
|
||||||
monitor_filters = esp32_c3_exception_decoder
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
[esp32c6_base]
|
|
||||||
extends = esp32_base
|
|
||||||
platform = https://github.com/Jason2866/platform-espressif32.git#22faa566df8c789000f8136cd8d0aca49617af55
|
|
||||||
build_flags =
|
|
||||||
${arduino_base.build_flags}
|
|
||||||
-Wall
|
|
||||||
-Wextra
|
|
||||||
-Isrc/platform/esp32
|
|
||||||
-std=c++11
|
|
||||||
-DESP_OPENSSL_SUPPRESS_LEGACY_WARNING
|
|
||||||
-DSERIAL_BUFFER_SIZE=4096
|
|
||||||
-DLIBPAX_ARDUINO
|
|
||||||
-DLIBPAX_WIFI
|
|
||||||
-DLIBPAX_BLE
|
|
||||||
-DMESHTASTIC_EXCLUDE_WEBSERVER
|
|
||||||
;-DDEBUG_HEAP
|
|
||||||
; TEMP
|
|
||||||
-DHAS_BLUETOOTH=0
|
|
||||||
-DMESHTASTIC_EXCLUDE_PAXCOUNTER
|
|
||||||
-DMESHTASTIC_EXCLUDE_BLUETOOTH
|
|
||||||
|
|
||||||
lib_deps =
|
|
||||||
${arduino_base.lib_deps}
|
|
||||||
${networking_base.lib_deps}
|
|
||||||
${environmental_base.lib_deps}
|
|
||||||
${radiolib_base.lib_deps}
|
|
||||||
lewisxhe/XPowersLib@^0.2.6
|
|
||||||
https://github.com/meshtastic/ESP32_Codec2.git#633326c78ac251c059ab3a8c430fcdf25b41672f
|
|
||||||
rweather/Crypto@^0.4.0
|
|
||||||
|
|
||||||
build_src_filter =
|
|
||||||
${esp32_base.build_src_filter} -<mesh/http>
|
|
||||||
|
|
||||||
monitor_speed = 460800
|
|
||||||
monitor_filters = esp32_c3_exception_decoder
|
|
||||||
|
|
||||||
lib_ignore =
|
|
||||||
NonBlockingRTTTL
|
|
||||||
NimBLE-Arduino
|
|
||||||
libpax
|
|
||||||
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
[esp32s2_base]
|
|
||||||
extends = esp32_base
|
|
||||||
custom_esp32_kind = esp32s2
|
|
||||||
|
|
||||||
build_src_filter =
|
|
||||||
${esp32_base.build_src_filter} - <libpax/> -<nimble/> -<mesh/raspihttp>
|
|
||||||
|
|
||||||
monitor_speed = 115200
|
|
||||||
|
|
||||||
build_flags =
|
|
||||||
${esp32_base.build_flags}
|
|
||||||
-DHAS_BLUETOOTH=0
|
|
||||||
-DMESHTASTIC_EXCLUDE_PAXCOUNTER
|
|
||||||
-DMESHTASTIC_EXCLUDE_BLUETOOTH
|
|
||||||
|
|
||||||
lib_ignore =
|
|
||||||
${esp32_base.lib_ignore}
|
|
||||||
NimBLE-Arduino
|
|
||||||
libpax
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
[esp32s3_base]
|
|
||||||
extends = esp32_base
|
|
||||||
custom_esp32_kind = esp32s3
|
|
||||||
|
|
||||||
monitor_speed = 115200
|
|
||||||
|
|
||||||
@@ -1,208 +0,0 @@
|
|||||||
/*
|
|
||||||
* lfs utility functions
|
|
||||||
*
|
|
||||||
* Copyright (c) 2017, Arm Limited. All rights reserved.
|
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
|
||||||
*/
|
|
||||||
|
|
||||||
// MESHTASTIC/@geeksville note: This file is copied from the Adafruit nrf52 arduino lib. And we use a special -include in
|
|
||||||
// nrf52.ini to load it before EVERY file we do this hack because the default definitions for LFS_ASSERT are quite poor and we
|
|
||||||
// don't want to fork the adafruit lib (again) and send in a PR that they probably won't merge anyways. This file might break if
|
|
||||||
// they ever update lfs.util on their side, in which case we'll need to update this file to match their new version. The version
|
|
||||||
// this is a copy from is almost exactly
|
|
||||||
// https://github.com/adafruit/Adafruit_nRF52_Arduino/blob/c25d93268a3b9c23e9a1ccfcaf9b208beca624ca/libraries/Adafruit_LittleFS/src/littlefs/lfs_util.h
|
|
||||||
|
|
||||||
#ifndef LFS_UTIL_H
|
|
||||||
#define LFS_UTIL_H
|
|
||||||
|
|
||||||
// Users can override lfs_util.h with their own configuration by defining
|
|
||||||
// LFS_CONFIG as a header file to include (-DLFS_CONFIG=lfs_config.h).
|
|
||||||
//
|
|
||||||
// If LFS_CONFIG is used, none of the default utils will be emitted and must be
|
|
||||||
// provided by the config file. To start I would suggest copying lfs_util.h and
|
|
||||||
// modifying as needed.
|
|
||||||
#ifdef LFS_CONFIG
|
|
||||||
#define LFS_STRINGIZE(x) LFS_STRINGIZE2(x)
|
|
||||||
#define LFS_STRINGIZE2(x) #x
|
|
||||||
#include LFS_STRINGIZE(LFS_CONFIG)
|
|
||||||
#else
|
|
||||||
|
|
||||||
// System includes
|
|
||||||
#include <stdbool.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#ifndef LFS_NO_MALLOC
|
|
||||||
#include <stdlib.h>
|
|
||||||
#endif
|
|
||||||
#ifndef LFS_NO_ASSERT
|
|
||||||
#include <assert.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined(LFS_NO_DEBUG) || !defined(LFS_NO_WARN) || !defined(LFS_NO_ERROR)
|
|
||||||
#include <stdio.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Macros, may be replaced by system specific wrappers. Arguments to these
|
|
||||||
// macros must not have side-effects as the macros can be removed for a smaller
|
|
||||||
// code footprint
|
|
||||||
|
|
||||||
// Logging functions
|
|
||||||
#ifndef LFS_NO_DEBUG
|
|
||||||
|
|
||||||
void logLegacy(const char *level, const char *fmt, ...);
|
|
||||||
#define LFS_DEBUG(fmt, ...) logLegacy("DEBUG", "lfs debug:%d: " fmt "\n", __LINE__, __VA_ARGS__)
|
|
||||||
#else
|
|
||||||
#define LFS_DEBUG(fmt, ...)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef LFS_NO_WARN
|
|
||||||
#define LFS_WARN(fmt, ...) logLegacy("WARN", "lfs warn:%d: " fmt "\n", __LINE__, __VA_ARGS__)
|
|
||||||
#else
|
|
||||||
#define LFS_WARN(fmt, ...)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef LFS_NO_ERROR
|
|
||||||
#define LFS_ERROR(fmt, ...) logLegacy("ERROR", "lfs error:%d: " fmt "\n", __LINE__, __VA_ARGS__)
|
|
||||||
#else
|
|
||||||
#define LFS_ERROR(fmt, ...)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Runtime assertions
|
|
||||||
#ifndef LFS_NO_ASSERT
|
|
||||||
#define LFS_ASSERT(test) assert(test)
|
|
||||||
#else
|
|
||||||
extern void lfs_assert(const char *reason);
|
|
||||||
#define LFS_ASSERT(test) \
|
|
||||||
if (!(test)) \
|
|
||||||
lfs_assert(#test)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Builtin functions, these may be replaced by more efficient
|
|
||||||
// toolchain-specific implementations. LFS_NO_INTRINSICS falls back to a more
|
|
||||||
// expensive basic C implementation for debugging purposes
|
|
||||||
|
|
||||||
// Min/max functions for unsigned 32-bit numbers
|
|
||||||
static inline uint32_t lfs_max(uint32_t a, uint32_t b)
|
|
||||||
{
|
|
||||||
return (a > b) ? a : b;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline uint32_t lfs_min(uint32_t a, uint32_t b)
|
|
||||||
{
|
|
||||||
return (a < b) ? a : b;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Find the next smallest power of 2 less than or equal to a
|
|
||||||
static inline uint32_t lfs_npw2(uint32_t a)
|
|
||||||
{
|
|
||||||
#if !defined(LFS_NO_INTRINSICS) && (defined(__GNUC__) || defined(__CC_ARM))
|
|
||||||
return 32 - __builtin_clz(a - 1);
|
|
||||||
#else
|
|
||||||
uint32_t r = 0;
|
|
||||||
uint32_t s;
|
|
||||||
a -= 1;
|
|
||||||
s = (a > 0xffff) << 4;
|
|
||||||
a >>= s;
|
|
||||||
r |= s;
|
|
||||||
s = (a > 0xff) << 3;
|
|
||||||
a >>= s;
|
|
||||||
r |= s;
|
|
||||||
s = (a > 0xf) << 2;
|
|
||||||
a >>= s;
|
|
||||||
r |= s;
|
|
||||||
s = (a > 0x3) << 1;
|
|
||||||
a >>= s;
|
|
||||||
r |= s;
|
|
||||||
return (r | (a >> 1)) + 1;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
// Count the number of trailing binary zeros in a
|
|
||||||
// lfs_ctz(0) may be undefined
|
|
||||||
static inline uint32_t lfs_ctz(uint32_t a)
|
|
||||||
{
|
|
||||||
#if !defined(LFS_NO_INTRINSICS) && defined(__GNUC__)
|
|
||||||
return __builtin_ctz(a);
|
|
||||||
#else
|
|
||||||
return lfs_npw2((a & -a) + 1) - 1;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
// Count the number of binary ones in a
|
|
||||||
static inline uint32_t lfs_popc(uint32_t a)
|
|
||||||
{
|
|
||||||
#if !defined(LFS_NO_INTRINSICS) && (defined(__GNUC__) || defined(__CC_ARM))
|
|
||||||
return __builtin_popcount(a);
|
|
||||||
#else
|
|
||||||
a = a - ((a >> 1) & 0x55555555);
|
|
||||||
a = (a & 0x33333333) + ((a >> 2) & 0x33333333);
|
|
||||||
return (((a + (a >> 4)) & 0xf0f0f0f) * 0x1010101) >> 24;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
// Find the sequence comparison of a and b, this is the distance
|
|
||||||
// between a and b ignoring overflow
|
|
||||||
static inline int lfs_scmp(uint32_t a, uint32_t b)
|
|
||||||
{
|
|
||||||
return (int)(unsigned)(a - b);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Convert from 32-bit little-endian to native order
|
|
||||||
static inline uint32_t lfs_fromle32(uint32_t a)
|
|
||||||
{
|
|
||||||
#if !defined(LFS_NO_INTRINSICS) && ((defined(BYTE_ORDER) && BYTE_ORDER == ORDER_LITTLE_ENDIAN) || \
|
|
||||||
(defined(__BYTE_ORDER) && __BYTE_ORDER == __ORDER_LITTLE_ENDIAN) || \
|
|
||||||
(defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__))
|
|
||||||
return a;
|
|
||||||
#elif !defined(LFS_NO_INTRINSICS) && \
|
|
||||||
((defined(BYTE_ORDER) && BYTE_ORDER == ORDER_BIG_ENDIAN) || (defined(__BYTE_ORDER) && __BYTE_ORDER == __ORDER_BIG_ENDIAN) || \
|
|
||||||
(defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__))
|
|
||||||
return __builtin_bswap32(a);
|
|
||||||
#else
|
|
||||||
return (((uint8_t *)&a)[0] << 0) | (((uint8_t *)&a)[1] << 8) | (((uint8_t *)&a)[2] << 16) | (((uint8_t *)&a)[3] << 24);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
// Convert to 32-bit little-endian from native order
|
|
||||||
static inline uint32_t lfs_tole32(uint32_t a)
|
|
||||||
{
|
|
||||||
return lfs_fromle32(a);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Calculate CRC-32 with polynomial = 0x04c11db7
|
|
||||||
void lfs_crc(uint32_t *crc, const void *buffer, size_t size);
|
|
||||||
|
|
||||||
// Allocate memory, only used if buffers are not provided to littlefs
|
|
||||||
static inline void *lfs_malloc(size_t size)
|
|
||||||
{
|
|
||||||
#ifndef LFS_NO_MALLOC
|
|
||||||
extern void *pvPortMalloc(size_t xWantedSize);
|
|
||||||
return pvPortMalloc(size);
|
|
||||||
#else
|
|
||||||
(void)size;
|
|
||||||
return NULL;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deallocate memory, only used if buffers are not provided to littlefs
|
|
||||||
static inline void lfs_free(void *p)
|
|
||||||
{
|
|
||||||
#ifndef LFS_NO_MALLOC
|
|
||||||
extern void vPortFree(void *pv);
|
|
||||||
vPortFree(p);
|
|
||||||
#else
|
|
||||||
(void)p;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
} /* extern "C" */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
[nrf52_base]
|
|
||||||
; Instead of the standard nordicnrf52 platform, we use our fork which has our added variant files
|
|
||||||
platform = platformio/nordicnrf52@^10.7.0
|
|
||||||
extends = arduino_base
|
|
||||||
platform_packages =
|
|
||||||
; our custom Git version until they merge our PR
|
|
||||||
framework-arduinoadafruitnrf52 @ https://github.com/geeksville/Adafruit_nRF52_Arduino.git
|
|
||||||
toolchain-gccarmnoneeabi@~1.90301.0
|
|
||||||
|
|
||||||
build_type = debug
|
|
||||||
build_flags =
|
|
||||||
-include arch/nrf52/cpp_overrides/lfs_util.h
|
|
||||||
${arduino_base.build_flags}
|
|
||||||
-DSERIAL_BUFFER_SIZE=1024
|
|
||||||
-Wno-unused-variable
|
|
||||||
-Isrc/platform/nrf52
|
|
||||||
-DLFS_NO_ASSERT ; Disable LFS assertions , see https://github.com/meshtastic/firmware/pull/3818
|
|
||||||
-DMESHTASTIC_EXCLUDE_AUDIO=1
|
|
||||||
-DMESHTASTIC_EXCLUDE_PAXCOUNTER=1
|
|
||||||
-DMAX_NUM_NODES=80
|
|
||||||
|
|
||||||
build_src_filter =
|
|
||||||
${arduino_base.build_src_filter} -<platform/esp32/> -<platform/stm32wl> -<nimble/> -<mesh/wifi/> -<mesh/api/> -<mesh/http/> -<modules/esp32> -<platform/rp2xx0> -<mesh/eth/> -<mesh/raspihttp>
|
|
||||||
|
|
||||||
lib_deps=
|
|
||||||
${arduino_base.lib_deps}
|
|
||||||
${radiolib_base.lib_deps}
|
|
||||||
rweather/Crypto@^0.4.0
|
|
||||||
|
|
||||||
lib_ignore =
|
|
||||||
BluetoothOTA
|
|
||||||
lvgl
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
[nrf52832_base]
|
|
||||||
extends = nrf52_base
|
|
||||||
|
|
||||||
build_flags = ${nrf52_base.build_flags}
|
|
||||||
|
|
||||||
lib_deps =
|
|
||||||
${nrf52_base.lib_deps}
|
|
||||||
@@ -1,78 +0,0 @@
|
|||||||
[nrf52840_base]
|
|
||||||
extends = nrf52_base
|
|
||||||
|
|
||||||
build_flags = ${nrf52_base.build_flags}
|
|
||||||
|
|
||||||
lib_deps =
|
|
||||||
${nrf52_base.lib_deps}
|
|
||||||
${environmental_base.lib_deps}
|
|
||||||
https://github.com/Kongduino/Adafruit_nRFCrypto.git#e31a8825ea3300b163a0a3c1ddd5de34e10e1371
|
|
||||||
|
|
||||||
; Common NRF52 debugging settings follow. See the Meshtastic developer docs for how to connect SWD debugging probes to your board.
|
|
||||||
|
|
||||||
; We want the initial breakpoint at setup() instead of main(). Also we want to enable semihosting at that point so instead of
|
|
||||||
debug_init_break = tbreak setup
|
|
||||||
; we just turn off the platformio tbreak and do it in .gdbinit (where we have more flexibility for scripting)
|
|
||||||
; also we use a permanent breakpoint so it gets reused each time we restart the debugging session?
|
|
||||||
; debug_init_break = tbreak main
|
|
||||||
|
|
||||||
; Note: add "monitor arm semihosting_redirect tcp 4444 all" if you want the stdout from the device to go to that port number instead
|
|
||||||
; (for use by meshtastic command line)
|
|
||||||
; monitor arm semihosting disable
|
|
||||||
; monitor debug_level 3
|
|
||||||
;
|
|
||||||
; IMPORTANT: fileio must be disabled before using port 5555 - openocd ver 0.12 has a bug where if enabled it never properly parses the special :tt name
|
|
||||||
; for stdio access.
|
|
||||||
; monitor arm semihosting_redirect tcp 5555 stdio
|
|
||||||
|
|
||||||
; Also note: it is _impossible_ to do non blocking reads on the semihost console port (an oversight when ARM specified the semihost API).
|
|
||||||
; So we'll neve be able to general purpose bi-directional communication with the device over semihosting.
|
|
||||||
debug_extra_cmds =
|
|
||||||
echo Running .gdbinit script
|
|
||||||
;monitor arm semihosting enable
|
|
||||||
;monitor arm semihosting_fileio enable
|
|
||||||
;monitor arm semihosting_redirect disable
|
|
||||||
commands 1
|
|
||||||
; echo Breakpoint at setup() has semihosting console, connect to it with "telnet localhost 5555"
|
|
||||||
; set wantSemihost = 1
|
|
||||||
set useSoftDevice = 0
|
|
||||||
end
|
|
||||||
|
|
||||||
; Only reprogram the board if the code has changed
|
|
||||||
debug_load_mode = modified
|
|
||||||
;debug_load_mode = manual
|
|
||||||
; We default to the stlink adapter because it is very cheap and works well, though others (such as jlink) are also supported.
|
|
||||||
;debug_tool = jlink
|
|
||||||
debug_tool = stlink
|
|
||||||
debug_speed = 4000
|
|
||||||
;debug_tool = custom
|
|
||||||
; debug_server =
|
|
||||||
; openocd
|
|
||||||
; -f
|
|
||||||
; /usr/local/share/openocd/scripts/interface/stlink.cfg
|
|
||||||
; -f
|
|
||||||
; /usr/local/share/openocd/scripts/target/nrf52.cfg
|
|
||||||
; $PLATFORMIO_CORE_DIR/packages/tool-openocd/openocd/scripts/interface/cmsis-dap.cfg
|
|
||||||
|
|
||||||
; Allows programming and debug via the RAK NanoDAP as the default debugger tool for the RAK4631 (it is only $10!)
|
|
||||||
; programming time is about the same as the bootloader version.
|
|
||||||
; For information on this see the meshtastic developers documentation for "Development on the NRF52"
|
|
||||||
; We manually pass in the elf file so that pyocd can reverse engineer FreeRTOS data (running threads, etc...)
|
|
||||||
;debug_server =
|
|
||||||
; pyocd
|
|
||||||
; gdbserver
|
|
||||||
; -j
|
|
||||||
; ${platformio.workspace_dir}/..
|
|
||||||
; -t
|
|
||||||
; nrf52840
|
|
||||||
; --semihosting
|
|
||||||
; --elf
|
|
||||||
; ${platformio.build_dir}/${this.__env__}/firmware.elf
|
|
||||||
|
|
||||||
; If you want to debug the semihosting support you can turn on extra logging in pyocd with
|
|
||||||
; -L
|
|
||||||
; pyocd.debug.semihost.trace=debug
|
|
||||||
|
|
||||||
; The following is not needed because it automatically tries do this
|
|
||||||
;debug_server_ready_pattern = -.*GDB server started on port \d+.*
|
|
||||||
;debug_port = localhost:3333
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
; The Portduino based 'native' environment. Currently supported on Linux targets with real LoRa hardware (or simulated).
|
|
||||||
[portduino_base]
|
|
||||||
platform = https://github.com/meshtastic/platform-native.git#562d189828f09fbf4c4093b3c0104bae9d8e9ff9
|
|
||||||
framework = arduino
|
|
||||||
|
|
||||||
build_src_filter =
|
|
||||||
${env.build_src_filter}
|
|
||||||
-<platform/esp32/>
|
|
||||||
-<nimble/>
|
|
||||||
-<platform/nrf52/>
|
|
||||||
-<platform/stm32wl/>
|
|
||||||
-<platform/rp2xx0>
|
|
||||||
-<mesh/wifi/>
|
|
||||||
-<mesh/http/>
|
|
||||||
+<mesh/raspihttp/>
|
|
||||||
-<mesh/eth/>
|
|
||||||
-<modules/esp32>
|
|
||||||
-<modules/Telemetry/EnvironmentTelemetry.cpp>
|
|
||||||
-<modules/Telemetry/AirQualityTelemetry.cpp>
|
|
||||||
-<modules/Telemetry/Sensor>
|
|
||||||
+<../variants/portduino>
|
|
||||||
|
|
||||||
lib_deps =
|
|
||||||
${env.lib_deps}
|
|
||||||
${networking_base.lib_deps}
|
|
||||||
${radiolib_base.lib_deps}
|
|
||||||
rweather/Crypto@^0.4.0
|
|
||||||
lovyan03/LovyanGFX@^1.2.0
|
|
||||||
https://github.com/pine64/libch341-spi-userspace#a9b17e3452f7fb747000d9b4ad4409155b39f6ef
|
|
||||||
|
|
||||||
build_flags =
|
|
||||||
${arduino_base.build_flags}
|
|
||||||
-fPIC
|
|
||||||
-Isrc/platform/portduino
|
|
||||||
-DRADIOLIB_EEPROM_UNSUPPORTED
|
|
||||||
-DPORTDUINO_LINUX_HARDWARE
|
|
||||||
-lpthread
|
|
||||||
-lstdc++fs
|
|
||||||
-lbluetooth
|
|
||||||
-lgpiod
|
|
||||||
-lyaml-cpp
|
|
||||||
-li2c
|
|
||||||
-std=c++17
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
; Common settings for rp2040 Processor based targets
|
|
||||||
[rp2040_base]
|
|
||||||
platform = https://github.com/maxgerhardt/platform-raspberrypi.git#19e30129fb1428b823be585c787dcb4ac0d9014c ; For arduino-pico >=4.2.1
|
|
||||||
extends = arduino_base
|
|
||||||
platform_packages = framework-arduinopico@https://github.com/earlephilhower/arduino-pico.git#6024e9a7e82a72e38dd90f42029ba3748835eb2e ; 4.3.0 with fix MDNS
|
|
||||||
|
|
||||||
board_build.core = earlephilhower
|
|
||||||
board_build.filesystem_size = 0.5m
|
|
||||||
build_flags =
|
|
||||||
${arduino_base.build_flags} -Wno-unused-variable -Wcast-align
|
|
||||||
-Isrc/platform/rp2xx0
|
|
||||||
-Isrc/platform/rp2xx0/hardware_rosc/include
|
|
||||||
-Isrc/platform/rp2xx0/pico_sleep/include
|
|
||||||
-D__PLAT_RP2040__
|
|
||||||
# -D _POSIX_THREADS
|
|
||||||
build_src_filter =
|
|
||||||
${arduino_base.build_src_filter} -<platform/esp32/> -<nimble/> -<modules/esp32> -<platform/nrf52/> -<platform/stm32wl> -<mesh/eth/> -<mesh/wifi/> -<mesh/http/> -<mesh/raspihttp>
|
|
||||||
|
|
||||||
lib_ignore =
|
|
||||||
BluetoothOTA
|
|
||||||
|
|
||||||
lib_deps =
|
|
||||||
${arduino_base.lib_deps}
|
|
||||||
${environmental_base.lib_deps}
|
|
||||||
${radiolib_base.lib_deps}
|
|
||||||
rweather/Crypto
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
; Common settings for rp2040 Processor based targets
|
|
||||||
[rp2350_base]
|
|
||||||
platform = https://github.com/maxgerhardt/platform-raspberrypi.git#19e30129fb1428b823be585c787dcb4ac0d9014c ; For arduino-pico >=4.2.1
|
|
||||||
extends = arduino_base
|
|
||||||
platform_packages = framework-arduinopico@https://github.com/earlephilhower/arduino-pico.git#6024e9a7e82a72e38dd90f42029ba3748835eb2e ; 4.3.0 with fix MDNS
|
|
||||||
|
|
||||||
board_build.core = earlephilhower
|
|
||||||
board_build.filesystem_size = 0.5m
|
|
||||||
build_flags =
|
|
||||||
${arduino_base.build_flags} -Wno-unused-variable -Wcast-align
|
|
||||||
-Isrc/platform/rp2xx0
|
|
||||||
-D__PLAT_RP2350__
|
|
||||||
# -D _POSIX_THREADS
|
|
||||||
build_src_filter =
|
|
||||||
${arduino_base.build_src_filter} -<platform/esp32/> -<nimble/> -<modules/esp32> -<platform/nrf52/> -<platform/stm32wl> -<mesh/eth/> -<mesh/wifi/> -<mesh/http/> -<mesh/raspihttp> -<platform/rp2xx0/pico_sleep> -<platform/rp2xx0/hardware_rosc>
|
|
||||||
|
|
||||||
lib_ignore =
|
|
||||||
BluetoothOTA
|
|
||||||
lvgl
|
|
||||||
|
|
||||||
lib_deps =
|
|
||||||
${arduino_base.lib_deps}
|
|
||||||
${environmental_base.lib_deps}
|
|
||||||
${radiolib_base.lib_deps}
|
|
||||||
rweather/Crypto
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
[stm32_base]
|
|
||||||
extends = arduino_base
|
|
||||||
platform = ststm32
|
|
||||||
platform_packages = platformio/framework-arduinoststm32@https://github.com/stm32duino/Arduino_Core_STM32.git#ea74156acd823b6d14739f389e6cdc648f8ee36e
|
|
||||||
|
|
||||||
build_type = release
|
|
||||||
|
|
||||||
;board_build.flash_offset = 0x08000000
|
|
||||||
|
|
||||||
build_flags =
|
|
||||||
${arduino_base.build_flags}
|
|
||||||
-flto
|
|
||||||
-Isrc/platform/stm32wl -g
|
|
||||||
-DMESHTASTIC_MINIMIZE_BUILD
|
|
||||||
-DMESHTASTIC_EXCLUDE_GPS
|
|
||||||
-DDEBUG_MUTE
|
|
||||||
; -DVECT_TAB_OFFSET=0x08000000
|
|
||||||
-DconfigUSE_CMSIS_RTOS_V2=1
|
|
||||||
; -DSPI_MODE_0=SPI_MODE0
|
|
||||||
-fmerge-all-constants
|
|
||||||
-ffunction-sections
|
|
||||||
-fdata-sections
|
|
||||||
|
|
||||||
build_src_filter =
|
|
||||||
${arduino_base.build_src_filter} -<platform/esp32/> -<nimble/> -<mesh/api/> -<mesh/wifi/> -<mesh/http/> -<modules/esp32> -<mesh/eth/> -<input> -<buzz> -<modules/RemoteHardwareModule.cpp> -<platform/nrf52> -<platform/portduino> -<platform/rp2xx0> -<mesh/raspihttp>
|
|
||||||
|
|
||||||
board_upload.offset_address = 0x08000000
|
|
||||||
upload_protocol = stlink
|
|
||||||
|
|
||||||
lib_deps =
|
|
||||||
${env.lib_deps}
|
|
||||||
charlesbaynham/OSFS@^1.2.3
|
|
||||||
jgromes/RadioLib@7.0.2
|
|
||||||
https://github.com/caveman99/Crypto.git#f61ae26a53f7a2d0ba5511625b8bf8eff3a35d5e
|
|
||||||
|
|
||||||
lib_ignore =
|
|
||||||
mathertel/OneButton@2.6.1
|
|
||||||
Wire
|
|
||||||
1
bin/.gitignore
vendored
1
bin/.gitignore
vendored
@@ -1 +0,0 @@
|
|||||||
config.yaml
|
|
||||||
Binary file not shown.
Binary file not shown.
@@ -1,33 +0,0 @@
|
|||||||
import sys
|
|
||||||
import base64
|
|
||||||
|
|
||||||
def base64_to_hex_string(b64_string):
|
|
||||||
try:
|
|
||||||
# Decode the Base64 string to raw bytes
|
|
||||||
decoded_bytes = base64.b64decode(b64_string)
|
|
||||||
except Exception as e:
|
|
||||||
raise ValueError(f"Invalid Base64 input: {e}")
|
|
||||||
|
|
||||||
# Check if the decoded result is exactly 32 bytes
|
|
||||||
if len(decoded_bytes) != 32:
|
|
||||||
raise ValueError("Decoded Base64 input must be exactly 32 bytes.")
|
|
||||||
|
|
||||||
# Convert each byte to its hex representation
|
|
||||||
hex_values = [f"0x{byte:02x}" for byte in decoded_bytes]
|
|
||||||
|
|
||||||
# Join the formatted hex values with commas
|
|
||||||
formatted_output = "{ " + ", ".join(hex_values) + " };"
|
|
||||||
return formatted_output
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
# Check if a Base64 string was provided in command line arguments
|
|
||||||
if len(sys.argv) != 2:
|
|
||||||
print("Usage: python script.py <base64-string>")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
b64_string = sys.argv[1]
|
|
||||||
try:
|
|
||||||
formatted_hex = base64_to_hex_string(b64_string)
|
|
||||||
print(formatted_hex)
|
|
||||||
except ValueError as e:
|
|
||||||
print(e)
|
|
||||||
111
bin/build-all.sh
Executable file
111
bin/build-all.sh
Executable file
@@ -0,0 +1,111 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
VERSION=`bin/buildinfo.py long`
|
||||||
|
SHORT_VERSION=`bin/buildinfo.py short`
|
||||||
|
|
||||||
|
BOARDS_ESP32="rak11200 tlora-v2 tlora-v1 tlora_v1_3 tlora-v2-1-1.6 tbeam heltec-v1 heltec-v2.0 heltec-v2.1 tbeam0.7 meshtastic-diy-v1 nano-g1 meshtastic-dr-dev"
|
||||||
|
#BOARDS_ESP32=tbeam
|
||||||
|
|
||||||
|
# FIXME note nrf52840dk build is for some reason only generating a BIN file but not a HEX file nrf52840dk-geeksville is fine
|
||||||
|
BOARDS_NRF52="rak4631_5005 rak4631_19003 t-echo"
|
||||||
|
#BOARDS_NRF52=""
|
||||||
|
|
||||||
|
OUTDIR=release/latest
|
||||||
|
|
||||||
|
# We keep all old builds (and their map files in the archive dir)
|
||||||
|
ARCHIVEDIR=release/archive
|
||||||
|
|
||||||
|
rm -f $OUTDIR/firmware*
|
||||||
|
|
||||||
|
mkdir -p $OUTDIR/bins $ARCHIVEDIR
|
||||||
|
rm -r $OUTDIR/bins/* || true
|
||||||
|
mkdir -p $OUTDIR/bins/universal $OUTDIR/elfs/universal
|
||||||
|
|
||||||
|
# build the named environment and copy the bins to the release directory
|
||||||
|
function do_build() {
|
||||||
|
BOARD=$1
|
||||||
|
isNrf=$3
|
||||||
|
|
||||||
|
echo "Building for $BOARD ($isNrf) with $PLATFORMIO_BUILD_FLAGS"
|
||||||
|
rm -f .pio/build/$BOARD/firmware.*
|
||||||
|
|
||||||
|
# The shell vars the build tool expects to find
|
||||||
|
export APP_VERSION=$VERSION
|
||||||
|
|
||||||
|
# Are we building a universal/regionless rom?
|
||||||
|
export HW_VERSION="1.0"
|
||||||
|
basename=universal/firmware-$BOARD-$VERSION
|
||||||
|
|
||||||
|
pio run --environment $BOARD # -v
|
||||||
|
SRCELF=.pio/build/$BOARD/firmware.elf
|
||||||
|
cp $SRCELF $OUTDIR/elfs/$basename.elf
|
||||||
|
|
||||||
|
if [ "$isNrf" = "false" ]
|
||||||
|
then
|
||||||
|
echo "Copying ESP32 bin file"
|
||||||
|
SRCBIN=.pio/build/$BOARD/firmware.bin
|
||||||
|
cp $SRCBIN $OUTDIR/bins/$basename.bin
|
||||||
|
else
|
||||||
|
echo "Generating NRF52 uf2 file"
|
||||||
|
SRCHEX=.pio/build/$BOARD/firmware.hex
|
||||||
|
bin/uf2conv.py $SRCHEX -c -o $OUTDIR/bins/$basename.uf2 -f 0xADA52840
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function do_boards() {
|
||||||
|
declare boards=$1
|
||||||
|
declare isNrf=$2
|
||||||
|
for board in $boards; do
|
||||||
|
# Build universal
|
||||||
|
echo "about to build $board $isNrf"
|
||||||
|
do_build $board "" "$isNrf"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Make sure our submodules are current
|
||||||
|
git submodule update
|
||||||
|
|
||||||
|
# Important to pull latest version of libs into all device flavors, otherwise some devices might be stale
|
||||||
|
platformio lib update
|
||||||
|
|
||||||
|
do_boards "$BOARDS_ESP32" "false"
|
||||||
|
do_boards "$BOARDS_NRF52" "true"
|
||||||
|
|
||||||
|
pio run --environment native
|
||||||
|
cp .pio/build/native/program $OUTDIR/bins/universal/meshtasticd_linux_amd64
|
||||||
|
|
||||||
|
echo "Building SPIFFS for ESP32 targets"
|
||||||
|
pio run --environment tbeam -t buildfs
|
||||||
|
cp .pio/build/tbeam/spiffs.bin $OUTDIR/bins/universal/spiffs-$VERSION.bin
|
||||||
|
|
||||||
|
# keep the bins in archive also
|
||||||
|
cp $OUTDIR/bins/universal/spiffs* $OUTDIR/bins/universal/firmware* $OUTDIR/elfs/universal/firmware* $ARCHIVEDIR
|
||||||
|
|
||||||
|
echo Updating android bins $OUTDIR/forandroid
|
||||||
|
rm -rf $OUTDIR/forandroid
|
||||||
|
mkdir -p $OUTDIR/forandroid
|
||||||
|
cp -a $OUTDIR/bins/universal/*.bin $OUTDIR/forandroid/
|
||||||
|
|
||||||
|
cat >$OUTDIR/curfirmwareversion.xml <<XML
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<!-- This file is kept in source control because it reflects the last stable
|
||||||
|
release. It is used by the android app for forcing software updates. Do not edit.
|
||||||
|
Generated by bin/buildall.sh -->
|
||||||
|
|
||||||
|
<resources>
|
||||||
|
<string name="cur_firmware_version" translatable="false">$VERSION</string>
|
||||||
|
<string name="short_firmware_version" translatable="false">$SHORT_VERSION</string>
|
||||||
|
</resources>
|
||||||
|
XML
|
||||||
|
|
||||||
|
echo Generating $ARCHIVEDIR/firmware-$VERSION.zip
|
||||||
|
rm -f $ARCHIVEDIR/firmware-$VERSION.zip
|
||||||
|
zip --junk-paths $ARCHIVEDIR/firmware-$VERSION.zip $ARCHIVEDIR/spiffs-$VERSION.bin $OUTDIR/bins/universal/firmware-*-$VERSION.* $OUTDIR/bins/universal/meshtasticd* images/system-info.bin bin/device-install.* bin/device-update.*
|
||||||
|
echo Generating $ARCHIVEDIR/elfs-$VERSION.zip
|
||||||
|
rm -f $ARCHIVEDIR/elfs-$VERSION.zip
|
||||||
|
zip --junk-paths $ARCHIVEDIR/elfs-$VERSION.zip $OUTDIR/elfs/universal/firmware-*-$VERSION.*
|
||||||
|
|
||||||
|
echo BUILT ALL
|
||||||
@@ -10,8 +10,11 @@ OUTDIR=release/
|
|||||||
rm -f $OUTDIR/firmware*
|
rm -f $OUTDIR/firmware*
|
||||||
rm -r $OUTDIR/* || true
|
rm -r $OUTDIR/* || true
|
||||||
|
|
||||||
|
# Make sure our submodules are current
|
||||||
|
git submodule update
|
||||||
|
|
||||||
# Important to pull latest version of libs into all device flavors, otherwise some devices might be stale
|
# Important to pull latest version of libs into all device flavors, otherwise some devices might be stale
|
||||||
platformio pkg update -e $1
|
platformio lib update
|
||||||
|
|
||||||
echo "Building for $1 with $PLATFORMIO_BUILD_FLAGS"
|
echo "Building for $1 with $PLATFORMIO_BUILD_FLAGS"
|
||||||
rm -f .pio/build/$1/firmware.*
|
rm -f .pio/build/$1/firmware.*
|
||||||
@@ -19,6 +22,8 @@ rm -f .pio/build/$1/firmware.*
|
|||||||
# The shell vars the build tool expects to find
|
# The shell vars the build tool expects to find
|
||||||
export APP_VERSION=$VERSION
|
export APP_VERSION=$VERSION
|
||||||
|
|
||||||
|
# Are we building a universal/regionless rom?
|
||||||
|
export HW_VERSION="1.0"
|
||||||
basename=firmware-$1-$VERSION
|
basename=firmware-$1-$VERSION
|
||||||
|
|
||||||
pio run --environment $1 # -v
|
pio run --environment $1 # -v
|
||||||
@@ -26,20 +31,13 @@ SRCELF=.pio/build/$1/firmware.elf
|
|||||||
cp $SRCELF $OUTDIR/$basename.elf
|
cp $SRCELF $OUTDIR/$basename.elf
|
||||||
|
|
||||||
echo "Copying ESP32 bin file"
|
echo "Copying ESP32 bin file"
|
||||||
SRCBIN=.pio/build/$1/firmware.factory.bin
|
SRCBIN=.pio/build/$1/firmware.bin
|
||||||
cp $SRCBIN $OUTDIR/$basename.bin
|
cp $SRCBIN $OUTDIR/$basename.bin
|
||||||
|
|
||||||
echo "Copying ESP32 update bin file"
|
echo "Building SPIFFS for ESP32 targets"
|
||||||
SRCBIN=.pio/build/$1/firmware.bin
|
pio run --environment tbeam -t buildfs
|
||||||
cp $SRCBIN $OUTDIR/$basename-update.bin
|
cp .pio/build/tbeam/spiffs.bin $OUTDIR/spiffs-$VERSION.bin
|
||||||
|
cp images/system-info.bin $OUTDIR/system-info.bin
|
||||||
|
|
||||||
echo "Building Filesystem for ESP32 targets"
|
|
||||||
pio run --environment $1 -t buildfs
|
|
||||||
cp .pio/build/$1/littlefs.bin $OUTDIR/littlefswebui-$VERSION.bin
|
|
||||||
# Remove webserver files from the filesystem and rebuild
|
|
||||||
ls -l data/static # Diagnostic list of files
|
|
||||||
rm -rf data/static
|
|
||||||
pio run --environment $1 -t buildfs
|
|
||||||
cp .pio/build/$1/littlefs.bin $OUTDIR/littlefs-$VERSION.bin
|
|
||||||
cp bin/device-install.* $OUTDIR
|
cp bin/device-install.* $OUTDIR
|
||||||
cp bin/device-update.* $OUTDIR
|
cp bin/device-update.* $OUTDIR
|
||||||
|
|||||||
@@ -2,19 +2,8 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
platformioFailed() {
|
VERSION=`bin/buildinfo.py long`
|
||||||
[[ $VIRTUAL_ENV != "" ]] && exit 1 # don't hint at virtualenv if it's already in use
|
SHORT_VERSION=`bin/buildinfo.py short`
|
||||||
echo -e "\nThere were issues running platformio and you are not using a virtual environment." \
|
|
||||||
"\nYou may try setting up virtualenv and downloading the latest platformio from pip:" \
|
|
||||||
"\n\tvirtualenv venv" \
|
|
||||||
"\n\tsource venv/bin/activate" \
|
|
||||||
"\n\tpip install platformio" \
|
|
||||||
"\n\t./bin/build-native.sh # retry building"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
VERSION=$(bin/buildinfo.py long)
|
|
||||||
SHORT_VERSION=$(bin/buildinfo.py short)
|
|
||||||
|
|
||||||
OUTDIR=release/
|
OUTDIR=release/
|
||||||
|
|
||||||
@@ -23,8 +12,15 @@ rm -f $OUTDIR/firmware*
|
|||||||
mkdir -p $OUTDIR/
|
mkdir -p $OUTDIR/
|
||||||
rm -r $OUTDIR/* || true
|
rm -r $OUTDIR/* || true
|
||||||
|
|
||||||
|
# Make sure our submodules are current
|
||||||
|
git submodule update
|
||||||
|
|
||||||
# Important to pull latest version of libs into all device flavors, otherwise some devices might be stale
|
# Important to pull latest version of libs into all device flavors, otherwise some devices might be stale
|
||||||
platformio pkg update --environment native || platformioFailed
|
platformio lib update
|
||||||
pio run --environment native || platformioFailed
|
|
||||||
cp .pio/build/native/program "$OUTDIR/meshtasticd_linux_$(uname -m)"
|
pio run --environment native
|
||||||
cp bin/native-install.* $OUTDIR
|
cp .pio/build/native/program $OUTDIR/meshtasticd_linux_amd64
|
||||||
|
|
||||||
|
cp bin/device-install.* $OUTDIR
|
||||||
|
cp bin/device-update.* $OUTDIR
|
||||||
|
|
||||||
|
|||||||
@@ -2,16 +2,19 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
VERSION=$(bin/buildinfo.py long)
|
VERSION=`bin/buildinfo.py long`
|
||||||
SHORT_VERSION=$(bin/buildinfo.py short)
|
SHORT_VERSION=`bin/buildinfo.py short`
|
||||||
|
|
||||||
OUTDIR=release/
|
OUTDIR=release/
|
||||||
|
|
||||||
rm -f $OUTDIR/firmware*
|
rm -f $OUTDIR/firmware*
|
||||||
rm -r $OUTDIR/* || true
|
rm -r $OUTDIR/* || true
|
||||||
|
|
||||||
|
# Make sure our submodules are current
|
||||||
|
git submodule update
|
||||||
|
|
||||||
# Important to pull latest version of libs into all device flavors, otherwise some devices might be stale
|
# Important to pull latest version of libs into all device flavors, otherwise some devices might be stale
|
||||||
platformio pkg update -e $1
|
platformio lib update
|
||||||
|
|
||||||
echo "Building for $1 with $PLATFORMIO_BUILD_FLAGS"
|
echo "Building for $1 with $PLATFORMIO_BUILD_FLAGS"
|
||||||
rm -f .pio/build/$1/firmware.*
|
rm -f .pio/build/$1/firmware.*
|
||||||
@@ -19,35 +22,16 @@ rm -f .pio/build/$1/firmware.*
|
|||||||
# The shell vars the build tool expects to find
|
# The shell vars the build tool expects to find
|
||||||
export APP_VERSION=$VERSION
|
export APP_VERSION=$VERSION
|
||||||
|
|
||||||
|
export HW_VERSION="1.0"
|
||||||
basename=firmware-$1-$VERSION
|
basename=firmware-$1-$VERSION
|
||||||
|
|
||||||
pio run --environment $1 # -v
|
pio run --environment $1 # -v
|
||||||
SRCELF=.pio/build/$1/firmware.elf
|
SRCELF=.pio/build/$1/firmware.elf
|
||||||
cp $SRCELF $OUTDIR/$basename.elf
|
cp $SRCELF $OUTDIR/$basename.elf
|
||||||
|
|
||||||
echo "Generating NRF52 dfu file"
|
|
||||||
DFUPKG=.pio/build/$1/firmware.zip
|
|
||||||
cp $DFUPKG $OUTDIR/$basename-ota.zip
|
|
||||||
|
|
||||||
echo "Generating NRF52 uf2 file"
|
echo "Generating NRF52 uf2 file"
|
||||||
SRCHEX=.pio/build/$1/firmware.hex
|
SRCHEX=.pio/build/$1/firmware.hex
|
||||||
|
bin/uf2conv.py $SRCHEX -c -o $OUTDIR/$basename.uf2 -f 0xADA52840
|
||||||
|
|
||||||
# if WM1110 target, merge hex with softdevice 7.3.0
|
cp bin/device-install.* $OUTDIR
|
||||||
if (echo $1 | grep -q "wio-sdk-wm1110"); then
|
cp bin/device-update.* $OUTDIR
|
||||||
echo "Merging with softdevice"
|
|
||||||
bin/mergehex -m bin/s140_nrf52_7.3.0_softdevice.hex $SRCHEX -o .pio/build/$1/$basename.hex
|
|
||||||
SRCHEX=.pio/build/$1/$basename.hex
|
|
||||||
bin/uf2conv.py $SRCHEX -c -o $OUTDIR/$basename.uf2 -f 0xADA52840
|
|
||||||
cp $SRCHEX $OUTDIR
|
|
||||||
cp bin/*.uf2 $OUTDIR
|
|
||||||
else
|
|
||||||
bin/uf2conv.py $SRCHEX -c -o $OUTDIR/$basename.uf2 -f 0xADA52840
|
|
||||||
cp bin/device-install.* $OUTDIR
|
|
||||||
cp bin/device-update.* $OUTDIR
|
|
||||||
cp bin/*.uf2 $OUTDIR
|
|
||||||
fi
|
|
||||||
|
|
||||||
if (echo $1 | grep -q "rak4631"); then
|
|
||||||
echo "Copying hex file"
|
|
||||||
cp .pio/build/$1/firmware.hex $OUTDIR/$basename.hex
|
|
||||||
fi
|
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
VERSION=`bin/buildinfo.py long`
|
|
||||||
SHORT_VERSION=`bin/buildinfo.py short`
|
|
||||||
|
|
||||||
OUTDIR=release/
|
|
||||||
|
|
||||||
rm -f $OUTDIR/firmware*
|
|
||||||
rm -r $OUTDIR/* || true
|
|
||||||
|
|
||||||
# Important to pull latest version of libs into all device flavors, otherwise some devices might be stale
|
|
||||||
platformio pkg update -e $1
|
|
||||||
|
|
||||||
echo "Building for $1 with $PLATFORMIO_BUILD_FLAGS"
|
|
||||||
rm -f .pio/build/$1/firmware.*
|
|
||||||
|
|
||||||
# The shell vars the build tool expects to find
|
|
||||||
export APP_VERSION=$VERSION
|
|
||||||
|
|
||||||
basename=firmware-$1-$VERSION
|
|
||||||
|
|
||||||
pio run --environment $1 # -v
|
|
||||||
SRCELF=.pio/build/$1/firmware.elf
|
|
||||||
cp $SRCELF $OUTDIR/$basename.elf
|
|
||||||
|
|
||||||
echo "Copying uf2 file"
|
|
||||||
SRCBIN=.pio/build/$1/firmware.uf2
|
|
||||||
cp $SRCBIN $OUTDIR/$basename.uf2
|
|
||||||
|
|
||||||
cp bin/device-install.* $OUTDIR
|
|
||||||
cp bin/device-update.* $OUTDIR
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user