353 lines
14 KiB
Bash
Executable File
353 lines
14 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# http://docs.platformio.org/en/latest/faq.html#faq-install-shell-commands
|
|
|
|
sudo apt install -f -y python3 python3-git python3-pip checkinstall libpmix-bin libpmix-dev python3-starlette python3-jsonrpc python3-h11 python3-uvicorn python3-wsproto python3-ifaddr python3-zeroconf python3-all python3-setuptools python3-docutils python3-sphinx python3-sphinx-rtd-theme python3-pytest python3-pytest-xdist
|
|
|
|
#Build deps
|
|
sudo apt install -f -y python3-jsondiff python3-semantic-version python3-pyelftools python3-tabulate python3-marshmallow
|
|
|
|
# zephyr python deps
|
|
sudo apt-get install -y python3-pykwalify
|
|
|
|
sudo pip3 install ajsonrpc # ajsonrpc.dispatcher ajsonrpc.manager
|
|
|
|
# sudo python -c "$(curl -fsSL https://raw.githubusercontent.com/platformio/platformio/develop/scripts/get-platformio.py)"
|
|
|
|
# uninstall existing version
|
|
pip3 uninstall platformio
|
|
|
|
# install the latest development version of PlatformIO
|
|
|
|
USER=platformio
|
|
PROJECT=platformio-core
|
|
LICENSE="apache"
|
|
SECTION="devel"
|
|
HOMEPAGE="https://platformio.org/"
|
|
PACKAGE="platformio-core"
|
|
RELEASE=$(curl "https://api.github.com/repos/${USER}/${PROJECT}/releases?per_page=5" | jq -r '.[0] | .tag_name')
|
|
VERSION=$(echo "${RELEASE}" | cut -c 2- | cut -f1 -d"-")
|
|
BUILD_HOME="/var/tmp/platformio-core-"${VERSION}"_build"
|
|
DEBEMAIL="person@company.tld"
|
|
DEBFULLNAME="Testy McTester"
|
|
DESCRIPTION="A professional collaborative platform for embedded development."
|
|
LONG_DESCRIPTION=" Cross-platform IDE, Unified Debugger, Static Code Analyzer, Remote Unit Testing,\n Build System, Firmware File Explorer and Memory Inspection."
|
|
|
|
RSS_FEED="https://github.com/${USER}/${PROJECT}/releases.atom"
|
|
# xdg-open ${RSS_FEED}
|
|
echo ${RSS_FEED}
|
|
|
|
# Make the BUILD_HOME directory and clone upstream
|
|
mkdir -p ${BUILD_HOME}
|
|
cd ${BUILD_HOME} || exit
|
|
|
|
# --branch can take tags and detaches the HEAD at that commit
|
|
git clone http://github.com/${USER}/${PROJECT}.git --branch=${RELEASE} ${PACKAGE}-${VERSION}
|
|
|
|
cd ${PACKAGE}-${VERSION} || exit
|
|
|
|
mkdir -p m4
|
|
|
|
# Use py.test-3
|
|
sed -i 's/py.test/#py.test-3/g' Makefile
|
|
# sed -i 's/ignore/ignore-path/g' Makefile
|
|
|
|
cat <<EOF >.git/gbp.conf
|
|
[DEFAULT]
|
|
# this is the upstream-branch:
|
|
upstream-branch=master
|
|
EOF
|
|
|
|
# disable pylint false positive with no-member for libraries with C-binding.
|
|
sed -i '/^disable=.*/ s/.*/&\n signature-differs\,/' ${PWD}/.pylintrc
|
|
sed -i '/^disable=.*/ s/.*/&\n no-member\,/' ${PWD}/.pylintrc
|
|
|
|
# debianize the BUILD_HOME directory
|
|
echo ${DEBFULLNAME}
|
|
dh_make \
|
|
--createorig \
|
|
--single \
|
|
--native \
|
|
--copyright ${LICENSE} \
|
|
--yes
|
|
|
|
# Customize the debian directory values
|
|
#sed -i 's,^\(Description: \).*,\1'${DESCRIPTION}',' debian/control
|
|
sed -i "s,^\(Description: \).*,\1${DESCRIPTION}," debian/control
|
|
sed -i 's,^\(Section: \).*,\1'${SECTION}',' debian/control
|
|
sed -i "s,^\(Maintainer: \).*,\1'${DEBFULLNAME}\ \<${DEBEMAIL}\>'," debian/control
|
|
sed -i 's,^\(Homepage: \).*,\1'${HOMEPAGE}',' debian/control
|
|
sed -i "s/.*insert\ long.*/${LONG_DESCRIPTION}/" debian/control
|
|
|
|
echo ****************
|
|
cat debian/control
|
|
echo ****************
|
|
|
|
BUILD_OPTIONS=""
|
|
|
|
cat <<EOF >debian/rules
|
|
#!/usr/bin/make -f
|
|
%:
|
|
dh \$@
|
|
|
|
override_dh_auto_configure:
|
|
dh_auto_configure -- ${BUILD_OPTIONS}
|
|
EOF
|
|
|
|
cat <<EOF >debian/watch
|
|
version=4
|
|
opts=filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/${PROJECT}-$1\.tar\.gz/ \
|
|
http://github.com/${USER}/${PROJECT}/tags .*/v?(\d\S+)\.tar\.gz
|
|
EOF
|
|
|
|
dpkg-buildpackage -us -uc -b
|
|
|
|
echo ${PACKAGE}_${VERSION}_amd64.deb
|
|
|
|
sudo dpkg -i ../${PACKAGE}_${VERSION}_amd64.deb
|
|
|
|
# install some platforms
|
|
# platformio platform install espressif8266
|
|
# platformio platform install espressif32
|
|
# platformio platform install nordicnrf51
|
|
# platformio platform install nordicnrf52
|
|
# platformio platform install ststm32
|
|
# platformio platform install timsp430
|
|
# platformio platform install atmelavr
|
|
|
|
DEST=/home/default
|
|
|
|
git clone --depth 1 https://github.com/platformio/platform-espressif8266 ${DEST}/.platformio/platforms/espressif8266
|
|
git clone --depth 1 https://github.com/platformio/platform-espressif32 ${DEST}/.platformio/platforms/espressif32
|
|
git clone --depth 1 https://github.com/platformio/platform-nordicnrf51 ${DEST}/.platformio/platforms/nordicnrf51
|
|
git clone --depth 1 https://github.com/platformio/platform-nordicnrf52 ${DEST}/.platformio/platforms/nordicnrf52
|
|
git clone --depth 1 https://github.com/platformio/platform-ststm32 ${DEST}/.platformio/platforms/ststm32
|
|
git clone --depth 1 https://github.com/platformio/platform-timsp430 ${DEST}/.platformio/platforms/timsp430
|
|
git clone --depth 1 https://github.com/platformio/platform-atmelavr ${DEST}/.platformio/platforms/atmelavr
|
|
git clone --depth 1 https://github.com/platformio/platform-atmelsam ${DEST}/.platformio/platforms/atmelsam
|
|
git clone --depth 1 https://github.com/platformio/platform-native ${DEST}/.platformio/platforms/native
|
|
|
|
pio pkg install --global --tool "platformio/framework-cmsis@^2.50700.210515"
|
|
pio pkg install --global --tool "platformio/framework-zephyr^2.30400.230914"
|
|
|
|
# pip install puts the results in usr/local/bin so we don't have a path issue
|
|
#platformio: /usr/local/bin/platformio
|
|
|
|
mkdir -p ${HOME}/PlatformIO/Projects
|
|
pio settings set enable_telemetry No
|
|
pio settings set projects_dir ${HOME}/PlatformIO/Projects
|
|
|
|
pio settings get
|
|
|
|
pio boards
|
|
|
|
# https://dokk.org/documentation/platformio/v3.5.1/faq/#zsh-completion
|
|
mkdir -p ${HOME}/.zshrc.d/
|
|
cat >${HOME}/.zshrc.d/008_platformio.zsh <<'EOF'
|
|
if [[ -d "/usr/local/bin/platformio" ]]; then
|
|
|
|
autoload bashcompinit && bashcompinit
|
|
eval "$(_PLATFORMIO_COMPLETE=source platformio)"
|
|
eval "$(_PLATFORMIO_COMPLETE=source pio)"
|
|
fi
|
|
EOF
|
|
|
|
cat >~/.profile <<'EOF'
|
|
|
|
if [ -d "/usr/local/bin/platformio" ] ; then
|
|
|
|
eval "$(_PLATFORMIO_COMPLETE=source platformio)"
|
|
eval "$(_PLATFORMIO_COMPLETE=source pio)"
|
|
fi
|
|
EOF
|
|
|
|
# http://docs.platformio.org/en/latest/faq.html#platformio-udev-rules
|
|
# https://raw.githubusercontent.com/platformio/platformio-core/develop/scripts/99-platformio-udev.rules
|
|
# curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core/master/scripts/99-platformio-udev.rules | sudo tee /etc/udev/rules.d/99-platformio-udev.rules
|
|
sudo bash -c "cat > /etc/udev/rules.d/99-platformio-udev.rules" <<'EOF'
|
|
#
|
|
# Boards
|
|
#
|
|
|
|
# CP210X USB UART
|
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0666"
|
|
|
|
# FT232R USB UART
|
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE:="0666"
|
|
|
|
# Prolific Technology, Inc. PL2303 Serial Port
|
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", MODE:="0666"
|
|
|
|
# QinHeng Electronics HL-340 USB-Serial adapter
|
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0666"
|
|
|
|
# Arduino boards
|
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="[08][02]*", MODE:="0666"
|
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2a03", ATTRS{idProduct}=="[08][02]*", MODE:="0666"
|
|
|
|
# Arduino SAM-BA
|
|
ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="6124", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="6124", ENV{MTP_NO_PROBE}="1"
|
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="6124", MODE:="0666"
|
|
KERNEL=="ttyACM*", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="6124", MODE:="0666"
|
|
|
|
# Digistump boards
|
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0753", MODE:="0666"
|
|
KERNEL=="ttyACM*", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0753", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
|
|
# STM32 discovery boards, with onboard st/linkv2
|
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374?", MODE:="0666"
|
|
|
|
# USBtiny
|
|
SUBSYSTEMS=="usb", ATTRS{idProduct}=="0c9f", ATTRS{idVendor}=="1781", MODE="0666"
|
|
|
|
# USBasp V2.0
|
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", MODE:="0666"
|
|
|
|
# Teensy boards
|
|
ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789]?", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789]?", ENV{MTP_NO_PROBE}="1"
|
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789]?", MODE:="0666"
|
|
KERNEL=="ttyACM*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789]?", MODE:="0666"
|
|
|
|
#TI Stellaris Launchpad
|
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1cbe", ATTRS{idProduct}=="00fd", MODE="0666"
|
|
|
|
#TI MSP430 Launchpad
|
|
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0451", ATTRS{idProduct}=="f432", MODE="0666"
|
|
|
|
|
|
#
|
|
# Debuggers
|
|
#
|
|
|
|
# Black Magic Probe
|
|
SUBSYSTEM=="tty", ATTRS{interface}=="Black Magic GDB Server"
|
|
SUBSYSTEM=="tty", ATTRS{interface}=="Black Magic UART Port"
|
|
|
|
# opendous and estick
|
|
ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="204f", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# Original FT232/FT245 VID:PID
|
|
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# Original FT2232 VID:PID
|
|
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# Original FT4232 VID:PID
|
|
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# Original FT232H VID:PID
|
|
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6014", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# DISTORTEC JTAG-lock-pick Tiny 2
|
|
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="8220", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# TUMPA, TUMPA Lite
|
|
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="8a98", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="8a99", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# XDS100v2
|
|
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="a6d0", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# Xverve Signalyzer Tool (DT-USB-ST), Signalyzer LITE (DT-USB-SLITE)
|
|
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bca0", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bca1", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# TI/Luminary Stellaris Evaluation Board FTDI (several)
|
|
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bcd9", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# TI/Luminary Stellaris In-Circuit Debug Interface FTDI (ICDI) Board
|
|
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bcda", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# egnite Turtelizer 2
|
|
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="bdc8", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# Section5 ICEbear
|
|
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="c140", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="c141", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# Amontec JTAGkey and JTAGkey-tiny
|
|
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="cff8", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# TI ICDI
|
|
ATTRS{idVendor}=="0451", ATTRS{idProduct}=="c32a", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# STLink v1
|
|
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3744", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# STLink v2
|
|
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# STLink v2-1
|
|
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374b", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# Hilscher NXHX Boards
|
|
ATTRS{idVendor}=="0640", ATTRS{idProduct}=="0028", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# Hitex STR9-comStick
|
|
ATTRS{idVendor}=="0640", ATTRS{idProduct}=="002c", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# Hitex STM32-PerformanceStick
|
|
ATTRS{idVendor}=="0640", ATTRS{idProduct}=="002d", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# Altera USB Blaster
|
|
ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6001", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# Amontec JTAGkey-HiSpeed
|
|
ATTRS{idVendor}=="0fbb", ATTRS{idProduct}=="1000", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# SEGGER J-Link
|
|
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0101", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0102", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0103", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0104", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0105", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0107", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="0108", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1010", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1011", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1012", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1013", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1014", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1015", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1016", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1017", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
ATTRS{idVendor}=="1366", ATTRS{idProduct}=="1018", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# Raisonance RLink
|
|
ATTRS{idVendor}=="138e", ATTRS{idProduct}=="9000", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# Debug Board for Neo1973
|
|
ATTRS{idVendor}=="1457", ATTRS{idProduct}=="5118", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# Olimex ARM-USB-OCD
|
|
ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="0003", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# Olimex ARM-USB-OCD-TINY
|
|
ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="0004", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# Olimex ARM-JTAG-EW
|
|
ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="001e", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# Olimex ARM-USB-OCD-TINY-H
|
|
ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="002a", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# Olimex ARM-USB-OCD-H
|
|
ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="002b", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# USBprog with OpenOCD firmware
|
|
ATTRS{idVendor}=="1781", ATTRS{idProduct}=="0c63", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# TI/Luminary Stellaris In-Circuit Debug Interface (ICDI) Board
|
|
ATTRS{idVendor}=="1cbe", ATTRS{idProduct}=="00fd", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# Marvell Sheevaplug
|
|
ATTRS{idVendor}=="9e88", ATTRS{idProduct}=="9e8f", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# Keil Software, Inc. ULink
|
|
ATTRS{idVendor}=="c251", ATTRS{idProduct}=="2710", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
|
|
# CMSIS-DAP compatible adapters
|
|
ATTRS{product}=="*CMSIS-DAP*", MODE="660", GROUP="plugdev", TAG+="uaccess"
|
|
EOF
|