fix appimage
Signed-off-by: swurl <swurl@swurl.xyz>
This commit is contained in:
parent
053d68deef
commit
08d320cc27
16 changed files with 400 additions and 505 deletions
259
.ci/eden.dwfsprof
Normal file
259
.ci/eden.dwfsprof
Normal file
|
@ -0,0 +1,259 @@
|
||||||
|
AppRun
|
||||||
|
org.eden_emu.eden.desktop
|
||||||
|
bin/eden
|
||||||
|
shared/lib/lib.path
|
||||||
|
shared/lib/ld-linux-x86-64.so.2
|
||||||
|
shared/lib/libQt6Widgets.so.6.9.0
|
||||||
|
shared/lib/libQt6Network.so.6.9.0
|
||||||
|
shared/lib/libusb-1.0.so.0.5.0
|
||||||
|
shared/lib/libenet.so.7.0.6
|
||||||
|
shared/lib/libbrotlicommon.so.1.1.0
|
||||||
|
shared/lib/libbrotlienc.so.1.1.0
|
||||||
|
shared/lib/libbrotlidec.so.1.1.0
|
||||||
|
shared/lib/libz.so.1.3.1
|
||||||
|
shared/lib/libssl.so.3
|
||||||
|
shared/lib/libcrypto.so.3
|
||||||
|
shared/lib/libavcodec.so.61.19.100
|
||||||
|
shared/lib/libavdevice.so.61.3.100
|
||||||
|
shared/lib/libavfilter.so.10.4.100
|
||||||
|
shared/lib/libavformat.so.61.7.100
|
||||||
|
shared/lib/libavutil.so.59.39.100
|
||||||
|
shared/lib/libswresample.so.5.3.100
|
||||||
|
shared/lib/libswscale.so.8.3.100
|
||||||
|
shared/lib/libva.so.2.2200.0
|
||||||
|
shared/lib/libboost_context.so.1.87.0
|
||||||
|
shared/lib/liblz4.so.1.10.0
|
||||||
|
shared/lib/libzstd.so.1.5.7
|
||||||
|
shared/lib/libSDL2-2.0.so.0.3200.54
|
||||||
|
shared/lib/libfmt.so.11.1.4
|
||||||
|
shared/lib/libopus.so.0.10.1
|
||||||
|
shared/lib/libQt6Gui.so.6.9.0
|
||||||
|
shared/lib/libQt6DBus.so.6.9.0
|
||||||
|
shared/lib/libGLX.so.0.0.0
|
||||||
|
shared/lib/libOpenGL.so.0.0.0
|
||||||
|
shared/lib/libQt6Core.so.6.9.0
|
||||||
|
shared/lib/libstdc++.so.6.0.33
|
||||||
|
shared/lib/libm.so.6
|
||||||
|
shared/lib/libgcc_s.so.1
|
||||||
|
shared/lib/libc.so.6
|
||||||
|
shared/lib/libgssapi_krb5.so.2.2
|
||||||
|
shared/lib/libproxy.so.0.5.9
|
||||||
|
shared/lib/libudev.so.1.7.10
|
||||||
|
shared/lib/libvpx.so.9.1.0
|
||||||
|
shared/lib/libwebpmux.so.3.1.1
|
||||||
|
shared/lib/liblzma.so.5.8.1
|
||||||
|
shared/lib/libdav1d.so.7.0.0
|
||||||
|
shared/lib/libopencore-amrwb.so.0.0.5
|
||||||
|
shared/lib/librsvg-2.so.2.60.0
|
||||||
|
shared/lib/libcairo.so.2.11804.4
|
||||||
|
shared/lib/libgobject-2.0.so.0.8400.1
|
||||||
|
shared/lib/libglib-2.0.so.0.8400.1
|
||||||
|
shared/lib/libsnappy.so.1.2.2
|
||||||
|
shared/lib/libaom.so.3.12.0
|
||||||
|
shared/lib/libgsm.so.1.0.22
|
||||||
|
shared/lib/libjxl.so.0.11.1
|
||||||
|
shared/lib/libjxl_threads.so.0.11.1
|
||||||
|
shared/lib/libmp3lame.so.0.0.0
|
||||||
|
shared/lib/libopencore-amrnb.so.0.0.5
|
||||||
|
shared/lib/libopenjp2.so.2.5.3
|
||||||
|
shared/lib/libspeex.so.1.5.2
|
||||||
|
shared/lib/libtheoraenc.so.1.1.2
|
||||||
|
shared/lib/libtheoradec.so.1.1.4
|
||||||
|
shared/lib/libvorbis.so.0.4.9
|
||||||
|
shared/lib/libvorbisenc.so.2.0.12
|
||||||
|
shared/lib/libwebp.so.7.1.10
|
||||||
|
shared/lib/libx264.so.164
|
||||||
|
shared/lib/libxvidcore.so.4.3
|
||||||
|
shared/lib/libvpl.so.2.14
|
||||||
|
shared/lib/libraw1394.so.11.1.0
|
||||||
|
shared/lib/libavc1394.so.0.3.0
|
||||||
|
shared/lib/librom1394.so.0.3.0
|
||||||
|
shared/lib/libiec61883.so.0.1.1
|
||||||
|
shared/lib/libjack.so.0.1.0
|
||||||
|
shared/lib/libdrm.so.2.124.0
|
||||||
|
shared/lib/libxcb.so.1.1.0
|
||||||
|
shared/lib/libxcb-shm.so.0.0.0
|
||||||
|
shared/lib/libxcb-shape.so.0.0.0
|
||||||
|
shared/lib/libxcb-xfixes.so.0.0.0
|
||||||
|
shared/lib/libasound.so.2.0.0
|
||||||
|
shared/lib/libGL.so.1.7.0
|
||||||
|
shared/lib/libpulse.so.0.24.3
|
||||||
|
shared/lib/libv4l2.so.0.0.0
|
||||||
|
shared/lib/libXv.so.1.0.0
|
||||||
|
shared/lib/libX11.so.6.4.0
|
||||||
|
shared/lib/libXext.so.6.4.0
|
||||||
|
shared/lib/libpostproc.so.58.3.100
|
||||||
|
shared/lib/libbs2b.so.0.0.0
|
||||||
|
shared/lib/librubberband.so.3.0.0
|
||||||
|
shared/lib/libharfbuzz.so.0.61101.0
|
||||||
|
shared/lib/libfribidi.so.0.4.0
|
||||||
|
shared/lib/libplacebo.so.349
|
||||||
|
shared/lib/libvmaf.so.3.0.0
|
||||||
|
shared/lib/libass.so.9.3.1
|
||||||
|
shared/lib/libvidstab.so.1.2
|
||||||
|
shared/lib/libzmq.so.5.2.5
|
||||||
|
shared/lib/libzimg.so.2.0.0
|
||||||
|
shared/lib/libglslang.so.15.2.0
|
||||||
|
shared/lib/libOpenCL.so.1.0.0
|
||||||
|
shared/lib/libfontconfig.so.1.15.0
|
||||||
|
shared/lib/libfreetype.so.6.20.2
|
||||||
|
shared/lib/libdvdnav.so.4.3.0
|
||||||
|
shared/lib/libdvdread.so.8.0.0
|
||||||
|
shared/lib/libxml2.so.2.13.5
|
||||||
|
shared/lib/libbz2.so.1.0.8
|
||||||
|
shared/lib/libmodplug.so.1.0.0
|
||||||
|
shared/lib/libopenmpt.so.0.4.4
|
||||||
|
shared/lib/libbluray.so.2.4.3
|
||||||
|
shared/lib/libgmp.so.10.5.0
|
||||||
|
shared/lib/libgnutls.so.30.40.3
|
||||||
|
shared/lib/libsrt.so.1.5.4
|
||||||
|
shared/lib/libssh.so.4.10.1
|
||||||
|
shared/lib/libva-drm.so.2.2200.0
|
||||||
|
shared/lib/libva-x11.so.2.2200.0
|
||||||
|
shared/lib/libvdpau.so.1.0.0
|
||||||
|
shared/lib/libsoxr.so.0.1.2
|
||||||
|
shared/lib/libEGL.so.1.1.0
|
||||||
|
shared/lib/libxkbcommon.so.0.8.1
|
||||||
|
shared/lib/libpng16.so.16.47.0
|
||||||
|
shared/lib/libmd4c.so.0.5.2
|
||||||
|
shared/lib/libdbus-1.so.3.38.3
|
||||||
|
shared/lib/libGLdispatch.so.0.0.0
|
||||||
|
shared/lib/libdouble-conversion.so.3.3.0
|
||||||
|
shared/lib/libb2.so.1.0.4
|
||||||
|
shared/lib/libpcre2-16.so.0.14.0
|
||||||
|
shared/lib/libkrb5.so.3.3
|
||||||
|
shared/lib/libk5crypto.so.3.1
|
||||||
|
shared/lib/libcom_err.so.2.1
|
||||||
|
shared/lib/libkrb5support.so.0.1
|
||||||
|
shared/lib/libkeyutils.so.1.10
|
||||||
|
shared/lib/libresolv.so.2
|
||||||
|
shared/lib/libproxy/libpxbackend-1.0.so
|
||||||
|
shared/lib/libcap.so.2.75
|
||||||
|
shared/lib/libgio-2.0.so.0.8400.1
|
||||||
|
shared/lib/libgdk_pixbuf-2.0.so.0.4200.12
|
||||||
|
shared/lib/libpangocairo-1.0.so.0.5600.3
|
||||||
|
shared/lib/libpango-1.0.so.0.5600.3
|
||||||
|
shared/lib/libXrender.so.1.3.0
|
||||||
|
shared/lib/libxcb-render.so.0.0.0
|
||||||
|
shared/lib/libpixman-1.so.0.44.2
|
||||||
|
shared/lib/libffi.so.8.1.4
|
||||||
|
shared/lib/libpcre2-8.so.0.14.0
|
||||||
|
shared/lib/libjxl_cms.so.0.11.1
|
||||||
|
shared/lib/libhwy.so.1.2.0
|
||||||
|
shared/lib/libogg.so.0.8.5
|
||||||
|
shared/lib/libsharpyuv.so.0.1.1
|
||||||
|
shared/lib/libdb-5.3.so
|
||||||
|
shared/lib/libXau.so.6.0.0
|
||||||
|
shared/lib/libXdmcp.so.6.0.0
|
||||||
|
shared/lib/pulseaudio/libpulsecommon-17.0.so
|
||||||
|
shared/lib/libv4lconvert.so.0.0.0
|
||||||
|
shared/lib/libfftw3.so.3.6.10
|
||||||
|
shared/lib/libsamplerate.so.0.2.2
|
||||||
|
shared/lib/libgraphite2.so.3.2.1
|
||||||
|
shared/lib/libunwind.so.8.1.0
|
||||||
|
shared/lib/libshaderc_shared.so.1
|
||||||
|
shared/lib/libglslang-default-resource-limits.so.15.2.0
|
||||||
|
shared/lib/libvulkan.so.1.4.309
|
||||||
|
shared/lib/liblcms2.so.2.0.17
|
||||||
|
shared/lib/libdovi.so.3.3.1
|
||||||
|
shared/lib/libunibreak.so.6.0.1
|
||||||
|
shared/lib/libgomp.so.1.0.0
|
||||||
|
shared/lib/libsodium.so.26.2.0
|
||||||
|
shared/lib/libpgm-5.3.so.0.0.128
|
||||||
|
shared/lib/libSPIRV-Tools-opt.so
|
||||||
|
shared/lib/libSPIRV-Tools.so
|
||||||
|
shared/lib/libexpat.so.1.10.2
|
||||||
|
shared/lib/libmpg123.so.0.48.3
|
||||||
|
shared/lib/libvorbisfile.so.3.3.8
|
||||||
|
shared/lib/libleancrypto.so.1
|
||||||
|
shared/lib/libp11-kit.so.0.4.1
|
||||||
|
shared/lib/libidn2.so.0.4.0
|
||||||
|
shared/lib/libunistring.so.5.2.0
|
||||||
|
shared/lib/libtasn1.so.6.6.4
|
||||||
|
shared/lib/libhogweed.so.6.10
|
||||||
|
shared/lib/libnettle.so.8.10
|
||||||
|
shared/lib/libXfixes.so.3.1.0
|
||||||
|
shared/lib/libX11-xcb.so.1.0.0
|
||||||
|
shared/lib/libxcb-dri3.so.0.1.0
|
||||||
|
shared/lib/libsystemd.so.0.40.0
|
||||||
|
shared/lib/libcurl.so.4.8.0
|
||||||
|
shared/lib/libduktape.so.207.20700
|
||||||
|
shared/lib/libgmodule-2.0.so.0.8400.1
|
||||||
|
shared/lib/libmount.so.1.1.0
|
||||||
|
shared/lib/libjpeg.so.8.3.2
|
||||||
|
shared/lib/libtiff.so.6.1.0
|
||||||
|
shared/lib/libpangoft2-1.0.so.0.5600.3
|
||||||
|
shared/lib/libthai.so.0.3.1
|
||||||
|
shared/lib/libsndfile.so.1.0.37
|
||||||
|
shared/lib/libasyncns.so.0.3.1
|
||||||
|
shared/lib/libnghttp3.so.9.2.6
|
||||||
|
shared/lib/libnghttp2.so.14.28.4
|
||||||
|
shared/lib/libssh2.so.1.0.1
|
||||||
|
shared/lib/libpsl.so.5.3.5
|
||||||
|
shared/lib/libblkid.so.1.1.0
|
||||||
|
shared/lib/libjbig.so.2.1
|
||||||
|
shared/lib/libdatrie.so.1.4.0
|
||||||
|
shared/lib/libFLAC.so.14.0.0
|
||||||
|
shared/lib/libSDL3.so.0.2.10
|
||||||
|
share/vulkan/icd.d/intel_hasvk_icd.x86_64.json
|
||||||
|
shared/lib/libvulkan_intel_hasvk.so
|
||||||
|
shared/lib/libxcb-present.so.0.0.0
|
||||||
|
shared/lib/libxcb-sync.so.1.0.0
|
||||||
|
shared/lib/libxcb-randr.so.0.1.0
|
||||||
|
shared/lib/libxshmfence.so.1.0.0
|
||||||
|
shared/lib/libxcb-keysyms.so.1.0.0
|
||||||
|
shared/lib/libwayland-client.so.0.23.1
|
||||||
|
share/vulkan/icd.d/intel_icd.x86_64.json
|
||||||
|
shared/lib/libvulkan_intel.so
|
||||||
|
share/vulkan/icd.d/nouveau_icd.x86_64.json
|
||||||
|
shared/lib/libvulkan_nouveau.so
|
||||||
|
share/vulkan/icd.d/radeon_icd.x86_64.json
|
||||||
|
shared/lib/libvulkan_radeon.so
|
||||||
|
shared/lib/libLLVM.so.19.1
|
||||||
|
shared/lib/libelf-0.192.so
|
||||||
|
shared/lib/libdrm_amdgpu.so.1.124.0
|
||||||
|
shared/lib/libedit.so.0.0.75
|
||||||
|
shared/lib/libncursesw.so.6.5
|
||||||
|
bin/qt.conf
|
||||||
|
shared/lib/qt6/plugins/platforms/libqeglfs.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqlinuxfb.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqminimal.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqminimalegl.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqoffscreen.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqvkkhrdisplay.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqvnc.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqwayland-egl.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqwayland-generic.so
|
||||||
|
shared/lib/qt6/plugins/platforms/libqxcb.so
|
||||||
|
shared/lib/libQt6XcbQpa.so.6.9.0
|
||||||
|
shared/lib/libxcb-cursor.so.0.0.0
|
||||||
|
shared/lib/libxcb-icccm.so.4.0.0
|
||||||
|
shared/lib/libxcb-image.so.0.0.0
|
||||||
|
shared/lib/libxcb-render-util.so.0.0.0
|
||||||
|
shared/lib/libxcb-xkb.so.1.0.0
|
||||||
|
shared/lib/libSM.so.6.0.1
|
||||||
|
shared/lib/libICE.so.6.3.0
|
||||||
|
shared/lib/libxcb-xinput.so.0.1.0
|
||||||
|
shared/lib/libxkbcommon-x11.so.0.8.1
|
||||||
|
shared/lib/libxcb-util.so.1.0.0
|
||||||
|
shared/lib/libuuid.so.1.3.0
|
||||||
|
shared/lib/qt6/plugins/platformthemes/libqgtk3.so
|
||||||
|
shared/lib/qt6/plugins/platformthemes/libqt6ct.so
|
||||||
|
shared/lib/qt6/plugins/platformthemes/libqxdgdesktopportal.so
|
||||||
|
shared/lib/libqt6ct-common.so.0.10
|
||||||
|
etc/fonts/fonts.conf
|
||||||
|
shared/lib/libXi.so.6.1.0
|
||||||
|
shared/lib/libwayland-cursor.so.0.23.1
|
||||||
|
shared/lib/libwayland-egl.so.1.23.1
|
||||||
|
shared/lib/libXcursor.so.1.0.2
|
||||||
|
shared/lib/libXrandr.so.2.2.0
|
||||||
|
shared/lib/qt6/plugins/styles/libqt6ct-style.so
|
||||||
|
shared/lib/qt6/plugins/platforminputcontexts/libcomposeplatforminputcontextplugin.so
|
||||||
|
shared/lib/qt6/plugins/platforminputcontexts/libibusplatforminputcontextplugin.so
|
||||||
|
shared/lib/qt6/plugins/iconengines/libqsvgicon.so
|
||||||
|
shared/lib/qt6/plugins/imageformats/libqgif.so
|
||||||
|
shared/lib/qt6/plugins/imageformats/libqico.so
|
||||||
|
shared/lib/qt6/plugins/imageformats/libqjpeg.so
|
||||||
|
shared/lib/qt6/plugins/imageformats/libqsvg.so
|
||||||
|
shared/lib/libQt6Svg.so.6.9.0
|
||||||
|
shared/lib/libXss.so.1.0.0
|
41
.ci/linux.sh
41
.ci/linux.sh
|
@ -1,5 +1,26 @@
|
||||||
#!/bin/bash -ex
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
export ARCH="$(uname -m)"
|
||||||
|
|
||||||
|
if [ "$ARCH" = 'x86_64' ]; then
|
||||||
|
if [ "$1" = 'v3' ]; then
|
||||||
|
echo "Making x86-64-v3 optimized build of eden"
|
||||||
|
ARCH="${ARCH}_v3"
|
||||||
|
ARCH_FLAGS="-march=x86-64-v3 -O3"
|
||||||
|
else
|
||||||
|
echo "Making x86-64 generic build of eden"
|
||||||
|
ARCH_FLAGS="-march=x86-64 -mtune=generic -O3"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Making aarch64 build of eden"
|
||||||
|
ARCH_FLAGS="-march=armv8-a -mtune=generic -O3"
|
||||||
|
fi
|
||||||
|
|
||||||
|
NPROC="$2"
|
||||||
|
if [ -z "$NPROC" ]; then
|
||||||
|
NPROC="$(nproc)"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$TARGET" = "appimage" ]; then
|
if [ "$TARGET" = "appimage" ]; then
|
||||||
# Compile the AppImage we distribute with Clang.
|
# Compile the AppImage we distribute with Clang.
|
||||||
export EXTRA_CMAKE_FLAGS=(-DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DCMAKE_LINKER=/etc/bin/ld.lld)
|
export EXTRA_CMAKE_FLAGS=(-DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DCMAKE_LINKER=/etc/bin/ld.lld)
|
||||||
|
@ -23,9 +44,27 @@ cmake .. -G Ninja \
|
||||||
-DENABLE_QT_TRANSLATION=ON \
|
-DENABLE_QT_TRANSLATION=ON \
|
||||||
-DUSE_DISCORD_PRESENCE=ON \
|
-DUSE_DISCORD_PRESENCE=ON \
|
||||||
-DUSE_CCACHE=ON \
|
-DUSE_CCACHE=ON \
|
||||||
|
-DCMAKE_CXX_FLAGS="$ARCH_FLAGS" \
|
||||||
|
-DCMAKE_C_FLAGS="$ARCH_FLAGS" \
|
||||||
|
-DYUZU_USE_BUNDLED_VCPKG=OFF \
|
||||||
|
-DYUZU_USE_BUNDLED_QT=OFF \
|
||||||
|
-DUSE_SYSTEM_QT=ON \
|
||||||
|
-DYUZU_USE_BUNDLED_FFMPEG=OFF \
|
||||||
|
-DYUZU_USE_BUNDLED_SDL2=ON \
|
||||||
|
-DYUZU_USE_EXTERNAL_SDL2=OFF \
|
||||||
|
-DYUZU_TESTS=OFF \
|
||||||
|
-DYUZU_USE_LLVM_DEMANGLE=OFF \
|
||||||
|
-DYUZU_USE_QT_MULTIMEDIA=OFF \
|
||||||
|
-DYUZU_USE_QT_WEB_ENGINE=OFF \
|
||||||
|
-DENABLE_QT_TRANSLATION=ON \
|
||||||
|
-DUSE_DISCORD_PRESENCE=OFF \
|
||||||
|
-DBUNDLE_SPEEX=ON \
|
||||||
|
-DYUZU_USE_FASTER_LD=OFF \
|
||||||
|
-DYUZU_ENABLE_LTO=ON \
|
||||||
"${EXTRA_CMAKE_FLAGS[@]}"
|
"${EXTRA_CMAKE_FLAGS[@]}"
|
||||||
|
|
||||||
ninja -j4
|
ninja -j${NPROC}
|
||||||
|
|
||||||
if [ -d "bin/Release" ]; then
|
if [ -d "bin/Release" ]; then
|
||||||
strip -s bin/Release/*
|
strip -s bin/Release/*
|
||||||
else
|
else
|
||||||
|
|
|
@ -1,128 +1,120 @@
|
||||||
#!/bin/bash -ex
|
#!/bin/sh
|
||||||
|
|
||||||
set -e
|
# This script assumes you're in the source directory
|
||||||
declare INSTALLABLES=`find build -type d -exec test -e '{}/cmake_install.cmake' ';' -print`
|
set -ex
|
||||||
set +e
|
|
||||||
|
|
||||||
GITDATE="$(git show -s --date=short --format='%ad' | sed 's/-//g')"
|
export APPIMAGE_EXTRACT_AND_RUN=1
|
||||||
GITREV="$(git show -s --format='%h')"
|
export ARCH="$(uname -m)"
|
||||||
ARTIFACTS_DIR="$PWD/artifacts"
|
|
||||||
mkdir -p "${ARTIFACTS_DIR}/"
|
|
||||||
|
|
||||||
if [ "$1" == "master" ]; then
|
LIB4BN="https://raw.githubusercontent.com/VHSgunzo/sharun/refs/heads/main/lib4bin"
|
||||||
RELEASE_NAME="mainline"
|
URUNTIME="https://github.com/VHSgunzo/uruntime/releases/latest/download/uruntime-appimage-dwarfs-$ARCH"
|
||||||
else
|
|
||||||
RELEASE_NAME="$1"
|
|
||||||
fi
|
|
||||||
|
|
||||||
BASE_NAME="eden-linux"
|
if [ "$ARCH" = 'x86_64' ]; then
|
||||||
REV_NAME="${BASE_NAME}-${GITDATE}-${GITREV}"
|
if [ "$1" = 'v3' ]; then
|
||||||
ARCHIVE_NAME="${REV_NAME}.tar.xz"
|
ARCH="${ARCH}_v3"
|
||||||
COMPRESSION_FLAGS="-cJvf"
|
|
||||||
|
|
||||||
if [ "${RELEASE_NAME}" = "mainline" ] || [ "${RELEASE_NAME}" = "early-access" ]; then
|
|
||||||
DIR_NAME="${BASE_NAME}-${RELEASE_NAME}"
|
|
||||||
else
|
|
||||||
DIR_NAME="${REV_NAME}-${RELEASE_NAME}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -p "$DIR_NAME"
|
|
||||||
|
|
||||||
|
|
||||||
cp LICENSE.txt "$DIR_NAME/" || echo "LICENSE.txt not found"
|
|
||||||
cp README.md "$DIR_NAME/" || echo "README.md not found"
|
|
||||||
|
|
||||||
create_appimage() {
|
|
||||||
local binary_name="$1"
|
|
||||||
local display_name="$2"
|
|
||||||
local needs_qt="$3"
|
|
||||||
local app_dir="build/AppDir-${binary_name}"
|
|
||||||
local appimage_output="${binary_name}.AppImage"
|
|
||||||
|
|
||||||
echo "Creating AppImage for ${binary_name}..."
|
|
||||||
|
|
||||||
mkdir -p "${app_dir}/usr/bin"
|
|
||||||
mkdir -p "${app_dir}/usr/lib"
|
|
||||||
mkdir -p "${app_dir}/usr/share/applications"
|
|
||||||
mkdir -p "${app_dir}/usr/share/icons/hicolor/scalable/apps"
|
|
||||||
mkdir -p "${app_dir}/usr/optional/libstdc++"
|
|
||||||
mkdir -p "${app_dir}/usr/optional/libgcc_s"
|
|
||||||
|
|
||||||
echo "Copying libraries..."
|
|
||||||
|
|
||||||
for i in $INSTALLABLES; do cmake --install $i --prefix ${app_dir}/usr; done
|
|
||||||
|
|
||||||
if [ -d "build/bin/Release" ]; then
|
|
||||||
cp "build/bin/Release/${binary_name}" "${app_dir}/usr/bin/" || echo "${binary_name} not found for AppDir"
|
|
||||||
else
|
|
||||||
cp "build/bin/${binary_name}" "${app_dir}/usr/bin/" || echo "${binary_name} not found for AppDir"
|
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
strip -s "${app_dir}/usr/bin/${binary_name}"
|
#if [ "$DEVEL" = 'true' ]; then
|
||||||
|
# YUZU_TAG="$(git rev-parse --short HEAD)"
|
||||||
|
# echo "Making nightly \"$YUZU_TAG\" build"
|
||||||
|
# VERSION="$YUZU_TAG"
|
||||||
|
#else
|
||||||
|
# YUZU_TAG=$(git describe --tags)
|
||||||
|
# echo "Making stable \"$YUZU_TAG\" build"
|
||||||
|
# git checkout "$YUZU_TAG"
|
||||||
|
# VERSION="$(echo "$YUZU_TAG" | awk -F'-' '{print $1}')"
|
||||||
|
#fi
|
||||||
|
|
||||||
cat > "${app_dir}/org.yuzu_emu.${binary_name}.desktop" << EOL
|
# TODO: use real tags
|
||||||
|
YUZU_TAG="0.0.0"
|
||||||
|
|
||||||
|
# NOW MAKE APPIMAGE
|
||||||
|
mkdir -p ./AppDir
|
||||||
|
cd ./AppDir
|
||||||
|
|
||||||
|
cat > org.eden_emu.eden.desktop << EOL
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Type=Application
|
Type=Application
|
||||||
Name=${display_name}
|
Name=Eden
|
||||||
Icon=org.yuzu_emu.${binary_name}
|
Icon=org.eden_emu.eden
|
||||||
Exec=${binary_name}
|
Exec=eden
|
||||||
Categories=Game;Emulator;
|
Categories=Game;Emulator;
|
||||||
EOL
|
EOL
|
||||||
|
|
||||||
cp "${app_dir}/org.yuzu_emu.${binary_name}.desktop" "${app_dir}/usr/share/applications/"
|
cp ../dist/eden.svg ./org.eden_emu.eden.svg
|
||||||
|
|
||||||
cp "dist/eden.svg" "${app_dir}/org.yuzu_emu.${binary_name}.svg"
|
ln -sf ./org.eden_emu.eden.svg.svg ./.DirIcon
|
||||||
cp "dist/eden.svg" "${app_dir}/usr/share/icons/hicolor/scalable/apps/org.yuzu_emu.${binary_name}.svg"
|
|
||||||
|
|
||||||
cd build
|
if [ "$DEVEL" = 'true' ]; then
|
||||||
wget -nc https://raw.githubusercontent.com/eden-emulator/ext-linux-bin/main/appimage/deploy-linux.sh || echo "Failed to download deploy script"
|
sed -i 's|Name=Eden|Name=Eden Nightly|' ./org.eden_emu.eden.desktop
|
||||||
wget -nc https://raw.githubusercontent.com/eden-emulator/AppImageKit-checkrt/old/AppRun.sh || echo "Failed to download AppRun script"
|
UPINFO="$(echo "$UPINFO" | sed 's|latest|nightly|')"
|
||||||
wget -nc https://github.com/eden-emulator/ext-linux-bin/raw/main/appimage/exec-x86_64.so || echo "Failed to download exec wrapper"
|
fi
|
||||||
chmod +x deploy-linux.sh
|
|
||||||
|
|
||||||
cd ..
|
# Bundle all libs
|
||||||
if [ "$needs_qt" = "true" ]; then
|
wget --retry-connrefused --tries=30 "$LIB4BN" -O ./lib4bin
|
||||||
echo "Deploying with Qt dependencies for ${binary_name}..."
|
chmod +x ./lib4bin
|
||||||
DEPLOY_QT=1 build/deploy-linux.sh "${app_dir}/usr/bin/${binary_name}" "${app_dir}"
|
xvfb-run -a -- ./lib4bin -p -v -e -s -k \
|
||||||
else
|
../build/bin/eden* \
|
||||||
echo "Deploying without Qt dependencies for ${binary_name}..."
|
/usr/lib/libGLX* \
|
||||||
build/deploy-linux.sh "${app_dir}/usr/bin/${binary_name}" "${app_dir}"
|
/usr/lib/libGL.so* \
|
||||||
fi
|
/usr/lib/libEGL* \
|
||||||
|
/usr/lib/dri/* \
|
||||||
|
/usr/lib/vdpau/* \
|
||||||
|
/usr/lib/libvulkan* \
|
||||||
|
/usr/lib/libXss.so* \
|
||||||
|
/usr/lib/libdecor-0.so* \
|
||||||
|
/usr/lib/libgamemode.so* \
|
||||||
|
/usr/lib/qt6/plugins/audio/* \
|
||||||
|
/usr/lib/qt6/plugins/bearer/* \
|
||||||
|
/usr/lib/qt6/plugins/imageformats/* \
|
||||||
|
/usr/lib/qt6/plugins/iconengines/* \
|
||||||
|
/usr/lib/qt6/plugins/platforms/* \
|
||||||
|
/usr/lib/qt6/plugins/platformthemes/* \
|
||||||
|
/usr/lib/qt6/plugins/platforminputcontexts/* \
|
||||||
|
/usr/lib/qt6/plugins/styles/* \
|
||||||
|
/usr/lib/qt6/plugins/xcbglintegrations/* \
|
||||||
|
/usr/lib/qt6/plugins/wayland-*/* \
|
||||||
|
/usr/lib/pulseaudio/* \
|
||||||
|
/usr/lib/pipewire-0.3/* \
|
||||||
|
/usr/lib/spa-0.2/*/* \
|
||||||
|
/usr/lib/alsa-lib/*
|
||||||
|
|
||||||
cp --dereference /usr/lib/x86_64-linux-gnu/libstdc++.so.6 "${app_dir}/usr/optional/libstdc++/libstdc++.so.6" || true
|
# Prepare sharun
|
||||||
cp --dereference /lib/x86_64-linux-gnu/libgcc_s.so.1 "${app_dir}/usr/optional/libgcc_s/libgcc_s.so.1" || true
|
if [ "$ARCH" = 'aarch64' ]; then
|
||||||
|
# allow the host vulkan to be used for aarch64 given the sed situation
|
||||||
|
echo 'SHARUN_ALLOW_SYS_VKICD=1' > ./.env
|
||||||
|
fi
|
||||||
|
|
||||||
cp build/exec-x86_64.so "${app_dir}/usr/optional/exec.so" || true
|
wget https://github.com/VHSgunzo/sharun/releases/download/v0.6.3/sharun-x86_64 -O sharun
|
||||||
cp build/AppRun.sh "${app_dir}/AppRun"
|
chmod a+x sharun
|
||||||
chmod +x "${app_dir}/AppRun"
|
|
||||||
|
|
||||||
find "${app_dir}" -type f -regex '.*libwayland-client\.so.*' -delete -print || true
|
ln -f ./sharun ./AppRun
|
||||||
|
./sharun -g
|
||||||
|
|
||||||
cd build
|
# turn appdir into appimage
|
||||||
|
cd ..
|
||||||
|
wget -q "$URUNTIME" -O ./uruntime
|
||||||
|
chmod +x ./uruntime
|
||||||
|
|
||||||
if [ ! -f "appimagetool-x86_64.AppImage" ]; then
|
#Add udpate info to runtime
|
||||||
wget -nc https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage
|
echo "Adding update information \"$UPINFO\" to runtime..."
|
||||||
chmod +x appimagetool-x86_64.AppImage
|
./uruntime --appimage-addupdinfo "$UPINFO"
|
||||||
fi
|
|
||||||
|
|
||||||
if ! ./appimagetool-x86_64.AppImage --version; then
|
echo "Generating AppImage..."
|
||||||
echo "FUSE not available, using extract and run mode"
|
./uruntime --appimage-mkdwarfs -f \
|
||||||
export APPIMAGE_EXTRACT_AND_RUN=1
|
--set-owner 0 --set-group 0 \
|
||||||
fi
|
--no-history --no-create-timestamp \
|
||||||
|
--categorize=hotness --hotness-list=.ci/eden.dwfsprof \
|
||||||
|
--compression zstd:level=22 -S26 -B32 \
|
||||||
|
--header uruntime \
|
||||||
|
-i ./AppDir -o Eden-"$VERSION"-"$ARCH".AppImage
|
||||||
|
|
||||||
echo "Generating AppImage: ${appimage_output}"
|
echo "Generating zsync file..."
|
||||||
./appimagetool-x86_64.AppImage "AppDir-${binary_name}" "${appimage_output}" || echo "AppImage generation failed for ${binary_name}"
|
zsyncmake *.AppImage -u *.AppImage
|
||||||
|
echo "All Done!"
|
||||||
|
|
||||||
cp "${appimage_output}" "../${DIR_NAME}/" || echo "AppImage not copied to DIR_NAME for ${binary_name}"
|
# Cleanup
|
||||||
cp "${appimage_output}" "../${ARTIFACTS_DIR}/" || echo "AppImage not copied to artifacts for ${binary_name}"
|
|
||||||
cd ..
|
|
||||||
}
|
|
||||||
|
|
||||||
create_appimage "eden" "Eden" "true"
|
rm -rf AppDir
|
||||||
create_appimage "eden-cli" "Eden-CLI" "false"
|
rm uruntime
|
||||||
create_appimage "eden-room" "Eden-Room" "false"
|
|
||||||
|
|
||||||
tar $COMPRESSION_FLAGS "$ARCHIVE_NAME" "$DIR_NAME"
|
|
||||||
mv "$ARCHIVE_NAME" "${ARTIFACTS_DIR}/"
|
|
||||||
|
|
||||||
ls -la "${ARTIFACTS_DIR}/"
|
|
||||||
|
|
12
.github/workflows/build.yml
vendored
12
.github/workflows/build.yml
vendored
|
@ -1,5 +1,4 @@
|
||||||
# TODO: This document needs to be formatted,
|
# TODO: This document needs to be formatted,
|
||||||
# appimage should use linuxdeploy probably
|
|
||||||
# some stuff needs cleaned up etc
|
# some stuff needs cleaned up etc
|
||||||
name: eden-build
|
name: eden-build
|
||||||
|
|
||||||
|
@ -160,17 +159,18 @@ jobs:
|
||||||
fetch-tags: true
|
fetch-tags: true
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: ./.ci/linux.sh
|
|
||||||
|
|
||||||
- name: Package AppImages
|
|
||||||
run: |
|
run: |
|
||||||
./AppImage-build-local.sh
|
./.ci/linux.sh v3 4
|
||||||
|
|
||||||
|
- name: Package AppImage
|
||||||
|
run: |
|
||||||
|
./.ci/package-appimage.sh v3
|
||||||
|
|
||||||
- name: Upload Linux artifacts
|
- name: Upload Linux artifacts
|
||||||
uses: forgejo/upload-artifact@v4
|
uses: forgejo/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: linux.zip
|
name: linux.zip
|
||||||
path: *.AppImage
|
path: ./*.AppImage
|
||||||
|
|
||||||
android:
|
android:
|
||||||
runs-on: android
|
runs-on: android
|
||||||
|
|
3
.github/workflows/license-header.yml
vendored
3
.github/workflows/license-header.yml
vendored
|
@ -7,9 +7,6 @@ on:
|
||||||
jobs:
|
jobs:
|
||||||
license-header:
|
license-header:
|
||||||
runs-on: linux
|
runs-on: linux
|
||||||
container:
|
|
||||||
image: opensauce04/lime3ds-build:latest
|
|
||||||
options: -u 1001
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
|
|
|
@ -1,83 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# Make sure script is called from inside our container
|
|
||||||
test -e /tmp/torzu-src-ro || (echo "Script MUST NOT be called directly!" ; exit 1)
|
|
||||||
|
|
||||||
# Set up environment
|
|
||||||
export LANG=C.UTF-8
|
|
||||||
export LC_ALL=C.UTF-8
|
|
||||||
unset LC_ADDRESS LC_NAME LC_MONETARY LC_PAPER LC_TELEPHONE LC_MEASUREMENT LC_TIME
|
|
||||||
|
|
||||||
# Raise max open files count
|
|
||||||
ulimit -n 50000
|
|
||||||
|
|
||||||
# Install dependencies
|
|
||||||
apt -y install cmake ninja-build build-essential autoconf pkg-config locales wget git file mold libtool lsb-release wget software-properties-common gnupg \
|
|
||||||
qtbase5-dev qtmultimedia5-dev qtbase5-private-dev glslang-tools libssl-dev libavcodec-dev libavfilter-dev libavutil-dev libswscale-dev libpulse-dev libasound2-dev
|
|
||||||
if [ ! "$BUILD_USE_CPM" = 1 ]; then
|
|
||||||
apt -y install libfmt-dev libenet-dev liblz4-dev nlohmann-json3-dev zlib1g-dev libopus-dev libsimpleini-dev libstb-dev libzstd-dev libusb-1.0-0-dev libcubeb-dev libcpp-jwt-dev libvulkan-dev gamemode-dev libasound2-dev libglu1-mesa-dev libxext-dev mesa-common-dev libva-dev
|
|
||||||
|
|
||||||
if [ ! -f /usr/local/lib/cmake/Boost-1.88.0/BoostConfigVersion.cmake ]; then
|
|
||||||
# Install Boost
|
|
||||||
wget https://archives.boost.io/release/1.88.0/source/boost_1_88_0.tar.bz2
|
|
||||||
echo "Extracting Boost sources..."
|
|
||||||
tar xf boost_1_88_0.tar.bz2
|
|
||||||
cd boost_1_88_0
|
|
||||||
./bootstrap.sh
|
|
||||||
./b2 install --with-{headers,context,system,fiber,atomic,filesystem} link=static
|
|
||||||
cd ..
|
|
||||||
rm -rf boost_1_88_0 boost_1_88_0.tar.bz2
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Install Clang
|
|
||||||
if ([ "$BUILD_USE_CLANG" = 1 ] && ! clang-19 --version); then
|
|
||||||
cd /tmp
|
|
||||||
wget https://apt.llvm.org/llvm.sh
|
|
||||||
chmod +x llvm.sh
|
|
||||||
./llvm.sh 19
|
|
||||||
rm llvm.sh
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Mount Torzu sources with temporary overlay
|
|
||||||
cd /tmp
|
|
||||||
mkdir torzu-src-upper torzu-src-work torzu-src
|
|
||||||
mount -t overlay overlay -olowerdir=torzu-src-ro,upperdir=torzu-src-upper,workdir=torzu-src-work torzu-src
|
|
||||||
|
|
||||||
# Get extra configuration/compilation options
|
|
||||||
EXTRA_COMPILE_FLAGS=""
|
|
||||||
EXTRA_CMAKE_FLAGS=""
|
|
||||||
if [ "$BUILD_USE_CLANG" = 1 ]; then
|
|
||||||
EXTRA_CMAKE_FLAGS="-DCMAKE_C_COMPILER=clang-19 -DCMAKE_CXX_COMPILER=clang++-19"
|
|
||||||
FATLTO_FLAG="-flto=full"
|
|
||||||
else
|
|
||||||
FATLTO_FLAG="-flto"
|
|
||||||
fi
|
|
||||||
if [ "$BUILD_USE_THIN_LTO" = 1 ]; then
|
|
||||||
EXTRA_COMPILE_FLAGS="-flto=thin"
|
|
||||||
fi
|
|
||||||
if [ "$BUILD_USE_FAT_LTO" = 1 ]; then
|
|
||||||
EXTRA_COMPILE_FLAGS="$FATLTO_FLAG"
|
|
||||||
fi
|
|
||||||
if [ "$BUILD_USE_CPM" = 1 ]; then
|
|
||||||
EXTRA_CMAKE_FLAGS="$EXTRA_CMAKE_FLAGS -DYUZU_USE_CPM=ON"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Build Torzu
|
|
||||||
cd /tmp
|
|
||||||
mkdir torzu-build
|
|
||||||
cd torzu-build
|
|
||||||
cmake /tmp/torzu-src -GNinja -DCMAKE_BUILD_TYPE=Release -DYUZU_TESTS=OFF -DENABLE_QT_TRANSLATION=OFF -DSPIRV_WERROR=OFF -DCMAKE_FIND_LIBRARY_SUFFIXES=".a;.so" -DSPIRV-Headers_SOURCE_DIR=/tmp/torzu-src/externals/SPIRV-Headers -DCMAKE_{C,CXX}_FLAGS="$EXTRA_COMPILE_FLAGS -fdata-sections -ffunction-sections" -DCMAKE_{EXE,SHARED}_LINKER_FLAGS="-Wl,--gc-sections" $EXTRA_CMAKE_FLAGS
|
|
||||||
ninja || (
|
|
||||||
echo "Compilation has failed. Dropping you into a shell so you can inspect the situation. Run 'ninja' to retry and exit shell once compilation has finished successfully."
|
|
||||||
echo "Note that any changes made here will not be reflected to the host environment, but changes made from the host environment will be reflected here."
|
|
||||||
bash
|
|
||||||
)
|
|
||||||
|
|
||||||
# Generate AppImage
|
|
||||||
cp -rv /tmp/torzu-src/AppImageBuilder /tmp/AppImageBuilder
|
|
||||||
cd /tmp/AppImageBuilder
|
|
||||||
./build.sh /tmp/torzu-build /tmp/torzu.AppImage || echo "This error is known. Using workaround..."
|
|
||||||
cp /lib/$(uname -m)-linux-gnu/libICE.so.6 build/
|
|
||||||
mv build /tmp/hosttmp/torzu-debian-appimage-rootfs
|
|
|
@ -1,73 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# Parse options
|
|
||||||
for i in "$@"
|
|
||||||
do
|
|
||||||
case $i in
|
|
||||||
-l|--clang)
|
|
||||||
export BUILD_USE_CLANG=1
|
|
||||||
echo "-> Using Clang for compilation."
|
|
||||||
;;
|
|
||||||
-o|--thin-lto)
|
|
||||||
export BUILD_USE_THIN_LTO=1
|
|
||||||
echo "-> Thin link time optimization enabled."
|
|
||||||
;;
|
|
||||||
-O|--fat-lto)
|
|
||||||
export BUILD_USE_FAT_LTO=1
|
|
||||||
echo "-> Fat link time optimization enabled."
|
|
||||||
;;
|
|
||||||
-p|--use-cpm)
|
|
||||||
export BUILD_USE_CPM=1
|
|
||||||
echo "-> Using CPM to download most dependencies."
|
|
||||||
;;
|
|
||||||
-k|--keep-rootfs)
|
|
||||||
BUILD_KEEP_ROOTFS=1
|
|
||||||
echo "-> Not deleting rootfs after successful build."
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Usage: $0 [--clang/-l] [--thin-lto/-o] [--fat-lto/-O] [--use-cpm/-p] [--keep-rootfs/-k]"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
# Make sure options are valid
|
|
||||||
if [ "$BUILD_USE_THIN_LTO" = 1 ] && [ "$BUILD_USE_CLANG" != 1 ]; then
|
|
||||||
echo "Thin LTO can't be used without Clang!"
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
if [ "$BUILD_USE_THIN_LTO" = 1 ] && [ "$BUILD_USE_FAT_LTO" = 1 ]; then
|
|
||||||
echo "Only either thin or fat LTO can be used!"
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Get torzu source dir
|
|
||||||
TORZU_SOURCE_DIR="$(realpath "$(dirname "${BASH_SOURCE[0]}")")"
|
|
||||||
echo "-> Source dir is $TORZU_SOURCE_DIR"
|
|
||||||
rm -rf "$TORZU_SOURCE_DIR/AppImageBuilder/build"
|
|
||||||
|
|
||||||
# Generate debian rootfs
|
|
||||||
cd /tmp
|
|
||||||
echo "Cleaning up before build..."
|
|
||||||
rm -rf torzu-debian-appimage-rootfs
|
|
||||||
[ -d rootfs-torzu-appimage-build ] ||
|
|
||||||
debootstrap stable rootfs-torzu-appimage-build http://deb.debian.org/debian/
|
|
||||||
bwrap --bind rootfs-torzu-appimage-build / \
|
|
||||||
--unshare-pid \
|
|
||||||
--dev-bind /dev /dev --proc /proc --tmpfs /tmp --ro-bind /sys /sys --dev-bind /run /run \
|
|
||||||
--tmpfs /var/tmp \
|
|
||||||
--chmod 1777 /tmp \
|
|
||||||
--ro-bind /etc/resolv.conf /etc/resolv.conf \
|
|
||||||
--ro-bind "$TORZU_SOURCE_DIR" /tmp/torzu-src-ro \
|
|
||||||
--chdir / \
|
|
||||||
--tmpfs /home \
|
|
||||||
--setenv HOME /home \
|
|
||||||
--bind /tmp /tmp/hosttmp \
|
|
||||||
/tmp/torzu-src-ro/AppImage-build-debian-inner.sh
|
|
||||||
appimagetool torzu-debian-appimage-rootfs torzu.AppImage
|
|
||||||
echo "AppImage generated at /tmp/torzu.AppImage! Cleaning up..."
|
|
||||||
rm -rf torzu-debian-appimage-rootfs
|
|
||||||
if [ ! "$BUILD_KEEP_ROOTFS" = 1 ]; then
|
|
||||||
rm -rf rootfs-torzu-appimage-build
|
|
||||||
fi
|
|
|
@ -1,42 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
FILE=build/bin/eden
|
|
||||||
if test -f "$FILE"; then
|
|
||||||
# remove any previously made AppImage in the base eden git folder
|
|
||||||
rm ./eden.AppImage
|
|
||||||
|
|
||||||
# enter AppImage utility folder
|
|
||||||
cd AppImageBuilder
|
|
||||||
|
|
||||||
# run the build script to create the AppImage
|
|
||||||
# (usage) ./build.sh [source eden build folder] [destination .AppImage file]
|
|
||||||
./build.sh ../build ./eden.AppImage
|
|
||||||
|
|
||||||
FILE=./eden.AppImage
|
|
||||||
if test -f "$FILE"; then
|
|
||||||
# move the AppImage to the main eden folder
|
|
||||||
mv eden.AppImage ..
|
|
||||||
# return to main eden folder
|
|
||||||
cd ..
|
|
||||||
# show contents of current folder
|
|
||||||
echo
|
|
||||||
ls
|
|
||||||
# show AppImages specifically
|
|
||||||
echo
|
|
||||||
ls *.AppImage
|
|
||||||
echo
|
|
||||||
echo "'eden.AppImage' is now located in the current folder."
|
|
||||||
echo
|
|
||||||
else
|
|
||||||
cd ..
|
|
||||||
echo "AppImage was not built."
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo
|
|
||||||
echo "$FILE does not exist."
|
|
||||||
echo
|
|
||||||
echo "No eden executable found in the /eden/build/bin folder!"
|
|
||||||
echo
|
|
||||||
echo "You must first build a native linux version of eden before running this script!"
|
|
||||||
echo
|
|
||||||
fi
|
|
Binary file not shown.
|
@ -1,11 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
cd "$APPDIR"
|
|
||||||
|
|
||||||
if [ -d /usr/lib/$(uname -m)-linux-gnu/qt5 ] || [ -d /usr/lib/qt ]; then
|
|
||||||
# System-wide Qt5
|
|
||||||
exec ./yuzu.sh "$@"
|
|
||||||
else
|
|
||||||
# Bundled Qt5
|
|
||||||
exec ./yuzu-bqt.sh "$@"
|
|
||||||
fi
|
|
|
@ -1,3 +0,0 @@
|
||||||
#! /bin/sh
|
|
||||||
|
|
||||||
LD_LIBRARY_PATH=./qt5:/usr/lib/$(uname -m)-linux-gnu:/usr/lib:. QT_PLUGIN_PATH=./qt5 exec ./yuzu "$@"
|
|
|
@ -1,3 +0,0 @@
|
||||||
#! /bin/sh
|
|
||||||
|
|
||||||
LD_LIBRARY_PATH=/usr/lib/$(uname -m)-linux-gnu:/usr/lib:. exec ./yuzu "$@"
|
|
Binary file not shown.
|
@ -1 +0,0 @@
|
||||||
This is a statically compiled bubblewrap 0.9.0 executable.
|
|
|
@ -1,176 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# Check arguments
|
|
||||||
if [[ $# != 2 ]]; then
|
|
||||||
>&2 echo "Bad usage!"
|
|
||||||
echo "Usage: $0 <build dir> <output file>"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Get paths
|
|
||||||
ARCH="$(uname -m)"
|
|
||||||
SYSTEM_LIBS="/usr/lib"
|
|
||||||
SYSTEM_LIBS64="/usr/lib64"
|
|
||||||
EDEN_BIN="${1}/bin"
|
|
||||||
EDEN_BIN_GUI="${EDEN_BIN}/eden"
|
|
||||||
|
|
||||||
# Make sure executable exists
|
|
||||||
if [[ $(file -b --mime-type "$EDEN_BIN_GUI") != application/x-pie-executable ]]; then
|
|
||||||
>&2 echo "Invalid eden executable!"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Clean up build dir
|
|
||||||
rm -rf build
|
|
||||||
mkdir build
|
|
||||||
|
|
||||||
# NOTE: some of these aren't used now, but can be reordered in priority when eden is converted to QT6
|
|
||||||
# QT5 - /usr/lib/${ARCH}-linux-gnu/qt5 (debian), /usr/lib64/qt5 (fedora), /usr/lib/qt (steam deck)
|
|
||||||
# QT5 - /usr/lib/${ARCH}-linux-gnu/qt6 (debian), /usr/lib64/qt6 (fedora), /usr/lib/qt6 (steam deck)
|
|
||||||
QTFOUND="true"
|
|
||||||
QTDIR="$SYSTEM_LIBS"/${ARCH}-linux-gnu/qt5/plugins
|
|
||||||
if [ ! -d "$QTDIR" ]; then
|
|
||||||
# default qt5 folder not found, check for 64-bit qt5 folder
|
|
||||||
QTDIR="$SYSTEM_LIBS64"/qt5/plugins
|
|
||||||
if [ ! -d "$QTDIR" ]; then
|
|
||||||
# 64-bit qt5 folder not found, check for Steam Deck qt (qt5) folder
|
|
||||||
QTDIR="$SYSTEM_LIBS"/qt/plugins
|
|
||||||
if [ ! -d "$QTDIR" ]; then
|
|
||||||
# Steam Deck qt (qt5) folder not found, check for regular qt6 folder
|
|
||||||
QTDIR="$SYSTEM_LIBS"/${ARCH}-linux-gnu/qt6/plugins
|
|
||||||
if [ ! -d "$QTDIR" ]; then
|
|
||||||
# regular qt6 folder not found, check for 64-bit qt6 folder
|
|
||||||
QTDIR="$SYSTEM_LIBS64"/qt6/plugins
|
|
||||||
if [ ! -d "$QTDIR" ]; then
|
|
||||||
# 64-bit qt6 folder not found, check for Steam Deck qt6 folder
|
|
||||||
QTDIR="$SYSTEM_LIBS"/qt6/plugins
|
|
||||||
if [ ! -d "$QTDIR" ]; then
|
|
||||||
QTFOUND="false"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [ $QTFOUND == "true" ]; then
|
|
||||||
echo "QT plugins from $QTDIR will be used."
|
|
||||||
|
|
||||||
# Copy system dependencies used to build and required by the eden binary
|
|
||||||
# includes:
|
|
||||||
# - '/lib64/ld-linux-x86-64.so.2' or `/lib/ld-linux-aarch64.so.1` file per architecture
|
|
||||||
# - required files from `/usr/lib/x86_64-linux-gnu` or `/usr/lib/aarch64-linux-gnu`
|
|
||||||
# - different for SteamDeck, but still does it automatically
|
|
||||||
function copy_libs {
|
|
||||||
for lib in $(ldd "$1"); do
|
|
||||||
(cp -vn "$lib" ./build/ 2> /dev/null) || true
|
|
||||||
done
|
|
||||||
}
|
|
||||||
echo "Copying main dependencies..."
|
|
||||||
copy_libs "$EDEN_BIN_GUI"
|
|
||||||
|
|
||||||
# Copy QT dependency folders, path determined above
|
|
||||||
echo "Copying Qt dependencies..."
|
|
||||||
mkdir ./build/qt5
|
|
||||||
cp -rv "$QTDIR"/{imageformats,platforms,platformthemes,xcbglintegrations} ./build/qt5/
|
|
||||||
|
|
||||||
# Discover indirect dependencies (mostly from runtime-loaded Qt plugins)
|
|
||||||
echo "Copying extra dependencies..."
|
|
||||||
while true; do
|
|
||||||
LIBS="$(find ./build -name \*.so\*)"
|
|
||||||
LIB_COUNT=$(echo "$LIBS" | wc -l)
|
|
||||||
echo "$LIB_COUNT dependency libraries discovered so far..."
|
|
||||||
if [ $LIB_COUNT == "$PREV_LIB_COUNT" ]; then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
PREV_LIB_COUNT=$LIB_COUNT
|
|
||||||
|
|
||||||
for plib in $LIBS; do
|
|
||||||
if [ -f "$plib" ]; then
|
|
||||||
copy_libs "$plib"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
done
|
|
||||||
|
|
||||||
# Copy executable
|
|
||||||
cp -v "$EDEN_BIN_GUI" ./build/
|
|
||||||
|
|
||||||
cat > "build/org.eden_emu.eden.desktop" << EOL
|
|
||||||
[Desktop Entry]
|
|
||||||
Type=Application
|
|
||||||
Name=Eden
|
|
||||||
Icon=org.eden_emu.eden
|
|
||||||
Exec=eden
|
|
||||||
Categories=Game;Emulator;
|
|
||||||
EOL
|
|
||||||
|
|
||||||
cp "../dist/eden.svg" build/org.eden_emu.eden.svg
|
|
||||||
|
|
||||||
# Strip all libraries and executables
|
|
||||||
for file in $(find ./build -type f); do
|
|
||||||
(strip -v "$file" 2> /dev/null) || true
|
|
||||||
done
|
|
||||||
|
|
||||||
PASSED_CHECKSUM="false"
|
|
||||||
FILE=appimagetool.AppImage
|
|
||||||
# total number of times to try downloading if a checksum doesn't match
|
|
||||||
DL_TRIES=3
|
|
||||||
while [ $PASSED_CHECKSUM == "false" ] && [ "$DL_TRIES" -gt 0 ]; do
|
|
||||||
case $ARCH in
|
|
||||||
x86_64)
|
|
||||||
# Static copy from the 'ext-linux-bin' repo.
|
|
||||||
# Checksum will need to be changed when/if this file in the repo is updated.
|
|
||||||
if ! test -f "$FILE"; then
|
|
||||||
echo "Downloading appimagetool for architecture '$ARCH'"
|
|
||||||
wget -O appimagetool.AppImage https://github.com/litucks/ext-linux-bin/raw/refs/heads/main/appimage/appimagetool-x86_64.AppImage
|
|
||||||
fi
|
|
||||||
if [ $(shasum -a 256 appimagetool.AppImage | cut -d' ' -f1) = "110751478abece165a18460acbd7fd1398701f74a9405ad8ac053427d937bd5d" ] ; then
|
|
||||||
PASSED_CHECKSUM="true"
|
|
||||||
fi
|
|
||||||
# DISABLED TO USE THE ABOVE
|
|
||||||
# The current continuous release channel option, until a static copy is put in 'ext-linux-bin'.
|
|
||||||
# The checksum will pass until the continuous release is updated, then a new one needs to be
|
|
||||||
# generated to update this script.
|
|
||||||
#if ! test -f "$FILE"; then
|
|
||||||
# echo "Downloading appimagetool for architecture '$ARCH'"
|
|
||||||
# wget -O appimagetool.AppImage https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage
|
|
||||||
#fi
|
|
||||||
#if [ $(shasum -a 256 appimagetool.AppImage | cut -d' ' -f1) = "46fdd785094c7f6e545b61afcfb0f3d98d8eab243f644b4b17698c01d06083d1" ] ; then
|
|
||||||
# PASSED_CHECKSUM="true"
|
|
||||||
#fi
|
|
||||||
;;
|
|
||||||
aarch64)
|
|
||||||
# Currently set to the continuous release channel until a static copy is put in 'ext-linux-bin'.
|
|
||||||
# The checksum will pass until the continuous release is updated, then a new one needs to be
|
|
||||||
# generated to update this script.
|
|
||||||
if ! test -f "$FILE"; then
|
|
||||||
echo "Downloading appimagetool for architecture '$ARCH'"
|
|
||||||
wget -O appimagetool.AppImage https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-aarch64.AppImage
|
|
||||||
fi
|
|
||||||
if [ $(shasum -a 256 appimagetool.AppImage | cut -d' ' -f1) = "04f45ea45b5aa07bb2b071aed9dbf7a5185d3953b11b47358c1311f11ea94a96" ] ; then
|
|
||||||
PASSED_CHECKSUM="true"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
PASSED_CHECKSUM="invalid_arch"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
# delete the appimagetool downloaded if the checksum doesn't match.
|
|
||||||
if [ ! $PASSED_CHECKSUM == "true" ]; then
|
|
||||||
rm -f appimagetool.AppImage
|
|
||||||
fi
|
|
||||||
((DL_TRIES-=1))
|
|
||||||
done
|
|
||||||
if [ $PASSED_CHECKSUM == "true" ]; then
|
|
||||||
echo "Checksum passed. Proceeding to build image."
|
|
||||||
# Build AppImage
|
|
||||||
chmod a+x appimagetool.AppImage
|
|
||||||
./appimagetool.AppImage ./build "$2"
|
|
||||||
elif [ $PASSED_CHECKSUM == "invalid_arch" ]; then
|
|
||||||
echo "No download found for architecture '$ARCH'. Building halted."
|
|
||||||
else
|
|
||||||
echo "Checksum for appimagetool does not match. Building halted."
|
|
||||||
echo "If the file to be downloaded has been changed, a new checksum will need to be generated for this script."
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "QT not found, aborting AppImage build."
|
|
||||||
fi
|
|
Loading…
Add table
Add a link
Reference in a new issue