11#! /bin/sh
2- set -e
2+ set -ex
33# Shell script to update libffi in the source tree to a specific version
44
55BASE_DIR=$( cd " $( dirname " $0 " ) /../.." && pwd)
@@ -26,13 +26,13 @@ const tarball = assets.find(({ name }) => name === tarballName);
2626if (!tarball?.browser_download_url) throw new Error(`No release tarball found for ${tag_name}`);
2727console.log(`${version} ${tarball.browser_download_url} ${tarballName}`);
2828EOF
29- ) "
29+ ) " # "
3030
3131IFS=' ' read -r NEW_VERSION NEW_VERSION_URL LIBFFI_TARBALL << EOF
3232$NEW_VERSION_METADATA
3333EOF
3434
35- CURRENT_VERSION=$( grep " ^LIBFFI_VERSION = " " $DEPS_DIR /libffi/generate-headers.py " | sed -n " s/^LIBFFI_VERSION = '\(. *\)' /\1/p" )
35+ CURRENT_VERSION=$( sed -n ' /^@set VERSION /s/.* \([0-9.] *\)$ /\1/p' " $DEPS_DIR /libffi/doc/version.texi " )
3636
3737# This function exit with 0 if new version and current version are the same
3838compare_dependency_version " libffi" " $NEW_VERSION " " $CURRENT_VERSION "
@@ -49,25 +49,21 @@ cleanup () {
4949
5050trap cleanup INT TERM EXIT
5151
52- cd " $WORKSPACE "
53-
5452echo " Fetching libffi source archive..."
55- curl -sL -o " $LIBFFI_TARBALL " " $NEW_VERSION_URL "
56- log_and_verify_sha256sum " libffi" " $LIBFFI_TARBALL "
57- gzip -dc " $LIBFFI_TARBALL " | tar xf -
58- rm " $LIBFFI_TARBALL "
59-
60- FOLDER=$( ls -d -- * /)
61- mv " $FOLDER " libffi
53+ curl -fsSLo " $WORKSPACE /$LIBFFI_TARBALL " " $NEW_VERSION_URL "
54+ log_and_verify_sha256sum " libffi" " $WORKSPACE /$LIBFFI_TARBALL "
55+ tar -C " $WORKSPACE " -xzf " $WORKSPACE /$LIBFFI_TARBALL "
56+ LIBFFI_STAGING=$( find " $WORKSPACE " -mindepth 1 -maxdepth 1 -type d -print -quit)
6257
6358echo " Copying existing Node.js-specific files"
64- cp " $DEPS_DIR /libffi/libffi.gyp" " $WORKSPACE /libffi"
65- cp " $DEPS_DIR /libffi/generate-headers.py" " $WORKSPACE /libffi"
66- cp " $DEPS_DIR /libffi/generate-configure-headers.py" " $WORKSPACE /libffi"
67- cp " $DEPS_DIR /libffi/generate-darwin-source-and-headers.py" " $WORKSPACE /libffi"
59+ cp " $DEPS_DIR /libffi/libffi.gyp" " $LIBFFI_STAGING "
60+ cp " $DEPS_DIR /libffi/preprocess_asm.py" " $LIBFFI_STAGING "
61+ cp " $DEPS_DIR /libffi/generate-headers.py" " $LIBFFI_STAGING "
62+ cp " $DEPS_DIR /libffi/generate-configure-headers.py" " $LIBFFI_STAGING "
63+ cp " $DEPS_DIR /libffi/generate-darwin-source-and-headers.py" " $LIBFFI_STAGING "
6864
6965echo " Replacing existing libffi"
70- replace_dir " $DEPS_DIR /libffi" " $WORKSPACE /libffi "
66+ replace_dir " $DEPS_DIR /libffi" " $LIBFFI_STAGING "
7167
7268NEW_VERSION_NUMBER=$( $NODE -e " const [major, minor, patch] = process.argv[1].split('.'); console.log(String(Number(major)) + String(Number(minor)).padStart(2, '0') + String(Number(patch)).padStart(2, '0'));" " $NEW_VERSION " )
7369
0 commit comments