summaryrefslogtreecommitdiff
path: root/gnu/packages
diff options
context:
space:
mode:
authorTobias Geerinckx-Rice <me@tobias.gr>2020-11-20 20:07:03 +0100
committerTobias Geerinckx-Rice <me@tobias.gr>2020-11-21 00:29:37 +0100
commitc92ec0958022c0298ac613433908785b9432c11c (patch)
tree7f7329bc8c31b1437c18c1b4d0ecc71bf1f14284 /gnu/packages
parent6a7e912aee9a6ed8e38e68f45731760a6eb28cdb (diff)
gnu: Add davfs2.
* gnu/packages/file-systems.scm (davfs2): New public variable.
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/file-systems.scm74
1 files changed, 74 insertions, 0 deletions
diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index 974ddc30ee..bc147bf3c6 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -68,6 +68,7 @@
#:use-module (gnu packages sqlite)
#:use-module (gnu packages tls)
#:use-module (gnu packages valgrind)
+ #:use-module (gnu packages version-control)
#:use-module (gnu packages xml))
(define-public autofs
@@ -182,6 +183,79 @@ another location, similar to @command{mount --bind}. It can be used for:
@end itemize ")
(license license:gpl2+)))
+(define-public davfs2
+ (package
+ (name "davfs2")
+ (version "1.6.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://download.savannah.nongnu.org/releases/"
+ "davfs2/davfs2-" version ".tar.gz"))
+ (sha256
+ (base32 "0l1vnv5lfigciwg17p10zxwhzj4qw2d9kw30prr7g4dxhmb6fsrf"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags
+ (list "--sysconfdir=/etc" ; so man pages & binaries contain /etc
+ (string-append "--docdir=" (assoc-ref %outputs "out")
+ "/share/doc/" ,name "-" ,version)
+ (string-append "ssbindir=" (assoc-ref %outputs "out") "/sbin")
+ ;; The default ‘davfs2’ user and group don't exist on most systems.
+ "dav_user=nobody"
+ "dav_group=nogroup")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'omit-redundancy
+ ;; Don't install redundant copies of /etc examples into /share.
+ (lambda _
+ (substitute* "etc/Makefile.in"
+ (("(dist_pkgdata_DATA =.*) davfs2.conf secrets(.*)"
+ _ prefix suffix)
+ (string-append prefix suffix)))
+ #t))
+ (add-after 'unpack 'patch-file-names
+ (lambda _
+ ;; Don't auto-load the FUSE kernel module. That's up to root.
+ ;; XXX If/when we restore the previous behaviour, make sure not
+ ;; to introduce a security hole when mount.davfs is setuid.
+ (substitute* "src/kernel_interface.c"
+ (("/sbin/modprobe") "/modprobe/disabled"))
+ #t))
+ (replace 'install
+ (lambda* (#:key make-flags outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (apply invoke "make" "install"
+ (string-append "pkgsysconfdir=" out "/etc")
+ make-flags)))))))
+ (inputs
+ `(("neon" ,neon)
+
+ ;; Neon requires but doesn't propagate zlib, nor would we want that.
+ ;; XZ as well, but that's already present in the build environment.
+ ("zlib" ,zlib)))
+ (home-page "https://savannah.nongnu.org/projects/davfs2")
+ (synopsis "Mount remote WebDAV resources in the local file system")
+ (description
+ "The @acronym{WebDAV, Web Distributed Authoring and Versioning} extension
+to the HTTP protocol defines a standard way to author resources on a remote Web
+server. Davfs2 exposes such resources as a typical filesystem which can be used
+by standard applications with no built-in support for WebDAV, such as the GNU
+coreutils (@command{cp}, @command{mv}, etc.) or a graphical word processor.
+
+Davfs2 works with most WebDAV servers with no or little configuration. It
+supports TLS (HTTPS), HTTP proxies, HTTP basic and digest authentication, and
+client certificates. It performs extensive caching to avoid unnecessary network
+traffic, stay responsive even over slow or unreliable connections, and prevent
+data loss. It aims to make use by unprivileged users as easy and secure as
+possible.
+
+However, davfs2 is not a full-featured WebDAV client. The file system interface
+and the WebDAV protocol are quite different. Translating between the two is not
+always possible.")
+ (license (list license:bsd-2 ; src/fuse_kernel.h
+ license:gpl3+)))) ; everything else
+
(define-public fsarchiver
(package
(name "fsarchiver")