[PATCH 0/6] Add seafile-client, seadrive-fuse, seadrive-client and dependencies

  • Open
  • quality assurance status badge
Details
One participant
  • flypaper
Owner
unassigned
Submitted by
flypaper
Severity
normal

Debbugs page

flypaper wrote 4 weeks ago
(address . guix-patches@gnu.org)(name . flypaper)(address . flypaper@disroot.org)
cover.1739648316.git.flypaper@disroot.org
Hey Guix!

The following is a patch-series to have Seafile programs in Guix. mostly seadrive-fuse and seafile-client.
Given that the seafile dependencies were not packaged before, I added them here.
Each of these patches will build, given that the previous patches have been applied.
I tested of the patches one by one.
Seafile is an open-source self-hostable file-sharing solution similar to nextcloud.
Some institutes, like universities host their own.
These patches do not include server-side programs.

Kind regards,
flypaper-ultimat

flypaper (6):
gnu: sync: add libsearpc
gnu: sync: add seafile
gnu: sync: add seafile-client
gnu: sync: add seafile-client-qt5
gnu: sync: add seadrive-fuse
gnu: sync: add seadrive-gui

gnu/packages/sync.scm | 272 +++++++++++++++++++++++++++++++++++++++++-
1 file changed, 271 insertions(+), 1 deletion(-)


base-commit: 05ab9bd7f36659ac3d116134891aca23da102144
--
2.46.0
flypaper wrote 3 weeks ago
[PATCH 2/6] gnu: sync: add seafile
(address . 76324@debbugs.gnu.org)(name . flypaper)(address . flypaper@disroot.org)
b2eae4891363437503f30402b8b93f394269c740.1739648316.git.flypaper@disroot.org
* gnu/packages/sync.scm (seafile): New package.

Change-Id: Ieefb70e70a5e13c574513f2cf36d16475e693c48
---
gnu/packages/sync.scm | 64 ++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 63 insertions(+), 1 deletion(-)

