#!/bin/bash # This script converts the porting-advisor python code into # a x86 or arm64 Linux or Mac binary like a.out. # As a prerequisite, pip3 must already be installed # The resulting native binary does not need sudo to execute. if [ ! -f ".venv/bin/activate" ]; then ./setup-environment.sh fi . .venv/bin/activate if [[ -z "${FILE_NAME}" ]]; then FILE_NAME=`./getBinaryName.sh` else FILE_NAME="${FILE_NAME}" fi echo "*** Will use $FILE_NAME as name ***" if hash mvn then mvn package --file ./src/advisor/tools/graviton-ready-java/pom.xml if [ $? -ne 0 ]; then echo "**ERROR**: error generating jar for Graviton Ready Java tool" && exit 1 fi fi echo "ðŸ—ï¸ Generating executable" CERT_PATH=$(python3 -c 'import sysconfig; print(sysconfig.get_paths()["purelib"])') pyinstaller --onefile --clean --noconfirm --distpath dist --add-data 'src/advisor/rules/*.json:advisor/rules' --add-data 'src/advisor/tools/graviton-ready-java/target/*:advisor/tools/graviton-ready-java/target' --add-data 'src/advisor/templates/template.html:advisor/templates' --add-data "$CERT_PATH/certifi/cacert.pem:certifi" --name "$FILE_NAME" "src/porting-advisor.py" --runtime-hook 'src/updater.py' --exclude-module readline if [ $? -ne 0 ]; then echo "**ERROR**: pyinstaller failed, binary was not created" && exit 1 fi echo 🎉 "*** Success: Executable saved at dist/$FILE_NAME ***" exit 0