diff --git a/build-prosody.sh b/build-prosody.sh index dca3f3bf..359fa05c 100644 --- a/build-prosody.sh +++ b/build-prosody.sh @@ -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." diff --git a/prosody/appimage_aarch64.yml b/prosody/appimage_aarch64.yml new file mode 100644 index 00000000..d7ca9aad --- /dev/null +++ b/prosody/appimage_aarch64.yml @@ -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' diff --git a/server/lib/diagnostic/prosody.ts b/server/lib/diagnostic/prosody.ts index 691075a2..cdabf418 100644 --- a/server/lib/diagnostic/prosody.ts +++ b/server/lib/diagnostic/prosody.ts @@ -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}'.`) diff --git a/server/lib/prosody/config.ts b/server/lib/prosody/config.ts index 53fd1a73..c365cf30 100644 --- a/server/lib/prosody/config.ts +++ b/server/lib/prosody/config.ts @@ -43,7 +43,13 @@ async function getProsodyFilePaths (options: RegisterServerOptions): Promise