diff mbox series

[bug#45889] Nextcloud Desktop (v4)

Message ID cbbd5681-b777-2e08-7220-3281e31db3a9@raghavgururajan.name
State Accepted
Headers show
Series [bug#45889] Nextcloud Desktop (v4) | 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 Jan. 16, 2021, 10:09 a.m. UTC

Comments

Nicolò Balzarotti Jan. 16, 2021, 10:48 a.m. UTC | #1
Raghav Gururajan <rg@raghavgururajan.name> writes:

Hi!
> Please find the attached patch-set to add Nextcloud desktop application 
> to guix.
I usually don't do patch review, so don't weight too much my comments.

Why is it placed inside a new module?  It should fit nicely in sync.scm

> +         (url "https://github.com/nextcloud/desktop.git")
.git shouldn't be needed

> +        (base32 "1ba9z1kv3wlrmaxsn442vn0inzbd0smvq4xkavarn1h8i0dm62hb"))))
This hash is wrong, I get 022k7b3c30dymrjc1g3ly2cac1c34gkqnvjya6p7w2j3qw2w1dm2

> +             (with-directory-excursion "src/3rdparty"
> +               (for-each delete-file-recursively
> +                         (list
> +                          "libcrashreporter-qt"
> +                          "sqlite3")))
This can be expressed in terms of what you you are keeping instead.

Something along the line of:

(let ((preserved-3rdparty-files
                '("QProgressIndicator" "qtlockedfile" "qtokenizer"
                  "qtsingleapplication" "kmessagewidget")))
           (with-directory-excursion "src/3rdparty"
             (for-each
              (lambda (directory)
                (simple-format #t "deleting: ~A\n" directory)
                (delete-file-recursively directory))
              (lset-difference string=?
                               (scandir ".")
                               (cons* "." ".." preserved-3rdparty-files))))
           #t)

> +         (add-after 'remove-thirdparty 'patch-plugin-dirs
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (substitute* "shell_integration/libcloudproviders/CMakeLists.txt"
> +               (("PKGCONFIG_GETVAR\\(dbus-1 session_bus_services_dir
> _install_dir\\)")
This line is too long, you can use something like
("PKGCONFIG_GETVAR\\(.*") instead.

> +                "set(_install_dir> \"${CMAKE_INSTALL_PREFIX}/share/dbus-1/services\")"))
Other long line, maybe string-append.

> +             (substitute* "shell_integration/dolphin/CMakeLists.txt"
> +               (("ON CACHE")
> +                "OFF CACHE"))
> +             #t))

Why?

> +         (add-before 'check 'pre-check
> +           (lambda _
> +             (setenv "HOME" (getcwd))
> +             #t))

It's missing a comment on why this is needed (like qttest tries to create
$HOME/.qttest/config/autostart/)
> +    (license license:gpl2+)))

Unbundled dependencies have different licenses
QprogressIndicator is under expat while others lgpl2.1+ if I'm not wrong

Also, I tried removing ruby and python-sphinx from the dependencies and
it did build fine, so be sure all of them are needed (or are they used
for some optional feature?).

Thanks
Raghav Gururajan Jan. 16, 2021, 2:42 p.m. UTC | #2
Hi Nicolò!

> Why is it placed inside a new module?  It should fit nicely in sync.scm

Nextcloud is a big project. There will be other packages like server, 
plugins etc., which can then be added to this module. Concept is similar 
to linphone.scm.

> .git shouldn't be needed

Updated in v5.

> This hash is wrong, I get 022k7b3c30dymrjc1g3ly2cac1c34gkqnvjya6p7w2j3qw2w1dm2

Updated in v5.

> Something along the line of:
> 
> (let ((preserved-3rdparty-files
>                  '("QProgressIndicator" "qtlockedfile" "qtokenizer"
>                    "qtsingleapplication" "kmessagewidget")))
>             (with-directory-excursion "src/3rdparty"
>               (for-each
>                (lambda (directory)
>                  (simple-format #t "deleting: ~A\n" directory)
>                  (delete-file-recursively directory))
>                (lset-difference string=?
>                                 (scandir ".")
>                                 (cons* "." ".." preserved-3rdparty-files))))
>             #t)

The snippet didn't work, but I added comments in v5.

> This line is too long, you can use something like
> ("PKGCONFIG_GETVAR\\(.*") instead.

If I use this, it causes parsing error.

> Other long line, maybe string-append.

Ah, I have been advised before not to break lines like this via 
string-append.

> Why?

Added comments in v5.

> It's missing a comment on why this is needed (like qttest tries to create
> $HOME/.qttest/config/autostart/)
>> +    (license license:gpl2+)))

Added comments in v5.

> Unbundled dependencies have different licenses
> QprogressIndicator is under expat while others lgpl2.1+ if I'm not wrong

Updated in v5.

> Also, I tried removing ruby and python-sphinx from the dependencies and
> it did build fine, so be sure all of them are needed (or are they used
> for some optional feature?).

Ruby is for patch-shebangs phase. Sphinx was looked for during configure 
phase, but doesn't seem to do anything, so I removed it in v5.

Thanks so much for the review. :-)

Regards,
RG.
diff mbox series

Patch

From b45173115d454b635d24952236d740bb3e28bdc6 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-desktop.

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

diff --git a/gnu/local.mk b/gnu/local.mk
index 747cbb1da7..9c155fff73 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..355bf3e930
--- /dev/null
+++ b/gnu/packages/nextcloud.scm
@@ -0,0 +1,134 @@ 
+;;; 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-desktop
+  (package
+    (name "nextcloud-desktop")
+    (version "3.1.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/nextcloud/desktop.git")
+         (commit
+          (string-append "v" version))))
+       (file-name
+        (git-file-name name version))
+       (sha256
+        (base32 "1ba9z1kv3wlrmaxsn442vn0inzbd0smvq4xkavarn1h8i0dm62hb"))))
+    (build-system qt-build-system)
+    (arguments
+     `(#:configure-flags
+       (list
+        "-DUNIT_TESTING=ON")
+       #:imported-modules
+       (,@%qt-build-system-modules
+        (guix build glib-or-gtk-build-system))
+       #:modules
+       ((guix build qt-build-system)
+        ((guix build glib-or-gtk-build-system)
+         #:prefix glib-or-gtk:)
+        (guix build utils))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-thirdparty
+           (lambda _
+             (with-directory-excursion "src/3rdparty"
+               (for-each delete-file-recursively
+                         (list
+                          "libcrashreporter-qt"
+                          "sqlite3")))
+             #t))
+         (add-after 'remove-thirdparty 'patch-plugin-dirs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (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\")"))
+             (substitute* "shell_integration/dolphin/CMakeLists.txt"
+               (("ON CACHE")
+                "OFF CACHE"))
+             #t))
+         (add-before 'check 'pre-check
+           (lambda _
+             (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)
+       ("sphinx" ,python-sphinx)))
+    (inputs
+     `(("appstream" ,appstream)
+       ("glib" ,glib)
+       ("kconfig" ,kconfig)
+       ("kcoreaddons" ,kcoreaddons)
+       ("kio" ,kio)
+       ("libcloudproviders" ,libcloudproviders)
+       ("openssl" ,openssl)
+       ("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)
+       ("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 license:gpl2+)))
-- 
2.30.0