name: "Development Snapshot" on: workflow_dispatch: jobs: version: name: "Describe version" runs-on: ubuntu-latest outputs: tag_abbrev: ${{ steps.version.outputs.tag_abbrev }} tag_offset: ${{ steps.version.outputs.tag_offset }} sha_short: ${{ steps.version.outputs.sha_short }} full_desc: ${{ steps.version.outputs.full_desc }} steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - name: Version id: version shell: bash run: | tag_abbrev=$(git tag | sort -h | grep -oE "(^[0-9]+\.[0-9]+(.[0-9]+)?)$" | tail -1) echo "tag_abbrev=$tag_abbrev" >> $GITHUB_OUTPUT echo "tag_offset=$(git rev-list $tag_abbrev..HEAD --count)" >> $GITHUB_OUTPUT echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT echo "full_desc=$(git describe --long --tags)" >> $GITHUB_OUTPUT deb-package: needs: version runs-on: ubuntu-latest steps: - name: Install Makedeb run: | wget -qO - 'https://proget.hunterwittenborn.com/debian-feeds/makedeb.pub' | gpg --dearmor | sudo tee /usr/share/keyrings/makedeb-archive-keyring.gpg &> /dev/null echo 'deb [signed-by=/usr/share/keyrings/makedeb-archive-keyring.gpg arch=all] https://proget.hunterwittenborn.com/ makedeb main' | sudo tee /etc/apt/sources.list.d/makedeb.list sudo apt update sudo apt install makedeb - name: Prepare source directory run: | git clone https://mpr.hunterwittenborn.com/rare.git build sed -i 's/source=.*/source=("rare-test::git+$url")/g' build/PKGBUILD sed -i "s/\$pkgver/test/g" build/PKGBUILD - name: build deb run: | cd build makedeb -d mv *.deb ../Rare.deb - name: Upload to Artifacts uses: actions/upload-artifact@v3 with: name: Rare-${{ needs.version.outputs.tag_abbrev }}.${{ needs.version.outputs.tag_offset }}.deb path: Rare.deb appimage: needs: version runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v3 - name: Install build dependencies run: | sudo apt update sudo apt install python3 python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse - name: Install appimage-builder run: | sudo wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O /usr/local/bin/appimagetool sudo chmod +x /usr/local/bin/appimagetool sudo pip3 install appimage-builder - name: Build run: | cp rare/__main__.py . appimage-builder --skip-test mv Rare-*.AppImage Rare.AppImage mv Rare-*.AppImage.zsync Rare.AppImage.zsync - name: Upload to Artifacts uses: actions/upload-artifact@v3 with: name: Rare-${{ needs.version.outputs.tag_abbrev }}.${{ needs.version.outputs.tag_offset }}.AppImage path: Rare.AppImage - name: Upload to Artifacts (zsync) uses: actions/upload-artifact@v3 with: name: Rare-${{ needs.version.outputs.tag_abbrev }}.${{ needs.version.outputs.tag_offset }}.AppImage.zsync path: Rare.AppImage.zsync nuitka: if: ${{ false }} needs: version runs-on: "windows-latest" steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: cache: pip python-version: '3.9' check-latest: true architecture: x64 - name: Install build dependencies run: pip3 install nuitka ordered-set - name: Install target dependencies run: | pip3 install -r requirements.txt pip3 install -r requirements-presence.txt - name: Build run: >- python -m nuitka --assume-yes-for-downloads --msvc=latest --lto=yes --jobs=2 --static-libpython=no --standalone --enable-plugin=anti-bloat --enable-plugin=pyqt5 --show-modules --show-anti-bloat-changes --follow-stdlib --follow-imports --nofollow-import-to="*.tests" --nofollow-import-to="*.distutils" --prefer-source-code --include-package=pypresence --include-package-data=qtawesome --include-data-dir=rare\resources\images=rare\resources\images --include-data-files=rare\resources\languages=rare\resources\languages="*.qm" --windows-icon-from-ico=rare\resources\images\Rare.ico --windows-company-name=Rare --windows-product-name=Rare --windows-file-description=rare.exe --windows-file-version=${{ needs.version.outputs.tag_abbrev }}.${{ needs.version.outputs.tag_offset }} --windows-product-version=${{ needs.version.outputs.tag_abbrev }}.${{ needs.version.outputs.tag_offset }} --enable-console rare - name: Fix QtNetwork SSL run: | Copy-Item -Path "rare.dist\libcrypto-1_1.dll" -Destination "rare.dist\libcrypto-1_1-x64.dll" Copy-Item -Path "rare.dist\libssl-1_1.dll" -Destination "rare.dist\libssl-1_1-x64.dll" - name: Compress run: | python -c "import shutil; shutil.make_archive('Rare-Windows', 'zip', 'rare.dist')" - name: Upload to Artifacts uses: actions/upload-artifact@v3 with: name: Rare-Windows-${{ needs.version.outputs.tag_abbrev }}.${{ needs.version.outputs.tag_offset }} path: Rare-Windows.zip cx_freeze_msi: needs: version runs-on: "windows-latest" steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: cache: pip python-version: '3.11' check-latest: true architecture: x64 - name: Install Build Dependencies run: pip3 install --upgrade cx_freeze wheel - name: Install Target Dependencies run: | pip3 install -r requirements.txt pip3 install -r requirements-presence.txt - name: Build run: | python freeze.py bdist_msi mv dist/*.msi Rare.msi - name: Upload to Artifacts uses: actions/upload-artifact@v3 with: name: Rare-${{ needs.version.outputs.tag_abbrev }}.${{ needs.version.outputs.tag_offset }}.msi path: Rare.msi cx_freeze_zip: needs: version runs-on: "windows-latest" steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: cache: pip python-version: '3.11' check-latest: true architecture: x64 - name: Install build dependencies run: pip3 install cx_freeze - name: Install target dependencies run: | pip3 install -r requirements.txt pip3 install -r requirements-presence.txt pip3 install . - name: Build run: cxfreeze -c rare/__main__.py --target-dir dist --target-name rare --icon rare/resources/images/Rare.ico -OO --base-name Win32GUI - name: Compress run: | python -c "import shutil; shutil.make_archive('Rare-Windows', 'zip', 'dist')" - name: Upload to Artifacts uses: actions/upload-artifact@v3 with: name: Rare-Windows-${{ needs.version.outputs.tag_abbrev }}.${{ needs.version.outputs.tag_offset }}.zip path: Rare-Windows.zip mac_os: needs: version runs-on: macos-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: cache: pip python-version: '3.11' check-latest: true - name: Install Build Dependencies run: pip install pyinstaller - name: Install Target Dependencies run: | pip install -r requirements.txt - name: Move files run: mv rare/__main__.py __main__.py - name: Build run: >- pyinstaller -F --name Rare --add-data "rare/resources/languages/*:rare/resources/languages" --add-data "rare/resources/images/*:rare/resources/images/" --windowed --icon rare/resources/images/Rare.icns --hidden-import=legendary __main__.py - name: Create dmg run: | git clone https://github.com/create-dmg/create-dmg create-dmg/create-dmg Rare.dmg dist/Rare.App --volname Rare --volicon rare/resources/images/Rare.icns - uses: actions/upload-artifact@v3 with: name: Rare-${{ needs.version.outputs.tag_abbrev }}.${{ needs.version.outputs.tag_offset }}.dmg path: Rare.dmg