verify_abi_requirements.sh 937 B

1234567891011121314151617181920212223242526272829
  1. #!/usr/bin/env bash
  2. set -e
  3. FILES=$(
  4. find "${SEARCH_PATH}" -type f -executable -name "node"
  5. find "${SEARCH_PATH}" -name "*.node" -not -path "*prebuilds*" -not -path "*extensions/node_modules/@parcel/watcher*"
  6. )
  7. echo "Verifying requirements for files: ${FILES}"
  8. for FILE in ${FILES}; do
  9. CXXABI_VERSION="0.0.0"
  10. while IFS= read -r LINE; do
  11. VERSION=${LINE#*_}
  12. if [[ $( printf "%s\n%s" "${VERSION}" "${CXXABI_VERSION}" | sort -V | tail -n1 ) == "${VERSION}" ]]; then
  13. CXXABI_VERSION="${VERSION}"
  14. fi
  15. done < <( strings "${FILE}" | grep -i ^CXXABI )
  16. if [[ $( printf "%s\n%s" "${EXPECTED_CXXABI_VERSION}" "${CXXABI_VERSION}" | sort -V | tail -n1 ) == "${EXPECTED_CXXABI_VERSION}" ]]; then
  17. echo "File ${FILE} has dependency on ABI ${CXXABI_VERSION} <= ${EXPECTED_CXXABI_VERSION}"
  18. else
  19. echo "Error: File ${FILE} has dependency on ABI ${CXXABI_VERSION} > ${EXPECTED_CXXABI_VERSION}"
  20. exit 1
  21. fi
  22. done