check_idf_version.sh
1 #!/usr/bin/env bash 2 3 set -u 4 set -e 5 6 echo "Checking if IDF version in esp_idf_version.h matches 'git describe' output" 7 8 function get_ver_from_header() { 9 # Get the 3rd word from '#define ESP_IDF_VERSION_X <number>' line. 10 grep -E "^#define ${1}" components/esp_common/include/esp_idf_version.h | awk '{print $3;}' 11 } 12 13 function get_ver_from_make() { 14 grep -E "^${1} :=" make/version.mk | awk '{print $3;}' 15 } 16 17 function get_ver_from_cmake() { 18 grep -E "^set\(${1}" tools/cmake/version.cmake | sed -En "s/set\(${1} ([0-9])\)/\1/p" 19 } 20 21 header_ver_major=$(get_ver_from_header ESP_IDF_VERSION_MAJOR) 22 header_ver_minor=$(get_ver_from_header ESP_IDF_VERSION_MINOR) 23 header_ver_patch=$(get_ver_from_header ESP_IDF_VERSION_PATCH) 24 version_from_header="${header_ver_major}.${header_ver_minor}.${header_ver_patch}" 25 26 make_ver_major=$(get_ver_from_make IDF_VERSION_MAJOR) 27 make_ver_minor=$(get_ver_from_make IDF_VERSION_MINOR) 28 make_ver_patch=$(get_ver_from_make IDF_VERSION_PATCH) 29 version_from_make="${make_ver_major}.${make_ver_minor}.${make_ver_patch}" 30 31 cmake_ver_major=$(get_ver_from_cmake IDF_VERSION_MAJOR) 32 cmake_ver_minor=$(get_ver_from_cmake IDF_VERSION_MINOR) 33 cmake_ver_patch=$(get_ver_from_cmake IDF_VERSION_PATCH) 34 version_from_cmake="${cmake_ver_major}.${cmake_ver_minor}.${cmake_ver_patch}" 35 36 git_desc=$(git describe) 37 git_desc_regex="^v([0-9]+)\.([0-9]+)(\.([0-9]+))?.*$" 38 if [[ ! ${git_desc} =~ ${git_desc_regex} ]]; then 39 echo "Could not determine the version from 'git describe' output: ${git_desc}" 40 exit 1 41 fi 42 version_from_git="${BASH_REMATCH[1]}.${BASH_REMATCH[2]}.${BASH_REMATCH[4]:-0}" 43 44 echo "From esp_idf_version.h: ${version_from_header}" 45 echo "From version.mk: ${version_from_make}" 46 echo "From version.cmake: ${version_from_cmake}" 47 echo "From git describe: ${version_from_git}" 48 49 if [[ "${version_from_header}" != "${version_from_git}" ]]; then 50 echo "esp_idf_version.h does not match 'git describe' output" 51 exit 1 52 fi 53 54 if [[ "${version_from_make}" != "${version_from_git}" ]]; then 55 echo "version.mk does not match 'git describe' output" 56 exit 1 57 fi 58 59 if [[ "${version_from_cmake}" != "${version_from_git}" ]]; then 60 echo "version.cmake does not match 'git describe' output" 61 exit 1 62 fi