nextcloud / desktop

💻 Desktop sync client for Nextcloud
https://nextcloud.com/install/#install-clients
GNU General Public License v2.0
2.97k stars 784 forks source link

appimage for arm? #2564

Open Thatoo opened 3 years ago

Thatoo commented 3 years ago

Would it be possible to have an appimage for arm64 for pinephone, pinetab and others...?

er-vin commented 3 years ago

Technically yes (although I guess we might need to throw hardware at it which we don't have for now). That's not on our roadmap for now though.

robster7674 commented 2 years ago

I am completely new to NextCloud, and when I saw this issue I wanted to give it a try to see if I can get it running on my PinePhone on Manjaro/PhoSh beta23, using instructions from https://github.com/nextcloud/desktop#linux--mac-os.

After resolving various errors about missing packages and components I eventually get stuck at:

[manjaro@manjaro-arm build]$ cmake .. -DCMAKE_INSTALL_PREFIX=~/nextcloud-desktop-client -DCMAKE_BUILD_TYPE=Debug
-- Build of crashreporter disabled.
-- GIT_SHA1 d1f9a58ac5f1b9278115116a84d09309ac3d9006
Compiling with updater
-- Using Qt 5.15.3 (/usr/bin/qmake)
list of plugins suffix;cfapi;xattr
discovery suffix
/home/manjaro/git/desktop/src/libsync/vfs/suffix
/home/manjaro/git/desktop/src/libsync/vfs/suffix suffix
-- Added vfsPlugin without tests: suffix
discovery cfapi
/home/manjaro/git/desktop/src/libsync/vfs/cfapi
/home/manjaro/git/desktop/src/libsync/vfs/cfapi cfapi
-- Added vfsPlugin without tests: cfapi
discovery xattr
/home/manjaro/git/desktop/src/libsync/vfs/xattr
/home/manjaro/git/desktop/src/libsync/vfs/xattr xattr
-- Added vfsPlugin without tests: xattr
Building with libcloudproviderssupport
CMake Error at shell_integration/dolphin/CMakeLists.txt:11 (find_package):
  Could not find a package configuration file provided by "ECM" (requested
  version 5.16.0) with any of the following names:

    ECMConfig.cmake
    ecm-config.cmake

  Add the installation prefix of "ECM" to CMAKE_PREFIX_PATH or set "ECM_DIR"
  to a directory containing one of the above files.  If "ECM" provides a
  separate development package or SDK, be sure it has been installed.

-- Configuring incomplete, errors occurred!
See also "/home/manjaro/git/desktop/build/CMakeFiles/CMakeOutput.log".

Full log is attached.

[manjaro@manjaro-arm build]$ uname -r
5.17.1-2-MANJARO-ARM

CMakeOutput.log

jwillikers commented 2 years ago

@robster7674 Try pacman -Sy extra-cmake-modules?

robster7674 commented 2 years ago

Stumbled upon a post that mentioned to install extra-cmake-modules. That worked, only thing remaining was an optional package CMocka not found, so I installed that as well. Then I end up without any warnings or errors. Due to time limitations I cannot start make install now, will do so tomorrow morning (CET) and report back.

robster7674 commented 2 years ago

@robster7674 Try pacman -Sy extra-cmake-modules?

Thanks @jwillikers , your post crossed mine. ;)

robster7674 commented 2 years ago

make install gave me a permissions error:

CMake Error at shell_integration/dolphin/cmake_install.cmake:83 (file):
  file INSTALL cannot copy file
  "/home/manjaro/git/desktop/build/shell_integration/dolphin/nextclouddolphinoverlayplugin.so"
  to "/usr/lib/qt/plugins/kf5/overlayicon/nextclouddolphinoverlayplugin.so":
  Permission denied.
Call Stack (most recent call first):
  shell_integration/cmake_install.cmake:57 (include)
  cmake_install.cmake:72 (include)

For now I used sudo to run make install and then the client starts up fine on the PinePhone. Over the upcoming days I will reimage the phone and start from scratch, then document the steps here.

janvlug commented 2 years ago

Did you see this repo: https://gitlab.com/undef1/signal-desktop-builder

robster7674 commented 2 years ago

After a reimage with Manjaro/PhoSh using beta23, I installed these packages using yay to get the cmake working:

git make cmake qt5-tools extra-cmake-modules doxygen kio qt5-webengine qtkeychain-qt5 qt5-websockets qt5-quickcontrols qt5-quickcontrols2 python-sphinx pydflatex cmocka appstream

