From faf21b830bc36217472b5218fec8e63e8faf15dd Mon Sep 17 00:00:00 2001 From: Fazri Gading Date: Tue, 27 Jan 2026 02:29:35 +0800 Subject: [PATCH] Merge pull request #196 from amiayweb/develop Release v2.1.1: fix EPERM error and add ArchLinux package (.pkg.tar.zst) --- .github/workflows/release.yml | 154 +++++++++++++++++----------------- PKGBUILD | 33 ++++---- PKGBUILD-git | 34 ++++++++ README.md | 61 +++++++++----- package.json | 15 ++-- 5 files changed, 170 insertions(+), 127 deletions(-) create mode 100644 PKGBUILD-git diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1e2845b..ee466e9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,80 +9,6 @@ on: workflow_dispatch: jobs: - build-arch: - runs-on: ubuntu-latest - - container: - image: archlinux:latest - - steps: - - name: Install base packages - run: | - pacman -Syu --noconfirm - pacman -S --noconfirm \ - base-devel \ - git \ - nodejs \ - npm \ - rpm-tools \ - libxcrypt-compat - - - name: Create build user - run: | - useradd -m builder - echo "builder ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers - - - name: Checkout repository - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Fix permissions - run: chown -R builder:builder . - - - name: Build Arch Package - run: | - sudo -u builder bash << 'EOF' - set -e - makepkg -s --noconfirm - EOF - - uses: actions/upload-artifact@v4 - with: - name: arch-package - path: | - *.pkg.tar.zst - *.src.tar.zst - .SRCINFO - - build-linux: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Install build dependencies - run: | - sudo apt-get update - sudo apt-get install -y libarchive-tools - - - uses: actions/setup-node@v4 - with: - node-version: '22' - cache: 'npm' - - run: npm ci - - - name: Build Linux Packages - run: | - npx electron-builder --linux --x64 --arm64 --publish never - - uses: actions/upload-artifact@v4 - with: - name: linux-builds - path: | - dist/*.AppImage - dist/*.AppImage.blockmap - dist/*.deb - dist/*.rpm - dist/*.pacman - dist/latest-linux.yml - build-windows: runs-on: windows-latest steps: @@ -123,8 +49,82 @@ jobs: dist/*.zip dist/latest-mac.yml + build-linux: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Install build dependencies + run: | + sudo apt-get update + sudo apt-get install -y libarchive-tools + + - uses: actions/setup-node@v4 + with: + node-version: '22' + cache: 'npm' + - run: npm ci + + - name: Build Linux Packages + run: | + npx electron-builder --linux AppImage deb rpm --x64 --arm64 --publish never + - uses: actions/upload-artifact@v4 + with: + name: linux-builds + path: | + dist/*.AppImage + dist/*.AppImage.blockmap + dist/*.deb + dist/*.rpm + dist/latest-linux.yml + + build-arch: + runs-on: ubuntu-latest + container: + image: archlinux:latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install base packages + run: | + pacman -Syu --noconfirm + pacman -S --noconfirm \ + base-devel \ + git \ + nodejs \ + npm \ + rpm-tools \ + libxcrypt-compat + + - name: Create build user + run: | + useradd -m builder + echo "builder ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers + + - name: Fix Permissions + run: chown -R builder:builder . + + - name: Build Arch Package + run: | + sudo -u builder bash << 'EOF' + set -e + makepkg --printsrcinfo > .SRCINFO + makepkg -s --noconfirm + EOF + + - name: Upload Arch Package + uses: actions/upload-artifact@v4 + with: + name: arch-package + path: | + *.pkg.tar.zst + *.src.tar.zst + .SRCINFO + release: - needs: [build-linux, build-windows, build-macos] + needs: [build-windows, build-macos, build-linux, build-arch] runs-on: ubuntu-latest if: | startsWith(github.ref, 'refs/tags/v') || @@ -154,13 +154,15 @@ jobs: - name: Create Release uses: softprops/action-gh-release@v2 with: + tag_name: ${{ github.ref_name }} # If it's a tag, use the tag. - tag_name: ${{ github.ref_type == 'tag' && github.ref_name || format('v{0}.r{1}', steps.pkg_version.outputs.VERSION, github.run_number) }} + # tag_name: ${{ github.ref_type == 'tag' && github.ref_name || format('v{0}.r{1}', steps.pkg_version.outputs.VERSION, github.run_number) }} # If it's the 'release' branch, use 'v2.0.2-beta.r42' # name: ${{ github.ref_type == 'tag' && github.ref_name || format('v{0}-beta.r{1}', steps.pkg_version.outputs.VERSION, github.run_number) }} files: | artifacts/arch-package/*.pkg.tar.zst artifacts/arch-package/*.src.tar.zst + artifacts/arch-package/.SRCINFO artifacts/linux-builds/**/* artifacts/windows-builds/**/* artifacts/macos-builds/**/* diff --git a/PKGBUILD b/PKGBUILD index 12f6707..1bcb516 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,33 +1,28 @@ # Maintainer: Terromur -pkgname=Hytale-F2P-git -_pkgname=Hytale-F2P -pkgver=2.0.12.r150.gb62ffc1 +# Maintainer: Fazri Gading +# This PKGBUILD is for Github Releases +pkgname=Hytale-F2P +pkgver=2.1.1 pkgrel=1 pkgdesc="Hytale-F2P - unofficial Hytale Launcher for free to play with multiplayer support" arch=('x86_64') url="https://github.com/amiayweb/Hytale-F2P" license=('custom') -makedepends=('npm' 'git' 'rpm-tools' 'libxcrypt-compat') -source=("git+$url.git" "Hytale-F2P.desktop") +depends=('gtk3' 'nss' 'libxcrypt-compat') +makedepends=('npm') +source=("$url/archive/v$pkgver.tar.gz" "Hytale-F2P.desktop") sha256sums=('SKIP' '46488fada4775d9976d7b7b62f8d1f1f8d9a9a9d8f8aa9af4f2e2153019f6a30') -pkgver() { - cd "$_pkgname" - version=$(git describe --abbrev=0 --tags --match "v[0-9]*") - commits=$(git rev-list --count HEAD) - hash=$(git rev-parse --short HEAD) - printf "%s.r%s.g%s" "${version#v}" "$commits" "$hash" -} - build() { - cd "$_pkgname" + cd "$_pkgname-$pkgver" npm ci - npm run build:linux + npm run build:arch } package() { - mkdir -p "$pkgdir/opt/$_pkgname" - cp -r "$_pkgname/dist/linux-unpacked/"* "$pkgdir/opt/$_pkgname" - install -Dm644 "$_pkgname.desktop" "$pkgdir/usr/share/applications/$_pkgname.desktop" - install -Dm644 "$_pkgname/GUI/icon.png" "$pkgdir/usr/share/icons/hicolor/256x256/apps/$_pkgname.png" + cd "$_pkgname-$pkgver" + install -d "$pkgdir/opt/$_pkgname" + cp -r dist/linux-unpacked/* "$pkgdir/opt/$_pkgname" + install -Dm644 "$srcdir/$_pkgname.desktop" "$pkgdir/usr/share/applications/$_pkgname.desktop" + install -Dm644 GUI/icon.png "$pkgdir/usr/share/icons/hicolor/256x256/apps/$_pkgname.png" } diff --git a/PKGBUILD-git b/PKGBUILD-git new file mode 100644 index 0000000..d3e690d --- /dev/null +++ b/PKGBUILD-git @@ -0,0 +1,34 @@ +# Maintainer: Terromur +# Maintainer: Fazri Gading +pkgname=Hytale-F2P-git +_pkgname=Hytale-F2P +pkgver=0 +pkgrel=1 +pkgdesc="Hytale-F2P - Unofficial Hytale Launcher for free to play with multiplayer support (rolling git build)" +arch=('x86_64') +url="https://github.com/amiayweb/Hytale-F2P" +license=('custom') +depends=('gtk3' 'nss' 'libxcrypt-compat') +makedepends=('git' 'npm') +source=("git+$url.git" "$_pkgname.desktop") +sha256sums=('SKIP' '46488fada4775d9976d7b7b62f8d1f1f8d9a9a9d8f8aa9af4f2e2153019f6a30') + +pkgver() { + cd "$srcdir/$_pkgname" + git describe --tags --long | sed 's/^v//;s/-/.r/;s/-/./' +} + +build() { + cd "$srcdir/$_pkgname" + npm ci + npm run build:arch +} + +package() { + cd "$srcdir/$_pkgname" + install -d "$pkgdir/opt/$_pkgname" + cp -r "$_pkgname/dist/linux-unpacked/"* "$pkgdir/opt/$_pkgname" + + install -Dm644 "$srcdir/$_pkgname.desktop" "$pkgdir/usr/share/applications/$_pkgname.desktop" + install -Dm644 GUI/icon.png "$pkgdir/usr/share/icons/hicolor/256x256/apps/$_pkgname.png" +} diff --git a/README.md b/README.md index ac43863..b35c9e4 100644 --- a/README.md +++ b/README.md @@ -120,7 +120,7 @@ Windows 10/11 (64-bit; X64/ARM64) | Linux (x64/ARM64) | macOS (Apple Silicon only)
- ⚠️ Note: macOS Intel (x86) is not yet supported 1 + ⚠️ Note: macOS Intel (x86) is not yet supported 1 @@ -131,7 +131,7 @@ 🧠 RAM - 8GB (Dedicated) / 12GB (iGPU) + 8GB (dGPU)2 /
12GB (iGPU)3 16 GB 32 GB @@ -156,7 +156,9 @@ -

