Skip to content

Commit a37a6c5

Browse files
fix AppImage setup for fso and qtfred
- generate appimage for qtfred if it's available - separate fso and qtfred install roots - move fso appimage files out of global space - fix qtfred appimage launch script - prefer X11 Qt backend for qtfred
1 parent 79e4f41 commit a37a6c5

File tree

7 files changed

+46
-28
lines changed

7 files changed

+46
-28
lines changed

CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,8 @@ SET(GENERATED_SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/generated_source)
170170
include(generateHeaders)
171171

172172
if(FSO_BUILD_APPIMAGE)
173-
include(appimage)
173+
SET(BINARY_DESTINATION "bin")
174+
SET(LIBRAY_DESTINATION "lib")
174175
endif()
175176

176177
include(clang-tidy)

ci/linux/generate_appimage.sh

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,23 @@
33
INSTALL_FOLDER=$1
44

55
# Install Freespace2 targets
6-
cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER -DCOMPONENT=Unspecified -P cmake_install.cmake
7-
cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER -DCOMPONENT=Freespace2 -P cmake_install.cmake
6+
cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER/Freespace2 -DCOMPONENT=Unspecified -P cmake_install.cmake
7+
cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER/Freespace2 -DCOMPONENT=Freespace2 -P cmake_install.cmake
88

99
# We need to be a bit creative for determining the AppImage name since we don't want to hard-code the name
10-
FILENAME="$(find $INSTALL_FOLDER/bin -name 'fs2_open_*' -type f -printf "%f\n").AppImage"
11-
appimagetool -n $INSTALL_FOLDER "$INSTALL_FOLDER/$FILENAME"
10+
FILENAME="$(find $INSTALL_FOLDER/Freespace2/bin -name 'fs2_open_*' -type f -printf "%f\n").AppImage"
11+
appimagetool -n "$INSTALL_FOLDER/Freespace2" "$INSTALL_FOLDER/$FILENAME"
1212
chmod +x "$INSTALL_FOLDER/$FILENAME"
1313

14+
# Maybe install qtFRED targets
15+
if [ -f qtfred/cmake_install.cmake ]; then
16+
cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER/qtFRED -DCOMPONENT=Unspecified -P cmake_install.cmake
17+
cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER/qtFRED -DCOMPONENT=qtFRED -P cmake_install.cmake
18+
19+
# We need to be a bit creative for determining the AppImage name since we don't want to hard-code the name
20+
FILENAME="$(find $INSTALL_FOLDER/qtFRED/bin -iname 'qtfred_*' -type f -printf "%f\n").AppImage"
21+
appimagetool -n "$INSTALL_FOLDER/qtFRED" "$INSTALL_FOLDER/$FILENAME"
22+
chmod +x "$INSTALL_FOLDER/$FILENAME"
23+
fi
24+
1425
ls -al $INSTALL_FOLDER

cmake/appimage.cmake

Lines changed: 0 additions & 21 deletions
This file was deleted.

freespace2/CMakeLists.txt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,25 @@ if (FSO_INSTALL_DEBUG_FILES)
6060
endif()
6161
endif()
6262

63+
if(FSO_BUILD_APPIMAGE)
64+
configure_file("${CMAKE_CURRENT_LIST_DIR}/cmake/AppRun.in" "${CMAKE_CURRENT_BINARY_DIR}/AppRun.gen" @ONLY)
65+
file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AppRun-$<CONFIG>"
66+
INPUT "${CMAKE_CURRENT_BINARY_DIR}/AppRun.gen")
67+
68+
install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/AppRun-$<CONFIG>" DESTINATION "." RENAME "AppRun"
69+
COMPONENT "Freespace2")
70+
71+
configure_file("${CMAKE_CURRENT_LIST_DIR}/cmake/AppImage.desktop.in" "${CMAKE_CURRENT_BINARY_DIR}/AppImage.desktop.gen" @ONLY)
72+
file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/AppImage-$<CONFIG>.desktop"
73+
INPUT "${CMAKE_CURRENT_BINARY_DIR}/AppImage.desktop.gen")
74+
75+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/AppImage-$<CONFIG>.desktop" DESTINATION "." RENAME "fso.desktop"
76+
COMPONENT "Freespace2")
77+
78+
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/resources/app_icon.png" DESTINATION "."
79+
COMPONENT "Freespace2")
80+
endif()
81+
6382
enable_clang_tidy(Freespace2)
6483

6584
INCLUDE(util)

qtfred/cmake/AppRun.in

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
11
#!/bin/bash
22
HERE=$(dirname $(readlink -f "${0}"))
3-
export LD_LIBRARY_PATH=${HERE}/usr/lib:$LD_LIBRARY_PATH
4-
exec "${HERE}/usr/bin/$<TARGET_FILE_NAME:qtfred>" "$@"
3+
export LD_LIBRARY_PATH=${HERE}/lib:$LD_LIBRARY_PATH
4+
5+
# Qt5 doesn't work so well with Wayland for us so prefer the use of X11 unless
6+
# another backend is already specified
7+
# (NOTE: the -platform option will override this so we don't need to test for it)
8+
if [ -z "$QT_QPA_PLATFORM" ]; then
9+
export QT_QPA_PLATFORM="xcb;wayland"
10+
fi
11+
12+
exec "${HERE}/bin/$<TARGET_FILE_NAME:qtfred>" "$@"

0 commit comments

Comments
 (0)