check_idf_version.sh 2.2 KB

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