name: Package using PyInstaller on: push: tags: - v** workflow_dispatch: jobs: build-windows: env: dist-path: dist/OpenSeeFace runs-on: windows-latest steps: - name: Pull OpenSeeFace uses: actions/checkout@v3 - name: Create binary shell: cmd run: | choco install vcredist140 xcopy c:\Windows\System32\msvcp140.dll . xcopy c:\Windows\System32\vcomp140.dll . xcopy c:\Windows\System32\concrt140.dll . xcopy c:\Windows\System32\vccorlib140.dll . make_exe.bat - name: Move files for uploading shell: bash run: | # Prevents the parent dist/ directory from being included mv dist/facetracker ${{ env.dist-path }} cp -r models ${{ env.dist-path }} - name: Upload artifact uses: actions/upload-artifact@v3 with: name: windows-latest path: dist # Add the parent directory to prevent a tarbomb if-no-files-found: error # Files must be packed into a tar in order for file permissions to be preserved build-unix: env: artifact-path: OpenSeeFace tar-path: OpenSeeFace.tar strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest] runs-on: ${{ matrix.os }} steps: - name: Pull OpenSeeFace uses: actions/checkout@v3 - name: Create binary shell: bash run: | chmod +x make_exe.sh ./make_exe.sh - name: Move files for uploading shell: bash run: | # Prevents the parent dist/ directory from being included mv dist/facetracker ${{ env.artifact-path }} cp -r models ${{ env.artifact-path }} - name: Fix permissions from PyInstaller shell: bash run: | find ${{ env.artifact-path }} -type f -exec chmod -x {} + chmod +x ${{ env.artifact-path }}/facetracker - name: Pack files into tar shell: bash run: tar -cvf ${{ env.tar-path }} ${{ env.artifact-path }} - name: Upload artifact uses: actions/upload-artifact@v3 with: name: ${{ matrix.os }} path: ${{ env.tar-path }} if-no-files-found: error