db19e52547
The `app/win/codesign` script should take a path to a file and a description (`/d` parameter to `signtool.exe`) and sign the file using whatever process the certificate authority requires.
161 lines
4 KiB
Bash
Executable file
161 lines
4 KiB
Bash
Executable file
#!/bin/bash
|
|
set -uo pipefail
|
|
|
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
APP_ROOT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
ROOT_DIR="$(dirname "$APP_ROOT_DIR")"
|
|
. "$APP_ROOT_DIR/config.sh"
|
|
. "$SCRIPT_DIR/bootstrap.sh"
|
|
|
|
cd "$ROOT_DIR"
|
|
|
|
platform=`get_current_platform`
|
|
|
|
FAIL_CMD='echo -e \033[31;1mFAIL\033[0m'
|
|
FAIL_CMD_INLINE='echo -n -e \033[31;1mFAIL\033[0m'
|
|
FAILED=0
|
|
|
|
hdr_start=`tput smul`
|
|
hdr_stop=`tput rmul`
|
|
|
|
echo "${hdr_start}Checking build requirements:${hdr_stop}"
|
|
echo
|
|
|
|
echo -n "Checking for Node.js: "
|
|
which node || { $FAIL_CMD_INLINE; FAILED=1; }
|
|
node_version=$(node -v | cut -c 2-)
|
|
echo -n "Checking Node version: $node_version"
|
|
if [ $(echo $node_version | cut -d '.' -f1 ) -ge "18" ]; then
|
|
echo
|
|
else
|
|
echo -n " -- must be 18 or later "
|
|
{ $FAIL_CMD; FAILED=1; }
|
|
fi
|
|
|
|
echo -n "Checking for Git LFS: "
|
|
which git-lfs || { $FAIL_CMD_INLINE; FAILED=1; }
|
|
|
|
echo "Checking for Git LFS checkouts: "
|
|
lfs_files=$(git lfs ls-files -n 2> /dev/null) || { $FAIL_CMD; FAILED=1; }
|
|
for lfs_file in $lfs_files; do
|
|
echo -n " - $lfs_file: "
|
|
file_type=$(file -b $lfs_file)
|
|
echo -n $file_type" "
|
|
if [ -z "$(echo -n $file_type | grep XZ)" ]; then
|
|
{ $FAIL_CMD_INLINE; FAILED=1; echo " -- run 'git lfs pull'"; }
|
|
fi
|
|
echo
|
|
done
|
|
|
|
echo -n "Checking for perl: "
|
|
which perl || { $FAIL_CMD; FAILED=1; }
|
|
|
|
echo -n "Checking for python3: "
|
|
which python3 || { $FAIL_CMD; FAILED=1; }
|
|
|
|
echo -n "Checking for curl: "
|
|
which curl || { $FAIL_CMD; FAILED=1; }
|
|
|
|
echo -n "Checking for wget: "
|
|
which wget || { $FAIL_CMD; FAILED=1; }
|
|
|
|
echo -n "Checking for zip: "
|
|
which zip || { $FAIL_CMD; FAILED=1; }
|
|
|
|
echo -n "Checking for unzip: "
|
|
which unzip || { $FAIL_CMD; FAILED=1; }
|
|
|
|
echo -n "Checking for xz: "
|
|
which xz || { $FAIL_CMD; FAILED=1; }
|
|
|
|
echo -n "Checking for awk: "
|
|
which awk || { $FAIL_CMD; FAILED=1; }
|
|
|
|
echo -n "Checking for rsync: "
|
|
which rsync || { $FAIL_CMD; FAILED=1; }
|
|
|
|
if [ $platform = "w" ]; then
|
|
echo -n "Checking for 7z: "
|
|
which 7z || { $FAIL_CMD; FAILED=1; }
|
|
|
|
echo -n "Checking for rcedit: "
|
|
which rcedit || { $FAIL_CMD; FAILED=1; echo " -- Install with fetch_rcedit"; }
|
|
fi
|
|
|
|
if [ $platform = "w" ]; then
|
|
echo
|
|
echo "${hdr_start}Checking Windows packaging requirements:${hdr_stop}"
|
|
echo
|
|
|
|
echo -n "Checking for upx: "
|
|
which upx || { $FAIL_CMD; FAILED=1; }
|
|
|
|
echo -n "Checking for uuidgen: "
|
|
which uuidgen || { $FAIL_CMD; FAILED=1; }
|
|
|
|
echo -n "Checking for code-signing script: "
|
|
if [ -x "$APP_ROOT_DIR/win/codesign" ]; then
|
|
echo "$APP_ROOT_DIR/win/codesign"
|
|
else
|
|
$FAIL_CMD
|
|
FAILED=1
|
|
fi
|
|
|
|
echo -n "Checking for Unicode NSIS: "
|
|
if [ -x "`cygpath -u \"${NSIS_DIR}makensis.exe\"`" ]; then
|
|
echo "`cygpath -u \"${NSIS_DIR}makensis.exe\"`"
|
|
else
|
|
$FAIL_CMD
|
|
FAILED=1
|
|
fi
|
|
|
|
plugin_path=$(cd "$NSIS_DIR\\Plugins\\x86-unicode" && pwd)
|
|
plugins="AppAssocReg ApplicationID InvokeShellVerb ShellLink UAC"
|
|
echo "Checking for NSIS plugins in $plugin_path"
|
|
for i in $plugins; do
|
|
echo -n " $i.dll: "
|
|
if [ -f "$plugin_path/$i.dll" ]; then
|
|
echo OK
|
|
else
|
|
$FAIL_CMD
|
|
FAILED=1
|
|
fi
|
|
done
|
|
fi
|
|
|
|
if [ $platform = "m" ]; then
|
|
echo
|
|
echo "${hdr_start}Checking Mac packaging requirements:${hdr_stop}"
|
|
echo
|
|
|
|
echo -n "Checking for codesign: "
|
|
which /usr/bin/codesign || { $FAIL_CMD; FAILED=1; }
|
|
fi
|
|
|
|
echo
|
|
echo "${hdr_start}Checking distribution requirements:${hdr_stop}"
|
|
echo
|
|
|
|
echo -n "Checking for Mozilla ARchive (MAR) tool: "
|
|
which mar || { $FAIL_CMD; FAILED=1; echo " -- Install with fetch_mar_tools"; }
|
|
|
|
echo -n "Checking for mbsdiff: "
|
|
which mbsdiff || { $FAIL_CMD; FAILED=1; echo " -- Install with fetch_mar_tools"; }
|
|
|
|
echo -n "Checking for rsync: "
|
|
which rsync || { $FAIL_CMD; FAILED=1; }
|
|
|
|
echo -n "Checking for sha512sum/shasum: "
|
|
which sha512sum 2>/dev/null || which shasum 2>/dev/null || { $FAIL_CMD; FAILED=1; }
|
|
|
|
echo -n "Checking for AWS CLI: "
|
|
which aws || { $FAIL_CMD; FAILED=1; }
|
|
|
|
echo -n "Checking for AWS S3 access: "
|
|
aws s3 ls $S3_BUCKET/$S3_DIST_PATH | sed 's/^[[:blank:]]*//' || { $FAIL_CMD; FAILED=1; }
|
|
|
|
echo -n "Checking for deploy host directory access: "
|
|
ssh $DEPLOY_HOST ls -d $DEPLOY_PATH || { $FAIL_CMD; FAILED=1; }
|
|
|
|
|
|
exit $FAILED
|