Toggle diff (88 lines)
diff --git a/gnu/packages/sync.scm b/gnu/packages/sync.scm
index 854cc075ea..d65f1db018 100644
--- a/gnu/packages/sync.scm
+++ b/gnu/packages/sync.scm
@@ -31,6 +31,7 @@ (define-module (gnu packages sync)
#:use-module (guix build-system go)
#:use-module (guix build-system meson)
#:use-module (guix build-system qt)
+ #:use-module (guix build-system python)
#:use-module (guix gexp)
#:use-module (guix utils)
#:use-module (guix download)
@@ -70,7 +71,10 @@ (define-module (gnu packages sync)
#:use-module (gnu packages sphinx)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages tls)
- #:use-module (gnu packages web))
+ #:use-module (gnu packages web)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages password-utils)
+ #:use-module (gnu packages cmake))
(define-public nextcloud-client
(package
@@ -630,3 +634,61 @@ (define-public libsearpc
#:configure-flags '(list "--disable-compile-demo")))
(inputs (list glib jansson python))
(native-inputs (list autoconf automake libtool pkg-config)))))
+
+(define-public seafile
+ (package
+ (name "seafile")
+ (version "9.0.9")
+ (home-page "https://github.com/haiwen/seafile")
+ (source
+ (origin
+ (method git-fetch)
+ (file-name (git-file-name name version))
+ (uri (git-reference
+ (url home-page)
+ (commit (string-append "v" version))))
+ (sha256
+ (base32 "0c5j1xwx6pailx7x8xkrhrkmcn87aff3hvq4af5nzrqbpyiin5xb"))))
+ (arguments
+ (list
+ #:imported-modules `(,@%python-build-system-modules)
+ #:modules '((guix build gnu-build-system)
+ ((guix build python-build-system)
+ #:prefix python:)
+ (guix build utils))
+ #:phases #~(modify-phases %standard-phases
+ ;; seaf-cli requires libsearpc and itself on its PYTHONPATH
+ ;; so we wrap it so that we dont need to use propagated modules
+ (add-after 'install 'wrap
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (wrap-program (string-append #$output "/bin/seaf-cli")
+ `("GUIX_PYTHONPATH" =
+ (,(getenv "GUIX_PYTHONPATH") ,(python:site-packages
+ inputs outputs)))))))))
+
+ (build-system gnu-build-system)
+ (inputs (list libsearpc
+ libevent
+ libwebsockets
+ curl
+ gtk
+ util-linux ;known in debian as uuid-dev
+ sqlite
+ jansson
+ openssl ;debian libssl-dev
+ glib
+ argon2
+ python
+ bash-minimal))
+ (synopsis
+ "Command-line client and daemon for syncing with Seafile servers")
+ (description "This package provides @code{seaf-cli} and @{seaf-daemon}.")
+ (license license:gpl3+)
+ (native-inputs (list vala
+ intltool
+ cmake-minimal
+ autoconf
+ automake
+ libtool
+ pkg-config))))
+
--
2.46.0
flypaper wrote 3 weeks ago
[PATCH 1/6] gnu: sync: add libsearpc
(address . 76324@debbugs.gnu.org)(name . flypaper)(address . flypaper@disroot.org)
8354dddd654e36fc443373afee93f4e95a183bde.1739648316.git.flypaper@disroot.org
* gnu/packages/sync.scm (libsearpc): New package.

Change-Id: Id581536d6d13033c33a7316568a18bf1520ccc77
---
gnu/packages/sync.scm | 32 +++++++++++++++++++++++++++++++-
1 file changed, 31 insertions(+), 1 deletion(-)

Toggle diff (49 lines)
diff --git a/gnu/packages/sync.scm b/gnu/packages/sync.scm
index a4d4e03b91..854cc075ea 100644
--- a/gnu/packages/sync.scm
+++ b/gnu/packages/sync.scm
@@ -69,7 +69,8 @@ (define-module (gnu packages sync)
#:use-module (gnu packages shells)
#:use-module (gnu packages sphinx)
#:use-module (gnu packages sqlite)
- #:use-module (gnu packages tls))
+ #:use-module (gnu packages tls)
+ #:use-module (gnu packages web))
(define-public nextcloud-client
(package
@@ -600,3 +601,32 @@ (define-public rclone
@end itemize")
(home-page "https://rclone.org/")
(license license:expat)))
+
+
+(define-public libsearpc
+ (let ((revision "0")
+ (commit "255d5dedd2b446b58e4b8ca97ed6c270b3921047")
+ (version "3.3"))
+ (package
+ (name "libsearpc")
+ (version (git-version version revision commit))
+ (home-page "https://github.com/haiwen/libsearpc")
+ (source
+ (origin
+ (method git-fetch)
+ (file-name (git-file-name name version))
+ (uri (git-reference
+ (url home-page)
+ (commit commit)))
+ (sha256
+ (base32 "1nrn7djyslszd26bg1yd5wdqyyjyh8hfc6zz8hwxk9bbdvjkpv9b"))))
+ (build-system gnu-build-system)
+ (license license:asl2.0)
+ (synopsis "RPC framework for server and client")
+ (description
+ "A simple C language RPC framework (including both server side & client side).")
+ (arguments
+ (list
+ #:configure-flags '(list "--disable-compile-demo")))
+ (inputs (list glib jansson python))
+ (native-inputs (list autoconf automake libtool pkg-config)))))
--
2.46.0
flypaper wrote 3 weeks ago
[PATCH 3/6] gnu: sync: add seafile-client
(address . 76324@debbugs.gnu.org)(name . flypaper)(address . flypaper@disroot.org)
3adb887c065cea90b9773f9f1da858932b2dfac5.1739648316.git.flypaper@disroot.org
* gnu/packages/sync.scm (seafile-client): New package.

Change-Id: I57b8ed9c0b1edf61283d3cc1276a64660e74ed8a
---
gnu/packages/sync.scm | 62 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 62 insertions(+)

Toggle diff (79 lines)
diff --git a/gnu/packages/sync.scm b/gnu/packages/sync.scm
index d65f1db018..391ed57e0c 100644
--- a/gnu/packages/sync.scm
+++ b/gnu/packages/sync.scm
@@ -62,6 +62,7 @@ (define-module (gnu packages sync)
#: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 readline)
#:use-module (gnu packages rsync)
@@ -692,3 +693,64 @@ (define-public seafile
libtool
pkg-config))))
+(define-public seafile-client
+ (package
+ (name "seafile-client")
+ (version "9.0.9")
+ (home-page "https://github.com/haiwen/seafile-client")
+ (license license:asl2.0)
+ (build-system qt-build-system)
+ (inputs (list sqlite
+ gtk
+ curl
+ util-linux
+ openssl
+ jansson
+ libevent
+ libwebsockets
+ libsearpc
+ seafile
+ python
+ qttools
+ python-simplejson
+ qtwebengine
+ qt5compat))
+ (arguments
+ (list
+ #:qtbase qtbase
+ #:tests? ;cmakefile only has tests for qt5
+ #f
+ #:phases '(modify-phases %standard-phases
+ ;; seafile-client expects seaf-daemon in %PATH
+ ;; but we can just replace it in the source with a path to store
+ ;; so that we dont anymore.
+ (add-after 'unpack 'replace-daemon-executable
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "src/daemon-mgr.cpp"
+ (("seaf-daemon" all)
+ (search-input-file inputs
+ (string-append "bin/" all)))))))
+
+ #:configure-flags '(list "-DBUILD_DOCS=ON"
+ "-DBUILD_SHIBBOLETH_SUPPORT=ON"
+ "-DCMAKE_BUILD_TYPE=Release")))
+ (native-inputs (list autoconf
+ automake
+ libtool
+ pkg-config
+ vala
+ intltool
+ cmake-minimal))
+ (synopsis "Seafile GUI desktop client")
+ (description
+ "The Graphical desktop client that is used to connect to Seafile servers")
+ (source
+ (origin
+ (method git-fetch)
+ (file-name (git-file-name name version))
+ (uri (git-reference
+ (url home-page)
+ (commit (string-append "v" version))))
+ (sha256
+ (base32 "1hivlwbpkj4j42s49z0fj0xp1wyxr67nl6sqy1ydbiij65f48bkp"))))))
+
--
2.46.0
flypaper wrote 3 weeks ago
[PATCH 4/6] gnu: sync: add seafile-client-qt5
(address . 76324@debbugs.gnu.org)(name . flypaper)(address . flypaper@disroot.org)
a8a0b82933bbce54fe6bf2278c600a8c2cc9f0f4.1739648316.git.flypaper@disroot.org
* gnu/packages/sync.scm (seafile-client-qt5): New package.

Change-Id: Iac6e62db24f5a9445d1ee2ebfa0a4713c17abd91
---
gnu/packages/sync.scm | 17 +++++++++++++++++
1 file changed, 17 insertions(+)

Toggle diff (27 lines)
diff --git a/gnu/packages/sync.scm b/gnu/packages/sync.scm
index 391ed57e0c..a5dfa17afd 100644
--- a/gnu/packages/sync.scm
+++ b/gnu/packages/sync.scm
@@ -754,3 +754,20 @@ (define-public seafile-client
(sha256
(base32 "1hivlwbpkj4j42s49z0fj0xp1wyxr67nl6sqy1ydbiij65f48bkp"))))))
+(define-public seafile-client-qt5
+ (package
+ (inherit seafile-client)
+ (name "seafile-client-qt5")
+ (inputs (modify-inputs (package-inputs seafile-client)
+ (replace "qttools" qttools-5)
+ (replace "qtwebengine" qtwebengine-5)
+ (delete "qt5compat")))
+ (arguments
+ (substitute-keyword-arguments (package-arguments seafile-client)
+ ((#:qtbase x)
+ qtbase-5)
+ ((#:configure-flags flags)
+ `(cons "-DBUILD_TESTING=ON"
+ ,flags))
+ ((#:tests? x)
+ #t)))))
--
2.46.0
flypaper wrote 3 weeks ago
[PATCH 5/6] gnu: sync: add seadrive-fuse
(address . 76324@debbugs.gnu.org)(name . flypaper)(address . flypaper@disroot.org)
9f25faeb1ebc700e4b97e98a608405f9142c55db.1739648316.git.flypaper@disroot.org
* gnu/packages/sync.scm (seadrive-fuse): New package.

Change-Id: I2a2855656e4cc3783ead70f6fe7793c7289b316d
---
gnu/packages/sync.scm | 37 +++++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)

Toggle diff (47 lines)
diff --git a/gnu/packages/sync.scm b/gnu/packages/sync.scm
index a5dfa17afd..6f09ae20b2 100644
--- a/gnu/packages/sync.scm
+++ b/gnu/packages/sync.scm
@@ -771,3 +771,40 @@ (define-public seafile-client-qt5
,flags))
((#:tests? x)
#t)))))
+
+(define-public seadrive-fuse
+ (package
+ (name "seadrive-fuse")
+ (home-page "https://github.com/haiwen/seadrive-fuse")
+ (version "2.0.28")
+ (source
+ (origin
+ (method git-fetch)
+ (file-name (git-file-name name version))
+ (uri (git-reference
+ (url home-page)
+ (commit (string-append "v" version))))
+ (sha256
+ (base32 "0z8j8a04qi01cxbgk5kdrjzff5j2kigf0v6yzklvrshyb1jk3j5p"))))
+ (build-system gnu-build-system)
+ (inputs (list sqlite
+ gtk
+ curl
+ util-linux
+ openssl
+ jansson
+ libevent
+ fuse-2
+ libwebsockets
+ libsearpc
+ python))
+ (native-inputs (list autoconf
+ automake
+ libtool
+ pkg-config
+ vala
+ intltool))
+ (synopsis "Mount Seafile libraries as FUSE drive")
+ (description
+ "This package provides the @{seadrive} command, allowing for seadrive libraries to be mounted as FUSE drive.")
+ (license license:gpl3+)))
--
2.46.0
flypaper wrote 3 weeks ago
[PATCH 6/6] gnu: sync: add seadrive-gui
(address . 76324@debbugs.gnu.org)(name . flypaper)(address . flypaper@disroot.org)
4aaa291b01b8dcc3ec09a3778134f8ae9f1bc15c.1739648316.git.flypaper@disroot.org
* gnu/packages/sync.scm (seadrive-gui): New package.

Change-Id: I6dc3ffff73611788e5b40ef4a0d09f2492c2da2b
---
gnu/packages/sync.scm | 62 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 62 insertions(+)

Toggle diff (79 lines)
diff --git a/gnu/packages/sync.scm b/gnu/packages/sync.scm
index 6f09ae20b2..25ec140d75 100644
--- a/gnu/packages/sync.scm
+++ b/gnu/packages/sync.scm
@@ -7,6 +7,7 @@
;;; Copyright © 2019 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
+;;; Copyright © 2025 flypaper-ultimat <flypaper@disroot.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -808,3 +809,64 @@ (define-public seadrive-fuse
(description
"This package provides the @{seadrive} command, allowing for seadrive libraries to be mounted as FUSE drive.")
(license license:gpl3+)))
+
+(define-public seadrive-gui
+ (package
+ (name "seadrive-gui")
+ (version "3.0.12")
+ (home-page "https://github.com/haiwen/seadrive-gui")
+ (synopsis "SeaDrive daemon with FUSE interface")
+ (description
+ "This package provides the graphical interface for mounting seadrive libraries as a FUSE drive.")
+ (license license:gpl3+)
+ (native-inputs (list autoconf
+ automake
+ libtool
+ pkg-config
+ vala
+ intltool
+ cmake-minimal))
+ (inputs (list sqlite
+ gtk
+ curl
+ util-linux
+ openssl
+ jansson
+ libevent
+ fuse-2
+ libwebsockets
+ libsearpc
+ python
+ qtbase-5
+ qttools-5
+ python-simplejson
+ qtwebengine-5
+ seadrive-fuse))
+ (arguments
+ (list
+ #:configure-flags #~(list "-DCMAKE_BUILD_TYPE=Release")
+ #:tests? #f ;there are no tests
+ #:phases '(modify-phases %standard-phases
+ ;; seafile-client expects seaf-daemon in %PATH
+ ;; but we can just replace it in the source with a path to store
+ ;; so that we dont anymore.
+ (add-after 'unpack 'replace-daemon-executable
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "src/daemon-mgr.cpp"
+ (("\"(seadrive)\"" all program)
+ (string-append "\""
+ (search-input-file inputs
+ (string-append
+ "bin/" program))
+ "\""))))))))
+ (build-system qt-build-system)
+ (source
+ (origin
+ (method git-fetch)
+ (file-name (git-file-name name version))
+ (modules '((guix build utils)))
+ (uri (git-reference
+ (url home-page)
+ (commit (string-append "v" version))))
+ (sha256
+ (base32 "1xaq1rlyfnp7xnq2xbc77hrblpw8apqmf3l5mrnvkhwifgs0p8xs"))))))
--
2.46.0
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 76324@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 76324
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch
You may also tag this issue. See list of standard tags. For example, to set the confirmed and easy tags
mumi command -t +confirmed -t +easy
Or, remove the moreinfo tag and set the help tag
mumi command -t -moreinfo -t +help