diff --git a/.github/workflows/test_mac_build.yml b/.github/workflows/test_mac_build.yml new file mode 100644 index 00000000..64728d98 --- /dev/null +++ b/.github/workflows/test_mac_build.yml @@ -0,0 +1,100 @@ +name: Publish + +on: + push: + branches: + - test_mac_build + workflow_dispatch: + +permissions: + contents: write + +jobs: + publish: + # To enable auto publishing to github, update your electron publisher + # config in package.json > "build" and remove the conditional below + # D:\a\RescueBox-FlaskML-xxx\RescueBox-FlaskML-xxx + if: ${{ github.repository_owner == 'UMass-Rescue' }} + + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [macos-latest] + + steps: + - name: Checkout git repo + uses: actions/checkout@v4 + with: + ref: 'test_mac_build' + + - name: Install Node and NPM + uses: actions/setup-node@v4 + with: + node-version: 18 + cache: npm + cache-dependency-path: '**/package-lock.json' + - run: npm --version + + - name: Install Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install and build + env: + GH_TOKEN: ${{ github.token }} + run: | + cd $RUNNER_WORKSPACE/RescueBox + brew install gdown + gdown 1kN8BYEDinWfs9Qv5G1T_bILiwfuT5o-V + ls -lrt + mkdir tmp + cd tmp + unzip ../rb_mac_files.zip + # mv -f age_and_gender_detection/models ../src/age_and_gender_detection + mv face-detection-recognition/face_detection_recognition/models ../src/face-detection-recognition/face_detection_recognition + mv deepfake-detection/deepfake_detection/onnx_models ../src/deepfake-detection/deepfake_detection + mv whisper .. + mv hook.py .. + mv mac.spec .. + rm -f ../pyproject.toml + mv pyproject.toml ../pyproject.toml + cd .. + rm -rf tmp + rm -f rb_mac_files.zip + brew install ffmpeg + brew list ffmpeg | grep "bin/ffmpeg" + ls -l /opt/homebrew/Cellar/ffmpeg/7.1.1_3/bin/ffmpeg + cp /opt/homebrew/Cellar/ffmpeg/7.1.1_3/bin/ffmpeg . + pipx install poetry + rm -f poetry.lock + poetry lock + poetry install + poetry env list + poetry env info + poetry run pyinstaller mac.spec + ls -l dist/rescuebox/rescuebox + if [ -f "dist/rescuebox/rescuebox" ]; then + echo "backend rescuebox exe build ok" + else + echo "backend rescuebox exe build not ok" + exit 1 + fi + mv dist RescueBox-Desktop/assets/rb_server + echo "backend rescuebox build completed" + cd $RUNNER_WORKSPACE/RescueBox/RescueBox-Desktop + ls package.json + brew install python-setuptools + python3 -m pip install setuptools + echo "run install" + npm install + echo "run postinstall" + npm run postinstall + echo "run build" + npm run build + echo "run rebuild" + npm run rebuild + echo "run exec" + npm exec electron-builder -- --publish always --mac + shell: sh diff --git a/RescueBox-Desktop/package-lock.json b/RescueBox-Desktop/package-lock.json index 846dfab8..dcac5d2a 100644 --- a/RescueBox-Desktop/package-lock.json +++ b/RescueBox-Desktop/package-lock.json @@ -1,12 +1,12 @@ { "name": "rescuebox-desktop", - "version": "2.0.0", + "version": "2.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "rescuebox-desktop", - "version": "2.0.0", + "version": "2.1.0", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/RescueBox-Desktop/package.json b/RescueBox-Desktop/package.json index ad6d89c7..fd7768f7 100644 --- a/RescueBox-Desktop/package.json +++ b/RescueBox-Desktop/package.json @@ -1,15 +1,15 @@ { "name": "rescuebox-desktop", - "version": "2.0.0", + "version": "2.1.0", "description": "A foundation for scalable desktop apps", "keywords": [], - "homepage": "https://github.com/UMass-Rescue/RescueBox-Desktop#readme", + "homepage": "https://github.com/UMass-Rescue/RescueBox#readme", "bugs": { - "url": "https://github.com/UMass-Rescue/RescueBox-Desktop/issues" + "url": "https://github.com/UMass-Rescue/RescueBox/issues" }, "repository": { "type": "git", - "url": "git+https://github.com/UMass-Rescue/RescueBox-Desktop.git" + "url": "git+https://github.com/UMass-Rescue/RescueBox.git" }, "license": "MIT", "author": "UMass Rescue Lab", @@ -265,7 +265,7 @@ "target": { "target": "default", "arch": [ - "universal" + "arm64" ] }, "additionalArguments": [ @@ -330,7 +330,7 @@ "publish": { "provider": "github", "owner": "UMass-Rescue", - "repo": "RescueBox-Desktop" + "repo": "RescueBox" } }, "electronmon": { diff --git a/RescueBox-Desktop/release/app/package-lock.json b/RescueBox-Desktop/release/app/package-lock.json index 69115c44..9974d7a3 100644 --- a/RescueBox-Desktop/release/app/package-lock.json +++ b/RescueBox-Desktop/release/app/package-lock.json @@ -1,12 +1,12 @@ { "name": "RescueBox-Desktop", - "version": "2.0.0", + "version": "2.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "RescueBox-Desktop", - "version": "2.0.0", + "version": "2.1.0", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/RescueBox-Desktop/release/app/package.json b/RescueBox-Desktop/release/app/package.json index d5c3f6fc..f3c06c09 100644 --- a/RescueBox-Desktop/release/app/package.json +++ b/RescueBox-Desktop/release/app/package.json @@ -1,6 +1,6 @@ { "name": "RescueBox-Desktop", - "version": "2.0.0", + "version": "2.1.0", "description": "A desktop application with a collection of ML models for forensics, and a job engine to run them", "license": "MIT", "author": { diff --git a/RescueBox-Desktop/src/main/services/register-model-service.ts b/RescueBox-Desktop/src/main/services/register-model-service.ts index ab39e872..de51dcfe 100644 --- a/RescueBox-Desktop/src/main/services/register-model-service.ts +++ b/RescueBox-Desktop/src/main/services/register-model-service.ts @@ -46,7 +46,7 @@ export default class RegisterModelService { 'dist', 'rescuebox', ); - public static serverExe = path.join(RegisterModelService.serverPath, 'rescuebox.exe',); + public static serverExe = path.join(RegisterModelService.serverPath, 'rescuebox',); public static childprocess: ChildProcess; public static async startServer() { @@ -62,6 +62,9 @@ export default class RegisterModelService { }; if (RegisterModelService.IS_SERVER_RUNNING) return; + if (process.platform === 'win32') { + RegisterModelService.serverExe = path.join(RegisterModelService.serverPath, 'rescuebox.exe',); + } RegisterModelService.childprocess = spawn(RegisterModelService.serverExe, options, defaults); if (RegisterModelService.childprocess != null) { RegisterModelService.childprocess.stdout?.on('data', (data: any) => {