/ tools / ci / check_idf_version.sh
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