version.sh 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #!/bin/sh
  2. # check for SVN revision number
  3. revision=$(cd "$1" && cat snapshot_version 2> /dev/null)
  4. test $revision || revision=$(cd "$1" && LC_ALL=C svn info 2> /dev/null | grep "Last Changed Rev" | cut -d' ' -f4)
  5. test $revision || revision=$(cd "$1" && grep committed-rev .svn/entries 2>/dev/null | head -n 1 | cut -d '"' -f2)
  6. test $revision || revision=$(cd "$1" && sed -n -e '/^dir$/{n
  7. p
  8. q
  9. }' .svn/entries 2>/dev/null)
  10. test $revision && revision=SVN-r$revision
  11. # check for git svn revision number
  12. if ! test $revision; then
  13. revision=$(cd "$1" && git svn find-rev HEAD 2> /dev/null)
  14. test $revision && revision=git-svn-r$revision
  15. fi
  16. # check for git short hash
  17. if ! test $revision; then
  18. revision=$(cd "$1" && git log -1 --pretty=format:%h 2> /dev/null)
  19. test $revision && revision=git-$revision
  20. fi
  21. # no revision number found
  22. test $revision || revision=UNKNOWN
  23. # releases extract the version number from the VERSION file
  24. version=$(cd "$1" && cat VERSION 2> /dev/null)
  25. test $version || version=$revision
  26. test -n "$3" && version=$version-$3
  27. NEW_REVISION="#define FFMPEG_VERSION \"$version\""
  28. OLD_REVISION=$(cat version.h 2> /dev/null)
  29. # Update version.h only on revision changes to avoid spurious rebuilds
  30. if test "$NEW_REVISION" != "$OLD_REVISION"; then
  31. echo "$NEW_REVISION" > "$2"
  32. fi