test-versioning.sh 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. #!/bin/sh
  2. # Copyright 2022 Collabora Ltd.
  3. # SPDX-License-Identifier: Zlib
  4. set -eu
  5. cd `dirname $0`/..
  6. ref_major=$(sed -ne 's/^#define SDL_MAJOR_VERSION *//p' include/SDL_version.h)
  7. ref_minor=$(sed -ne 's/^#define SDL_MINOR_VERSION *//p' include/SDL_version.h)
  8. ref_micro=$(sed -ne 's/^#define SDL_PATCHLEVEL *//p' include/SDL_version.h)
  9. ref_version="${ref_major}.${ref_minor}.${ref_micro}"
  10. tests=0
  11. failed=0
  12. ok () {
  13. tests=$(( tests + 1 ))
  14. echo "ok - $*"
  15. }
  16. not_ok () {
  17. tests=$(( tests + 1 ))
  18. echo "not ok - $*"
  19. failed=1
  20. }
  21. major=$(sed -ne 's/^SDL_MAJOR_VERSION=//p' configure.ac)
  22. minor=$(sed -ne 's/^SDL_MINOR_VERSION=//p' configure.ac)
  23. micro=$(sed -ne 's/^SDL_MICRO_VERSION=//p' configure.ac)
  24. version="${major}.${minor}.${micro}"
  25. if [ "$ref_version" = "$version" ]; then
  26. ok "configure.ac $version"
  27. else
  28. not_ok "configure.ac $version disagrees with SDL_version.h $ref_version"
  29. fi
  30. major=$(sed -ne 's/^SDL_MAJOR_VERSION=//p' configure)
  31. minor=$(sed -ne 's/^SDL_MINOR_VERSION=//p' configure)
  32. micro=$(sed -ne 's/^SDL_MICRO_VERSION=//p' configure)
  33. version="${major}.${minor}.${micro}"
  34. if [ "$ref_version" = "$version" ]; then
  35. ok "configure $version"
  36. else
  37. not_ok "configure $version disagrees with SDL_version.h $ref_version"
  38. fi
  39. major=$(sed -ne 's/^set(SDL_MAJOR_VERSION \([0-9]*\))$/\1/p' CMakeLists.txt)
  40. minor=$(sed -ne 's/^set(SDL_MINOR_VERSION \([0-9]*\))$/\1/p' CMakeLists.txt)
  41. micro=$(sed -ne 's/^set(SDL_MICRO_VERSION \([0-9]*\))$/\1/p' CMakeLists.txt)
  42. version="${major}.${minor}.${micro}"
  43. if [ "$ref_version" = "$version" ]; then
  44. ok "CMakeLists.txt $version"
  45. else
  46. not_ok "CMakeLists.txt $version disagrees with SDL_version.h $ref_version"
  47. fi
  48. major=$(sed -ne 's/.*SDL_MAJOR_VERSION = \([0-9]*\);/\1/p' android-project/app/src/main/java/org/libsdl/app/SDLActivity.java)
  49. minor=$(sed -ne 's/.*SDL_MINOR_VERSION = \([0-9]*\);/\1/p' android-project/app/src/main/java/org/libsdl/app/SDLActivity.java)
  50. micro=$(sed -ne 's/.*SDL_MICRO_VERSION = \([0-9]*\);/\1/p' android-project/app/src/main/java/org/libsdl/app/SDLActivity.java)
  51. version="${major}.${minor}.${micro}"
  52. if [ "$ref_version" = "$version" ]; then
  53. ok "SDLActivity.java $version"
  54. else
  55. not_ok "android-project/app/src/main/java/org/libsdl/app/SDLActivity.java $version disagrees with SDL_version.h $ref_version"
  56. fi
  57. tuple=$(sed -ne 's/^ *FILEVERSION *//p' src/main/windows/version.rc | tr -d '\r')
  58. ref_tuple="${ref_major},${ref_minor},${ref_micro},0"
  59. if [ "$ref_tuple" = "$tuple" ]; then
  60. ok "version.rc FILEVERSION $tuple"
  61. else
  62. not_ok "version.rc FILEVERSION $tuple disagrees with SDL_version.h $ref_tuple"
  63. fi
  64. tuple=$(sed -ne 's/^ *PRODUCTVERSION *//p' src/main/windows/version.rc | tr -d '\r')
  65. if [ "$ref_tuple" = "$tuple" ]; then
  66. ok "version.rc PRODUCTVERSION $tuple"
  67. else
  68. not_ok "version.rc PRODUCTVERSION $tuple disagrees with SDL_version.h $ref_tuple"
  69. fi
  70. tuple=$(sed -Ene 's/^ *VALUE "FileVersion", "([0-9, ]*)\\0"\r?$/\1/p' src/main/windows/version.rc | tr -d '\r')
  71. ref_tuple="${ref_major}, ${ref_minor}, ${ref_micro}, 0"
  72. if [ "$ref_tuple" = "$tuple" ]; then
  73. ok "version.rc FileVersion $tuple"
  74. else
  75. not_ok "version.rc FileVersion $tuple disagrees with SDL_version.h $ref_tuple"
  76. fi
  77. tuple=$(sed -Ene 's/^ *VALUE "ProductVersion", "([0-9, ]*)\\0"\r?$/\1/p' src/main/windows/version.rc | tr -d '\r')
  78. if [ "$ref_tuple" = "$tuple" ]; then
  79. ok "version.rc ProductVersion $tuple"
  80. else
  81. not_ok "version.rc ProductVersion $tuple disagrees with SDL_version.h $ref_tuple"
  82. fi
  83. version=$(sed -Ene '/CFBundleShortVersionString/,+1 s/.*<string>(.*)<\/string>.*/\1/p' Xcode/SDL/Info-Framework.plist)
  84. if [ "$ref_version" = "$version" ]; then
  85. ok "Info-Framework.plist CFBundleShortVersionString $version"
  86. else
  87. not_ok "Info-Framework.plist CFBundleShortVersionString $version disagrees with SDL_version.h $ref_version"
  88. fi
  89. version=$(sed -Ene '/CFBundleVersion/,+1 s/.*<string>(.*)<\/string>.*/\1/p' Xcode/SDL/Info-Framework.plist)
  90. if [ "$ref_version" = "$version" ]; then
  91. ok "Info-Framework.plist CFBundleVersion $version"
  92. else
  93. not_ok "Info-Framework.plist CFBundleVersion $version disagrees with SDL_version.h $ref_version"
  94. fi
  95. version=$(sed -Ene 's/Title SDL (.*)/\1/p' Xcode/SDL/pkg-support/SDL.info)
  96. if [ "$ref_version" = "$version" ]; then
  97. ok "SDL.info Title $version"
  98. else
  99. not_ok "SDL.info Title $version disagrees with SDL_version.h $ref_version"
  100. fi
  101. marketing=$(sed -Ene 's/.*MARKETING_VERSION = (.*);/\1/p' Xcode/SDL/SDL.xcodeproj/project.pbxproj)
  102. ref="$ref_version
  103. $ref_version"
  104. if [ "$ref" = "$marketing" ]; then
  105. ok "project.pbxproj MARKETING_VERSION is consistent"
  106. else
  107. not_ok "project.pbxproj MARKETING_VERSION is inconsistent, expected $ref, got $marketing"
  108. fi
  109. # For simplicity this assumes we'll never break ABI before SDL 3.
  110. dylib_compat=$(sed -Ene 's/.*DYLIB_COMPATIBILITY_VERSION = (.*);$/\1/p' Xcode/SDL/SDL.xcodeproj/project.pbxproj)
  111. case "$ref_minor" in
  112. (*[02468])
  113. major="$(( ref_minor * 100 + 1 ))"
  114. minor="0"
  115. ;;
  116. (*)
  117. major="$(( ref_minor * 100 + ref_micro + 1 ))"
  118. minor="0"
  119. ;;
  120. esac
  121. ref="${major}.${minor}.0
  122. ${major}.${minor}.0
  123. ${major}.${minor}.0
  124. ${major}.${minor}.0"
  125. if [ "$ref" = "$dylib_compat" ]; then
  126. ok "project.pbxproj DYLIB_COMPATIBILITY_VERSION is consistent"
  127. else
  128. not_ok "project.pbxproj DYLIB_COMPATIBILITY_VERSION is inconsistent, expected $ref, got $dylib_compat"
  129. fi
  130. dylib_cur=$(sed -Ene 's/.*DYLIB_CURRENT_VERSION = (.*);$/\1/p' Xcode/SDL/SDL.xcodeproj/project.pbxproj)
  131. case "$ref_minor" in
  132. (*[02468])
  133. major="$(( ref_minor * 100 + 1 ))"
  134. minor="$ref_micro"
  135. ;;
  136. (*)
  137. major="$(( ref_minor * 100 + ref_micro + 1 ))"
  138. minor="0"
  139. ;;
  140. esac
  141. ref="${major}.${minor}.0
  142. ${major}.${minor}.0
  143. ${major}.${minor}.0
  144. ${major}.${minor}.0"
  145. if [ "$ref" = "$dylib_cur" ]; then
  146. ok "project.pbxproj DYLIB_CURRENT_VERSION is consistent"
  147. else
  148. not_ok "project.pbxproj DYLIB_CURRENT_VERSION is inconsistent, expected $ref, got $dylib_cur"
  149. fi
  150. echo "1..$tests"
  151. exit "$failed"