diff mbox series

[bug#45889] Nextcloud Client (v8)

Message ID 3c07544c-97fe-88b1-2e80-ec5cfb87d4ec@raghavgururajan.name
State New
Headers show
Series [bug#45889] Nextcloud Client (v8) | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Raghav Gururajan Feb. 13, 2021, 8:36 p.m. UTC
Hi Leo!

> Is cmake really needed?  I know that meson falls back to cmake if pkg-
> config fails and also supports output to cmake, but meson/ninja should
> be the default.

Yes, it is used to generate `.cmake` files inder '[out]/lib/cmake'.

> Could you try packaging those for Guix as well?

They don't have dedicated build scripts.

> As with your telegram patch, I personally think the ordering is wrong
> here.

I changed it in v8.

> You might want to regexp the middle part in case it is changed.

I could use PKGCONFIG_GETVAR\\(.+\\) but that would conflict with other 
PKGCONFIG_GETVAR lines now or in future.

> What does this achieve exactly?

It configures the build-system to install modules in output "out" 
instead of Qt's (input) path.

I have attached v8 with this email.

Regards,
RG.

Comments

Leo Prikler Feb. 13, 2021, 9:47 p.m. UTC | #1
Hi Raghav,

Am Samstag, den 13.02.2021, 15:36 -0500 schrieb Raghav Gururajan:
> Hi Leo!
> 
> > Is cmake really needed?  I know that meson falls back to cmake if
> > pkg-
> > config fails and also supports output to cmake, but meson/ninja
> > should
> > be the default.
> 
> Yes, it is used to generate `.cmake` files inder '[out]/lib/cmake'.
Fair enough.

> > Could you try packaging those for Guix as well?
> 
> They don't have dedicated build scripts.
That may be an issue.  You might want to check which of those are
perhaps optional, so that you don't need to pull them in.  For example
it appears you're also deleting libcrashreporter-qt with no
replacement.

kmessagewidget appears to be a part of KDE core.  If anything there is
strictly necessary for building, we should perhaps define a package
variant, that has a slightly patched kmessagewidget.  qtlockedfile and
qtsingleapplication appear to be part of [1], a sort of metapackage,
from which you could spawn multiple descriptions.  For qtokenizer, I am
really not sure.

> > As with your telegram patch, I personally think the ordering is
> > wrong
> > here.
> 
> I changed it in v8.
LGTM.

> > You might want to regexp the middle part in case it is changed.
> 
> I could use PKGCONFIG_GETVAR\\(.+\\) but that would conflict with
> other 
> PKGCONFIG_GETVAR lines now or in future.
Okay, but you can do something like PKGCONFIG_GETVAR\\(.+
_install_dir\\), assuming that such variables should generally only be
bound once.  To be honest, I don't know enough CMake to tell, whether
that is a good idea, however.

> > What does this achieve exactly?
> 
> It configures the build-system to install modules in output "out" 
> instead of Qt's (input) path.
In that case, the comment should probably read something along the
lines of "Make sure, that <X> is installed under $prefix."

Regards,
Leo

[1] https://github.com/qtproject/qt-solutions
diff mbox series

Patch

From 8f8c9e98ffd7bbb16738d9bd5836fb723731c5e7 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <rg@raghavgururajan.name>
Date: Fri, 15 Jan 2021 05:04:31 -0500
Subject: [PATCH 2/2] gnu: Add nextcloud-client.

* gnu/packages/nextcloud.scm: New module.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
* gnu/packages/nextcloud.scm (nextcloud-client): New variable.
---
 gnu/local.mk               |   1 +
 gnu/packages/nextcloud.scm | 150 +++++++++++++++++++++++++++++++++++++
 2 files changed, 151 insertions(+)
 create mode 100644 gnu/packages/nextcloud.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index ad6e02116e..56cf470a2d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -398,6 +398,7 @@  GNU_SYSTEM_MODULES =				\
   %D%/packages/netpbm.scm			\
   %D%/packages/nettle.scm			\
   %D%/packages/networking.scm			\
+  %D%/packages/nextcloud.scm              \
   %D%/packages/nfs.scm                          \
   %D%/packages/nickle.scm                       \
   %D%/packages/nicotine.scm                     \
diff --git a/gnu/packages/nextcloud.scm b/gnu/packages/nextcloud.scm
new file mode 100644
index 0000000000..2e1e694ad0
--- /dev/null
+++ b/gnu/packages/nextcloud.scm
@@ -0,0 +1,150 @@ 
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages nextcloud)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages documentation)
+  #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages graphviz)
+  #:use-module (gnu packages kde-frameworks)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages qt)
+  #:use-module (gnu packages ruby)
+  #:use-module (gnu packages sphinx)
+  #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages tls)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system glib-or-gtk)
+  #:use-module (guix build-system qt))
+
+(define-public nextcloud-client
+  (package
+    (name "nextcloud-client")
+    (version "3.1.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/nextcloud/desktop")
+         (commit
+          (string-append "v" version))))
+       (file-name
+        (git-file-name name version))
+       (sha256
+        (base32 "022k7b3c30dymrjc1g3ly2cac1c34gkqnvjya6p7w2j3qw2w1dm2"))
+       (modules '((guix build utils)
+                  (ice-9 ftw)
+                  (srfi srfi-1)))
+       (snippet
+        `(begin
+           (let ((keep '( ;; Not available in Guix.
+                         "QProgressIndicator" "kmessagewidget" "qtlockedfile"
+                         "qtokenizer" "qtsingleapplication")))
+             (with-directory-excursion "src/3rdparty"
+               (for-each delete-file-recursively
+                         (lset-difference string=?
+                                          (scandir ".")
+                                          (cons* "." ".." keep))))
+             #t)))))
+    (build-system qt-build-system)
+    (arguments
+     `(#:configure-flags
+       (list
+        "-DUNIT_TESTING=ON")
+       #:imported-modules
+       ((guix build glib-or-gtk-build-system)
+        ,@%qt-build-system-modules)
+       #:modules
+       (((guix build glib-or-gtk-build-system)
+         #:prefix glib-or-gtk:)
+        (guix build qt-build-system)
+        (guix build utils))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-plugin-dirs
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Patch install directory for dbus service files.
+             (substitute* "shell_integration/libcloudproviders/CMakeLists.txt"
+               (("PKGCONFIG_GETVAR\\(dbus-1 session_bus_services_dir _install_dir\\)")
+                "set(_install_dir \"${CMAKE_INSTALL_PREFIX}/share/dbus-1/services\")"))
+             ;; Turn-off the use of absolute Qt paths for installation.
+             (substitute* "shell_integration/dolphin/CMakeLists.txt"
+               (("ON CACHE")
+                "OFF CACHE"))
+             #t))
+         (add-before 'check 'pre-check
+           (lambda _
+             ;; Tests write to $HOME.
+             (setenv "HOME" (getcwd))
+             #t))
+         (add-after 'install 'glib-or-gtk-compile-schemas
+           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
+         (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
+           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
+    (native-inputs
+     `(("cmocka" ,cmocka)
+       ("dot" ,graphviz)
+       ("doxygen" ,doxygen)
+       ("extra-cmake-modules" ,extra-cmake-modules)
+       ("glib:bin" ,glib "bin")
+       ("perl" ,perl)
+       ("pkg-config" ,pkg-config)
+       ("python" ,python-wrapper)
+       ("qttools" ,qttools)
+       ("ruby" ,ruby)))
+    (inputs
+     `(("appstream" ,appstream)
+       ("glib" ,glib)
+       ("kconfig" ,kconfig)
+       ("kcoreaddons" ,kcoreaddons)
+       ("kio" ,kio)
+       ("libcloudproviders" ,libcloudproviders)
+       ("openssl" ,openssl)
+       ("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtgraphicaleffects" ,qtgraphicaleffects)
+       ("qtkeychain" ,qtkeychain)
+       ("qtquickcontrols2" ,qtquickcontrols2)
+       ("qtsvg" ,qtsvg)
+       ("qtwebchannel" ,qtwebchannel)
+       ("qtwebkit" ,qtwebkit)
+       ("sqlite" ,sqlite)
+       ("zlib" ,zlib)))
+    (propagated-inputs
+     `(("qtwebengine" ,qtwebengine)))
+    (synopsis "Desktop sync client for Nextcloud")
+    (description "Nextcloud-Desktop is a tool to synchronize files from
+Nextcloud Server with your computer.")
+    (home-page "https://nextcloud.com/install/#install-clients")
+    (license
+     (list
+      ;; QtProgressIndicator
+      license:expat
+      ;; All ThirdParty (except QtProgressIndicator)
+      license:lgpl2.1+
+      ;; Others
+      license:gpl2+))))
-- 
2.30.0