mirror of
https://github.com/RetroDECK/Duckstation.git
synced 2024-11-30 09:35:40 +00:00
Merge pull request #916 from ggrtk/appimage
AppImage: Fix loading of bundled Qt library and various cleanups
This commit is contained in:
commit
4dae216d61
4
.github/workflows/rolling-release.yml
vendored
4
.github/workflows/rolling-release.yml
vendored
|
@ -91,7 +91,7 @@ jobs:
|
|||
|
||||
|
||||
linux-build:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-18.04
|
||||
steps:
|
||||
- uses: actions/checkout@v2.3.1
|
||||
with:
|
||||
|
@ -110,7 +110,7 @@ jobs:
|
|||
cd build
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SDL_FRONTEND=ON -DBUILD_QT_FRONTEND=ON -DUSE_SDL2=ON -G Ninja ..
|
||||
ninja
|
||||
../appimage/generate-appimages.sh $(pwd)
|
||||
../appimage/generate_appimages.sh $(pwd)
|
||||
|
||||
- name: Upload SDL AppImage
|
||||
uses: actions/upload-artifact@v1
|
||||
|
|
|
@ -6,14 +6,14 @@ echo "APPIMAGE_RESOURCES_DIR set to ${APPIMAGE_RESOURCES_DIR}"
|
|||
|
||||
if [[ "$#" -ne 1 ]]; then
|
||||
echo "Wrong number of arguments (\$# = $# args) provided."
|
||||
echo "Usage: create-appimage.sh <build_directory_path>"
|
||||
echo "Usage: generate_appimages.sh <build_directory_path>"
|
||||
echo "AppImages will be generated in the path this script is called from."
|
||||
exit 1
|
||||
else
|
||||
BUILD_DIR=$(readlink -f $1)
|
||||
echo "BUILD_DIR set to ${BUILD_DIR}"
|
||||
fi
|
||||
|
||||
# Acquire linuxdeploy and linuxdeploy-plugin-qt
|
||||
wget --timestamping --directory-prefix=${BUILD_DIR} \
|
||||
https://artifacts.assassinate-you.net/artifactory/list/linuxdeploy/travis-456/linuxdeploy-x86_64.AppImage
|
||||
chmod a+x ${BUILD_DIR}/linuxdeploy-x86_64.AppImage
|
||||
|
@ -22,28 +22,33 @@ wget --timestamping --directory-prefix=${BUILD_DIR} \
|
|||
https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
|
||||
chmod a+x ${BUILD_DIR}/linuxdeploy-plugin-qt-x86_64.AppImage
|
||||
|
||||
wget --timestamping --directory-prefix=${BUILD_DIR} \
|
||||
https://github.com/linuxdeploy/linuxdeploy-plugin-appimage/releases/download/continuous/linuxdeploy-plugin-appimage-x86_64.AppImage
|
||||
chmod a+x ${BUILD_DIR}/linuxdeploy-plugin-appimage-x86_64.AppImage
|
||||
|
||||
# Copy icons into the <resolution>/<app_name>.<ext> directory structure that linuxdeploy nominally expects,
|
||||
# e.g. 16x16/duckstation-qt.png, 32x32/duckstation-qt.png, etc.
|
||||
FRONTENDS=("qt" "sdl")
|
||||
ICONS_QT=()
|
||||
ICONS_SDL=()
|
||||
|
||||
ICON_PNG_RESOLUTIONS=($(seq 16 16 64)) # 16, 32, 48, 64
|
||||
for res in ${ICON_PNG_RESOLUTIONS[@]}; do
|
||||
for filename in ${APPIMAGE_RESOURCES_DIR}/icon-*px.png; do
|
||||
[[ ${filename} =~ ${APPIMAGE_RESOURCES_DIR}/icon-(.*)px.png ]];
|
||||
res=${BASH_REMATCH[1]}
|
||||
mkdir -p ${BUILD_DIR}/AppImage-icons/${res}x${res}
|
||||
for frontend in ${FRONTENDS[@]}; do
|
||||
# Copy icon to proper directory
|
||||
cp ${APPIMAGE_RESOURCES_DIR}/icon-${res}px.png ${BUILD_DIR}/AppImage-icons/${res}x${res}/duckstation-${frontend}.png
|
||||
cp -v ${APPIMAGE_RESOURCES_DIR}/icon-${res}px.png ${BUILD_DIR}/AppImage-icons/${res}x${res}/duckstation-${frontend}.png
|
||||
# Append icon filepath to array that will later be passed to linuxdeploy
|
||||
eval "ICONS_${frontend^^}+=(${BUILD_DIR}/AppImage-icons/${res}x${res}/duckstation-${frontend}.png)"
|
||||
done
|
||||
done
|
||||
|
||||
# Add data files into the AppDir
|
||||
DATA_DIR=$(dirname $(realpath "${BASH_SOURCE[0]}"))/../data
|
||||
DATA_DIR=${APPIMAGE_RESOURCES_DIR}/../data
|
||||
echo "Data directory is: ${DATA_DIR}"
|
||||
for frontend in ${FRONTENDS[@]}; do
|
||||
CURRENT_APPDIR=${BUILD_DIR}/AppDir-duckstation-${frontend}
|
||||
CURRENT_APPDIR=${BUILD_DIR}/duckstation-${frontend}.AppDir
|
||||
mkdir -p ${CURRENT_APPDIR}/usr/bin
|
||||
cp -av ${DATA_DIR}/* ${CURRENT_APPDIR}/usr/bin
|
||||
done
|
||||
|
@ -52,7 +57,7 @@ done
|
|||
TRANSLATIONS_DIR=${BUILD_DIR}/bin/translations
|
||||
echo "Translation directory is: ${BUILD_DIR}"
|
||||
for frontend in ${FRONTENDS[@]}; do
|
||||
CURRENT_APPDIR=${BUILD_DIR}/AppDir-duckstation-${frontend}
|
||||
CURRENT_APPDIR=${BUILD_DIR}/duckstation-${frontend}.AppDir
|
||||
mkdir -p ${CURRENT_APPDIR}/usr/bin
|
||||
cp -av ${TRANSLATIONS_DIR} ${CURRENT_APPDIR}/usr/bin
|
||||
done
|
||||
|
@ -60,24 +65,27 @@ done
|
|||
# Pass UPDATE_INFORMATION and OUTPUT variables (used by linuxdeploy-plugin-appimage)
|
||||
# to the environment of the linuxdeploy commands
|
||||
|
||||
UPDATE_INFORMATION="zsync|https://github.com/stenzek/duckstation/releases/download/latest/duckstation-qt-x64.AppImage.zsync" \
|
||||
OUTPUT="duckstation-qt-x64.AppImage" \
|
||||
${BUILD_DIR}/linuxdeploy-x86_64.AppImage \
|
||||
--appdir=${BUILD_DIR}/AppDir-duckstation-qt \
|
||||
--appdir=${BUILD_DIR}/duckstation-qt.AppDir \
|
||||
--executable=${BUILD_DIR}/bin/duckstation-qt \
|
||||
--desktop-file=${APPIMAGE_RESOURCES_DIR}/duckstation-qt.desktop \
|
||||
${ICONS_QT[@]/#/--icon-file=} \
|
||||
--plugin=qt \
|
||||
--output=appimage
|
||||
--plugin=qt
|
||||
|
||||
# Patch AppRun to work around system Qt libraries being loaded ahead of bundled libraries
|
||||
sed -i 's|exec "$this_dir"/AppRun.wrapped "$@"|exec env LD_LIBRARY_PATH="$this_dir"/usr/lib:$LD_LIBRARY_PATH "$this_dir"/AppRun.wrapped "$@"|' \
|
||||
${BUILD_DIR}/duckstation-qt.AppDir/AppRun
|
||||
|
||||
UPDATE_INFORMATION="zsync|https://github.com/stenzek/duckstation/releases/download/latest/duckstation-qt-x64.AppImage.zsync" \
|
||||
OUTPUT="duckstation-qt-x64.AppImage" \
|
||||
${BUILD_DIR}/linuxdeploy-plugin-appimage-x86_64.AppImage \
|
||||
--appdir=${BUILD_DIR}/duckstation-qt.AppDir
|
||||
|
||||
UPDATE_INFORMATION="zsync|https://github.com/stenzek/duckstation/releases/download/latest/duckstation-sdl-x64.AppImage.zsync" \
|
||||
OUTPUT="duckstation-sdl-x64.AppImage" \
|
||||
${BUILD_DIR}/linuxdeploy-x86_64.AppImage \
|
||||
--appdir=${BUILD_DIR}/AppDir-duckstation-sdl \
|
||||
--appdir=${BUILD_DIR}/duckstation-sdl.AppDir \
|
||||
--executable=${BUILD_DIR}/bin/duckstation-sdl \
|
||||
--desktop-file=${APPIMAGE_RESOURCES_DIR}/duckstation-sdl.desktop \
|
||||
${ICONS_SDL[@]/#/--icon-file=} \
|
||||
--output=appimage
|
||||
|
||||
# Resulting AppImages and zsync files will be created in the directory this script is called from;
|
||||
# move them into the user's specified build directory
|
Loading…
Reference in a new issue