1 Hytale did not provide game files for macOS Intel, yet.

+

Note 1 Hytale did not provide game files for macOS Intel, yet.

+

Note 2 Using Discrete/Dedicated GPU (dGPU) must have 8 GB RAM minimum.

+

Note 3 Using Integrated GPU (dGPU) must have 12 GB RAM minimum.

@@ -209,24 +211,37 @@ 3. **Permissions & Execution:** * **AppImage:** Make the file executable and run it: ```bash - chmod +x Hytale-F2P-Launcher.AppImage - ./Hytale-F2P-Launcher.AppImage + chmod +x hytale-f2p-launcher.AppImage + ./hytale-f2p-launcher.AppImage ``` - * **Fedora (dnf):** Install the RPM: + * **Ubuntu/Debian-based or Fedora/RHEL-based:** Install the DEB/RPM: ```bash - sudo dnf install ./Hytale-F2P-Launcher.rpm - ``` - * **Debian/Ubuntu (apt):** Install the DEB: - ```bash - sudo apt install ./Hytale-F2P-Launcher.deb + # Fedora/RHEL-based + sudo dnf install hytale-f2p-launcher.rpm + # Debian/Ubuntu + sudo apt install -y libasound2 libpng16-16 libpng-dev libicu76 + sudo dpkg -i hytale-f2p-launcher.deb ``` * **Arch Linux (pacman):** Install the package using: ```bash - sudo pacman -U /path/to/Hytale-F2P-Launcher.pkg.tar.zst + # Stable Build + sudo pacman -U hytale-f2p-launcher.pkg.tar.zst + # Development Build + yay -S hytale-f2p-git # or + paru -S hytale-f2p-git + # Manual Build + git clone https://aur.archlinux.org/hytale-f2p-git.git + cd hytale-f2p-git + makepkg -si ``` + +> [!NOTE] +> Make sure to adjust the filename correctly with the version and the architecture type. TIP: Use `cd` command to the package location. + 4. **Troubleshooting:** * **FUSE:** If the AppImage fails to launch on newer distributions, ensure `libfuse2` (or `fuse2` on Arch/Fedora) is installed. * **Desktop Entry:** After installing via `.rpm`, `.deb`, or `.pkg.tar.zst`, the launcher should automatically appear in your App Library/Grid. + * Missing libxcrypt.so.1: Install `libxcrypt-compat` using your package manager --- @@ -286,26 +301,26 @@ The `.zip` version is useful for users who prefer a portable installation or nee ## 🛠️ Building from Source -See [BUILD.md](BUILD.md) for comprehensive build instructions. +See [BUILD.md](docs/BUILD.md) for comprehensive build instructions. --- ## 📋 Changelog -### 🆕 v2.1.0 - -- 🚨 **Auto-Retry Downloads and Auto-Patch Files** — -- ⚡ **Hardware Acceleration** — -- 👨‍💻 **In-App Logging** — -- 🛠️ **Repair Button** — Y -- 🔎 **Browse CurseForge Mods** — Browsing mods now easier with our dedicated CurseForge API Key. -- 🌎 **Fixes and Release New Translation** — Fixed 🇪🇸 🇧🇷 and added more translation for current build. Turkish 🇹🇷 language now added. - - +### 🆕 v2.1.1 +- 🛠️ **Fix EPERM** Issue +- 🅰️ **Adds Better Arch Build** +-
Click here to see older Changelogs +### 🆕 v2.1.0 +- 🚨 **Auto-Retry Downloads and Auto-Patch Files** — +- ⚡ **Hardware Acceleration** — +- 🔎 **Browse CurseForge Mods** — Browsing mods now easier with our dedicated CurseForge API Key. +- 🌎 **Fixes and Release New Translation** — Fixed 🇪🇸 🇧🇷 and added more translation for current build. Turkish 🇹🇷 language now added. + ### 🆕 v2.0.2b *(Minor Update: Performance & Utilities)* - 🌎 **Language Translation** — A big welcome for Spanish 🇪🇸 and Portuguese (Brazil) 🇧🇷 players! **Language setting can be found in the bottom part of Settings pane.** - 💻 **Laptop/Hybrid GPU Performance Issue Fix** — Added automatic GPU detection system and options to choose which GPU will be used for the game, *specifically for Linux users*. diff --git a/package.json b/package.json index 5937ba6..83a319b 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,11 @@ "build:win": "electron-builder --win", "build:linux": "electron-builder --linux", "build:mac": "electron-builder --mac", - "build:all": "electron-builder --win --linux --mac" + "build:all": "electron-builder --win --linux --mac", + "build:arch": "electron-builder --linux dir", + "build:appimage": "electron-builder --linux AppImage --publish never", + "build:deb": "electron-builder --linux deb --publish never", + "build:rpm": "electron-builder --linux rpm --publish never" }, "keywords": [ "hytale", @@ -82,7 +86,7 @@ ] } ], - "icon": "icon.ico" + "icon": "build/icon.ico" }, "linux": { "target": [ @@ -106,13 +110,6 @@ "x64", "arm64" ] - }, - { - "target": "pacman", - "arch": [ - "x64", - "arm64" - ] } ], "icon": "build/icon.png",