Prosody AppImage: aarch64 architecture.

This commit is contained in:
John Livingston 2022-11-22 11:35:38 +01:00
parent 059c6522b6
commit e6da0a879f
No known key found for this signature in database
GPG Key ID: B17B5640CE66CDBC
4 changed files with 96 additions and 13 deletions

View File

@ -13,10 +13,10 @@ fi
cd "$prosody_build_dir"
if [ -f "$prosody_build_dir/livechat-prosody-x86_64.AppImage" ]; then
echo "Prosody image already built."
if [ -f "$prosody_build_dir/livechat-prosody-x86_64.AppImage" ] && [ -f "$prosody_build_dir/livechat-prosody-aarch64.AppImage" ]; then
echo "Prosody images already built."
else
echo "Prosody image must be build..."
echo "Prosody images must be build..."
# Prerequisite: you must have python3-venv installed on your system
if [[ ! -d "venv" ]]; then
@ -32,22 +32,31 @@ else
echo "Copying appimage source files..."
cp "$rootdir/prosody/appimage_x86_64.yml" "$prosody_build_dir/appimage_x86_64.yml"
cp "$rootdir/prosody/appimage_aarch64.yml" "$prosody_build_dir/appimage_aarch64.yml"
cp "$rootdir/prosody/launcher.lua" "$prosody_build_dir/launcher.lua"
echo "Building Prosody..."
echo "Building Prosody x86_64..."
appimage-builder --recipe "$prosody_build_dir/appimage_x86_64.yml"
echo "Cleaning build folders before building aarch64..."
rm -rf "$prosody_build_dir/AppDir"
rm -rf "$prosody_build_dir/appimage-build"
echo "Building Prosody aarch64..."
appimage-builder --recipe "$prosody_build_dir/appimage_aarch64.yml"
# For some obscur reason, if we keep AppDir and appimage-build folders,
# and if we try to install the plugin using the Peertube CLI,
# the installation fails because there are some subfolders that are right protected.
# To avoid that, we clean them:
echo "Cleaning build folders..."
rm -rf "$prosody_build_dir/AppDir"
rm -rf "$prosody_build_dir/appimage-build"
fi
echo "Copying Prosody dist files..."
mkdir -p "$prosody_destination_dir" && cp $prosody_build_dir/livechat-prosody-x86_64.AppImage "$prosody_destination_dir/"
# For some obscur reason, if we keep AppDir and appimage-build folders,
# and if we try to install the plugin using the Peertube CLI,
# the installation fails because there are some subfolders that are right protected.
# To avoid that, we clean them:
echo "Cleaning build folders..."
rm -rf "$prosody_build_dir/AppDir"
rm -rf "$prosody_build_dir/appimage-build"
mkdir -p "$prosody_destination_dir" && cp $prosody_build_dir/livechat-prosody-aarch64.AppImage "$prosody_destination_dir/"
echo "Prosody AppImage OK."

View File

@ -0,0 +1,60 @@
# This file is meant to be used with appimage-builder: https://appimage-builder.readthedocs.io
# See it is use in the build-prosody.sh script.
version: 1
script:
# Remove any previous build
- rm -rf AppDir | true
# Make usr dirs
- mkdir -p AppDir/usr/bin
# Copy the launcher code into the AppDir
- cp ./launcher.lua AppDir/usr/bin/
AppDir:
path: ./AppDir
app_info:
id: org.peertube-plugin-livechat.prosody
name: prosody
icon: utilities-terminal
version: 1.0.0
exec: usr/bin/lua5.2
exec_args: "$APPDIR/usr/bin/launcher.lua $@"
apt:
arch: arm64
sources:
- sourceline: 'deb [arch=arm64] https://deb.debian.org/debian/ bullseye main contrib'
key_url: 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x648ACFD622F3D138'
- sourceline: 'deb [arch=arm64] https://deb.debian.org/debian/ bullseye-backports main contrib'
include:
- lua5.2
- lua-unbound
- prosody/bullseye-backports
files:
exclude:
- usr/share/man
- usr/share/doc/*/README.*
- usr/share/doc/*/changelog.*
- usr/share/doc/*/NEWS.*
- usr/share/doc/*/TODO.*
- etc/init.d/*
- etc/logrotate.d/*
runtime:
# Here we use the path_mappings to rewrite, on runtime, all paths.
# Note: this assume that peertube-plugin-livechat is not in a subdir of one of following mappings.
# This seems a reasonable assumption.
path_mappings:
- /etc/:$APPDIR/etc/
- /lib/:$APPDIR/lib/
- /lib64/:$APPDIR/lib64/
- /runtime/:$APPDIR/runtime/
- /usr/:$APPDIR/usr/
AppImage:
arch: aarch64
file_name: 'livechat-prosody-aarch64.AppImage'

View File

@ -37,6 +37,14 @@ export async function diagProsody (test: string, options: RegisterServerOptions)
result.messages.push(`Prosody path will be '${wantedConfig.paths.exec}'`)
if (wantedConfig.paths.appImageToExtract) {
result.messages.push(`Prosody will be using the '${wantedConfig.paths.appImageToExtract}' AppImage`)
} else {
result.messages.push('Prosody will not be using any AppImage')
}
result.messages.push(`Prosody AppImage extract path will be '${wantedConfig.paths.appImageExtractPath}'`)
result.messages.push(`Prosody modules path will be '${wantedConfig.paths.modules}'`)
result.messages.push(`Prosody rooms will be grouped by '${wantedConfig.roomType}'.`)

View File

@ -43,7 +43,13 @@ async function getProsodyFilePaths (options: RegisterServerOptions): Promise<Pro
execCtl = 'prosodyctl'
execCtlArgs = []
} else {
appImageToExtract = path.resolve(__dirname, '../../prosody/livechat-prosody-x86_64.AppImage')
const arch = process.arch
if (arch === 'arm' || arch === 'arm64') {
logger.info('Node process.arch is ' + arch + ', we will be using the aarch64 Prosody AppImage')
appImageToExtract = path.resolve(__dirname, '../../prosody/livechat-prosody-aarch64.AppImage')
} else {
appImageToExtract = path.resolve(__dirname, '../../prosody/livechat-prosody-x86_64.AppImage')
}
exec = path.resolve(appImageExtractPath, 'squashfs-root/AppRun')
execArgs = ['prosody']
execCtl = exec