diff mbox series

[bug#45889] Nextcloud Client (v10)

Message ID 67f2ff73-c6e0-743f-d873-0a488fa05e31@raghavgururajan.name
State Accepted
Headers show
Series [bug#45889] Nextcloud Client (v10) | 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. 18, 2021, 8:23 p.m. UTC
Hi Leo!

> Interesting.  Is this due to CMakeLists picking up, that they're
> missing and not replacing them with core stuff?
> 
> Perhaps you can patch the CMakeLists to add such support?
> Alternatively, you might want to delete them and unpack the upstream
> ones to their locations.

I have asked upstream and they are looking into providing options to use 
distribution packages. 
https://github.com/nextcloud/desktop/issues/2929#issuecomment-780548919

So once they update the source in the next-release, I will update the 
package and remove the 3rdparty directory completely. :-)

> Note, that you're missing a space here.  This would also match
> PKGCONFIG_GETVAR(pkg var foobar_install_dir).

Changed in v10.

V10 is attached.

Regards,
RG.

Comments

Leo Prikler Feb. 18, 2021, 10:26 p.m. UTC | #1
Hi Raghav!

Am Donnerstag, den 18.02.2021, 15:23 -0500 schrieb Raghav Gururajan:
> Hi Leo!
> 
> > Interesting.  Is this due to CMakeLists picking up, that they're
> > missing and not replacing them with core stuff?
> > 
> > Perhaps you can patch the CMakeLists to add such support?
> > Alternatively, you might want to delete them and unpack the
> > upstream
> > ones to their locations.
> 
> I have asked upstream and they are looking into providing options to
> use 
> distribution packages. 
> https://github.com/nextcloud/desktop/issues/2929#issuecomment-780548919
Good to know.

> So once they update the source in the next-release, I will update
> the 
> package and remove the 3rdparty directory completely. :-)
In the meantime, would you mind packaging those 3rdparty sources from
their respective origins and add them in at build time?  That way, all
we'd need to transition from pseudo-unbundled to actually unbundled
would be to drop one phase.

> > Note, that you're missing a space here.  This would also match
> > PKGCONFIG_GETVAR(pkg var foobar_install_dir).
> 
> Changed in v10.
LGTM.

Regards,
Leo
Raghav Gururajan Feb. 21, 2021, 5:04 p.m. UTC | #2
Hi Leo!

> In the meantime, would you mind packaging those 3rdparty sources from
> their respective origins and add them in at build time?  That way, all
> we'd need to transition from pseudo-unbundled to actually unbundled
> would be to drop one phase.

I was about to start doing it via 'copy-inputs, then noticed the source 
content differs with the ones at QtSolutions. The files of 
QtSingleApplication and QtLockedFile at QtSolutions were not modified 
for many years, whereas, the files of QtSingleApplication and 
QtLockedFile at nextcloud was last modified in 2020.

Regards,
RG.
Leo Prikler Feb. 21, 2021, 5:45 p.m. UTC | #3
Hi Raghav,

Am Sonntag, den 21.02.2021, 12:04 -0500 schrieb Raghav Gururajan:
> Hi Leo!
> 
> > In the meantime, would you mind packaging those 3rdparty sources
> > from
> > their respective origins and add them in at build time?  That way,
> > all
> > we'd need to transition from pseudo-unbundled to actually unbundled
> > would be to drop one phase.
> 
> I was about to start doing it via 'copy-inputs, then noticed the
> source 
> content differs with the ones at QtSolutions. The files of 
> QtSingleApplication and QtLockedFile at QtSolutions were not
> modified 
> for many years, whereas, the files of QtSingleApplication and 
> QtLockedFile at nextcloud was last modified in 2020.
Looking at QtSingleApplication, the changes made by Nextcloud seem
rather cosmetic, so packaging the upstream version, which also had
"cosmetic" changes to it since their shared ancestor should not be an
issue.

Regards,
Leo
diff mbox series

Patch

From 77584aedececd4f0e364c4a5673594fb8c113937 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 | 158 +++++++++++++++++++++++++++++++++++++
 2 files changed, 159 insertions(+)
 create mode 100644 gnu/packages/nextcloud.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index c3398c62fd..a9e0abe225 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..38b3ea5e8f
--- /dev/null
+++ b/gnu/packages/nextcloud.scm
@@ -0,0 +1,158 @@ 
+;;; 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 python-xyz)
+  #: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.2")
+    (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 "10f9kmbn7s3hlkg1pv4kjflzh0159psrilci56kg4s2m49andhbs"))
+       (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"
+        ;; Upstream Bug: https://github.com/nextcloud/desktop/issues/2885
+        "-DNO_SHIBBOLETH=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\\(.+ _install_dir\\)")
+                "set(_install_dir \"${CMAKE_INSTALL_PREFIX}/share/dbus-1/services\")"))
+             ;; Make sure, that Qt modules are installed under $prefix.
+             (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)
+       ("kjs" ,kjs)
+       ("libcloudproviders" ,libcloudproviders)
+       ("libzip" ,libzip)
+       ("openssl" ,openssl)
+       ("python-nautilus" ,python-nautilus)
+       ("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtgraphicaleffects" ,qtgraphicaleffects)
+       ("qtkeychain" ,qtkeychain)
+       ("qtquickcontrols2" ,qtquickcontrols2)
+       ("qtsvg" ,qtsvg)
+       ("qtwebchannel" ,qtwebchannel)
+       ("qtwebsockets" ,qtwebsockets)
+       ("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.1