* Rework the lib-builder for ESP-IDF v5.1 * Update package json with tolls matching the ESP-IDF version * fix: rainmaker examples crashing on s3 due to low stack memory. (#106) (#107) * Update scripts with the latest requirements * Update configs + SR Support * Add esp-elf-gdp to the list of packages * Fix RainMaker builds and new sr models path * Temporary force arduino branch for CI to work * fix target branch * Delete esp-dl component manifest for requiring IDF 4.4.x * Temporary changes to allow Cron CI to run * Support builds based on ESP-IDF tag * Push to esp32-arduino-libs * Update repository_dispatch.sh * Rework scripts to allow build when either dst needs it * Github complains when pushing to the libs repo * Authenticate to the libs repo * Attempt at splitting SDK from Arduino * Archive only the result and reorder deploy commands * Update cron.sh * Fix script and zip paths * Fix download URL and json merger * Change sdk folder structure and fix json generation * Switch output folder from sdk to esp32-arduino-libs * arduino_tinyusb: compile support for DFU mode (#116) * Update PlatformIO build script templates (#118) Adds support for new package with precompiled SDK libraries * Autogenerate PlatformIO manifest file for prebuilt SDK libs (#119) * Autogenerate PlatformIO manifest file for prebuilt SDK libs - Add a special Python script that generates "package.json" with IDF revision from the "version.txt" according to SemVer * Tidy up * Refactor manifest generator Now IDF version and commit hash are passed directly from Git client instead of reading from a pregenerated "version.txt" file * Move IDF definitions to be available with any build * Use more components from registry and add mp3 decoder * esp-sr component requires clearing before each build * revert ESP_SR from component manager * Build ESP_SR only for ESP32-S3 for now * [TinyUSB] Update esp32sx dcd and add dwc2 option * Workaround for recent change in ESP-Insights * Add initial support for ESP32-C6 * Run build tests on ESP32-C6 * Remove -mlongcalls for non-xtensa chips * Temp fix for ESP-Insights on C6 * Add support for ESP32H2 * Added tflite-micro component (#128) * Update build badge in README.md * Added tflite-micro component --------- Co-authored-by: Me No Dev <me-no-dev@users.noreply.github.com> * Make cron rebuild the libs if they need to be pushed to Arduino For when we change something in the lib-builder, but no new updates are available in ESP-IDF * Update build actions * Fix permissions * Do not build for obsolete Flash modes * Try separate detect for cron builds * Add permissions to github api * Try more basic commit detection * another try to pass vars and get commit * Update push.yml * Update config.sh * Enable builds again * Update build.sh * Combine the artifacts from all jobs * fix and test deploy check * Update push.yml * Disable Memprot to allow loading external elfs * Fix archive name * Disable coredump to flash * Enable SPI ETH KSZ8851SNL * Add temporary support for Arduino SPI Ethernet * Add a temporary fix for relative include in BT lib * Enable Classic BT HID Host and Device for ESP32 * Revert "Enable Classic BT HID Host and Device for ESP32" This reverts commit aa0040ad271d00ac507fd2b478ee143b6c118615. * C6 was added to ESP-SR * Update Ethernet and remove SR workaround * Pin RainMaker version * Update target branch * Add back cron.sh --------- Co-authored-by: Sanket Wadekar <67091512+sanketwadekar@users.noreply.github.com> Co-authored-by: Luca Burelli <pil@iol.it> Co-authored-by: Valerii Koval <valeros@users.noreply.github.com>
169 lines
6.5 KiB
Bash
Executable file
169 lines
6.5 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
|
|
if [ -z $IDF_PATH ]; then
|
|
export IDF_PATH="$PWD/esp-idf"
|
|
fi
|
|
|
|
if [ -z $IDF_BRANCH ]; then
|
|
IDF_BRANCH="release/v5.1"
|
|
fi
|
|
|
|
if [ -z $AR_PR_TARGET_BRANCH ]; then
|
|
AR_PR_TARGET_BRANCH="master"
|
|
fi
|
|
|
|
if [ -z $IDF_TARGET ]; then
|
|
if [ -f sdkconfig ]; then
|
|
IDF_TARGET=`cat sdkconfig | grep CONFIG_IDF_TARGET= | cut -d'"' -f2`
|
|
if [ "$IDF_TARGET" = "" ]; then
|
|
IDF_TARGET="esp32"
|
|
fi
|
|
else
|
|
IDF_TARGET="esp32"
|
|
fi
|
|
fi
|
|
|
|
# Owner of the target ESP32 Arduino repository
|
|
AR_USER="espressif"
|
|
|
|
# The full name of the repository
|
|
AR_REPO="$AR_USER/arduino-esp32"
|
|
IDF_REPO="$AR_USER/esp-idf"
|
|
AR_LIBS_REPO="$AR_USER/esp32-arduino-libs"
|
|
|
|
AR_REPO_URL="https://github.com/$AR_REPO.git"
|
|
IDF_REPO_URL="https://github.com/$IDF_REPO.git"
|
|
AR_LIBS_REPO_URL="https://github.com/$AR_LIBS_REPO.git"
|
|
if [ -n $GITHUB_TOKEN ]; then
|
|
AR_REPO_URL="https://$GITHUB_TOKEN@github.com/$AR_REPO.git"
|
|
AR_LIBS_REPO_URL="https://$GITHUB_TOKEN@github.com/$AR_LIBS_REPO.git"
|
|
fi
|
|
|
|
AR_ROOT="$PWD"
|
|
AR_COMPS="$AR_ROOT/components"
|
|
AR_OUT="$AR_ROOT/out"
|
|
AR_TOOLS="$AR_OUT/tools"
|
|
AR_PLATFORM_TXT="$AR_OUT/platform.txt"
|
|
AR_GEN_PART_PY="$AR_TOOLS/gen_esp32part.py"
|
|
AR_SDK="$AR_TOOLS/esp32-arduino-libs/$IDF_TARGET"
|
|
PIO_SDK="FRAMEWORK_SDK_DIR, \"$IDF_TARGET\""
|
|
TOOLS_JSON_OUT="$AR_TOOLS/esp32-arduino-libs"
|
|
IDF_LIBS_DIR="$AR_ROOT/../esp32-arduino-libs"
|
|
|
|
if [ -d "$IDF_PATH" ]; then
|
|
export IDF_COMMIT=$(git -C "$IDF_PATH" rev-parse --short HEAD)
|
|
export IDF_BRANCH=$(git -C "$IDF_PATH" symbolic-ref --short HEAD || git -C "$IDF_PATH" tag --points-at HEAD)
|
|
fi
|
|
|
|
function get_os(){
|
|
OSBITS=`arch`
|
|
if [[ "$OSTYPE" == "linux"* ]]; then
|
|
if [[ "$OSBITS" == "i686" ]]; then
|
|
echo "linux32"
|
|
elif [[ "$OSBITS" == "x86_64" ]]; then
|
|
echo "linux64"
|
|
elif [[ "$OSBITS" == "armv7l" ]]; then
|
|
echo "linux-armel"
|
|
else
|
|
echo "unknown"
|
|
return 1
|
|
fi
|
|
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
|
echo "macos"
|
|
elif [[ "$OSTYPE" == "cygwin" ]] || [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "win32" ]]; then
|
|
echo "win32"
|
|
else
|
|
echo "$OSTYPE"
|
|
return 1
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
AR_OS=`get_os`
|
|
|
|
export SED="sed"
|
|
export SSTAT="stat -c %s"
|
|
|
|
if [[ "$AR_OS" == "macos" ]]; then
|
|
if ! [ -x "$(command -v gsed)" ]; then
|
|
echo "ERROR: gsed is not installed! Please install gsed first. ex. brew install gsed"
|
|
exit 1
|
|
fi
|
|
if ! [ -x "$(command -v gawk)" ]; then
|
|
echo "ERROR: gawk is not installed! Please install gawk first. ex. brew install gawk"
|
|
exit 1
|
|
fi
|
|
export SED="gsed"
|
|
export SSTAT="stat -f %z"
|
|
fi
|
|
|
|
function github_commit_exists(){ #github_commit_exists <repo-path> <branch-name> <commit-message>
|
|
local repo_path="$1"
|
|
local branch_name="$2"
|
|
local commit_message="$3"
|
|
local commits_found=`curl -s -k -H "Authorization: token $GITHUB_TOKEN" -H "Accept: application/vnd.github.v3.raw+json" "https://api.github.com/repos/$repo_path/commits?sha=$branch_name" | jq -r '.[].commit.message' | grep "$commit_message" | wc -l`
|
|
if [ ! "$commits_found" == "" ] && [ ! "$commits_found" == "null" ] && [ ! "$commits_found" == "0" ]; then echo $commits_found; else echo 0; fi
|
|
}
|
|
|
|
function github_last_commit(){ # github_last_commit <repo-path> <branch-name>
|
|
local repo_path="$1"
|
|
local branch_name="$2"
|
|
local commit=`curl -s -k -H "Authorization: token $GITHUB_TOKEN" -H "Accept: application/vnd.github.v3.raw+json" "https://api.github.com/repos/$repo_path/commits/heads/$branch_name" | jq -r '.sha'`
|
|
if [ ! "$commit" == "" ] && [ ! "$commit" == "null" ]; then
|
|
echo ${commit:0:8}
|
|
else
|
|
echo ""
|
|
fi
|
|
}
|
|
|
|
function github_branch_exists(){ # github_branch_exists <repo-path> <branch-name>
|
|
local repo_path="$1"
|
|
local branch_name="$2"
|
|
local branch=`curl -s -k -H "Authorization: token $GITHUB_TOKEN" -H "Accept: application/vnd.github.v3.raw+json" "https://api.github.com/repos/$repo_path/branches/$branch_name" | jq -r '.name'`
|
|
if [ "$branch" == "$branch_name" ]; then echo 1; else echo 0; fi
|
|
}
|
|
|
|
function github_pr_exists(){ # github_pr_exists <repo-path> <branch-name>
|
|
local repo_path="$1"
|
|
local branch_name="$2"
|
|
local pr_num=`curl -s -k -H "Authorization: token $GITHUB_TOKEN" -H "Accept: application/vnd.github.v3.raw+json" "https://api.github.com/repos/$repo_path/pulls?head=$AR_USER:$branch_name&state=open" | jq -r '.[].number'`
|
|
if [ ! "$pr_num" == "" ] && [ ! "$pr_num" == "null" ]; then echo 1; else echo 0; fi
|
|
}
|
|
|
|
|
|
|
|
function git_branch_exists(){ # git_branch_exists <repo-path> <branch-name>
|
|
local repo_path="$1"
|
|
local branch_name="$2"
|
|
local branch_found=`git -C "$repo_path" ls-remote --heads origin "$branch_name"`
|
|
if [ -n "$branch_found" ]; then echo 1; else echo 0; fi
|
|
}
|
|
|
|
function git_commit_exists(){ #git_commit_exists <repo-path> <commit-message>
|
|
local repo_path="$1"
|
|
local commit_message="$2"
|
|
local commits_found=`git -C "$repo_path" log --all --grep="$commit_message" | grep commit`
|
|
if [ -n "$commits_found" ]; then echo 1; else echo 0; fi
|
|
}
|
|
|
|
function git_create_pr(){ # git_create_pr <branch> <title>
|
|
local pr_branch="$1"
|
|
local pr_title="$2"
|
|
local pr_target="$3"
|
|
local pr_body=""
|
|
pr_body+="esp-idf: "$(git -C "$IDF_PATH" symbolic-ref --short HEAD || git -C "$IDF_PATH" tag --points-at HEAD)" "$(git -C "$IDF_PATH" rev-parse --short HEAD)"\r\n"
|
|
for component in `ls "$AR_COMPS"`; do
|
|
if [ ! $component == "arduino" ]; then
|
|
if [ -d "$AR_COMPS/$component/.git" ] || [ -d "$AR_COMPS/$component/.github" ]; then
|
|
pr_body+="$component: "$(git -C "$AR_COMPS/$component" symbolic-ref --short HEAD || git -C "$AR_COMPS/$component" tag --points-at HEAD)" "$(git -C "$AR_COMPS/$component" rev-parse --short HEAD)"\r\n"
|
|
fi
|
|
fi
|
|
done
|
|
pr_body+="tinyusb: "$(git -C "$AR_COMPS/arduino_tinyusb/tinyusb" symbolic-ref --short HEAD || git -C "$AR_COMPS/arduino_tinyusb/tinyusb" tag --points-at HEAD)" "$(git -C "$AR_COMPS/arduino_tinyusb/tinyusb" rev-parse --short HEAD)"\r\n"
|
|
local pr_data="{\"title\": \"$pr_title\", \"body\": \"$pr_body\", \"head\": \"$AR_USER:$pr_branch\", \"base\": \"$pr_target\"}"
|
|
git_create_pr_res=`echo "$pr_data" | curl -k -H "Authorization: token $GITHUB_TOKEN" -H "Accept: application/vnd.github.v3.raw+json" --data @- "https://api.github.com/repos/$AR_REPO/pulls"`
|
|
local done_pr=`echo "$git_create_pr_res" | jq -r '.title'`
|
|
if [ ! "$done_pr" == "" ] && [ ! "$done_pr" == "null" ]; then echo 1; else echo 0; fi
|
|
}
|
|
|