aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016-2018, 2022, 2023 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2021 Marius Bakke <marius@gnu.org>
;;;
;;; 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)
  #:use-module (gnu packages)
  #:use-module (guix licenses)
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix build-system gnu))

(define-public file
  (package
    (name "file")
    (version "5.45")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://ftp.astron.com/pub/file/file-"
                                  version ".tar.gz"))
              (sha256
               (base32
                "10jdg2fd19h2q3jrsaw7xqwy1w3qyvdfzzrv9sgjq3mv548gb5zw"))
              (patches (search-patches "file-32bit-time.patch"))))
   (build-system gnu-build-system)

   ;; When cross-compiling, this package depends upon a native install of
   ;; itself.
   (native-inputs (if (%current-target-system)
                      `(("self" ,this-package))
                      '()))
   (synopsis "File type guesser")
   (description
    "The file command is a file type guesser, a command-line tool that tells
you in words what kind of data a file contains.  It does not rely on filename
extensions to tell you the type of a file, but looks at the actual contents
of the file.  This package provides the libmagic library.")
   (license bsd-2)
   (home-page "https://www.darwinsys.com/file/")))
c-ref %outputs "out") "/lib/libnfsidmap") "--enable-svcgss") #: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"))) ;; find rpcgen (substitute* "configure" (("/usr/local/bin/rpcgen") (which "rpcgen"))) ;; 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/mount/Makefile.in" "utils/nfsdcld/Makefile.in" "utils/nfsdcltrack/Makefile.in") (("^sbindir = /sbin") (string-append "sbindir = " (assoc-ref %outputs "out") "/sbin"))) #t))))) (inputs `(("keyutils" ,keyutils) ("libevent" ,libevent) ("rpcsvc-proto" ,rpcsvc-proto) ;for 'rpcgen' ("sqlite" ,sqlite) ("lvm2" ,lvm2) ("util-linux" ,util-linux) ; only for above substitutions ("util-linux:lib" ,util-linux "lib") ; for libblkid ("mit-krb5" ,mit-krb5) ("libtirpc" ,libtirpc) ("python-wrapper" ,python-wrapper))) ;for the Python based tools (native-inputs (list pkg-config)) (home-page "https://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))) (define-public nfs4-acl-tools (package (name "nfs4-acl-tools") (version "0.3.7") (source (origin (method git-fetch) ;; tarballs are available here: ;; http://linux-nfs.org/~bfields/nfs4-acl-tools/ (uri (git-reference (url "git://git.linux-nfs.org/projects/bfields/nfs4-acl-tools.git") (commit (string-append name "-" version)))) (file-name (git-file-name name version)) (sha256 (base32 "0lq9xdaskxysggs918vs8x42xvmg9nj7lla21ni2scw5ljld3h1i")) (patches (search-patches "nfs4-acl-tools-0.3.7-fixpaths.patch")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no tests #:phases (modify-phases %standard-phases (add-after 'unpack 'fix-bin-sh (lambda _ (substitute* "include/buildmacros" (("/bin/sh") (which "sh"))) #t))))) (native-inputs (list automake autoconf libtool)) (inputs (list attr)) (home-page "https://linux-nfs.org/wiki/index.php/Main_Page") (synopsis "Commandline ACL utilities for the Linux NFSv4 client") (description "This package provides the commandline utilities @command{nfs4_getfacl} and @command{nfs4_setfacl}, which are similar to their POSIX equivalents @command{getfacl} and @command{setfacl}. They fetch and manipulate access control lists for files and directories on NFSv4 mounts.") (license license:bsd-3)))