test-versioning.sh 6.1 KB

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