Let's see what the make install does now. Edit: make install fails again with permissions issue, need to dig into this:

...
-- Set runtime path of "/home/manjaro/nextcloud-desktop-client/lib/libnextclouddolphinpluginhelper.so" to "/home/manjaro/nextcloud-desktop-client/lib"
CMake Error at shell_integration/dolphin/cmake_install.cmake:83 (file):
  file cannot create directory: /usr/lib/qt/plugins/kf5/overlayicon.  Maybe
  need administrative privileges.
Call Stack (most recent call first):
  shell_integration/cmake_install.cmake:57 (include)
  cmake_install.cmake:72 (include)
DavidS commented 1 year ago

Hey @er-vin by now you can get the hardware in every cloud. Would it be possible to reconsider? raspberry-pies are common enough as cheap desktops where it would be really nice to have the nextcloud-desktop installed.

marbx commented 1 year ago

I used this script to compile desktop clients 3.9.0 and 3.8.2 on a Raspberry Pi Zero 2 W, 64bit, 2GB swap

For 32bit ARM, Qt does not provide a web/engine/browser library which the desktop needs to compile.


GREEN='\033[0;32m'; BIYellow='\033[1;93m'; RED='\033[0;31m'; NOCOLOR='\033[0m'; DESCRIPTION () { printf "${BIYellow}$1${NOCOLOR}\n"; }

#### Fehlt auf 32bit zero
# qtwebengine5-dev ---> libqt5webengine-data qutebrowser-qtwebengine

DESCRIPTION 'Ensure Debian packagess'
packagesWanted=( qt5-qmake cmake g++ openssl libssl-dev libzip-dev qtwebengine5-dev libqt5webengine-data qutebrowser-qtwebengine qtbase5-private-dev qtdeclarative5-dev qt5keychain-dev qttools5-dev sqlite3 libsqlite3-dev libqt5svg5-dev zlib1g-dev libqt5websockets5-dev qtquickcontrols2-5-dev libkf5archive-dev extra-cmake-modules libkf5kio-dev libqt5webkit5-dev inkscape doxygen )
packagesMissing=()
for apackage in "${packagesWanted[@]}"; do
    # Add to list unlesss installed (dpkg --verify returns true if it can verify install)
    dpkg --verify "$apackage" || packagesMissing+=("$apackage")
done
if (( ${#packagesMissing[@]} != 0 )); then
    sudo apt update
    sudo apt install --yes ${packagesMissing[*]}
fi

TAG=v3.8.2
WORKINGDIR="nextcloudDesktop${TAG}"
INSTALLDIR="~/nextcloud-desktop-client${TAG}"

DESCRIPTION "Get source: clone ${TAG}"
[ -d $WORKINGDIR ] || git -c advice.detachedHead=false clone --depth 1 --branch $TAG https://github.com/nextcloud/desktop.git $WORKINGDIR|| exit
cd $WORKINGDIR
git submodule update --init || exit

DESCRIPTION 'Meta make: create the build/Makefile'
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=$INSTALLDIR -DCMAKE_BUILD_TYPE=Debug || exit

DESCRIPTION 'Even the user install requires access to two system directories'
DIR4U=/usr/lib/aarch64-linux-gnu/qt5/plugins/kf5/overlayicon     && ([ -d $DIR4U ] || sudo mkdir $DIR4U) && sudo chmod 777 $DIR4U
DIR4U=/usr/lib/aarch64-linux-gnu/qt5/plugins/kf5/kfileitemaction && ([ -d $DIR4U ] || sudo mkdir $DIR4U) && sudo chmod 777 $DIR4U

# target install also installs the tests :-(
DESCRIPTION 'Make: create the executable'
#time cmake --build build --target install  || exit
time cmake --build build --target nextcloud  || exit

On the Zero, building the tests takes an eternity, only the desktops about 3 hours, the desktops runs without an issue for the last two weeks, as root.

I guessed the required packages, some might not be needed. It would be nice to see the source that builds the AppImages, or an ARM64 AppImage.

jwillikers commented 1 year ago

Just an FYI, there is an unofficial Flatpak that is available for aarch64 systems: https://flathub.org/apps/com.nextcloud.desktopclient.nextcloud

I've been using it on PINE64 / Raspberry Pi devices for a couple of years now.

strgalt-t commented 1 year ago

@jwillikers thank you for sharing, the aarch64 image also works fine on Asahi Linux with Mac ARMS.