Skip to content

Build Macast

Build Macast #2

Workflow file for this run

# 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 }}