Build Macast #2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Copyright (c) 2021 by xfangfang. All Rights Reserved. | |
name: Build Macast | |
on: | |
push: | |
branches: | |
- dev_test | |
pull_request: | |
workflow_dispatch: | |
inputs: | |
ssh_darwin: | |
description: 'SSH connection to Darwin' | |
required: false | |
default: 'false' | |
ssh_ubuntu: | |
description: 'SSH connection to Ubuntu' | |
required: false | |
default: 'false' | |
release: | |
description: 'Push a new release' | |
required: false | |
default: 'false' | |
jobs: | |
version: | |
runs-on: ubuntu-latest | |
outputs: | |
version: ${{ steps.info.outputs.version }} | |
standard_version: ${{ steps.info.outputs.standard_version }} | |
DIST_DMG: ${{ steps.info.outputs.DIST_DMG }} | |
DIST_DMG_ARM: ${{ steps.info.outputs.DIST_DMG_ARM }} | |
DIST_EXE: ${{ steps.info.outputs.DIST_EXE }} | |
DIST_EXE_DEBUG: ${{ steps.info.outputs.DIST_EXE_DEBUG }} | |
DIST_EXE32: ${{ steps.info.outputs.DIST_EXE32 }} | |
DIST_EXE32_DEBUG: ${{ steps.info.outputs.DIST_EXE32_DEBUG }} | |
DIST_AMD64: ${{ steps.info.outputs.DIST_AMD64 }} | |
DIST_AMD64_DEB: ${{ steps.info.outputs.DIST_AMD64_DEB }} | |
DIST_ARMV7: ${{ steps.info.outputs.DIST_ARMV7 }} | |
DIST_ARMV7_DEB: ${{ steps.info.outputs.DIST_ARMV7_DEB }} | |
DIST_ARMV8: ${{ steps.info.outputs.DIST_ARMV8 }} | |
DIST_ARMV8_DEB: ${{ steps.info.outputs.DIST_ARMV8_DEB }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Debug version | |
run: | | |
export VERSION=`git rev-parse --short HEAD` | |
echo "VERSION=${VERSION}" >> $GITHUB_ENV | |
- name: Release version | |
if: github.event.inputs.release == 'true' && github.event.inputs.release != 'false' && !cancelled() | |
run: | | |
export VERSION=`python3 -c "exec(open('macast/__pkginfo__.py').read()); print(__version__)"` | |
echo "VERSION=${VERSION}" >> $GITHUB_ENV | |
- name: Version | |
id: info | |
env: | |
VERSION: ${{ env.VERSION }} | |
run: | | |
export STANDARD_VERSION=`python3 -c "exec(open('macast/__pkginfo__.py').read()); print(__version__)"` | |
echo "::set-output name=version::${VERSION}" | |
echo "::set-output name=standard_version::${STANDARD_VERSION}" | |
echo "::set-output name=DIST_DMG::Macast-MacOS-${VERSION}-IntelChip.dmg" | |
echo "::set-output name=DIST_DMG_ARM::Macast-MacOS-${VERSION}-AppleSilicon.dmg" | |
echo "::set-output name=DIST_EXE::Macast-Windows-${VERSION}-x64.exe" | |
echo "::set-output name=DIST_EXE_DEBUG::Macast-Windows-${VERSION}-x64-debug.exe" | |
echo "::set-output name=DIST_EXE32::Macast-Windows-${VERSION}-x86.exe" | |
echo "::set-output name=DIST_EXE32_DEBUG::Macast-Windows-${VERSION}-x86-debug.exe" | |
echo "::set-output name=DIST_AMD64::Macast-Linux-${VERSION}-amd64" | |
echo "::set-output name=DIST_AMD64_DEB::Macast-Linux-${VERSION}-amd64.deb" | |
echo "::set-output name=DIST_ARMV7::Macast-Linux-${VERSION}-armv7" | |
echo "::set-output name=DIST_ARMV7_DEB::Macast-Linux-${VERSION}-armv7.deb" | |
echo "::set-output name=DIST_ARMV8::Macast-Linux-${VERSION}-armv8" | |
echo "::set-output name=DIST_ARMV8_DEB::Macast-Linux-${VERSION}-armv8.deb" | |
echo $VERSION | |
echo $STANDARD_VERSION | |
release: | |
needs: [ build-win-x64, build-macos-apple, build-macos-intel, build-linux-amd64, build-linux-armv7, build-linux-armv8, build-win-x86, version ] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/download-artifact@v2 | |
if: github.event.inputs.release == 'true' && github.event.inputs.release != 'false' && !cancelled() | |
- name: Version | |
if: github.event.inputs.release == 'true' && github.event.inputs.release != 'false' && !cancelled() | |
run: | | |
echo "VERSION=${{ needs.version.outputs.version }}" >> $GITHUB_ENV | |
echo "DIST_DMG=${{ needs.version.outputs.DIST_DMG }}" >> $GITHUB_ENV | |
echo "DIST_DMG_ARM=${{ needs.version.outputs.DIST_DMG_ARM }}" >> $GITHUB_ENV | |
echo "DIST_EXE=${{ needs.version.outputs.DIST_EXE }}" >> $GITHUB_ENV | |
echo "DIST_EXE_DEBUG=${{ needs.version.outputs.DIST_EXE_DEBUG }}" >> $GITHUB_ENV | |
echo "DIST_EXE32=${{ needs.version.outputs.DIST_EXE32 }}" >> $GITHUB_ENV | |
echo "DIST_EXE32_DEBUG=${{ needs.version.outputs.DIST_EXE32_DEBUG }}" >> $GITHUB_ENV | |
echo "DIST_AMD64=${{ needs.version.outputs.DIST_AMD64 }}" >> $GITHUB_ENV | |
echo "DIST_AMD64_DEB=${{ needs.version.outputs.DIST_AMD64_DEB }}" >> $GITHUB_ENV | |
echo "DIST_ARMV7=${{ needs.version.outputs.DIST_ARMV7 }}" >> $GITHUB_ENV | |
echo "DIST_ARMV7_DEB=${{ needs.version.outputs.DIST_ARMV7_DEB }}" >> $GITHUB_ENV | |
echo "DIST_ARMV8=${{ needs.version.outputs.DIST_ARMV8 }}" >> $GITHUB_ENV | |
echo "DIST_ARMV8_DEB=${{ needs.version.outputs.DIST_ARMV8_DEB }}" >> $GITHUB_ENV | |
echo $GITHUB_ENV | |
- name: Upload | |
if: github.event.inputs.release == 'true' && github.event.inputs.release != 'false' && !cancelled() | |
uses: ncipollo/release-action@v1 | |
with: | |
name: Macast ${{ env.VERSION }} | |
tag: ${{ env.VERSION }} | |
omitBodyDuringUpdate: true | |
body: This release is built by github-action. | |
token: ${{ secrets.GITHUB_TOKEN }} | |
allowUpdates: true | |
artifacts: > | |
${{ env.DIST_DMG }}/${{ env.DIST_DMG }}, | |
${{ env.DIST_DMG_ARM }}/${{ env.DIST_DMG_ARM }}, | |
${{ env.DIST_EXE }}/${{ env.DIST_EXE }}, | |
${{ env.DIST_EXE_DEBUG }}/${{ env.DIST_EXE_DEBUG }}, | |
${{ env.DIST_EXE32 }}/${{ env.DIST_EXE32 }}, | |
${{ env.DIST_EXE32_DEBUG }}/${{ env.DIST_EXE32_DEBUG }}, | |
${{ env.DIST_AMD64 }}/${{ env.DIST_AMD64 }}, | |
${{ env.DIST_AMD64_DEB }}/${{ env.DIST_AMD64_DEB }}, | |
${{ env.DIST_ARMV7 }}/${{ env.DIST_ARMV7 }}, | |
${{ env.DIST_ARMV7_DEB }}/${{ env.DIST_ARMV7_DEB }}, | |
${{ env.DIST_ARMV8 }}/${{ env.DIST_ARMV8 }}, | |
${{ env.DIST_ARMV8_DEB }}/${{ env.DIST_ARMV8_DEB }} | |
build-linux-amd64: | |
needs: [ version ] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: SSH connection to Actions | |
uses: P3TERX/[email protected] | |
if: (github.event.inputs.ssh_ubuntu == 'true' && github.event.inputs.ssh_ubuntu != 'false') || contains(github.event.action, 'ssh_ubuntu') | |
env: | |
TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }} | |
TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} | |
- name: Build | |
id: compile | |
env: | |
VERSION: ${{ needs.version.outputs.version }} | |
STANDARD_VERSION: ${{ needs.version.outputs.standard_version }} | |
DIST_AMD64_DEB: ${{ needs.version.outputs.DIST_AMD64_DEB }} | |
DIST_AMD64: ${{ needs.version.outputs.DIST_AMD64 }} | |
run: | | |
echo $VERSION $STANDARD_VERSION $DIST_AMD64 | |
docker run --rm -v "$(pwd):/src/" xfangfang/build-macast:amd64-220223 \ | |
'pip install -r requirements.txt && \ | |
pip install -U pyinstaller && \ | |
python setup.py compile_catalog -f -D macast -d macast/i18n && \ | |
export BUILD_LANG=$(for i in $(ls macast/i18n);do echo --add-data=macast/i18n/$i/LC_MESSAGES/*.mo:macast/i18n/$i/LC_MESSAGES; done) &&\ | |
echo $BUILD_LANG | |
export BUILD_ASSETS=$(for i in $(ls macast/assets);do [ -d macast/assets/$i ] && echo --add-data=macast/assets/$i/*:macast/assets/$i; done) &&\ | |
echo $BUILD_ASSETS &&\ | |
pyinstaller --noconfirm -F -w \ | |
--additional-hooks-dir=. \ | |
$BUILD_LANG \ | |
$BUILD_ASSETS \ | |
--add-data="macast/xml/*:macast/xml" \ | |
--add-data="macast/assets/*.png:macast/assets" \ | |
--exclude-module=tkinter \ | |
--distpath="app" \ | |
Macast.py' | |
sudo chown 1000 app/Macast | |
cp app/Macast $DIST_AMD64 | |
#build deb | |
mkdir -p dist/DEBIAN | |
mkdir -p dist/usr/bin | |
mkdir -p dist/usr/share/applications | |
mkdir -p dist/usr/share/icons/hicolor/128x128/apps | |
echo -e "Package: cn.xfangfang.macast\nVersion: ${STANDARD_VERSION}\nStandards-Version: ${STANDARD_VERSION}\nArchitecture: amd64\nMaintainer: xfangfang <[email protected]>\nSection:video\nDescription: DLNA Media Renderer\nDepends: mpv" > dist/DEBIAN/control | |
echo -e "[Desktop Entry]\nName=Macast\nComment=DLNA Media Renderer\nTryExec=mpv\nExec=/usr/bin/macast\nIcon=/usr/share/icons/hicolor/128x128/apps/macast.png\nTerminal=false\nType=Application\nCategories=AudioVideo;Audio;Video;Player;TV;" > dist/usr/share/applications/macast.desktop | |
cp app/Macast dist/usr/bin/macast | |
cp macast/assets/icon.png dist/usr/share/icons/hicolor/128x128/apps/macast.png | |
dpkg -b dist $DIST_AMD64_DEB | |
echo "::set-output name=status::success" | |
- name: Upload dist linux x64 | |
uses: actions/upload-artifact@v2 | |
if: steps.compile.outputs.status == 'success' | |
with: | |
name: ${{ needs.version.outputs.DIST_AMD64 }} | |
path: ${{ needs.version.outputs.DIST_AMD64 }} | |
- name: Upload dist deb | |
uses: actions/upload-artifact@v2 | |
if: steps.compile.outputs.status == 'success' | |
with: | |
name: ${{ needs.version.outputs.DIST_AMD64_DEB }} | |
path: ${{ needs.version.outputs.DIST_AMD64_DEB }} | |
build-linux-armv7: | |
needs: [ version ] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v1 | |
- name: Set up Docker Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v1 | |
- name: Build | |
id: compile | |
env: | |
VERSION: ${{ needs.version.outputs.version }} | |
STANDARD_VERSION: ${{ needs.version.outputs.standard_version }} | |
DIST_ARMV7: ${{ needs.version.outputs.DIST_ARMV7 }} | |
DIST_ARMV7_DEB: ${{ needs.version.outputs.DIST_ARMV7_DEB }} | |
run: | | |
echo $VERSION $STANDARD_VERSION $DIST_ARMV7 | |
docker run --platform=linux/arm/v7 --rm -v "$(pwd):/src/" xfangfang/build-macast:armv7-220223 \ | |
'python setup.py compile_catalog -f -D macast -d macast/i18n && \ | |
export BUILD_LANG=$(for i in $(ls macast/i18n);do echo --add-data=macast/i18n/$i/LC_MESSAGES/*.mo:macast/i18n/$i/LC_MESSAGES; done) &&\ | |
echo $BUILD_LANG | |
export BUILD_ASSETS=$(for i in $(ls macast/assets);do [ -d macast/assets/$i ] && echo --add-data=macast/assets/$i/*:macast/assets/$i; done) &&\ | |
echo $BUILD_ASSETS && \ | |
pyinstaller --noconfirm -F -w \ | |
--noupx \ | |
--additional-hooks-dir=. \ | |
$BUILD_LANG \ | |
$BUILD_ASSETS \ | |
--add-data="macast/xml/*:macast/xml" \ | |
--add-data="macast/assets/*.png:macast/assets" \ | |
--exclude-module=tkinter \ | |
--distpath="app" \ | |
Macast.py' | |
sudo chown 1000 app/Macast | |
cp app/Macast $DIST_ARMV7 | |
#build deb | |
mkdir -p dist/DEBIAN | |
mkdir -p dist/usr/bin | |
mkdir -p dist/usr/share/applications | |
mkdir -p dist/usr/share/icons/hicolor/128x128/apps | |
echo -e "Package: Macast\nVersion: ${STANDARD_VERSION}\nStandards-Version: ${STANDARD_VERSION}\nArchitecture: armhf\nMaintainer: xfangfang <[email protected]>\nDescription: DLNA Media Renderer\nDepends: mpv" > dist/DEBIAN/control | |
echo -e "[Desktop Entry]\nName=Macast\nComment=DLNA Media Renderer\nTryExec=mpv\nExec=/usr/bin/macast\nIcon=/usr/share/icons/hicolor/128x128/apps/macast.png\nTerminal=false\nType=Application\nCategories=AudioVideo;Audio;Video;Player;TV;" > dist/usr/share/applications/macast.desktop | |
cp app/Macast dist/usr/bin/macast | |
cp macast/assets/icon.png dist/usr/share/icons/hicolor/128x128/apps/macast.png | |
dpkg -b dist $DIST_ARMV7_DEB | |
echo "::set-output name=status::success" | |
- name: Upload dist linux | |
uses: actions/upload-artifact@v2 | |
if: steps.compile.outputs.status == 'success' | |
with: | |
name: ${{ needs.version.outputs.DIST_ARMV7 }} | |
path: ${{ needs.version.outputs.DIST_ARMV7 }} | |
- name: Upload dist deb | |
uses: actions/upload-artifact@v2 | |
if: steps.compile.outputs.status == 'success' | |
with: | |
name: ${{ needs.version.outputs.DIST_ARMV7_DEB }} | |
path: ${{ needs.version.outputs.DIST_ARMV7_DEB }} | |
build-linux-armv8: | |
needs: [ version ] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v1 | |
- name: Set up Docker Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v1 | |
- name: Build | |
id: compile | |
env: | |
VERSION: ${{ needs.version.outputs.version }} | |
STANDARD_VERSION: ${{ needs.version.outputs.standard_version }} | |
DIST_ARMV8: ${{ needs.version.outputs.DIST_ARMV8 }} | |
DIST_ARMV8_DEB: ${{ needs.version.outputs.DIST_ARMV8_DEB }} | |
run: | | |
echo $VERSION $STANDARD_VERSION $DIST_ARMV8 | |
docker run --platform=linux/arm64/v8 --rm -v "$(pwd):/src/" xfangfang/build-macast:armv8-220703 \ | |
'python setup.py compile_catalog -f -D macast -d macast/i18n && \ | |
export BUILD_LANG=$(for i in $(ls macast/i18n);do echo --add-data=macast/i18n/$i/LC_MESSAGES/*.mo:macast/i18n/$i/LC_MESSAGES; done) &&\ | |
echo $BUILD_LANG | |
export BUILD_ASSETS=$(for i in $(ls macast/assets);do [ -d macast/assets/$i ] && echo --add-data=macast/assets/$i/*:macast/assets/$i; done) &&\ | |
echo $BUILD_ASSETS && \ | |
pyinstaller --noconfirm -F -w \ | |
--noupx \ | |
--additional-hooks-dir=. \ | |
$BUILD_LANG \ | |
$BUILD_ASSETS \ | |
--add-data="macast/xml/*:macast/xml" \ | |
--add-data="macast/assets/*.png:macast/assets" \ | |
--exclude-module=tkinter \ | |
--distpath="app" \ | |
Macast.py' | |
sudo chown 1000 app/Macast | |
cp app/Macast $DIST_ARMV8 | |
#build deb | |
mkdir -p dist/DEBIAN | |
mkdir -p dist/usr/bin | |
mkdir -p dist/usr/share/applications | |
mkdir -p dist/usr/share/icons/hicolor/128x128/apps | |
echo -e "Package: Macast\nVersion: ${STANDARD_VERSION}\nStandards-Version: ${STANDARD_VERSION}\nArchitecture: arm64\nMaintainer: xfangfang <[email protected]>\nDescription: DLNA Media Renderer\nDepends: mpv" > dist/DEBIAN/control | |
echo -e "[Desktop Entry]\nName=Macast\nComment=DLNA Media Renderer\nTryExec=mpv\nExec=/usr/bin/macast\nIcon=/usr/share/icons/hicolor/128x128/apps/macast.png\nTerminal=false\nType=Application\nCategories=AudioVideo;Audio;Video;Player;TV;" > dist/usr/share/applications/macast.desktop | |
cp app/Macast dist/usr/bin/macast | |
cp macast/assets/icon.png dist/usr/share/icons/hicolor/128x128/apps/macast.png | |
dpkg -b dist $DIST_ARMV8_DEB | |
echo "::set-output name=status::success" | |
- name: Upload dist linux | |
uses: actions/upload-artifact@v2 | |
if: steps.compile.outputs.status == 'success' | |
with: | |
name: ${{ needs.version.outputs.DIST_ARMV8 }} | |
path: ${{ needs.version.outputs.DIST_ARMV8 }} | |
- name: Upload dist deb | |
uses: actions/upload-artifact@v2 | |
if: steps.compile.outputs.status == 'success' | |
with: | |
name: ${{ needs.version.outputs.DIST_ARMV8_DEB }} | |
path: ${{ needs.version.outputs.DIST_ARMV8_DEB }} | |
build-win-x86: | |
needs: [ version ] | |
runs-on: windows-2019 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- uses: actions/setup-python@v2 | |
with: | |
python-version: '3.7.9' | |
architecture: 'x86' | |
- name: Install Requirement | |
run: | | |
choco install upx | |
pip3 install -r requirements.txt | |
pip3 install pyinstaller | |
$client = new-object System.Net.WebClient | |
$client.DownloadFile('https://github.com/xfangfang/Macast/releases/download/v0.1/mpv-0.34.0-i686.7z','mpv.7z') | |
7z x -obin mpv.7z *.exe | |
- name: Build | |
id: compile | |
run: | | |
$VERSION="${{ needs.version.outputs.version }}" | |
$DIST_EXE32_DEBUG="${{ needs.version.outputs.DIST_EXE32_DEBUG }}" | |
$DIST_EXE32="${{ needs.version.outputs.DIST_EXE32 }}" | |
echo $VERSION $DIST_EXE32 | |
python3 setup.py compile_catalog -f -D macast -d macast\i18n | |
$BUILD_LANG=(ls macast\i18n | ForEach-Object {echo --add-data="macast\i18n\$($_.Name)\LC_MESSAGES\*.mo;macast\i18n\$($_.Name)\LC_MESSAGES"}) | |
$BUILD_ASSETS_1=(ls macast\assets | ?{$_.PsIsContainer -eq $true} | ForEach-Object {echo --add-data="macast\assets\$($_.Name)\*;macast\assets\$($_.Name)"}) | |
$BUILD_ASSETS_2=("--add-data=macast\assets\*;macast\assets","--add-data=macast\xml\*;macast\xml","--add-binary=bin\mpv.exe;bin") | |
$BUILD_HIDDEN_IMPORT=("--hidden-import=win32process","--hidden-import=win32gui") | |
$BUILD_OTHERS=("--additional-hooks-dir=.","--icon=macast\assets\icon.ico","--runtime-tmpdir=%Temp%\Macast", "--upx-exclude=mpv.exe") | |
$BUILD_COMMON=($BUILD_LANG+$BUILD_ASSETS_1+$BUILD_ASSETS_2+$BUILD_HIDDEN_IMPORT+$BUILD_OTHERS) | |
pyinstaller --noconfirm -F -w $BUILD_COMMON --splash=macast\assets\macast_splash.jpg Macast.py | |
cp dist\Macast.exe ${DIST_EXE32} | |
pyinstaller --noconfirm -F -d=all $BUILD_COMMON Macast.py | |
cp dist\Macast.exe ${DIST_EXE32_DEBUG} | |
echo "::set-output name=status::success" | |
- name: Upload dist | |
uses: actions/upload-artifact@v2 | |
if: steps.compile.outputs.status == 'success' | |
with: | |
name: ${{ needs.version.outputs.DIST_EXE32 }} | |
path: ${{ needs.version.outputs.DIST_EXE32 }} | |
- name: Upload dist debug | |
uses: actions/upload-artifact@v2 | |
if: steps.compile.outputs.status == 'success' | |
with: | |
name: ${{ needs.version.outputs.DIST_EXE32_DEBUG }} | |
path: ${{ needs.version.outputs.DIST_EXE32_DEBUG }} | |
build-win-x64: | |
needs: [ version ] | |
runs-on: windows-2019 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Install Requirement | |
run: | | |
choco install upx | |
pip3 install -r requirements.txt | |
pip3 install pyinstaller | |
$client = new-object System.Net.WebClient | |
$client.DownloadFile('https://github.com/xfangfang/Macast/releases/download/v0.1/mpv-0.34.0-x86_64.7z','mpv.7z') | |
7z x -obin mpv.7z *.exe | |
- name: Build | |
id: compile | |
run: | | |
$VERSION="${{ needs.version.outputs.version }}" | |
$DIST_EXE_DEBUG="${{ needs.version.outputs.DIST_EXE_DEBUG }}" | |
$DIST_EXE="${{ needs.version.outputs.DIST_EXE }}" | |
echo ${VERSION} ${DIST_EXE} | |
python3 setup.py compile_catalog -f -D macast -d macast\i18n | |
$BUILD_LANG=(ls macast\i18n | ForEach-Object {echo --add-data="macast\i18n\$($_.Name)\LC_MESSAGES\*.mo;macast\i18n\$($_.Name)\LC_MESSAGES"}) | |
$BUILD_ASSETS_1=(ls macast\assets | ?{$_.PsIsContainer -eq $true} | ForEach-Object {echo --add-data="macast\assets\$($_.Name)\*;macast\assets\$($_.Name)"}) | |
$BUILD_ASSETS_2=("--add-data=macast\assets\*;macast\assets","--add-data=macast\xml\*;macast\xml","--add-binary=bin\mpv.exe;bin") | |
$BUILD_HIDDEN_IMPORT=("--hidden-import=win32process","--hidden-import=win32gui") | |
$BUILD_OTHERS=("--additional-hooks-dir=.","--icon=macast\assets\icon.ico","--runtime-tmpdir=%Temp%\Macast", "--upx-exclude=mpv.exe") | |
$BUILD_COMMON=($BUILD_LANG+$BUILD_ASSETS_1+$BUILD_ASSETS_2+$BUILD_HIDDEN_IMPORT+$BUILD_OTHERS) | |
pyinstaller --noconfirm -F -w $BUILD_COMMON --splash=macast\assets\macast_splash.jpg Macast.py | |
cp dist\Macast.exe $DIST_EXE | |
pyinstaller --noconfirm -F -d=all $BUILD_COMMON Macast.py | |
cp dist\Macast.exe $DIST_EXE_DEBUG | |
echo "::set-output name=status::success" | |
- name: Upload dist | |
uses: actions/upload-artifact@v2 | |
if: steps.compile.outputs.status == 'success' | |
with: | |
name: ${{ needs.version.outputs.DIST_EXE }} | |
path: ${{ needs.version.outputs.DIST_EXE }} | |
- name: Upload dist debug | |
uses: actions/upload-artifact@v2 | |
if: steps.compile.outputs.status == 'success' | |
with: | |
name: ${{ needs.version.outputs.DIST_EXE_DEBUG }} | |
path: ${{ needs.version.outputs.DIST_EXE_DEBUG }} | |
build-macos-intel: | |
needs: [ version ] | |
runs-on: macos-11 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: install create-dmg | |
run: brew install create-dmg | |
- name: install universal python | |
run: | | |
wget https://www.python.org/ftp/python/3.9.8/python-3.9.8-macos11.pkg | |
sudo installer -pkg python-3.9.8-macos11.pkg -target / | |
- name: Install Requirement | |
run: | | |
pip3 install -r requirements.txt | |
pip3 install py2app | |
wget https://laboratory.stolendata.net/~djinn/mpv_osx/mpv-latest.tar.gz | |
mkdir -p bin && tar --strip-components 2 -C bin -xzvf mpv-latest.tar.gz mpv.app/Contents/MacOS | |
- name: Readme | |
run: | | |
mkdir -p dist | |
echo "Macast" > dist/readme.txt | |
echo "" >> dist/readme.txt | |
echo "if you see any of these after open this application:" >> dist/readme.txt | |
echo "1: Macast.app is damaged and can't be opened. You should move it to he Trash." >> dist/readme.txt | |
echo "2: Macast.app can't be opened because it is from an unidentified developer." >> dist/readme.txt | |
echo "" >> dist/readme.txt | |
echo "Please run this command in your terminal:" >> dist/readme.txt | |
echo "sudo xattr -rd com.apple.quarantine /Applications/Macast.app" >> dist/readme.txt | |
- name: SSH connection to Actions | |
uses: P3TERX/[email protected] | |
if: (github.event.inputs.ssh_darwin == 'true' && github.event.inputs.ssh_darwin != 'false') || contains(github.event.action, 'ssh_darwin') | |
env: | |
TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }} | |
TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} | |
- name: Build | |
id: compile | |
env: | |
VERSION: ${{ needs.version.outputs.version }} | |
DIST_DMG: ${{ needs.version.outputs.DIST_DMG }} | |
run: | | |
echo $VERSION $DIST_DMG | |
python3 setup.py compile_catalog -f -D macast -d macast/i18n | |
python3 setup_py2app.py py2app --arch=x86_64 | |
cp -R bin dist/Macast.app/Contents/Resources/ | |
create-dmg --window-pos 200 120 --window-size 800 400 --icon-size 100 --icon "Macast.app" 200 190 --icon "readme.txt" 400 100 --hide-extension "Macast.app" --app-drop-link 600 185 --volname "Macast-v${VERSION} Installer" ${DIST_DMG} "dist/" | |
echo "::set-output name=status::success" | |
- name: Upload dist | |
uses: actions/upload-artifact@v2 | |
if: steps.compile.outputs.status == 'success' | |
with: | |
name: ${{ needs.version.outputs.DIST_DMG }} | |
path: ${{ needs.version.outputs.DIST_DMG }} | |
build-macos-apple: | |
needs: [ version ] | |
runs-on: macos-11 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: install create-dmg | |
run: brew install create-dmg | |
- name: install universal python | |
run: | | |
wget https://www.python.org/ftp/python/3.9.8/python-3.9.8-macos11.pkg | |
sudo installer -pkg python-3.9.8-macos11.pkg -target / | |
- name: Install Requirement | |
run: | | |
pip3 install -r requirements.txt | |
pip3 install py2app | |
wget https://github.com/xfangfang/Macast/releases/download/v0.1/mpv-0.34.1-darwin-arm.tar.gz | |
mkdir -p bin_arm && tar --strip-components 2 -C bin_arm -xzvf mpv-0.34.1-darwin-arm.tar.gz mpv.app/Contents/MacOS | |
wget https://github.com/xfangfang/Macast/releases/download/v0.1/macos_arm_lxml_netifaces.tar.gz | |
- name: Readme | |
run: | | |
mkdir -p dist | |
echo "Macast" > dist/readme.txt | |
echo "" >> dist/readme.txt | |
echo "if you see any of these after open this application:" >> dist/readme.txt | |
echo "1: Macast.app is damaged and can't be opened. You should move it to he Trash." >> dist/readme.txt | |
echo "2: Macast.app can't be opened because it is from an unidentified developer." >> dist/readme.txt | |
echo "" >> dist/readme.txt | |
echo "Please run this command in your terminal:" >> dist/readme.txt | |
echo "sudo xattr -rd com.apple.quarantine /Applications/Macast.app" >> dist/readme.txt | |
- name: SSH connection to Actions | |
uses: P3TERX/[email protected] | |
if: (github.event.inputs.ssh_darwin == 'true' && github.event.inputs.ssh_darwin != 'false') || contains(github.event.action, 'ssh_darwin') | |
env: | |
TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }} | |
TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} | |
- name: Build arm | |
id: compile_arm | |
env: | |
VERSION: ${{ needs.version.outputs.version }} | |
DIST_DMG_ARM: ${{ needs.version.outputs.DIST_DMG_ARM }} | |
run: | | |
echo $VERSION $DIST_DMG_ARM | |
python3 setup.py compile_catalog -f -D macast -d macast/i18n | |
python3 setup_py2app.py py2app --arch=arm64 | |
cp -R bin_arm dist/Macast.app/Contents/Resources/bin | |
tar --strip-components 1 -C dist/Macast.app/Contents/Resources/lib/python3.9/lib-dynload -xzvf macos_arm_lxml_netifaces.tar.gz | |
create-dmg --window-pos 200 120 --window-size 800 400 --icon-size 100 --icon "Macast.app" 200 190 --icon "readme.txt" 400 100 --hide-extension "Macast.app" --app-drop-link 600 185 --volname "Macast-v${VERSION} Installer" ${DIST_DMG_ARM} "dist/" | |
echo "::set-output name=status::success" | |
- name: Upload dist arm | |
uses: actions/upload-artifact@v2 | |
if: steps.compile_arm.outputs.status == 'success' | |
with: | |
name: ${{ needs.version.outputs.DIST_DMG_ARM }} | |
path: ${{ needs.version.outputs.DIST_DMG_ARM }} |