diff --git a/.ci/android/build.sh b/.ci/android/build.sh index edd65d9ae4..8e2d904986 100755 --- a/.ci/android/build.sh +++ b/.ci/android/build.sh @@ -5,10 +5,10 @@ export NDK_CCACHE=$(which ccache) -# keystore & pass are stored locally -export ANDROID_KEYSTORE_FILE=~/android.keystore -export ANDROID_KEYSTORE_PASS=`cat ~/android.pass` -export ANDROID_KEY_ALIAS=`cat ~/android.alias` +if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then + export ANDROID_KEYSTORE_FILE="${GITHUB_WORKSPACE}/ks.jks" + base64 --decode <<< "${ANDROID_KEYSTORE_B64}" > "${ANDROID_KEYSTORE_FILE}" +fi cd src/android chmod +x ./gradlew @@ -17,3 +17,7 @@ chmod +x ./gradlew ./gradlew bundleRelease ccache -s -v + +if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then + rm "${ANDROID_KEYSTORE_FILE}" +fi diff --git a/.ci/linux/build.sh b/.ci/linux/build.sh index 689d11c4c3..b475ff6358 100755 --- a/.ci/linux/build.sh +++ b/.ci/linux/build.sh @@ -14,16 +14,24 @@ if [ "$ARCH" = 'x86_64' ]; then echo "Making x86-64 generic build of eden" ARCH_FLAGS="-march=x86-64 -mtune=generic -O3" fi + + if [ "$1" != '' ]; then + shift + fi else echo "Making aarch64 build of eden" ARCH_FLAGS="-march=armv8-a -mtune=generic -O3" fi -NPROC="$2" + +NPROC="$1" if [ -z "$NPROC" ]; then NPROC="$(nproc)" +else + shift fi + if [ "$TARGET" = "appimage" ]; then export EXTRA_CMAKE_FLAGS=(-DCMAKE_INSTALL_PREFIX=/usr -DYUZU_ROOM=ON -DYUZU_ROOM_STANDALONE=OFF -DYUZU_CMD=OFF) # Bundle required QT wayland libraries @@ -34,10 +42,12 @@ else export EXTRA_CMAKE_FLAGS=(-DYUZU_USE_PRECOMPILED_HEADERS=OFF) fi -if [ "$RELEASE" == "1" ]; then +if [ "$DEVEL" != "true" ]; then export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" -DENABLE_QT_UPDATE_CHECKER=ON) fi +export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" $@) + mkdir -p build && cd build cmake .. -G Ninja \ -DCMAKE_BUILD_TYPE=Release \ diff --git a/.ci/linux/package.sh b/.ci/linux/package.sh index bbf9c29fb1..8fd235a2b7 100755 --- a/.ci/linux/package.sh +++ b/.ci/linux/package.sh @@ -1,12 +1,9 @@ -#!/bin/sh +#!/bin/sh -ex # SPDX-FileCopyrightText: 2025 eden Emulator Project # SPDX-License-Identifier: GPL-3.0-or-later -# TODO: create a lighter version based on pflyly's script - # This script assumes you're in the source directory -set -ex export APPIMAGE_EXTRACT_AND_RUN=1 export BASE_ARCH="$(uname -m)" @@ -37,25 +34,16 @@ VERSION="$(echo "$EDEN_TAG")" mkdir -p ./AppDir cd ./AppDir -cat > eden.desktop << EOL -[Desktop Entry] -Type=Application -Name=Eden -Icon=eden -StartupWMClass=eden -Exec=eden -Categories=Game;Emulator; -EOL +cp ../dist/org.eden_emu.eden.desktop . +cp ../dist/org.eden_emu.eden.svg . -cp ../dist/eden.svg ./eden.svg - -ln -sf ./eden.svg ./.DirIcon +ln -sf ./org.eden_emu.eden.svg ./.DirIcon # TODO(crueter): Nightly -# if [ "$DEVEL" = 'true' ]; then -# sed -i 's|Name=Eden|Name=Eden Nightly|' ./eden.desktop -# UPINFO="$(echo "$UPINFO" | sed 's|latest|nightly|')" -# fi +if [ "$DEVEL" = 'true' ]; then + sed -i 's|Name=Eden|Name=Eden Nightly|' ./org.eden_emu.eden.desktop + UPINFO="$(echo "$UPINFO" | sed 's|latest|nightly|')" +fi UPINFO='gh-releases-zsync|eden-emulator|Releases|latest|*.AppImage.zsync' @@ -68,6 +56,11 @@ then fi # Bundle all libs + +# temp workaround for arch being silly +mkdir -p share/X11 +cp -r /usr/share/X11/xkb share/X11 + wget --retry-connrefused --tries=30 "$LIB4BN" -O ./lib4bin chmod +x ./lib4bin xvfb-run -a -- ./lib4bin -p -v -e -s -k \ diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 51fd616833..9358f7d0fb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,8 +17,10 @@ jobs: - uses: actions/checkout@v4 with: submodules: recursive + - name: Pack run: ./.ci/source.sh + - name: Upload uses: forgejo/upload-artifact@v4 with: @@ -98,15 +100,15 @@ jobs: fetch-tags: true - name: Build - run: TARGET=appimage ./.ci/linux/build.sh v3 8 + run: TARGET=appimage DEVEL=true ./.ci/linux/build.sh v3 8 - name: Package AppImage - run: ./.ci/linux/package.sh v3 &> /dev/null + run: DEVEL=true ./.ci/linux/package.sh v3 &> /dev/null - name: Upload Linux artifacts uses: forgejo/upload-artifact@v4 with: - retention-days: 2 + retention-days: 3 name: linux.zip path: ./*.AppImage @@ -135,7 +137,11 @@ jobs: echo $GIT_TAG_NAME - name: Build - run: ANDROID_HOME=/opt/android-sdk ./.ci/android/build.sh + run: ANDROID_HOME=/home/runner/sdk ./.ci/android/build.sh + env: + ANDROID_KEYSTORE_B64: ${{ secrets.ANDROID_KEYSTORE_B64 }} + ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }} + ANDROID_KEYSTORE_PASS: ${{ secrets.ANDROID_KEYSTORE_PASS }} - name: Package Android artifacts run: ./.ci/android/package.sh diff --git a/.github/workflows/trigger_release.yml b/.github/workflows/trigger_release.yml index 48f799818c..716be389fc 100644 --- a/.github/workflows/trigger_release.yml +++ b/.github/workflows/trigger_release.yml @@ -132,7 +132,11 @@ jobs: echo $GIT_TAG_NAME - name: Build - run: ANDROID_HOME=/opt/android-sdk ./.ci/android/build.sh + run: ANDROID_HOME=/home/runner/sdk ./.ci/android/build.sh + env: + ANDROID_KEYSTORE_B64: ${{ secrets.ANDROID_KEYSTORE_B64 }} + ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }} + ANDROID_KEYSTORE_PASS: ${{ secrets.ANDROID_KEYSTORE_PASS }} - name: Package Android artifacts run: ./.ci/android/package.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index 7f9edb4952..beb254354b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -655,15 +655,14 @@ endif() # https://specifications.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html # https://www.freedesktop.org/software/appstream/docs/ if(ENABLE_QT AND UNIX AND NOT APPLE) - install(FILES "dist/eden.desktop" + install(FILES "dist/org.eden_emu.eden.desktop" DESTINATION "share/applications") - install(FILES "dist/eden.svg" - DESTINATION "share/icons/hicolor/scalable/apps" - RENAME "eden.svg") + install(FILES "dist/org.eden_emu.eden.svg" + DESTINATION "share/icons/hicolor/scalable/apps") # TODO: these files need to be updated. - install(FILES "dist/eden.xml" + install(FILES "dist/org.eden_emu.eden.xml" DESTINATION "share/mime/packages") - install(FILES "dist/eden.metainfo.xml" + install(FILES "dist/org.eden_emu.eden.metainfo.xml" DESTINATION "share/metainfo") endif() diff --git a/dist/eden.desktop b/dist/org.eden_emu.eden.desktop similarity index 77% rename from dist/eden.desktop rename to dist/org.eden_emu.eden.desktop index c23f95b136..e8db2a297e 100644 --- a/dist/eden.desktop +++ b/dist/org.eden_emu.eden.desktop @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2025 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + # SPDX-FileCopyrightText: 2018 yuzu Emulator Project # SPDX-License-Identifier: GPL-2.0-or-later @@ -7,7 +10,7 @@ Type=Application Name=eden GenericName=Switch Emulator Comment=Nintendo Switch video game console emulator -Icon=eden +Icon=org.eden_emu.eden TryExec=eden Exec=eden %f Categories=Game;Emulator;Qt; diff --git a/dist/eden.metainfo.xml b/dist/org.eden_emu.eden.metainfo.xml similarity index 100% rename from dist/eden.metainfo.xml rename to dist/org.eden_emu.eden.metainfo.xml diff --git a/dist/eden.svg b/dist/org.eden_emu.eden.svg similarity index 100% rename from dist/eden.svg rename to dist/org.eden_emu.eden.svg diff --git a/dist/eden.xml b/dist/org.eden_emu.eden.xml similarity index 100% rename from dist/eden.xml rename to dist/org.eden_emu.eden.xml diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index 9b2cdddc6c..b5db06ae9d 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -5556,7 +5556,7 @@ int main(int argc, char* argv[]) { // Fix the Wayland appId. This needs to match the name of the .desktop file without the .desktop // suffix. - QGuiApplication::setDesktopFileName(QStringLiteral("eden")); + QGuiApplication::setDesktopFileName(QStringLiteral("org.eden_emu.eden")); #endif SetHighDPIAttributes();