diff --git a/.github/workflows/aur_publish.yml b/.github/workflows/aur_publish.yml new file mode 100644 index 00000000..4e8be0b3 --- /dev/null +++ b/.github/workflows/aur_publish.yml @@ -0,0 +1,104 @@ +name: Publish AUR Packages + +on: + release: + types: [published] + workflow_dispatch: + inputs: + tag: + description: 'Release tag (e.g. onelauncher-1.0.3)' + required: true + +jobs: + resolve: + runs-on: ubuntu-latest + outputs: + app: ${{ steps.parse.outputs.app }} + version: ${{ steps.parse.outputs.version }} + steps: + - name: Parse release tag + id: parse + run: | + TAG="${{ github.event.release.tag_name || inputs.tag }}" + if [[ "$TAG" =~ ^onelauncher-(.+)$ ]]; then + echo "app=onelauncher" >> "$GITHUB_OUTPUT" + echo "version=${BASH_REMATCH[1]}" >> "$GITHUB_OUTPUT" + elif [[ "$TAG" =~ ^oneclient-(.+)$ ]]; then + echo "app=oneclient" >> "$GITHUB_OUTPUT" + echo "version=${BASH_REMATCH[1]}" >> "$GITHUB_OUTPUT" + else + echo "::error::Tag '$TAG' does not match onelauncher-* or oneclient-*" + exit 1 + fi + + publish-source: + needs: resolve + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Compute source sha256 + id: hash + env: + APP: ${{ needs.resolve.outputs.app }} + VERSION: ${{ needs.resolve.outputs.version }} + run: | + URL="https://github.com/${{ github.repository }}/archive/refs/tags/${APP}-${VERSION}.tar.gz" + SHA=$(curl -sL "$URL" | sha256sum | cut -d' ' -f1) + echo "sha256=$SHA" >> "$GITHUB_OUTPUT" + + - name: Prepare PKGBUILD + env: + APP: ${{ needs.resolve.outputs.app }} + VERSION: ${{ needs.resolve.outputs.version }} + SHA256: ${{ steps.hash.outputs.sha256 }} + run: | + PKGBUILD="apps/${APP}/distribution/aur/source/PKGBUILD" + sed -i "s/^pkgver=.*/pkgver=${VERSION}/" "$PKGBUILD" + sed -i "s/^pkgrel=.*/pkgrel=1/" "$PKGBUILD" + sed -i "s/^sha256sums=.*/sha256sums=('${SHA256}')/" "$PKGBUILD" + + - name: Publish to AUR + uses: KSXGitHub/github-actions-deploy-aur@v3 + with: + pkgname: ${{ needs.resolve.outputs.app }} + pkgbuild: apps/${{ needs.resolve.outputs.app }}/distribution/aur/source/PKGBUILD + commit_username: ${{ secrets.AUR_USERNAME }} + commit_email: ${{ secrets.AUR_EMAIL }} + ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }} + + publish-bin: + needs: resolve + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Compute .deb sha256 + id: hash + env: + APP: ${{ needs.resolve.outputs.app }} + VERSION: ${{ needs.resolve.outputs.version }} + run: | + URL="https://github.com/${{ github.repository }}/releases/download/${APP}-${VERSION}/${APP}_${VERSION}_amd64.deb" + SHA=$(curl -sL "$URL" | sha256sum | cut -d' ' -f1) + echo "sha256=$SHA" >> "$GITHUB_OUTPUT" + + - name: Prepare PKGBUILD + env: + APP: ${{ needs.resolve.outputs.app }} + VERSION: ${{ needs.resolve.outputs.version }} + SHA256: ${{ steps.hash.outputs.sha256 }} + run: | + PKGBUILD="apps/${APP}/distribution/aur/bin/PKGBUILD" + sed -i "s/^pkgver=.*/pkgver=${VERSION}/" "$PKGBUILD" + sed -i "s/^pkgrel=.*/pkgrel=1/" "$PKGBUILD" + sed -i "s/^sha256sums=.*/sha256sums=('${SHA256}')/" "$PKGBUILD" + + - name: Publish to AUR + uses: KSXGitHub/github-actions-deploy-aur@v3 + with: + pkgname: ${{ needs.resolve.outputs.app }}-bin + pkgbuild: apps/${{ needs.resolve.outputs.app }}/distribution/aur/bin/PKGBUILD + commit_username: ${{ secrets.AUR_USERNAME }} + commit_email: ${{ secrets.AUR_EMAIL }} + ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }} diff --git a/apps/oneclient/distribution/aur/cli/PKGBUILD b/apps/oneclient/distribution/aur/bin/PKGBUILD similarity index 61% rename from apps/oneclient/distribution/aur/cli/PKGBUILD rename to apps/oneclient/distribution/aur/bin/PKGBUILD index 457dea05..499e9a4c 100644 --- a/apps/oneclient/distribution/aur/cli/PKGBUILD +++ b/apps/oneclient/distribution/aur/bin/PKGBUILD @@ -1,14 +1,13 @@ pkgname=oneclient-bin -pkgver=0.1.0 -pkgrel=2 +pkgver=1.0.3 +pkgrel=1 pkgdesc='Next-generation open source Minecraft launcher' url='https://polyfrost.org/projects/oneclient' arch=('x86_64') -license=('GPL3') +license=('GPL-3.0-only') -makedepends=('rust' 'pnpm') depends=( - 'openssl-1.1' 'dbus' 'freetype2' 'gtk3' 'libappindicator-gtk3' 'librsvg' 'libsoup' 'webkit2gtk' + 'openssl' 'dbus' 'gtk3' 'libayatana-appindicator' 'librsvg' 'webkit2gtk-4.1' 'libgl' 'libpulse' 'libx11' 'libxcursor' 'libxext' 'libxxf86vm' ) optdepends=( @@ -16,8 +15,8 @@ optdepends=( ) provides=('oneclient') conflicts=('oneclient') -source=("https://oneclient.polyfrost.org/versions/${pkgver}/linux/OneClient_${pkgver}_amd64.deb") -sha256sums=('') +source=("https://github.com/Polyfrost/OneLauncher/releases/download/oneclient-${pkgver}/oneclient_${pkgver}_amd64.deb") +sha256sums=('SKIP') build() { cd "$srcdir/" diff --git a/apps/oneclient/distribution/aur/gui/PKGBUILD b/apps/oneclient/distribution/aur/gui/PKGBUILD deleted file mode 100644 index 5ba85981..00000000 --- a/apps/oneclient/distribution/aur/gui/PKGBUILD +++ /dev/null @@ -1,50 +0,0 @@ -pkgname=oneclient -pkgver=0.1.0 -pkgrel=2 -pkgdesc='Next-generation open source Minecraft launcher' -url='https://polyfrost.org/projects/oneclient' -arch=('x86_64') -license=('GPL3') - -makedepends=('rust' 'pnpm') -depends=( - 'openssl-1.1' 'dbus' 'freetype2' 'gtk3' 'libappindicator-gtk3' 'librsvg' 'libsoup' 'webkit2gtk' - 'libgl' 'libpulse' 'libx11' 'libxcursor' 'libxext' 'libxxf86vm' -) -optdepends=( - 'xorg-xrandr: very legacy minecraft versions' -) -conflicts=('oneclient-bin') -source=( - "$pkgname-$pkgver.tar.gz:https://github.com/polyfrost/oneclient/archive/refs/tags/v${pkgver}.tar.gz" - "oneclient.desktop" -) -sha256sums=('') -options=('!lto') - -prepare() { - cd "oneclient-${pkgver}" - export RUSTUP_TOOLCHAIN=stable - cargo fetch --locked --target "$CARCH-unknown-linux-gnu" - pnpm install --frozen-lockfile --no-optional -} - -build() { - cd "oneclient-${pkgver}" - pnpm --filter @oneclient/gui build - export RUSTUP_TOOLCHAIN=stable - cargo build --frozen --release --all-features -} - -check() { - cd "oneclient-${pkgver}" - export RUSTUP_TOOLCHAIN=stable - cargo test --frozen --all-features -} - -package() { - install -Dm755 "$srcdir"/oneclient-"$pkgver"/target/release/oneclient_gui "$pkgdir"/usr/bin/oneclient - install -Dm644 "$srcdir"/oneclient-"$pkgver"/packages/distribution/icons/128x128.png "$pkgdir"/usr/share/icons/hicolor/128x128/apps/OneClient.png - install -Dm644 "$srcdir"/oneclient-"$pkgver"/packages/distribution/icons/icon.png "$pkgdir"/usr/share/icons/hicolor/256x256@2/apps/OneClient.png - install -Dm644 OneClient.desktop "$pkgdir"/usr/share/applications/OneClient.desktop -} diff --git a/apps/oneclient/distribution/aur/source/PKGBUILD b/apps/oneclient/distribution/aur/source/PKGBUILD new file mode 100644 index 00000000..3116a81f --- /dev/null +++ b/apps/oneclient/distribution/aur/source/PKGBUILD @@ -0,0 +1,48 @@ +pkgname=oneclient +pkgver=1.0.3 +pkgrel=1 +pkgdesc='Next-generation open source Minecraft launcher' +url='https://polyfrost.org/projects/oneclient' +arch=('x86_64') +license=('GPL-3.0-only') + +makedepends=('rust' 'pnpm' 'nodejs' 'clang' 'nasm' 'perl') +depends=( + 'openssl' 'dbus' 'gtk3' 'libayatana-appindicator' 'librsvg' 'webkit2gtk-4.1' + 'libgl' 'libpulse' 'libx11' 'libxcursor' 'libxext' 'libxxf86vm' +) +optdepends=( + 'xorg-xrandr: very legacy minecraft versions' +) +conflicts=('oneclient-bin') +source=("$pkgname-$pkgver.tar.gz::https://github.com/Polyfrost/OneLauncher/archive/refs/tags/oneclient-${pkgver}.tar.gz") +sha256sums=('SKIP') +options=('!lto') + +prepare() { + cd "OneLauncher-oneclient-${pkgver}" + export RUSTUP_TOOLCHAIN=stable + cargo fetch --locked --target "$CARCH-unknown-linux-gnu" + pnpm install --frozen-lockfile +} + +build() { + cd "OneLauncher-oneclient-${pkgver}" + export RUSTUP_TOOLCHAIN=stable + pnpm --filter @oneclient/frontend build + cargo build --frozen --release -p oneclient_gui +} + +check() { + cd "OneLauncher-oneclient-${pkgver}" + export RUSTUP_TOOLCHAIN=stable + cargo test --frozen -p oneclient_gui +} + +package() { + cd "OneLauncher-oneclient-${pkgver}" + install -Dm755 "target/release/oneclient_gui" "$pkgdir/usr/bin/oneclient" + install -Dm644 "apps/oneclient/distribution/icons/128x128.png" "$pkgdir/usr/share/icons/hicolor/128x128/apps/org.polyfrost.oneclient.png" + install -Dm644 "apps/oneclient/distribution/icons/512x512.png" "$pkgdir/usr/share/icons/hicolor/512x512/apps/org.polyfrost.oneclient.png" + install -Dm644 "apps/oneclient/distribution/flatpak/org.polyfrost.oneclient" "$pkgdir/usr/share/applications/org.polyfrost.oneclient.desktop" +} diff --git a/apps/onelauncher/distribution/aur/cli/PKGBUILD b/apps/onelauncher/distribution/aur/bin/PKGBUILD similarity index 55% rename from apps/onelauncher/distribution/aur/cli/PKGBUILD rename to apps/onelauncher/distribution/aur/bin/PKGBUILD index 281b42e3..b7088bdf 100644 --- a/apps/onelauncher/distribution/aur/cli/PKGBUILD +++ b/apps/onelauncher/distribution/aur/bin/PKGBUILD @@ -1,14 +1,13 @@ pkgname=onelauncher-bin -pkgver=0.1.0 -pkgrel=2 +pkgver=1.0.3 +pkgrel=1 pkgdesc='Next-generation open source Minecraft launcher' -url='https://polyfrost.org/launcher' +url='https://polyfrost.org/projects/onelauncher' arch=('x86_64') -license=('GPL3') +license=('GPL-3.0-only') -makedepends=('rust' 'pnpm') depends=( - 'openssl-1.1' 'dbus' 'freetype2' 'gtk3' 'libappindicator-gtk3' 'librsvg' 'libsoup' 'webkit2gtk' + 'openssl' 'dbus' 'gtk3' 'libayatana-appindicator' 'librsvg' 'webkit2gtk-4.1' 'libgl' 'libpulse' 'libx11' 'libxcursor' 'libxext' 'libxxf86vm' ) optdepends=( @@ -16,8 +15,8 @@ optdepends=( ) provides=('onelauncher') conflicts=('onelauncher') -source=("https://launcher.polyfrost.org/versions/${pkgver}/linux/onelauncher_${pkgver}_amd64.deb") -sha256sums=('') +source=("https://github.com/Polyfrost/OneLauncher/releases/download/onelauncher-${pkgver}/onelauncher_${pkgver}_amd64.deb") +sha256sums=('SKIP') build() { cd "$srcdir/" diff --git a/apps/onelauncher/distribution/aur/gui/PKGBUILD b/apps/onelauncher/distribution/aur/gui/PKGBUILD deleted file mode 100644 index d1975f4e..00000000 --- a/apps/onelauncher/distribution/aur/gui/PKGBUILD +++ /dev/null @@ -1,50 +0,0 @@ -pkgname=onelauncher -pkgver=0.1.0 -pkgrel=2 -pkgdesc='Next-generation open source Minecraft launcher' -url='https://polyfrost.org/launcher' -arch=('x86_64') -license=('GPL3') - -makedepends=('rust' 'pnpm') -depends=( - 'openssl-1.1' 'dbus' 'freetype2' 'gtk3' 'libappindicator-gtk3' 'librsvg' 'libsoup' 'webkit2gtk' - 'libgl' 'libpulse' 'libx11' 'libxcursor' 'libxext' 'libxxf86vm' -) -optdepends=( - 'xorg-xrandr: very legacy minecraft versions' -) -conflicts=('onelauncher-bin') -source=( - "$pkgname-$pkgver.tar.gz:https://github.com/polyfrost/onelauncher/archive/refs/tags/v${pkgver}.tar.gz" - "onelauncher.desktop" -) -sha256sums=('') -options=('!lto') - -prepare() { - cd "onelauncher-${pkgver}" - export RUSTUP_TOOLCHAIN=stable - cargo fetch --locked --target "$CARCH-unknown-linux-gnu" - pnpm install --frozen-lockfile --no-optional -} - -build() { - cd "onelauncher-${pkgver}" - pnpm --filter @onelauncher/gui build - export RUSTUP_TOOLCHAIN=stable - cargo build --frozen --release --all-features -} - -check() { - cd "onelauncher-${pkgver}" - export RUSTUP_TOOLCHAIN=stable - cargo test --frozen --all-features -} - -package() { - install -Dm755 "$srcdir"/onelauncher-"$pkgver"/target/release/onelauncher_gui "$pkgdir"/usr/bin/onelauncher - install -Dm644 "$srcdir"/onelauncher-"$pkgver"/packages/distribution/icons/128x128.png "$pkgdir"/usr/share/icons/hicolor/128x128/apps/OneLauncher.png - install -Dm644 "$srcdir"/onelauncher-"$pkgver"/packages/distribution/icons/icon.png "$pkgdir"/usr/share/icons/hicolor/256x256@2/apps/OneLauncher.png - install -Dm644 OneLauncher.desktop "$pkgdir"/usr/share/applications/OneLauncher.desktop -} diff --git a/apps/onelauncher/distribution/aur/source/PKGBUILD b/apps/onelauncher/distribution/aur/source/PKGBUILD new file mode 100644 index 00000000..3f1748f3 --- /dev/null +++ b/apps/onelauncher/distribution/aur/source/PKGBUILD @@ -0,0 +1,48 @@ +pkgname=onelauncher +pkgver=1.0.3 +pkgrel=1 +pkgdesc='Next-generation open source Minecraft launcher' +url='https://polyfrost.org/projects/onelauncher' +arch=('x86_64') +license=('GPL-3.0-only') + +makedepends=('rust' 'pnpm' 'nodejs' 'clang' 'nasm' 'perl') +depends=( + 'openssl' 'dbus' 'gtk3' 'libayatana-appindicator' 'librsvg' 'webkit2gtk-4.1' + 'libgl' 'libpulse' 'libx11' 'libxcursor' 'libxext' 'libxxf86vm' +) +optdepends=( + 'xorg-xrandr: very legacy minecraft versions' +) +conflicts=('onelauncher-bin') +source=("$pkgname-$pkgver.tar.gz::https://github.com/Polyfrost/OneLauncher/archive/refs/tags/onelauncher-${pkgver}.tar.gz") +sha256sums=('SKIP') +options=('!lto') + +prepare() { + cd "OneLauncher-onelauncher-${pkgver}" + export RUSTUP_TOOLCHAIN=stable + cargo fetch --locked --target "$CARCH-unknown-linux-gnu" + pnpm install --frozen-lockfile +} + +build() { + cd "OneLauncher-onelauncher-${pkgver}" + export RUSTUP_TOOLCHAIN=stable + pnpm --filter @onelauncher/frontend build + cargo build --frozen --release -p onelauncher_gui +} + +check() { + cd "OneLauncher-onelauncher-${pkgver}" + export RUSTUP_TOOLCHAIN=stable + cargo test --frozen -p onelauncher_gui +} + +package() { + cd "OneLauncher-onelauncher-${pkgver}" + install -Dm755 "target/release/onelauncher_gui" "$pkgdir/usr/bin/onelauncher" + install -Dm644 "apps/onelauncher/distribution/icons/128x128.png" "$pkgdir/usr/share/icons/hicolor/128x128/apps/org.polyfrost.launcher.png" + install -Dm644 "apps/onelauncher/distribution/icons/512x512.png" "$pkgdir/usr/share/icons/hicolor/512x512/apps/org.polyfrost.launcher.png" + install -Dm644 "apps/onelauncher/distribution/flatpak/org.polyfrost.launcher.desktop" "$pkgdir/usr/share/applications/org.polyfrost.launcher.desktop" +}