roll-expat.sh 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #!/bin/bash
  2. roll_deps() {
  3. STEP="roll-deps" &&
  4. REVIEWERS=$(grep -E -v "^$|#" third_party/expat/OWNERS | paste -s -d, -)
  5. roll-dep -r "${REVIEWERS}" --roll-to origin/upstream/master "$@" src/third_party/expat/src/
  6. }
  7. update_readme() {
  8. STEP="update README.chromium" &&
  9. EXPAT_VERSION=$(git -C third_party/expat/src/ describe --long) &&
  10. EXPAT_COMMIT=$(git -C third_party/expat/src/ rev-parse HEAD) &&
  11. EXPAT_DATE=$(date "+%Y%m%d") &&
  12. EXPAT_CPE_VERSION=$(echo ${EXPAT_VERSION} | sed -r -e's/^R_([0-9]+)_([0-9]+)_([0-9]+)-[0-9]+-g[0-9a-f]+$/\1.\2.\3/') &&
  13. [ ${EXPAT_VERSION} != ${EXPAT_CPE_VERSION} ] &&
  14. sed -i'' -e "s/^Version: .*\$/Version: ${EXPAT_VERSION}/" third_party/expat/README.chromium &&
  15. sed -i'' -e "s@^CPEPrefix: cpe:/a:libexpat:expat:.*\$@CPEPrefix: cpe:/a:libexpat:expat:${EXPAT_CPE_VERSION}@" third_party/expat/README.chromium &&
  16. sed -i'' -e "s/^Date: .*\$/Date: ${EXPAT_DATE}/" third_party/expat/README.chromium &&
  17. sed -i'' -e "s/^Revision: .*\$/Revision: ${EXPAT_COMMIT}/" third_party/expat/README.chromium &&
  18. git add third_party/expat/README.chromium
  19. }
  20. previous_rev() {
  21. STEP="previous revision" &&
  22. PREVIOUS_EXPAT_REV=$(git grep "'libexpat_revision':" HEAD~1 -- DEPS | grep -Eho "[0-9a-fA-F]{32}")
  23. }
  24. check_added_deleted_files() {
  25. previous_rev &&
  26. STEP="check for added or deleted files since last libexpat revision" &&
  27. ADDED_FILES=$(git -C third_party/expat/src/ diff --diff-filter=A --name-only ${PREVIOUS_EXPAT_REV} -- src/ | paste -s -d, -) &&
  28. DELETED_FILES=$(git -C third_party/expat/src/ diff --diff-filter=D --name-only ${PREVIOUS_EXPAT_REV} -- src/ | paste -s -d, -) &&
  29. RENAMED_FILES=$(git -C third_party/expat/src/ diff --diff-filter=R --name-only ${PREVIOUS_EXPAT_REV} -- src/ | paste -s -d, -) &&
  30. if [ -n "$ADDED_FILES" ]; then echo "Added files detected: " $ADDED_FILES; fi &&
  31. if [ -n "$DELETED_FILES" ]; then echo "Deleted files detected" $DELETED_FILES; fi &&
  32. if [ -n "$RENAMED_FILES" ]; then echo "Renamed files detected" $RENAMED_FILES; fi &&
  33. if [ -n "$ADDED_FILES" ] || [ -n "$DELETED_FILES" ] || [ -n "$RENAMED_FILES" ]; then echo -e "\nPlease update src/third_party/expat/BUILD.gn before continuing."; fi
  34. }
  35. commit() {
  36. STEP="commit" &&
  37. git commit --quiet --amend --no-edit
  38. }
  39. update_expat_config_h() {
  40. STEP="update expat config.h" &&
  41. ( cd third_party/expat/src/expat &&
  42. ./buildconf.sh &&
  43. ./configure) &&
  44. cp third_party/expat/src/expat/expat_config.h third_party/expat/include/expat_config/ &&
  45. patch -d third_party/expat -p3 < third_party/expat/0001-Do-not-claim-getrandom.patch &&
  46. git add third_party/expat/include/expat_config/expat_config.h
  47. }
  48. roll_deps "$@" &&
  49. update_readme &&
  50. update_expat_config_h &&
  51. check_added_deleted_files &&
  52. commit ||
  53. { echo "Failed step ${STEP}"; exit 1; }