mirror of
https://github.com/RetroDECK/RetroDECK.git
synced 2025-04-10 19:15:12 +00:00
Merge branch 'feat/libman' into cooker
This commit is contained in:
commit
17d0f6a847
127
automation_tools/libman.sh
Normal file
127
automation_tools/libman.sh
Normal file
|
@ -0,0 +1,127 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Be aware that this script deletes the source directory after copying the files. It is intended to be used only by the flatpak builder.
|
||||||
|
|
||||||
|
|
||||||
|
# List of user-defined libraries to exclude
|
||||||
|
excluded_libraries=("libselinux.so.1")
|
||||||
|
|
||||||
|
# Define target directory
|
||||||
|
target_dir="${FLATPAK_DEST}/lib"
|
||||||
|
|
||||||
|
|
||||||
|
echo "Worry not, LibMan is here!"
|
||||||
|
|
||||||
|
# Set default destination if FLATPAK_DEST is not set
|
||||||
|
if [ -z "$FLATPAK_DEST" ]; then
|
||||||
|
export FLATPAK_DEST="/app"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if source directory is provided
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
echo "Usage: $0 <source_directory>"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ensure the target directory exists
|
||||||
|
if ! mkdir -p "$target_dir"; then
|
||||||
|
echo "Error: Failed to create target directory $target_dir"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Function to check if a file is in the excluded libraries list
|
||||||
|
is_excluded() {
|
||||||
|
local file="$1"
|
||||||
|
for excluded in "${excluded_libraries[@]}"; do
|
||||||
|
if [[ "$excluded" == "$file" ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Find and copy files
|
||||||
|
copied_files=()
|
||||||
|
failed_files=()
|
||||||
|
|
||||||
|
# First, copy all regular files
|
||||||
|
for file in $(find "$1" -type f -name "*.so*" ! -type l); do
|
||||||
|
# Define destination file path
|
||||||
|
dest_file="$target_dir/$(basename "$file")"
|
||||||
|
|
||||||
|
# Skip if the file is in the list of excluded libraries
|
||||||
|
if is_excluded "$(basename "$file")"; then
|
||||||
|
reason="library is in the exclusion list"
|
||||||
|
echo "Skipped $file as it is $reason"
|
||||||
|
failed_files+=("$file, $reason")
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Skip if the destination file already exists
|
||||||
|
if [ -e "$dest_file" ]; then
|
||||||
|
echo "Skipped $file as $dest_file already exists"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Attempt to copy the file
|
||||||
|
if install -D "$file" "$dest_file" 2>error_log; then
|
||||||
|
echo "Copied $file to $dest_file"
|
||||||
|
copied_files+=("$file")
|
||||||
|
else
|
||||||
|
error_message=$(<error_log)
|
||||||
|
echo "Warning: Failed to copy $file. Skipping. Error: $error_message"
|
||||||
|
failed_files+=("$file, $error_message")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Then, copy all symlinks
|
||||||
|
for file in $(find "$1" -type l -name "*.so*"); do
|
||||||
|
# Define destination file path
|
||||||
|
dest_file="$target_dir/$(basename "$file")"
|
||||||
|
|
||||||
|
# Get the target of the symlink
|
||||||
|
symlink_target=$(readlink "$file")
|
||||||
|
# Define the destination for the symlink target
|
||||||
|
dest_symlink_target="$target_dir/$(basename "$symlink_target")"
|
||||||
|
|
||||||
|
# Copy the symlink target if it doesn't already exist
|
||||||
|
if [ ! -e "$dest_symlink_target" ]; then
|
||||||
|
if install -D "$symlink_target" "$dest_symlink_target" 2>error_log; then
|
||||||
|
echo "Copied symlink target $symlink_target to $dest_symlink_target"
|
||||||
|
copied_files+=("$symlink_target")
|
||||||
|
else
|
||||||
|
error_message=$(<error_log)
|
||||||
|
echo "Warning: Failed to copy symlink target $symlink_target. Skipping. Error: $error_message"
|
||||||
|
failed_files+=("$symlink_target, $error_message")
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create the symlink in the target directory
|
||||||
|
if ln -s "$dest_symlink_target" "$dest_file" 2>error_log; then
|
||||||
|
echo "Created symlink $dest_file -> $dest_symlink_target"
|
||||||
|
copied_files+=("$file")
|
||||||
|
else
|
||||||
|
error_message=$(<error_log)
|
||||||
|
echo "Warning: Failed to create symlink $dest_file. Skipping. Error: $error_message"
|
||||||
|
failed_files+=("$file, $error_message")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Output the lists of copied and failed files
|
||||||
|
if [ ${#copied_files[@]} -ne 0 ]; then
|
||||||
|
echo "Imported libraries:"
|
||||||
|
for file in "${copied_files[@]}"; do
|
||||||
|
echo "$file"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Output failed files only if the list is not empty
|
||||||
|
if [ ${#failed_files[@]} -ne 0 ]; then
|
||||||
|
echo "Failed library files:"
|
||||||
|
for file in "${failed_files[@]}"; do
|
||||||
|
echo "$file"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "LibMan is flying away"
|
|
@ -97,6 +97,7 @@
|
||||||
<li>RetroDECK now is migrated to an organization on GitHub, as before, please check the October blog post</li>
|
<li>RetroDECK now is migrated to an organization on GitHub, as before, please check the October blog post</li>
|
||||||
<li>pre_build_automation script was reworked and additional functions are added</li>
|
<li>pre_build_automation script was reworked and additional functions are added</li>
|
||||||
<li>Contributing is now easier and the manifest build time is down to about 1h (was 3h30)</li>
|
<li>Contributing is now easier and the manifest build time is down to about 1h (was 3h30)</li>
|
||||||
|
<li>Introduced a new library management system called LibMan to make sure that each compoent is bringing its own libraries while built from the manifest</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>Known issues:</p>
|
<p>Known issues:</p>
|
||||||
<ul>
|
<ul>
|
||||||
|
|
|
@ -53,7 +53,7 @@ cleanup:
|
||||||
- /src
|
- /src
|
||||||
- '*.a'
|
- '*.a'
|
||||||
- '*.la'
|
- '*.la'
|
||||||
- /app/retrodeck/tmplib
|
- /app/bin/libman.sh
|
||||||
|
|
||||||
modules:
|
modules:
|
||||||
|
|
||||||
|
@ -70,11 +70,12 @@ modules:
|
||||||
# [ ] Update the VERSION variable on line containing "VERSION=THISBRANCH"
|
# [ ] Update the VERSION variable on line containing "VERSION=THISBRANCH"
|
||||||
# [ ] Update the appdata.xml with the version number and notes
|
# [ ] Update the appdata.xml with the version number and notes
|
||||||
|
|
||||||
- name: version-initialization
|
- name: retrodeck-initialization
|
||||||
buildsystem: simple
|
buildsystem: simple
|
||||||
build-commands:
|
build-commands:
|
||||||
- |
|
- |
|
||||||
|
|
||||||
|
# VERSION INITIALIZATION
|
||||||
# on main please update this with the version variable, eg: VERSION=0.8.0b
|
# on main please update this with the version variable, eg: VERSION=0.8.0b
|
||||||
# on cooker will be VERSION=cooker-0.9.0b for example
|
# on cooker will be VERSION=cooker-0.9.0b for example
|
||||||
VERSION=cooker-0.9.0b
|
VERSION=cooker-0.9.0b
|
||||||
|
@ -88,6 +89,9 @@ modules:
|
||||||
echo $VERSION >> ${FLATPAK_DEST}/retrodeck/version
|
echo $VERSION >> ${FLATPAK_DEST}/retrodeck/version
|
||||||
cat ${FLATPAK_DEST}/retrodeck/version
|
cat ${FLATPAK_DEST}/retrodeck/version
|
||||||
echo "Version is $VERSION"
|
echo "Version is $VERSION"
|
||||||
|
|
||||||
|
# LIBMAN INSTALLATION
|
||||||
|
install -Dm755 "automation_tools/libman.sh" "/app/bin/libman.sh"
|
||||||
sources:
|
sources:
|
||||||
- type: git
|
- type: git
|
||||||
url: THISREPO
|
url: THISREPO
|
||||||
|
@ -229,21 +233,22 @@ modules:
|
||||||
- name: retroarch
|
- name: retroarch
|
||||||
buildsystem: simple
|
buildsystem: simple
|
||||||
build-commands:
|
build-commands:
|
||||||
|
# Step 1: Create required directories
|
||||||
- mkdir -p "${FLATPAK_DEST}/share/libretro/"
|
- mkdir -p "${FLATPAK_DEST}/share/libretro/"
|
||||||
|
# Step 2: Copy RetroArch configuration files
|
||||||
- cp -r ./RetroArch-Linux-x86_64.AppImage.home/.config/retroarch/* "${FLATPAK_DEST}/share/libretro/"
|
- cp -r ./RetroArch-Linux-x86_64.AppImage.home/.config/retroarch/* "${FLATPAK_DEST}/share/libretro/"
|
||||||
|
# Step 3: Extract the AppImage
|
||||||
- chmod +x ./*.AppImage
|
- chmod +x ./*.AppImage
|
||||||
- ./*.AppImage --appimage-extract
|
- ./*.AppImage --appimage-extract
|
||||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
# Step 4: Use libman.sh to manage libraries
|
||||||
- mv "squashfs-root/usr/lib/"* "${FLATPAK_DEST}/retrodeck/tmplib"
|
- /app/bin/libman.sh "squashfs-root/usr/lib"
|
||||||
- cp -r squashfs-root/usr/* "${FLATPAK_DEST}"
|
# Step 5: Copy remaining extracted files to the Flatpak destination
|
||||||
|
- find squashfs-root/usr/ -exec sh -c 'install -Dm755 "{}" "${FLATPAK_DEST}/$(echo "{}" | sed "s|^squashfs-root/usr||")"' \;
|
||||||
sources:
|
sources:
|
||||||
- type: archive
|
- type: archive
|
||||||
url: https://buildbot.libretro.com/stable/1.20.0/linux/x86_64/RetroArch.7z
|
url: https://buildbot.libretro.com/stable/1.20.0/linux/x86_64/RetroArch.7z
|
||||||
#sha256: RASHAPLACEHOLDER
|
|
||||||
sha256: 809b3e9f02a9849719453d0f189a0edc544ad3235c8ce75a79488e710ba9668a
|
sha256: 809b3e9f02a9849719453d0f189a0edc544ad3235c8ce75a79488e710ba9668a
|
||||||
|
|
||||||
# Not part of the offical RetroArch AppImage
|
|
||||||
|
|
||||||
# TODO: outsource me
|
# TODO: outsource me
|
||||||
- name: libbz2
|
- name: libbz2
|
||||||
no-autogen: true
|
no-autogen: true
|
||||||
|
@ -341,11 +346,15 @@ modules:
|
||||||
- name: retrodeck-ppsspp
|
- name: retrodeck-ppsspp
|
||||||
buildsystem: simple
|
buildsystem: simple
|
||||||
build-commands:
|
build-commands:
|
||||||
|
# Step 1: Remove unused manifest file
|
||||||
- rm -f "files/manifest.json"
|
- rm -f "files/manifest.json"
|
||||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
# Step 2: Use libman.sh to copy libraries to the RetroDeck library folder
|
||||||
- "cp -rnL files/lib/* ${FLATPAK_DEST}/retrodeck/tmplib || echo 'Warning: Some files could not be copied, but the build will continue.'"
|
- /app/bin/libman.sh "files/lib"
|
||||||
|
# Step 3: Clean up source library folder
|
||||||
- rm -rf "files/lib"
|
- rm -rf "files/lib"
|
||||||
|
# Step 4: Make binaries executable
|
||||||
- chmod +x "files/bin/"*
|
- chmod +x "files/bin/"*
|
||||||
|
# Step 5: Copy remaining files to Flatpak destination
|
||||||
- cp -r files/* "${FLATPAK_DEST}"
|
- cp -r files/* "${FLATPAK_DEST}"
|
||||||
sources:
|
sources:
|
||||||
- type: archive
|
- type: archive
|
||||||
|
@ -359,11 +368,14 @@ modules:
|
||||||
- name: pcsx2
|
- name: pcsx2
|
||||||
buildsystem: simple
|
buildsystem: simple
|
||||||
build-commands:
|
build-commands:
|
||||||
|
# Step 1: Ensure the AppImage is executable
|
||||||
- chmod +x *.AppImage
|
- chmod +x *.AppImage
|
||||||
|
# Step 2: Extract the AppImage
|
||||||
- ./*.AppImage --appimage-extract
|
- ./*.AppImage --appimage-extract
|
||||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
# Step 3: Use libman.sh to handle library files
|
||||||
- mv "squashfs-root/usr/lib/"* "${FLATPAK_DEST}/retrodeck/tmplib"
|
- /app/bin/libman.sh "squashfs-root/usr/lib"
|
||||||
- cp -r squashfs-root/usr/* "${FLATPAK_DEST}"
|
# Step 4: Copy the remaining extracted files to the Flatpak destination
|
||||||
|
- find squashfs-root/usr/ -exec sh -c 'install -Dm755 "{}" "${FLATPAK_DEST}/$(echo "{}" | sed "s|^squashfs-root/usr||")"' \;
|
||||||
sources:
|
sources:
|
||||||
- type: file
|
- type: file
|
||||||
url: https://github.com/PCSX2/pcsx2/releases/download/v2.3.53/pcsx2-v2.3.53-linux-appimage-x64-Qt.AppImage
|
url: https://github.com/PCSX2/pcsx2/releases/download/v2.3.53/pcsx2-v2.3.53-linux-appimage-x64-Qt.AppImage
|
||||||
|
@ -376,13 +388,15 @@ modules:
|
||||||
- name: retrodeck-dolphin
|
- name: retrodeck-dolphin
|
||||||
buildsystem: simple
|
buildsystem: simple
|
||||||
build-commands:
|
build-commands:
|
||||||
|
# Step 1: Remove any existing manifest.json file
|
||||||
- rm -f "files/manifest.json"
|
- rm -f "files/manifest.json"
|
||||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
# Step 2: Use libman.sh to manage libraries
|
||||||
- "cp -rnL files/lib/debug ${FLATPAK_DEST}/retrodeck/tmplib || echo 'Warning: Some files could not be copied, but the build will continue.'"
|
- /app/bin/libman.sh "files/lib"
|
||||||
- rm -rf "files/lib/debug"
|
# Step 3: removing libraries folder that have been already moved
|
||||||
- "cp -rnL files/lib/* ${FLATPAK_DEST}/retrodeck/tmplib || echo 'Warning: Some files could not be copied, but the build will continue.'"
|
|
||||||
- rm -rf "files/lib"
|
- rm -rf "files/lib"
|
||||||
|
# Step 4: Ensure binaries are executable
|
||||||
- chmod +x "files/bin/"*
|
- chmod +x "files/bin/"*
|
||||||
|
# Step 5: Copy all remaining files to the Flatpak destination
|
||||||
- cp -r files/* "${FLATPAK_DEST}"
|
- cp -r files/* "${FLATPAK_DEST}"
|
||||||
sources:
|
sources:
|
||||||
- type: archive
|
- type: archive
|
||||||
|
@ -395,14 +409,17 @@ modules:
|
||||||
- name: retrodeck-primehack
|
- name: retrodeck-primehack
|
||||||
buildsystem: simple
|
buildsystem: simple
|
||||||
build-commands:
|
build-commands:
|
||||||
|
# Step 1: Remove any existing manifest.json file
|
||||||
- rm -f "files/manifest.json"
|
- rm -f "files/manifest.json"
|
||||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
# Step 2: Remove unnecessary files
|
||||||
- rm -rf "files/lib/pkgconfig"
|
- rm -rf "files/lib/pkgconfig"
|
||||||
- "cp -rnL files/lib/debug ${FLATPAK_DEST}/retrodeck/tmplib || echo 'Warning: Some files could not be copied, but the build will continue.'"
|
# Step 3: Use libman.sh to manage libraries
|
||||||
- rm -rf "files/lib/debug"
|
- /app/bin/libman.sh "files/lib"
|
||||||
- "cp -rnL files/lib/* ${FLATPAK_DEST}/retrodeck/tmplib || echo 'Warning: Some files could not be copied, but the build will continue.'"
|
# Step 4: removing libraries folder that have been already moved
|
||||||
- rm -rf "files/lib"
|
- rm -rf "files/lib"
|
||||||
|
# Step 5: Ensure binaries are executable
|
||||||
- chmod +x "files/bin/"*
|
- chmod +x "files/bin/"*
|
||||||
|
# Step 6: Copy all remaining files to the Flatpak destination
|
||||||
- cp -r files/* "${FLATPAK_DEST}"
|
- cp -r files/* "${FLATPAK_DEST}"
|
||||||
sources:
|
sources:
|
||||||
- type: archive
|
- type: archive
|
||||||
|
@ -415,11 +432,15 @@ modules:
|
||||||
- name: retrodeck-rpcs3
|
- name: retrodeck-rpcs3
|
||||||
buildsystem: simple
|
buildsystem: simple
|
||||||
build-commands:
|
build-commands:
|
||||||
|
# Step 1: Remove any existing manifest.json file
|
||||||
- rm -f "files/manifest.json"
|
- rm -f "files/manifest.json"
|
||||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
# Step 2: Use libman.sh to manage libraries
|
||||||
- "cp -rnL files/lib/* ${FLATPAK_DEST}/retrodeck/tmplib || echo 'Warning: Some files could not be copied, but the build will continue.'"
|
- /app/bin/libman.sh "files/lib"
|
||||||
|
# Step 3: removing libraries folder that have been already moved
|
||||||
- rm -rf "files/lib"
|
- rm -rf "files/lib"
|
||||||
|
# Step 4: Ensure binaries are executable
|
||||||
- chmod +x "files/bin/"*
|
- chmod +x "files/bin/"*
|
||||||
|
# Step 5: Copy all remaining files to the Flatpak destination
|
||||||
- cp -r files/* "${FLATPAK_DEST}"
|
- cp -r files/* "${FLATPAK_DEST}"
|
||||||
sources:
|
sources:
|
||||||
- type: archive
|
- type: archive
|
||||||
|
@ -432,11 +453,15 @@ modules:
|
||||||
- name: melonds
|
- name: melonds
|
||||||
buildsystem: simple
|
buildsystem: simple
|
||||||
build-commands:
|
build-commands:
|
||||||
|
# Step 1: Remove any existing manifest.json file
|
||||||
- rm -f "files/manifest.json"
|
- rm -f "files/manifest.json"
|
||||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib/"
|
# Step 2: Use libman.sh to manage libraries
|
||||||
- "cp -rnL files/lib/* ${FLATPAK_DEST}/retrodeck/tmplib || echo 'Warning: Some files could not be copied, but the build will continue.'"
|
- /app/bin/libman.sh "files/lib"
|
||||||
|
# Step 3: removing libraries folder that have been already moved
|
||||||
- rm -rf "files/lib"
|
- rm -rf "files/lib"
|
||||||
|
# Step 4: Ensure binaries are executable
|
||||||
- chmod +x "files/bin/"*
|
- chmod +x "files/bin/"*
|
||||||
|
# Step 5: Copy all remaining files to the Flatpak destination
|
||||||
- cp -r files/* "${FLATPAK_DEST}/"
|
- cp -r files/* "${FLATPAK_DEST}/"
|
||||||
sources:
|
sources:
|
||||||
- type: archive
|
- type: archive
|
||||||
|
@ -450,11 +475,13 @@ modules:
|
||||||
- name: duckstation
|
- name: duckstation
|
||||||
buildsystem: simple
|
buildsystem: simple
|
||||||
build-commands:
|
build-commands:
|
||||||
|
# Step 1: Ensure the AppImage is executable and extract it
|
||||||
- chmod +x *.AppImage
|
- chmod +x *.AppImage
|
||||||
- ./*.AppImage --appimage-extract
|
- ./*.AppImage --appimage-extract
|
||||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
# Step 2: Use libman.sh to manage libraries
|
||||||
- mv "squashfs-root/usr/lib/"* "${FLATPAK_DEST}/retrodeck/tmplib"
|
- /app/bin/libman.sh "squashfs-root/usr/lib"
|
||||||
- cp -r squashfs-root/usr/* "${FLATPAK_DEST}"
|
# Step 3: Copy remaining extracted files to the Flatpak destination
|
||||||
|
- find squashfs-root/usr/ -exec sh -c 'install -Dm755 "{}" "${FLATPAK_DEST}/$(echo "{}" | sed "s|^squashfs-root/usr||")"' \;
|
||||||
sources:
|
sources:
|
||||||
- type: file
|
- type: file
|
||||||
url: https://github.com/RetroDECK/Duckstation/releases/download/preview/DuckStation-x64.AppImage
|
url: https://github.com/RetroDECK/Duckstation/releases/download/preview/DuckStation-x64.AppImage
|
||||||
|
@ -467,14 +494,17 @@ modules:
|
||||||
- name: cemu
|
- name: cemu
|
||||||
buildsystem: simple
|
buildsystem: simple
|
||||||
build-commands:
|
build-commands:
|
||||||
|
# Step 1: Ensure the AppImage is executable and extract it
|
||||||
- chmod +x *.AppImage
|
- chmod +x *.AppImage
|
||||||
- ./*.AppImage --appimage-extract
|
- ./*.AppImage --appimage-extract
|
||||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
# Step 2: Remove unnecessary files causing potential issues
|
||||||
- rm -rf "squashfs-root/usr/lib/girepository-1.0" # causes issues, I think we already have this
|
- rm -rf "squashfs-root/usr/lib/girepository-1.0"
|
||||||
- mv "squashfs-root/usr/lib/"* "${FLATPAK_DEST}/retrodeck/tmplib"
|
# Step 3: Use libman.sh to manage libraries
|
||||||
- cp -r squashfs-root/usr/* "${FLATPAK_DEST}"
|
- /app/bin/libman.sh "squashfs-root/usr/lib"
|
||||||
|
# Step 4: Copy remaining extracted files to the Flatpak destination
|
||||||
|
- find squashfs-root/usr/ -exec sh -c 'install -Dm755 "{}" "${FLATPAK_DEST}/$(echo "{}" | sed "s|^squashfs-root/usr||")"' \;
|
||||||
|
# Step 5: Install the wrapper script
|
||||||
- install -Dm755 Cemu-wrapper "${FLATPAK_DEST}/bin/"
|
- install -Dm755 Cemu-wrapper "${FLATPAK_DEST}/bin/"
|
||||||
#TODO: do we need this wrapper? squashfs-root/apprun-hooks/linuxdeploy-plugin-gtk.sh
|
|
||||||
sources:
|
sources:
|
||||||
- type: file
|
- type: file
|
||||||
url: https://github.com/cemu-project/Cemu/releases/download/v2.4/Cemu-2.4-x86_64.AppImage
|
url: https://github.com/cemu-project/Cemu/releases/download/v2.4/Cemu-2.4-x86_64.AppImage
|
||||||
|
@ -517,12 +547,18 @@ modules:
|
||||||
- name: retrodeck-solarus
|
- name: retrodeck-solarus
|
||||||
buildsystem: simple
|
buildsystem: simple
|
||||||
build-commands:
|
build-commands:
|
||||||
|
# Step 1: Remove any existing manifest.json file
|
||||||
- rm -f "files/manifest.json"
|
- rm -f "files/manifest.json"
|
||||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
# Step 2: Remove unnecessary files
|
||||||
#- cp -r "files/lib/debug/lib/*" "${FLATPAK_DEST}/retrodeck/tmplib/debug/"
|
|
||||||
- rm -rf "files/lib/debug" "files/lib/pkgconfig"
|
- rm -rf "files/lib/debug" "files/lib/pkgconfig"
|
||||||
|
# Step 3: Use libman.sh to manage libraries
|
||||||
|
- /app/bin/libman.sh "files/lib"
|
||||||
|
# Step 4: removing libraries folder that have been already moved
|
||||||
|
- rm -rf "files/lib"
|
||||||
|
# Step 5: Ensure binaries are executable
|
||||||
- chmod +x "files/bin/"*
|
- chmod +x "files/bin/"*
|
||||||
- "cp -rnL files/lib/* ${FLATPAK_DEST}/retrodeck/tmplib || echo 'Warning: Some files could not be copied, but the build will continue.'"
|
# Step 6: Copy all remaining files to the Flatpak destination
|
||||||
|
- cp -r files/* "${FLATPAK_DEST}"
|
||||||
sources:
|
sources:
|
||||||
- type: archive
|
- type: archive
|
||||||
url: https://github.com/RetroDECK/org.solarus_games.solarus.Launcher/releases/latest/download/RetroDECK-solarus-Artifact.tar.gz
|
url: https://github.com/RetroDECK/org.solarus_games.solarus.Launcher/releases/latest/download/RetroDECK-solarus-Artifact.tar.gz
|
||||||
|
@ -535,12 +571,17 @@ modules:
|
||||||
- name: retrodeck-gzdoom
|
- name: retrodeck-gzdoom
|
||||||
buildsystem: simple
|
buildsystem: simple
|
||||||
build-commands:
|
build-commands:
|
||||||
|
# Step 1: Remove any existing manifest.json file
|
||||||
- rm -f "files/manifest.json"
|
- rm -f "files/manifest.json"
|
||||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
# Step 2: Remove unnecessary files
|
||||||
- rm -rf "files/lib/cmake" "files/lib/pkgconfig" "files/lib/debug"
|
- rm -rf "files/lib/cmake" "files/lib/pkgconfig" "files/lib/debug"
|
||||||
- "cp -rnL files/lib/* ${FLATPAK_DEST}/retrodeck/tmplib || echo 'Warning: Some files could not be copied, but the build will continue.'"
|
# Step 3: Use libman.sh to manage libraries
|
||||||
|
- /app/bin/libman.sh "files/lib"
|
||||||
|
# Step 4: removing libraries folder that have been already moved
|
||||||
- rm -rf "files/lib"
|
- rm -rf "files/lib"
|
||||||
|
# Step 5: Ensure binaries are executable
|
||||||
- chmod +x "files/bin/"*
|
- chmod +x "files/bin/"*
|
||||||
|
# Step 6: Copy all remaining files to the Flatpak destination
|
||||||
- cp -r files/* "${FLATPAK_DEST}"
|
- cp -r files/* "${FLATPAK_DEST}"
|
||||||
sources:
|
sources:
|
||||||
- type: archive
|
- type: archive
|
||||||
|
@ -549,15 +590,20 @@ modules:
|
||||||
|
|
||||||
# Pancakes
|
# Pancakes
|
||||||
|
|
||||||
- name: Pancakes
|
- name: pancakes
|
||||||
buildsystem: simple
|
buildsystem: simple
|
||||||
build-commands:
|
build-commands:
|
||||||
|
# Step 1: Create the Flatpak destination directory
|
||||||
- mkdir -p "${FLATPAK_DEST}"
|
- mkdir -p "${FLATPAK_DEST}"
|
||||||
- mv *.so* "${FLATPAK_DEST}/retrodeck/tmplib/"
|
# Step 2: Extract and manage library files
|
||||||
|
- /app/bin/libman.sh "."
|
||||||
|
# Step 3: Move and set up the binary
|
||||||
|
- rm -rf *.dll.config
|
||||||
- mv R*x* "${FLATPAK_DEST}/bin/"
|
- mv R*x* "${FLATPAK_DEST}/bin/"
|
||||||
- chmod +x "${FLATPAK_DEST}/bin/"R*x*
|
- chmod +x "${FLATPAK_DEST}/bin/"R*x*
|
||||||
|
# Step 4: Set up license directory and move license files
|
||||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/licenses"
|
- mkdir -p "${FLATPAK_DEST}/retrodeck/licenses"
|
||||||
- mv LICENSE.txt "${FLATPAK_DEST}/retrodeck/licenses"
|
- mv LICENSE.txt THIRDPARTY.md "${FLATPAK_DEST}/retrodeck/licenses"
|
||||||
sources:
|
sources:
|
||||||
- type: archive
|
- type: archive
|
||||||
url: https://github.com/RetroDECK/Pancakes-bin/releases/download/1.1.0.1403/pancakes-Release-linux_x64.tar.gz
|
url: https://github.com/RetroDECK/Pancakes-bin/releases/download/1.1.0.1403/pancakes-Release-linux_x64.tar.gz
|
||||||
|
@ -569,11 +615,13 @@ modules:
|
||||||
- name: xemu
|
- name: xemu
|
||||||
buildsystem: simple
|
buildsystem: simple
|
||||||
build-commands:
|
build-commands:
|
||||||
|
# Step 1: Ensure the AppImage is executable and extract it
|
||||||
- chmod +x *.AppImage
|
- chmod +x *.AppImage
|
||||||
- ./*.AppImage --appimage-extract
|
- ./*.AppImage --appimage-extract
|
||||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
# Step 2: Use libman.sh to manage libraries
|
||||||
- mv "squashfs-root/usr/lib/"* "${FLATPAK_DEST}/retrodeck/tmplib"
|
- /app/bin/libman.sh "squashfs-root/usr/lib"
|
||||||
- cp -r squashfs-root/usr/* "${FLATPAK_DEST}/"
|
# Step 3: Copy remaining extracted files to the Flatpak destination
|
||||||
|
- find squashfs-root/usr/ -exec sh -c 'install -Dm755 "{}" "${FLATPAK_DEST}/$(echo "{}" | sed "s|^squashfs-root/usr||")"' \;
|
||||||
sources:
|
sources:
|
||||||
- type: file
|
- type: file
|
||||||
url: https://github.com/xemu-project/xemu/releases/download/v0.8.5/xemu-v0.8.5-x86_64.AppImage
|
url: https://github.com/xemu-project/xemu/releases/download/v0.8.5/xemu-v0.8.5-x86_64.AppImage
|
||||||
|
@ -594,7 +642,11 @@ modules:
|
||||||
- name: retrodeck-mame
|
- name: retrodeck-mame
|
||||||
buildsystem: simple
|
buildsystem: simple
|
||||||
build-commands:
|
build-commands:
|
||||||
|
# Step 1: Remove any existing manifest.json file
|
||||||
- rm -f files/manifest.json
|
- rm -f files/manifest.json
|
||||||
|
# Step 2: Use libman.sh to manage libraries - REMOVED AS MAME DON'T BRING ANY LIBS WITH IT
|
||||||
|
# - /app/bin/libman.sh "files/lib"
|
||||||
|
# Step 3: Copy the managed libraries and all other files to the Flatpak destination
|
||||||
- cp -rn files/* ${FLATPAK_DEST}
|
- cp -rn files/* ${FLATPAK_DEST}
|
||||||
sources:
|
sources:
|
||||||
- type: archive
|
- type: archive
|
||||||
|
@ -631,12 +683,15 @@ modules:
|
||||||
- name: ES-DE
|
- name: ES-DE
|
||||||
buildsystem: simple
|
buildsystem: simple
|
||||||
build-commands:
|
build-commands:
|
||||||
|
# Step 1: Remove any existing manifest.json file
|
||||||
- rm -f "files/manifest.json"
|
- rm -f "files/manifest.json"
|
||||||
- mkdir -p "${FLATPAK_DEST}/retrodeck/tmplib" "${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
# Step 2: Use libman.sh to manage libraries
|
||||||
- cp -rfL files/lib/* ${FLATPAK_DEST}/retrodeck/tmplib
|
- /app/bin/libman.sh "files/lib"
|
||||||
- cp -rfL files/lib/* ${FLATPAK_DEST}/retrodeck/tmplib
|
# Step 3: Clean up source library folder
|
||||||
- rm -rf "files/lib"
|
- rm -rf "files/lib"
|
||||||
|
# Step 4: Ensure binaries are executable
|
||||||
- chmod +x "files/bin/"*
|
- chmod +x "files/bin/"*
|
||||||
|
# Step 5: Copy all remaining files to the Flatpak destination
|
||||||
- cp -r files/* "${FLATPAK_DEST}"
|
- cp -r files/* "${FLATPAK_DEST}"
|
||||||
sources:
|
sources:
|
||||||
- type: archive
|
- type: archive
|
||||||
|
@ -668,53 +723,6 @@ modules:
|
||||||
url: https://github.com/ruffle-rs/ruffle/releases/download/nightly-2024-10-29/ruffle-nightly-2024_10_29-linux-x86_64.tar.gz
|
url: https://github.com/ruffle-rs/ruffle/releases/download/nightly-2024-10-29/ruffle-nightly-2024_10_29-linux-x86_64.tar.gz
|
||||||
sha256: 5ab0fc46b07d022d4b0ff355e88175cd77b8bb1663612f31d160f8001dc472bb
|
sha256: 5ab0fc46b07d022d4b0ff355e88175cd77b8bb1663612f31d160f8001dc472bb
|
||||||
|
|
||||||
- name: fetch-missing-libs
|
|
||||||
buildsystem: simple
|
|
||||||
build-commands:
|
|
||||||
- |
|
|
||||||
# Search for missing libraries in our libtmp folder
|
|
||||||
missing_libs=$(find /app/bin -type f -exec ldd {} + 2>/dev/null | grep 'not found' | awk '$1 ~ /\.so/ {print $1}' | sort | uniq)
|
|
||||||
echo "$missing_libs"
|
|
||||||
|
|
||||||
# Manually specified libraries that are not automatically detected
|
|
||||||
manually_imported="libpostproc.so.56 libswscale.so.6 libshaderc_shared.so.1 libbz2.so.1.0 libaio.so.1 ld-linux.so.2 libvpx.so.9 libzmusic.so.1 libicuuc.so.73 libLLVM.so.18.1"
|
|
||||||
|
|
||||||
# Combine detected missing libraries and manually specified ones
|
|
||||||
missing_libs="$missing_libs $manually_imported"
|
|
||||||
echo -e "Missing libs and manually imported:\n$missing_libs"
|
|
||||||
|
|
||||||
# Source paths
|
|
||||||
src_dir="${FLATPAK_DEST}/retrodeck/tmplib"
|
|
||||||
src_debug_dir="${FLATPAK_DEST}/retrodeck/tmplib/debug"
|
|
||||||
|
|
||||||
# Destination paths
|
|
||||||
dest_dir="${FLATPAK_DEST}/lib"
|
|
||||||
dest_debug_dir="${FLATPAK_DEST}/retrodeck/lib/debug"
|
|
||||||
|
|
||||||
mkdir -p "$dest_dir" "$dest_debug_dir"
|
|
||||||
|
|
||||||
copy_missing_libs() {
|
|
||||||
local src=$1
|
|
||||||
local src_debug=$2
|
|
||||||
local dest=$3
|
|
||||||
for lib in $missing_libs; do
|
|
||||||
if [[ -f "$src/$lib" ]]; then
|
|
||||||
cp "$src/$lib" "$dest" && echo "Copied \"$lib\" to \"$dest\"" || echo "Error copying \"$lib\""
|
|
||||||
elif [[ -f "$src_debug/$lib.debug" ]]; then
|
|
||||||
cp "$src_debug/$lib.debug" "$dest" && echo "Copied debug version of \"$lib\" to \"$dest\"" || echo "Error copying debug version of \"$lib\""
|
|
||||||
else
|
|
||||||
echo "Library \"$lib\" not found in \"$src\" or \"$src_debug\""
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# Copy libraries from source to destination
|
|
||||||
copy_missing_libs "$src_dir" "$src_debug_dir" "$dest_dir"
|
|
||||||
copy_missing_libs "$src_debug_dir" "$dest_debug_dir"
|
|
||||||
|
|
||||||
# Remove temporary source directory to free up space
|
|
||||||
rm -rf "$src_dir"
|
|
||||||
|
|
||||||
- name: retrodeck
|
- name: retrodeck
|
||||||
buildsystem: simple
|
buildsystem: simple
|
||||||
build-commands:
|
build-commands:
|
||||||
|
|
Loading…
Reference in a new issue