From e9aba1ea338d9e311c005ee294992297f19b8ca5 Mon Sep 17 00:00:00 2001 From: John Darrington Date: Mon, 12 Sep 2016 18:06:03 +0200 Subject: [PATCH] gnu: Add nfs-utils * gnu/packages/nfs.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. --- gnu/local.mk | 1 + gnu/packages/nfs.scm | 118 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 gnu/packages/nfs.scm diff --git a/gnu/local.mk b/gnu/local.mk index 9b350131dd..571400989b 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -257,6 +257,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/netpbm.scm \ %D%/packages/nettle.scm \ %D%/packages/networking.scm \ + %D%/packages/nfs.scm \ %D%/packages/ninja.scm \ %D%/packages/node.scm \ %D%/packages/noweb.scm \ diff --git a/gnu/packages/nfs.scm b/gnu/packages/nfs.scm new file mode 100644 index 0000000000..650a2af0d6 --- /dev/null +++ b/gnu/packages/nfs.scm @@ -0,0 +1,118 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2016 John Darrington +;;; +;;; 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 . + +(define-module (gnu packages nfs) + #:use-module (gnu packages) + #:use-module (gnu packages linux) + #:use-module (gnu packages databases) + #:use-module (gnu packages gsasl) + #:use-module (gnu packages libevent) + #:use-module (gnu packages mit-krb5) + #:use-module (gnu packages onc-rpc) + #:use-module (gnu packages pkg-config) + #:use-module (guix build-system cmake) + #:use-module (guix build-system gnu) + #:use-module (guix build-system python) + #:use-module (guix build-system trivial) + #:use-module (guix download) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix utils) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-2) + #:use-module (srfi srfi-26) + #:use-module (ice-9 match)) + +(define-public nfs-utils + (package + (name "nfs-utils") + (version "1.3.4") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://kernel.org/linux/utils/nfs-utils/" version + "/nfs-utils-" version ".tar.xz")) + (sha256 + (base32 + "0xarqhwy757vazv9gqhyrgxsrx083yhvkkih01jh83fqm305naml")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + `("--without-tcp-wrappers" + ,(string-append "--with-start-statd=" + (assoc-ref %outputs "out") "/sbin/start-statd") + ,(string-append "--with-krb5=" (assoc-ref %build-inputs "mit-krb5"))) + #:phases (modify-phases %standard-phases + (add-before + 'configure 'adjust-command-file-names + (lambda _ + ;; Remove assumptions of FHS from start-statd script + (substitute* `("utils/statd/start-statd") + (("^PATH=.*") "") + (("^flock") + (string-append + (assoc-ref %build-inputs "util-linux") + "/bin/flock")) + (("^exec rpc.statd") + (string-append "exec " + (assoc-ref %outputs "out") "/sbin/rpc.statd"))) + + ;; This hook tries to write to /var + ;; That needs to be done by a service too. + (substitute* `("Makefile.in") + (("^install-data-hook:") + "install-data-hook-disabled-for-guix:")) + + ;; Replace some hard coded paths. + (substitute* `("utils/nfsd/nfssvc.c") + (("/bin/mount") + (string-append + (assoc-ref %build-inputs "util-linux") + "/bin/mount"))) + (substitute* `("utils/statd/statd.c") + (("/usr/sbin/") + (string-append (assoc-ref %outputs "out") "/sbin/"))) + (substitute* `("utils/osd_login/Makefile.in" + "utils/mount/Makefile.in" + "utils/nfsdcltrack/Makefile.in") + (("^sbindir = /sbin") + (string-append "sbindir = " + (assoc-ref %outputs "out") "/sbin"))) + #t))))) + (inputs `(("libevent" ,libevent) + ("libnfsidmap" ,libnfsidmap) + ("sqlite" ,sqlite) + ("lvm2" ,lvm2) + ("gss" ,gss) + ("util-linux" ,util-linux) + ("mit-krb5" ,mit-krb5) + ("libtirpc" ,libtirpc))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://www.kernel.org/pub/linux/utils/nfs-utils/") + (synopsis "Tools for loading and managing Linux NFS mounts") + (description "The Network File System (NFS) was developed to allow +machines to mount a disk partition on a remote machine as if it were a local +disk. It allows for fast, seamless sharing of files across a network.") + ;; It is hard to be sure what the licence is. Most of the source files + ;; contain no licence notice at all. A few have a licence notice for a 3 + ;; clause non-copyleft licence. However the tarball has a COPYING file + ;; with the text of GPLv2 -- It seems then that GLPv2 is the most + ;; restrictive licence, and until advice to the contrary we must assume + ;; that is what is intended. + (license license:gpl2)))