From d4f62ef097d67cacc56ae51e12f921b63b83b871 Mon Sep 17 00:00:00 2001 From: Ashley Graves Date: Sat, 5 Oct 2024 23:12:07 +0200 Subject: [PATCH] test --- .forgejo/workflows/build.yml | 34 ++++++++++++++++++ CMakeLists.txt | 14 ++++++++ appimage.cmake | 70 ++++++++++++++++++++++++++++++++++++ 3 files changed, 118 insertions(+) create mode 100644 .forgejo/workflows/build.yml create mode 100644 CMakeLists.txt create mode 100644 appimage.cmake diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml new file mode 100644 index 0000000..04033fd --- /dev/null +++ b/.forgejo/workflows/build.yml @@ -0,0 +1,34 @@ +on: + workflow_dispatch: + push: + schedule: + - cron: "0 6 * * *" + +jobs: + update: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + path: extras + + - uses: actions/checkout@v3 + with: + repository: ashley/jami-client-qt + path: jami + + - name: Make archives + run: | + + + - name: Get current date + id: date + run: echo "::set-output name=date::$(date +'%Y-%m-%d')" + + - uses: actions/forgejo-release@v1 + with: + token: ${{ github.token }} + direction: upload + release-dir: dist + override: true + tag: nightly-${{ steps.date.outputs.date }} diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..6ae5299 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,14 @@ + + + #ICON \"path/to/your/icon.svg\" + #DIR_ICON \"path/to/your/diricon.png\" + +INSTALL(CODE + "include(../appimage.cmake) + make_appimage( + EXE \"${JAMI_OUTPUT_DIRECTORY_RELEASE}/bin/${PROJECT_NAME}\" + NAME \"Jami\" + OUTPUT_NAME \"dist/Jami.AppImage\" + ASSETS \"${JAMI_OUTPUT_DIRECTORY_RELEASE}\")" + COMPONENT Runtime +) diff --git a/appimage.cmake b/appimage.cmake new file mode 100644 index 0000000..16e7935 --- /dev/null +++ b/appimage.cmake @@ -0,0 +1,70 @@ +function(make_appimage) + set(optional) + set(args EXE NAME DIR_ICON ICON OUTPUT_NAME) + set(list_args ASSETS) + cmake_parse_arguments( + PARSE_ARGV 0 + ARGS + "${optional}" + "${args}" + "${list_args}" + ) + + if(${ARGS_UNPARSED_ARGUMENTS}) + message(WARNING "Unparsed arguments: ${ARGS_UNPARSED_ARGUMENTS}") + endif() + + + # download AppImageTool if needed (TODO: non-x86 build machine?) + SET(AIT_PATH "${CMAKE_BINARY_DIR}/AppImageTool.AppImage" CACHE INTERNAL "") + if (NOT EXISTS "${AIT_PATH}") + file(DOWNLOAD https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage "${AIT_PATH}") + execute_process(COMMAND chmod +x ${AIT_PATH}) + endif() + + # make the AppDir + set(APPDIR "${CMAKE_BINARY_DIR}/AppDir") + file(REMOVE_RECURSE "${APPDIR}") # remove if leftover + file(MAKE_DIRECTORY "${APPDIR}") + + # copy executable to appdir + file(COPY "${ARGS_EXE}" DESTINATION "${APPDIR}" FOLLOW_SYMLINK_CHAIN) + get_filename_component(EXE_NAME "${ARGS_EXE}" NAME) + + # create the script that will launch the AppImage +file(WRITE "${APPDIR}/AppRun" +"#!/bin/sh +cd \"$(dirname \"$0\")\"; +./${EXE_NAME} $@" + ) + execute_process(COMMAND chmod +x "${APPDIR}/AppRun") + + # copy assets to appdir + file(COPY ${ARGS_ASSETS} DESTINATION "${APPDIR}") + + # copy icon thumbnail + file(COPY ${ARGS_DIR_ICON} DESTINATION "${APPDIR}") + get_filename_component(THUMB_NAME "${ARGS_DIR_ICON}" NAME) + file(RENAME "${APPDIR}/${THUMB_NAME}" "${APPDIR}/.DirIcon") + + # copy icon highres + file(COPY ${ARGS_ICON} DESTINATION "${APPDIR}") + get_filename_component(ICON_NAME "${ARGS_ICON}" NAME) + get_filename_component(ICON_EXT "${ARGS_ICON}" EXT) + file(RENAME "${APPDIR}/${ICON_NAME}" "${APPDIR}/${ARGS_NAME}${ICON_EXT}") + + # Create the .desktop file + file(WRITE "${APPDIR}/${ARGS_NAME}.desktop" + "[Desktop Entry] +Type=Application +Name=${ARGS_NAME} +Icon=${ARGS_NAME} +Categories=X-None;" + ) + + # Invoke AppImageTool + execute_process(COMMAND ${AIT_PATH} ${APPDIR} ${ARGS_OUTPUT_NAME}) + file(REMOVE_RECURSE "${APPDIR}") + +endfunction() +