summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorTobias Geerinckx-Rice <me@tobias.gr>2017-01-04 10:42:38 +0100
committerTobias Geerinckx-Rice <me@tobias.gr>2017-03-29 22:05:59 +0200
commit8d5fe1f1cf2226d245b93d35ca4244c3e61abd88 (patch)
tree8a9ca51d2352cb4a903c2fb466934b2c84c52e5e /gnu
parent8615da90518ca29a6451b76784f7f181a27fc713 (diff)
downloadguix-8d5fe1f1cf2226d245b93d35ca4244c3e61abd88.tar.gz
gnu: Add httpfs2.
* gnu/packages/file-systems.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/local.mk2
-rw-r--r--gnu/packages/file-systems.scm88
2 files changed, 90 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 34642af45c..063974b75d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -9,6 +9,7 @@
 # Copyright © 2016 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
 # Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
 # Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
+# Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 # Copyright © 2017 Clément Lassieur <clement@lassieur.org>
 # Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 #
@@ -129,6 +130,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/fcitx.scm			\
   %D%/packages/figlet.scm			\
   %D%/packages/file.scm				\
+  %D%/packages/file-systems.scm			\
   %D%/packages/finance.scm			\
   %D%/packages/firmware.scm			\
   %D%/packages/flashing-tools.scm		\
diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
new file mode 100644
index 0000000000..b4134dec81
--- /dev/null
+++ b/gnu/packages/file-systems.scm
@@ -0,0 +1,88 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;;
+;;; 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 file-systems)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages documentation)
+  #:use-module (gnu packages docbook)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages xml))
+
+(define-public httpfs2
+  (package
+    (name "httpfs2")
+    (version "0.1.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/httpfs/" name "/"
+                           name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1h8ggvhw30n2r6w11n1s458ypggdqx6ldwd61ma4yd7binrlpjq1"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("asciidoc" ,asciidoc)
+       ("docbook-xml" ,docbook-xml)
+       ("libxml2" ,libxml2)
+       ("libxslt" ,libxslt)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("fuse" ,fuse)
+       ("gnutls" ,gnutls)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (delete 'configure)            ; no configure script
+         (replace 'install
+           ;; There's no ‘install’ target. Install all variants manually.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (man1 (string-append out "/share/man/man1")))
+               (mkdir-p bin)
+               (mkdir-p man1)
+               (for-each
+                (lambda (variant)
+                  (let ((man1-page (string-append variant ".1")))
+                    (install-file variant bin)
+                    (install-file man1-page man1)))
+                (list "httpfs2"
+                      "httpfs2-mt"
+                      "httpfs2-ssl"
+                      "httpfs2-ssl-mt")))
+             #t)))
+       #:make-flags (list "CC=gcc")
+       #:parallel-build? #f             ; can result in missing man pages
+       #:tests? #f))                    ; no tests
+    (home-page "https://sourceforge.net/projects/httpfs/")
+    (synopsis "Mount remote files over HTTP")
+    (description "httpfs2 is a @code{fuse} file system for mounting any
+@dfn{HyperText} (HTTP or HTTPS) URL.  It uses HTTP/1.1 byte ranges to request
+arbitrary bytes from the web server, without needing to download the entire
+file.  This is particularly useful with large archives such as ZIP files and
+ISO images when you only need to inspect their contents or extract specific
+files.  Since the HTTP protocol itself has no notion of directories, only a
+single file can be mounted.")
+    (license license:gpl2+)))