tools, ci: backport idf_tools.py and IDF Docker image
This commit is contained in:
parent
6e1eb21bae
commit
71d0d08c4e
10 changed files with 2054 additions and 0 deletions
|
@ -53,6 +53,11 @@ variables:
|
||||||
.apply_bot_filter: &apply_bot_filter
|
.apply_bot_filter: &apply_bot_filter
|
||||||
python $APPLY_BOT_FILTER_SCRIPT || exit 0
|
python $APPLY_BOT_FILTER_SCRIPT || exit 0
|
||||||
|
|
||||||
|
.setup_tools_unless_target_test: &setup_tools_unless_target_test |
|
||||||
|
if [[ "$SETUP_TOOLS" == "1" || "$CI_JOB_STAGE" != "target_test" ]]; then
|
||||||
|
tools/idf_tools.py --non-interactive install && eval "$(tools/idf_tools.py --non-interactive export)" || exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- source tools/ci/setup_python.sh
|
- source tools/ci/setup_python.sh
|
||||||
- *git_clean_stale_submodules
|
- *git_clean_stale_submodules
|
||||||
|
@ -65,6 +70,8 @@ before_script:
|
||||||
- base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
|
- base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
|
||||||
- chmod 600 ~/.ssh/id_rsa
|
- chmod 600 ~/.ssh/id_rsa
|
||||||
- echo -e "Host gitlab.espressif.cn\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
|
- echo -e "Host gitlab.espressif.cn\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
|
||||||
|
# Download and install tools, if needed
|
||||||
|
- *setup_tools_unless_target_test
|
||||||
|
|
||||||
# Set IS_PRIVATE or IS_PUBLIC depending on if our branch is public or not
|
# Set IS_PRIVATE or IS_PUBLIC depending on if our branch is public or not
|
||||||
#
|
#
|
||||||
|
@ -341,6 +348,29 @@ verify_cmake_style:
|
||||||
script:
|
script:
|
||||||
tools/cmake/run_cmake_lint.sh
|
tools/cmake/run_cmake_lint.sh
|
||||||
|
|
||||||
|
build_docker:
|
||||||
|
stage: build
|
||||||
|
image: espressif/docker-builder:1
|
||||||
|
tags:
|
||||||
|
- build_docker_amd64_brno
|
||||||
|
only:
|
||||||
|
refs:
|
||||||
|
- master
|
||||||
|
- /^release\/v/
|
||||||
|
- /^v\d+\.\d+(\.\d+)?($|-)/
|
||||||
|
- schedules
|
||||||
|
variables:
|
||||||
|
DOCKER_TMP_IMAGE_NAME: "idf_tmp_image"
|
||||||
|
before_script: []
|
||||||
|
script:
|
||||||
|
- export DOCKER_BUILD_ARGS="--build-arg IDF_CLONE_URL=${CI_REPOSITORY_URL} --build-arg IDF_CLONE_BRANCH_OR_TAG=${CI_COMMIT_REF_NAME} --build-arg IDF_CHECKOUT_REF=${CI_COMMIT_TAG:-$CI_COMMIT_SHA}"
|
||||||
|
# Build
|
||||||
|
- docker build --tag ${DOCKER_TMP_IMAGE_NAME} ${DOCKER_BUILD_ARGS} tools/docker/
|
||||||
|
# We can't mount $PWD/examples/get-started/blink into the container, see https://gitlab.com/gitlab-org/gitlab-ce/issues/41227.
|
||||||
|
# The workaround mentioned there works, but leaves around directories which need to be cleaned up manually.
|
||||||
|
# Therefore, build a copy of the example located inside the container.
|
||||||
|
- docker run --rm --workdir /opt/esp/idf/examples/get-started/blink ${DOCKER_TMP_IMAGE_NAME} idf.py build
|
||||||
|
|
||||||
.host_test_template: &host_test_template
|
.host_test_template: &host_test_template
|
||||||
stage: host_test
|
stage: host_test
|
||||||
image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
|
image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
|
||||||
|
|
70
export.bat
Normal file
70
export.bat
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
@echo off
|
||||||
|
if defined MSYSTEM (
|
||||||
|
echo This .bat file is for Windows CMD.EXE shell only. When using MSYS, run:
|
||||||
|
echo . ./export.sh.
|
||||||
|
goto :eof
|
||||||
|
)
|
||||||
|
|
||||||
|
:: Infer IDF_PATH from script location
|
||||||
|
set IDF_PATH=%~dp0
|
||||||
|
set IDF_PATH=%IDF_PATH:~0,-1%
|
||||||
|
|
||||||
|
set IDF_TOOLS_PY_PATH=%IDF_PATH%\tools\idf_tools.py
|
||||||
|
set IDF_TOOLS_JSON_PATH=%IDF_PATH%\tools\tools.json
|
||||||
|
set IDF_TOOLS_EXPORT_CMD=%IDF_PATH%\export.bat
|
||||||
|
set IDF_TOOLS_INSTALL_CMD=%IDF_PATH%\install.bat
|
||||||
|
echo Setting IDF_PATH: %IDF_PATH%
|
||||||
|
echo.
|
||||||
|
|
||||||
|
set "OLD_PATH=%PATH%"
|
||||||
|
echo Adding ESP-IDF tools to PATH...
|
||||||
|
:: Export tool paths and environment variables.
|
||||||
|
:: It is possible to do this without a temporary file (running idf_tools.py from for /r command),
|
||||||
|
:: but that way it is impossible to get the exit code of idf_tools.py.
|
||||||
|
set "IDF_TOOLS_EXPORTS_FILE=%TEMP%\idf_export_vars.tmp"
|
||||||
|
python.exe %IDF_PATH%\tools\idf_tools.py export --format key-value >"%IDF_TOOLS_EXPORTS_FILE%"
|
||||||
|
if %errorlevel% neq 0 goto :end
|
||||||
|
|
||||||
|
for /f "usebackq tokens=1,2 eol=# delims==" %%a in ("%IDF_TOOLS_EXPORTS_FILE%") do (
|
||||||
|
call set "%%a=%%b"
|
||||||
|
)
|
||||||
|
|
||||||
|
:: This removes OLD_PATH substring from PATH, leaving only the paths which have been added,
|
||||||
|
:: and prints semicolon-delimited components of the path on separate lines
|
||||||
|
call set PATH_ADDITIONS=%%PATH:%OLD_PATH%=%%
|
||||||
|
if "%PATH_ADDITIONS%"=="" call :print_nothing_added
|
||||||
|
if not "%PATH_ADDITIONS%"=="" echo %PATH_ADDITIONS:;=&echo. %
|
||||||
|
|
||||||
|
echo Checking if Python packages are up to date...
|
||||||
|
python.exe %IDF_PATH%\tools\check_python_dependencies.py
|
||||||
|
if %errorlevel% neq 0 goto :end
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo Done! You can now compile ESP-IDF projects.
|
||||||
|
echo Go to the project directory and run:
|
||||||
|
echo.
|
||||||
|
echo idf.py build
|
||||||
|
echo.
|
||||||
|
|
||||||
|
goto :end
|
||||||
|
|
||||||
|
:print_nothing_added
|
||||||
|
echo No directories added to PATH:
|
||||||
|
echo.
|
||||||
|
echo %PATH%
|
||||||
|
echo.
|
||||||
|
goto :eof
|
||||||
|
|
||||||
|
:end
|
||||||
|
|
||||||
|
:: Clean up
|
||||||
|
if not "%IDF_TOOLS_EXPORTS_FILE%"=="" (
|
||||||
|
del "%IDF_TOOLS_EXPORTS_FILE%" 1>nul 2>nul
|
||||||
|
)
|
||||||
|
set IDF_TOOLS_EXPORTS_FILE=
|
||||||
|
set IDF_TOOLS_EXPORT_CMD=
|
||||||
|
set IDF_TOOLS_INSTALL_CMD=
|
||||||
|
set IDF_TOOLS_PY_PATH=
|
||||||
|
set IDF_TOOLS_JSON_PATH=
|
||||||
|
set OLD_PATH=
|
||||||
|
set PATH_ADDITIONS=
|
101
export.sh
Normal file
101
export.sh
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
# This script should be sourced, not executed.
|
||||||
|
|
||||||
|
function realpath_int() {
|
||||||
|
wdir="$PWD"; [ "$PWD" = "/" ] && wdir=""
|
||||||
|
arg=$1
|
||||||
|
case "$arg" in
|
||||||
|
/*) scriptdir="${arg}";;
|
||||||
|
*) scriptdir="$wdir/${arg#./}";;
|
||||||
|
esac
|
||||||
|
scriptdir="${scriptdir%/*}"
|
||||||
|
echo "$scriptdir"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function idf_export_main() {
|
||||||
|
# The file doesn't have executable permissions, so this shouldn't really happen.
|
||||||
|
# Doing this in case someone tries to chmod +x it and execute...
|
||||||
|
if [[ -n "${BASH_SOURCE}" && ( "${BASH_SOURCE[0]}" == "${0}" ) ]]; then
|
||||||
|
echo "This script should be sourced, not executed:"
|
||||||
|
echo ". ${BASH_SOURCE[0]}"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "${IDF_PATH}" ]]
|
||||||
|
then
|
||||||
|
# If using bash, try to guess IDF_PATH from script location
|
||||||
|
if [[ -n "${BASH_SOURCE}" ]]
|
||||||
|
then
|
||||||
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||||
|
script_dir="$(realpath_int $BASH_SOURCE)"
|
||||||
|
else
|
||||||
|
script_name="$(readlink -f $BASH_SOURCE)"
|
||||||
|
script_dir="$(dirname $script_name)"
|
||||||
|
fi
|
||||||
|
export IDF_PATH="${script_dir}"
|
||||||
|
else
|
||||||
|
echo "IDF_PATH must be set before sourcing this script"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
old_path=$PATH
|
||||||
|
|
||||||
|
echo "Adding ESP-IDF tools to PATH..."
|
||||||
|
# Call idf_tools.py to export tool paths
|
||||||
|
export IDF_TOOLS_EXPORT_CMD=${IDF_PATH}/export.sh
|
||||||
|
export IDF_TOOLS_INSTALL_CMD=${IDF_PATH}/install.sh
|
||||||
|
idf_exports=$(${IDF_PATH}/tools/idf_tools.py export) || return 1
|
||||||
|
eval "${idf_exports}"
|
||||||
|
|
||||||
|
echo "Checking if Python packages are up to date..."
|
||||||
|
python ${IDF_PATH}/tools/check_python_dependencies.py || return 1
|
||||||
|
|
||||||
|
|
||||||
|
# Allow calling some IDF python tools without specifying the full path
|
||||||
|
# ${IDF_PATH}/tools is already added by 'idf_tools.py export'
|
||||||
|
IDF_ADD_PATHS_EXTRAS="${IDF_PATH}/components/esptool_py/esptool"
|
||||||
|
IDF_ADD_PATHS_EXTRAS="${IDF_ADD_PATHS_EXTRAS}:${IDF_PATH}/components/espcoredump"
|
||||||
|
IDF_ADD_PATHS_EXTRAS="${IDF_ADD_PATHS_EXTRAS}:${IDF_PATH}/components/partition_table/"
|
||||||
|
export PATH="${IDF_ADD_PATHS_EXTRAS}:${PATH}"
|
||||||
|
|
||||||
|
if [[ -n "$BASH" ]]
|
||||||
|
then
|
||||||
|
path_prefix=${PATH%%${old_path}}
|
||||||
|
paths="${path_prefix//:/ }"
|
||||||
|
if [ -n "${paths}" ]; then
|
||||||
|
echo "Added the following directories to PATH:"
|
||||||
|
else
|
||||||
|
echo "All paths are already set."
|
||||||
|
fi
|
||||||
|
for path_entry in ${paths}
|
||||||
|
do
|
||||||
|
echo " ${path_entry}"
|
||||||
|
done
|
||||||
|
else
|
||||||
|
echo "Updated PATH variable:"
|
||||||
|
echo " ${PATH}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Clean up
|
||||||
|
unset old_path
|
||||||
|
unset paths
|
||||||
|
unset path_prefix
|
||||||
|
unset path_entry
|
||||||
|
unset IDF_ADD_PATHS_EXTRAS
|
||||||
|
unset idf_exports
|
||||||
|
|
||||||
|
# Not unsetting IDF_PYTHON_ENV_PATH, it can be used by IDF build system
|
||||||
|
# to check whether we are using a private Python environment
|
||||||
|
|
||||||
|
echo "Done! You can now compile ESP-IDF projects."
|
||||||
|
echo "Go to the project directory and run:"
|
||||||
|
echo ""
|
||||||
|
echo " idf.py build"
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
idf_export_main
|
||||||
|
|
||||||
|
unset realpath_int
|
||||||
|
unset idf_export_main
|
22
install.bat
Normal file
22
install.bat
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
@echo off
|
||||||
|
if defined MSYSTEM (
|
||||||
|
echo This .bat file is for Windows CMD.EXE shell only. When using MSYS, run:
|
||||||
|
echo ./install.sh.
|
||||||
|
goto end
|
||||||
|
)
|
||||||
|
:: Infer IDF_PATH from script location
|
||||||
|
set IDF_PATH=%~dp0
|
||||||
|
set IDF_PATH=%IDF_PATH:~0,-1%
|
||||||
|
|
||||||
|
echo Installing ESP-IDF tools
|
||||||
|
python.exe %IDF_PATH%\tools\idf_tools.py install
|
||||||
|
if %errorlevel% neq 0 goto :end
|
||||||
|
|
||||||
|
echo Setting up Python environment
|
||||||
|
python.exe %IDF_PATH%\tools\idf_tools.py install-python-env
|
||||||
|
if %errorlevel% neq 0 goto :end
|
||||||
|
|
||||||
|
echo All done! You can now run:
|
||||||
|
echo export.bat
|
||||||
|
|
||||||
|
:end
|
18
install.sh
Executable file
18
install.sh
Executable file
|
@ -0,0 +1,18 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -u
|
||||||
|
|
||||||
|
export IDF_PATH=$(cd $(dirname $0); pwd)
|
||||||
|
|
||||||
|
echo "Installing ESP-IDF tools"
|
||||||
|
${IDF_PATH}/tools/idf_tools.py install
|
||||||
|
|
||||||
|
echo "Installing Python environment and packages"
|
||||||
|
${IDF_PATH}/tools/idf_tools.py install-python-env
|
||||||
|
|
||||||
|
basedir="$(dirname $0)"
|
||||||
|
echo "All done! You can now run:"
|
||||||
|
echo ""
|
||||||
|
echo " . ${basedir}/export.sh"
|
||||||
|
echo ""
|
|
@ -75,3 +75,6 @@ examples/storage/parttool/parttool_example.py
|
||||||
examples/system/ota/otatool/otatool_example.py
|
examples/system/ota/otatool/otatool_example.py
|
||||||
tools/check_kconfigs.py
|
tools/check_kconfigs.py
|
||||||
tools/test_check_kconfigs.py
|
tools/test_check_kconfigs.py
|
||||||
|
install.sh
|
||||||
|
tools/docker/entrypoint.sh
|
||||||
|
tools/idf_tools.py
|
||||||
|
|
65
tools/docker/Dockerfile
Normal file
65
tools/docker/Dockerfile
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
FROM ubuntu:18.04
|
||||||
|
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
apt-utils \
|
||||||
|
bison \
|
||||||
|
ca-certificates \
|
||||||
|
ccache \
|
||||||
|
check \
|
||||||
|
cmake \
|
||||||
|
curl \
|
||||||
|
flex \
|
||||||
|
git \
|
||||||
|
gperf \
|
||||||
|
lcov \
|
||||||
|
libncurses-dev \
|
||||||
|
libusb-1.0-0-dev \
|
||||||
|
make \
|
||||||
|
ninja-build \
|
||||||
|
python3 \
|
||||||
|
python3-pip \
|
||||||
|
unzip \
|
||||||
|
wget \
|
||||||
|
xz-utils \
|
||||||
|
zip \
|
||||||
|
&& apt-get autoremove -y \
|
||||||
|
&& rm -rf /var/lib/apt/lists/* \
|
||||||
|
&& update-alternatives --install /usr/bin/python python /usr/bin/python3 10
|
||||||
|
|
||||||
|
RUN python -m pip install --upgrade pip virtualenv
|
||||||
|
|
||||||
|
# To build the image for a branch or a tag of IDF, pass --build-arg IDF_CLONE_BRANCH_OR_TAG=name.
|
||||||
|
# To build the image with a specific commit ID of IDF, pass --build-arg IDF_CHECKOUT_REF=commit-id.
|
||||||
|
# It is possibe to combine both, e.g.:
|
||||||
|
# IDF_CLONE_BRANCH_OR_TAG=release/vX.Y
|
||||||
|
# IDF_CHECKOUT_REF=<some commit on release/vX.Y branch>.
|
||||||
|
|
||||||
|
ARG IDF_CLONE_URL=https://github.com/espressif/esp-idf.git
|
||||||
|
ARG IDF_CLONE_BRANCH_OR_TAG=master
|
||||||
|
ARG IDF_CHECKOUT_REF=
|
||||||
|
|
||||||
|
ENV IDF_PATH=/opt/esp/idf
|
||||||
|
ENV IDF_TOOLS_PATH=/opt/esp
|
||||||
|
|
||||||
|
RUN echo IDF_CHECKOUT_REF=$IDF_CHECKOUT_REF IDF_CLONE_BRANCH_OR_TAG=$IDF_CLONE_BRANCH_OR_TAG && \
|
||||||
|
git clone --recursive \
|
||||||
|
${IDF_CLONE_BRANCH_OR_TAG:+-b $IDF_CLONE_BRANCH_OR_TAG} \
|
||||||
|
$IDF_CLONE_URL $IDF_PATH && \
|
||||||
|
if [ -n "$IDF_CHECKOUT_REF" ]; then \
|
||||||
|
cd $IDF_PATH && \
|
||||||
|
git checkout $IDF_CHECKOUT_REF && \
|
||||||
|
git submodule update --init --recursive; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
RUN $IDF_PATH/install.sh && \
|
||||||
|
rm -rf $IDF_TOOLS_PATH/dist
|
||||||
|
|
||||||
|
RUN mkdir -p $HOME/.ccache && \
|
||||||
|
touch $HOME/.ccache/ccache.conf
|
||||||
|
|
||||||
|
COPY entrypoint.sh /opt/esp/entrypoint.sh
|
||||||
|
|
||||||
|
ENTRYPOINT [ "/opt/esp/entrypoint.sh" ]
|
||||||
|
CMD [ "/bin/bash" ]
|
6
tools/docker/entrypoint.sh
Executable file
6
tools/docker/entrypoint.sh
Executable file
|
@ -0,0 +1,6 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
. $IDF_PATH/export.sh
|
||||||
|
|
||||||
|
exec "$@"
|
1349
tools/idf_tools.py
Executable file
1349
tools/idf_tools.py
Executable file
File diff suppressed because it is too large
Load diff
390
tools/tools.json
Normal file
390
tools/tools.json
Normal file
|
@ -0,0 +1,390 @@
|
||||||
|
{
|
||||||
|
"tools": [
|
||||||
|
{
|
||||||
|
"description": "Toolchain for Xtensa (ESP32) based on GCC",
|
||||||
|
"export_paths": [
|
||||||
|
[
|
||||||
|
"xtensa-esp32-elf",
|
||||||
|
"bin"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"export_vars": {},
|
||||||
|
"info_url": "https://github.com/espressif/crosstool-NG",
|
||||||
|
"install": "always",
|
||||||
|
"license": "GPL-3.0-with-GCC-exception",
|
||||||
|
"name": "xtensa-esp32-elf",
|
||||||
|
"version_cmd": [
|
||||||
|
"xtensa-esp32-elf-gcc",
|
||||||
|
"--version"
|
||||||
|
],
|
||||||
|
"version_regex": "\\(crosstool-NG\\s+(?:crosstool-ng-)?([0-9a-z\\.\\-]+)\\)\\s*([0-9\\.]+)",
|
||||||
|
"version_regex_replace": "\\1-\\2",
|
||||||
|
"versions": [
|
||||||
|
{
|
||||||
|
"name": "1.22.0-80-g6c4433a5-5.2.0",
|
||||||
|
"status": "recommended",
|
||||||
|
"win32": {
|
||||||
|
"sha256": "f217fccbeaaa8c92db239036e0d6202458de4488b954a3a38f35ac2ec48058a4",
|
||||||
|
"size": 125719261,
|
||||||
|
"url": "https://dl.espressif.com/dl/xtensa-esp32-elf-win32-1.22.0-80-g6c4433a-5.2.0.zip"
|
||||||
|
},
|
||||||
|
"win64": {
|
||||||
|
"sha256": "f217fccbeaaa8c92db239036e0d6202458de4488b954a3a38f35ac2ec48058a4",
|
||||||
|
"size": 125719261,
|
||||||
|
"url": "https://dl.espressif.com/dl/xtensa-esp32-elf-win32-1.22.0-80-g6c4433a-5.2.0.zip"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"linux-amd64": {
|
||||||
|
"sha256": "3fe96c151d46c1d4e5edc6ed690851b8e53634041114bad04729bc16b0445156",
|
||||||
|
"size": 44219107,
|
||||||
|
"url": "https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz"
|
||||||
|
},
|
||||||
|
"linux-i686": {
|
||||||
|
"sha256": "b4055695ffc2dfc0bcb6dafdc2572a6e01151c4179ef5fa972b3fcb2183eb155",
|
||||||
|
"size": 45566336,
|
||||||
|
"url": "https://dl.espressif.com/dl/xtensa-esp32-elf-linux32-1.22.0-80-g6c4433a-5.2.0.tar.gz"
|
||||||
|
},
|
||||||
|
"macos": {
|
||||||
|
"sha256": "a4307a97945d2f2f2745f415fbe80d727750e19f91f9a1e7e2f8a6065652f9da",
|
||||||
|
"size": 46517409,
|
||||||
|
"url": "https://dl.espressif.com/dl/xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz"
|
||||||
|
},
|
||||||
|
"name": "1.22.0-80-g6c4433a-5.2.0",
|
||||||
|
"status": "recommended"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "Toolchain for ESP32 ULP coprocessor",
|
||||||
|
"export_paths": [
|
||||||
|
[
|
||||||
|
"esp32ulp-elf-binutils",
|
||||||
|
"bin"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"export_vars": {},
|
||||||
|
"info_url": "https://github.com/espressif/binutils-esp32ulp",
|
||||||
|
"install": "always",
|
||||||
|
"license": "GPL-2.0-or-later",
|
||||||
|
"name": "esp32ulp-elf",
|
||||||
|
"version_cmd": [
|
||||||
|
"esp32ulp-elf-as",
|
||||||
|
"--version"
|
||||||
|
],
|
||||||
|
"version_regex": "\\(GNU Binutils\\)\\s+([0-9a-z\\.\\-]+)",
|
||||||
|
"versions": [
|
||||||
|
{
|
||||||
|
"linux-amd64": {
|
||||||
|
"sha256": "c1bbcd65e1e30c7312a50344c8dbc70c2941580a79aa8f8abbce8e0e90c79566",
|
||||||
|
"size": 8246604,
|
||||||
|
"url": "https://dl.espressif.com/dl/binutils-esp32ulp-linux64-2.28.51-esp32ulp-20180809.tar.gz"
|
||||||
|
},
|
||||||
|
"macos": {
|
||||||
|
"sha256": "c92937d85cc9a90eb6c6099ce767ca021108c18c94e34bd7b1fa0cde168f94a0",
|
||||||
|
"size": 5726662,
|
||||||
|
"url": "https://dl.espressif.com/dl/binutils-esp32ulp-macos-2.28.51-esp32ulp-20180809.tar.gz"
|
||||||
|
},
|
||||||
|
"name": "2.28.51.20170517",
|
||||||
|
"status": "recommended",
|
||||||
|
"win32": {
|
||||||
|
"sha256": "92dc83e69e534c9f73d7b939088f2e84f757d2478483415d17fe9dd1c236f2fd",
|
||||||
|
"size": 12231559,
|
||||||
|
"url": "https://dl.espressif.com/dl/binutils-esp32ulp-win32-2.28.51-esp32ulp-20180809.zip"
|
||||||
|
},
|
||||||
|
"win64": {
|
||||||
|
"sha256": "92dc83e69e534c9f73d7b939088f2e84f757d2478483415d17fe9dd1c236f2fd",
|
||||||
|
"size": 12231559,
|
||||||
|
"url": "https://dl.espressif.com/dl/binutils-esp32ulp-win32-2.28.51-esp32ulp-20180809.zip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "CMake build system",
|
||||||
|
"export_paths": [
|
||||||
|
[
|
||||||
|
"bin"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"export_vars": {},
|
||||||
|
"info_url": "https://github.com/Kitware/CMake",
|
||||||
|
"install": "on_request",
|
||||||
|
"license": "BSD-3-Clause",
|
||||||
|
"name": "cmake",
|
||||||
|
"platform_overrides": [
|
||||||
|
{
|
||||||
|
"install": "always",
|
||||||
|
"platforms": [
|
||||||
|
"win32",
|
||||||
|
"win64"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"export_paths": [
|
||||||
|
[
|
||||||
|
"CMake.app",
|
||||||
|
"Contents",
|
||||||
|
"bin"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"platforms": [
|
||||||
|
"macos"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"strip_container_dirs": 1,
|
||||||
|
"version_cmd": [
|
||||||
|
"cmake",
|
||||||
|
"--version"
|
||||||
|
],
|
||||||
|
"version_regex": "cmake version ([0-9.]+)",
|
||||||
|
"versions": [
|
||||||
|
{
|
||||||
|
"linux-amd64": {
|
||||||
|
"sha256": "563a39e0a7c7368f81bfa1c3aff8b590a0617cdfe51177ddc808f66cc0866c76",
|
||||||
|
"size": 38405896,
|
||||||
|
"url": "https://github.com/Kitware/CMake/releases/download/v3.13.4/cmake-3.13.4-Linux-x86_64.tar.gz"
|
||||||
|
},
|
||||||
|
"macos": {
|
||||||
|
"sha256": "fef537614d73fda848f6168273b6c7ba45f850484533361e7bc50ac1d315f780",
|
||||||
|
"size": 32062124,
|
||||||
|
"url": "https://github.com/Kitware/CMake/releases/download/v3.13.4/cmake-3.13.4-Darwin-x86_64.tar.gz"
|
||||||
|
},
|
||||||
|
"name": "3.13.4",
|
||||||
|
"status": "recommended",
|
||||||
|
"win32": {
|
||||||
|
"sha256": "28daf772f55d817a13ef14e25af2a5569f8326dac66a6aa3cc5208cf1f8e943f",
|
||||||
|
"size": 26385104,
|
||||||
|
"url": "https://github.com/Kitware/CMake/releases/download/v3.13.4/cmake-3.13.4-win32-x86.zip"
|
||||||
|
},
|
||||||
|
"win64": {
|
||||||
|
"sha256": "bcd477d49e4a9400b41213d53450b474beaedb264631693c958ef9affa8e5623",
|
||||||
|
"size": 29696565,
|
||||||
|
"url": "https://github.com/Kitware/CMake/releases/download/v3.13.4/cmake-3.13.4-win64-x64.zip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "OpenOCD for ESP32",
|
||||||
|
"export_paths": [
|
||||||
|
[
|
||||||
|
"openocd-esp32",
|
||||||
|
"bin"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"export_vars": {
|
||||||
|
"OPENOCD_SCRIPTS": "${TOOL_PATH}/openocd-esp32/share/openocd/scripts"
|
||||||
|
},
|
||||||
|
"info_url": "https://github.com/espressif/openocd-esp32",
|
||||||
|
"install": "always",
|
||||||
|
"license": "GPL-2.0-only",
|
||||||
|
"name": "openocd-esp32",
|
||||||
|
"version_cmd": [
|
||||||
|
"openocd",
|
||||||
|
"--version"
|
||||||
|
],
|
||||||
|
"version_regex": "Open On-Chip Debugger\\s+([a-z0-9.-]+)\\s+",
|
||||||
|
"versions": [
|
||||||
|
{
|
||||||
|
"linux-amd64": {
|
||||||
|
"sha256": "e5b5579edffde090e426b4995b346e281843bf84394f8e68c8e41bd1e4c576bd",
|
||||||
|
"size": 1681596,
|
||||||
|
"url": "https://github.com/espressif/openocd-esp32/releases/download/v0.10.0-esp32-20190313/openocd-esp32-linux64-0.10.0-esp32-20190313.tar.gz"
|
||||||
|
},
|
||||||
|
"macos": {
|
||||||
|
"sha256": "09504eea5aa92646a117f16573c95b34e04b4010791a2f8fefcd2bd8c430f081",
|
||||||
|
"size": 1760536,
|
||||||
|
"url": "https://github.com/espressif/openocd-esp32/releases/download/v0.10.0-esp32-20190313/openocd-esp32-macos-0.10.0-esp32-20190313.tar.gz"
|
||||||
|
},
|
||||||
|
"name": "v0.10.0-esp32-20190313",
|
||||||
|
"status": "recommended",
|
||||||
|
"win32": {
|
||||||
|
"sha256": "b86a7f9f39dfc4d8e289fc819375bbb7a5e9fcb8895805ba2b5faf67b8b25ce2",
|
||||||
|
"size": 2098513,
|
||||||
|
"url": "https://github.com/espressif/openocd-esp32/releases/download/v0.10.0-esp32-20190313/openocd-esp32-win32-0.10.0-esp32-20190313.zip"
|
||||||
|
},
|
||||||
|
"win64": {
|
||||||
|
"sha256": "b86a7f9f39dfc4d8e289fc819375bbb7a5e9fcb8895805ba2b5faf67b8b25ce2",
|
||||||
|
"size": 2098513,
|
||||||
|
"url": "https://github.com/espressif/openocd-esp32/releases/download/v0.10.0-esp32-20190313/openocd-esp32-win32-0.10.0-esp32-20190313.zip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "menuconfig tool",
|
||||||
|
"export_paths": [
|
||||||
|
[
|
||||||
|
""
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"export_vars": {},
|
||||||
|
"info_url": "https://github.com/espressif/kconfig-frontends",
|
||||||
|
"install": "never",
|
||||||
|
"license": "GPL-2.0-only",
|
||||||
|
"name": "mconf",
|
||||||
|
"platform_overrides": [
|
||||||
|
{
|
||||||
|
"install": "always",
|
||||||
|
"platforms": [
|
||||||
|
"win32",
|
||||||
|
"win64"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"strip_container_dirs": 1,
|
||||||
|
"version_cmd": [
|
||||||
|
"mconf-idf",
|
||||||
|
"-v"
|
||||||
|
],
|
||||||
|
"version_regex": "mconf-idf version mconf-([a-z0-9.-]+)-win32",
|
||||||
|
"versions": [
|
||||||
|
{
|
||||||
|
"name": "v4.6.0.0-idf-20190628",
|
||||||
|
"status": "recommended",
|
||||||
|
"win32": {
|
||||||
|
"sha256": "1b8f17f48740ab669c13bd89136e8cc92efe0cd29872f0d6c44148902a2dc40c",
|
||||||
|
"size": 826114,
|
||||||
|
"url": "https://github.com/espressif/kconfig-frontends/releases/download/v4.6.0.0-idf-20190628/mconf-v4.6.0.0-idf-20190628-win32.zip"
|
||||||
|
},
|
||||||
|
"win64": {
|
||||||
|
"sha256": "1b8f17f48740ab669c13bd89136e8cc92efe0cd29872f0d6c44148902a2dc40c",
|
||||||
|
"size": 826114,
|
||||||
|
"url": "https://github.com/espressif/kconfig-frontends/releases/download/v4.6.0.0-idf-20190628/mconf-v4.6.0.0-idf-20190628-win32.zip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "Ninja build system",
|
||||||
|
"export_paths": [
|
||||||
|
[
|
||||||
|
""
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"export_vars": {},
|
||||||
|
"info_url": "https://github.com/ninja-build/ninja",
|
||||||
|
"install": "on_request",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"name": "ninja",
|
||||||
|
"platform_overrides": [
|
||||||
|
{
|
||||||
|
"install": "always",
|
||||||
|
"platforms": [
|
||||||
|
"win32",
|
||||||
|
"win64"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"version_cmd": [
|
||||||
|
"ninja",
|
||||||
|
"--version"
|
||||||
|
],
|
||||||
|
"version_regex": "([0-9.]+)",
|
||||||
|
"versions": [
|
||||||
|
{
|
||||||
|
"linux-amd64": {
|
||||||
|
"sha256": "978fd9e26c2db8d33392c6daef50e9edac0a3db6680710a9f9ad47e01f3e49b7",
|
||||||
|
"size": 85276,
|
||||||
|
"url": "https://dl.espressif.com/dl/ninja-1.9.0-linux64.tar.gz"
|
||||||
|
},
|
||||||
|
"macos": {
|
||||||
|
"sha256": "9504cd1783ef3c242d06330a50d54dc8f838b605f5fc3e892c47254929f7350c",
|
||||||
|
"size": 91457,
|
||||||
|
"url": "https://dl.espressif.com/dl/ninja-1.9.0-osx.tar.gz"
|
||||||
|
},
|
||||||
|
"name": "1.9.0",
|
||||||
|
"status": "recommended",
|
||||||
|
"win64": {
|
||||||
|
"sha256": "2d70010633ddaacc3af4ffbd21e22fae90d158674a09e132e06424ba3ab036e9",
|
||||||
|
"size": 254497,
|
||||||
|
"url": "https://dl.espressif.com/dl/ninja-1.9.0-win64.zip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "IDF wrapper tool for Windows",
|
||||||
|
"export_paths": [
|
||||||
|
[
|
||||||
|
""
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"export_vars": {},
|
||||||
|
"info_url": "https://github.com/espressif/esp-idf/tree/master/tools/windows/idf_exe",
|
||||||
|
"install": "never",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"name": "idf-exe",
|
||||||
|
"platform_overrides": [
|
||||||
|
{
|
||||||
|
"install": "always",
|
||||||
|
"platforms": [
|
||||||
|
"win32",
|
||||||
|
"win64"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"version_cmd": [
|
||||||
|
"idf.py.exe",
|
||||||
|
"-v"
|
||||||
|
],
|
||||||
|
"version_regex": "([0-9.]+)",
|
||||||
|
"versions": [
|
||||||
|
{
|
||||||
|
"name": "1.0.1",
|
||||||
|
"status": "recommended",
|
||||||
|
"win32": {
|
||||||
|
"sha256": "53eb6aaaf034cc7ed1a97d5c577afa0f99815b7793905e9408e74012d357d04a",
|
||||||
|
"size": 11297,
|
||||||
|
"url": "https://dl.espressif.com/dl/idf-exe-v1.0.1.zip"
|
||||||
|
},
|
||||||
|
"win64": {
|
||||||
|
"sha256": "53eb6aaaf034cc7ed1a97d5c577afa0f99815b7793905e9408e74012d357d04a",
|
||||||
|
"size": 11297,
|
||||||
|
"url": "https://dl.espressif.com/dl/idf-exe-v1.0.1.zip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "Ccache (compiler cache)",
|
||||||
|
"export_paths": [
|
||||||
|
[
|
||||||
|
""
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"export_vars": {},
|
||||||
|
"info_url": "https://github.com/ccache/ccache",
|
||||||
|
"install": "never",
|
||||||
|
"license": "GPL-3.0-or-later",
|
||||||
|
"name": "ccache",
|
||||||
|
"platform_overrides": [
|
||||||
|
{
|
||||||
|
"install": "always",
|
||||||
|
"platforms": [
|
||||||
|
"win64"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"version_cmd": [
|
||||||
|
"ccache.exe",
|
||||||
|
"--version"
|
||||||
|
],
|
||||||
|
"version_regex": "ccache version ([0-9.]+)",
|
||||||
|
"versions": [
|
||||||
|
{
|
||||||
|
"name": "3.7",
|
||||||
|
"status": "recommended",
|
||||||
|
"win64": {
|
||||||
|
"sha256": "37e833f3f354f1145503533e776c1bd44ec2e77ff8a2476a1d2039b0b10c78d6",
|
||||||
|
"size": 142401,
|
||||||
|
"url": "https://dl.espressif.com/dl/ccache-3.7-w64.zip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"version": 1
|
||||||
|
}
|
Loading…
Reference in a new issue