[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#42031] [PATCH] gnu: Add autofs.
From: |
Tobias Geerinckx-Rice |
Subject: |
[bug#42031] [PATCH] gnu: Add autofs. |
Date: |
Thu, 25 Jun 2020 14:27:31 +0200 |
Oleg,
Thank you for the patch!
I'm superbly biased[1] but 3 cruel people have insisted we review
each others' patches so here you go :-)
Oleg told me on #guix that this is basically a straight port from
Nix[0]. The Nix package is very… not good? There's nothing worth
scavenging. A ‘reviewed’ version of Oleg's patch ends up
identical to mine, but without the SASL support.
Oleg Pykhalov 写道:
* gnu/packages/file-systems.scm (autofs): New variable.
---
gnu/packages/file-systems.scm | 77
+++++++++++++++++++++++++++++++++++
1 file changed, 77 insertions(+)
diff --git a/gnu/packages/file-systems.scm
b/gnu/packages/file-systems.scm
index dd72152c51..c8d881e542 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -36,6 +36,7 @@
#:use-module (gnu packages acl)
#:use-module (gnu packages attr)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages base)
#:use-module (gnu packages bison)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
@@ -57,6 +58,7 @@
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages readline)
#:use-module (gnu packages rsync)
+ #:use-module (gnu packages sssd)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages tls)
#:use-module (gnu packages valgrind)
@@ -782,3 +784,78 @@ directory onto a single drive and create
FreeDesktop.org Trash specification
compatible directories.")
(home-page "https://github.com/trapexit/mergerfs-tools")
(license license:isc))))
+
+(define-public autofs
+ (package
+ (name "autofs")
+ (version "5.1.6")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+
"https://mirrors.edge.kernel.org/pub/linux/daemons/autofs/v"
+ (version-major version) "/autofs-" version
".tar.xz"))
+ (sha256
+ (base32
+
"1vya21mb4izj3khcr3flibv7xc15vvx2v0rjfk5yd31qnzcy7pnx"))))
+ (build-system gnu-build-system)
+ (inputs `(("util-linux" ,util-linux)
+ ("nfs-utils" ,nfs-utils)
+ ("kmod" ,kmod)
+ ("e2fsprogs" ,e2fsprogs)
+ ("sssd" ,sssd)
+ ("linux-headers" ,linux-libre-headers)
+ ("libtirpc", libtirpc)
+ ("binutils" ,binutils)
+ ("rpcsvc-proto" ,rpcsvc-proto) ;for 'rpcgen'
+ ("libxml2" ,libxml2)))
Order *inputs alphabetically.
rpcsvc-proto should be native. So would binutils, but including
it at all is probably a mistake.
linux-libre-headers aren't necessary. Nor is kmod.
Sometimes, configure scripts check for things just for fun.
+ (native-inputs
+ `(("flex" ,flex)
+ ("bison" ,bison)
+ ("pkg-config" ,pkg-config)))
+ (arguments
+ `(#:tests? #f ; no tests
Despite the ‘warning: foo not found, disabling the foo tests’
./configure warnings I didn't find them either.
+ #:validate-runpath? #f
This is a sign that something is broken & needs to be fixed, not
ignored.
+ #:configure-flags '("--enable-force-shutdown"
INSTALL describes this as:
--enable-force-shutdown
This option enables the use of the USR1 signal to force an
unconditional unlink umount of all mounts at shutdown.
Safety aside, I read that as ‘requires init/service to actually
send the signal on shutdown to have any effect’. There's no
autofs service that does so yet.
I don't have much of an opinion about it. Does anyone think it's
useful or unsafe?
"--with-path=$PATH"
In Nix, everything between ''fun quotes'' is evaluated by a shell.
In Guix, unless ./configure does its own eval somewhere (I didn't
check), this just sets the path to (literally) "$PATH".
+ "--enable-ignore-busy")
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'pre-configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (setenv "exportsssldir" (string-append (assoc-ref
inputs "sssd")
+
"/lib/sssd/modules"))
+ (setenv "HAVE_SSS_AUTOFS" "1")
Pass these as #:configure-flags when possible — it's declarative®.
+ (setenv "YACC" (string-append (assoc-ref inputs
"bison")
+ "/bin/yacc"))
+ (setenv "RANLIB" (string-append (assoc-ref inputs
"binutils")
+ "/bin/ranlib"))
+ (setenv "RPCGEN" (string-append (assoc-ref inputs
"rpcsvc-proto")
+ "/bin/rpcgen"))
+ (setenv "LEX" (string-append (assoc-ref inputs
"flex")
+ "/bin/flex"))
+ (setenv "MOUNT" (string-append (assoc-ref inputs
"util-linux")
+ "/bin/mount"))
+ (setenv "MOUNT_NFS" (string-append (assoc-ref
inputs "nfs-utils")
+
"/sbin/mount.nfs"))
+ (setenv "UMOUNT" (string-append (assoc-ref inputs
"util-linux")
+ "/bin/umount"))
+ (setenv "MODPROBE" (string-append (assoc-ref
inputs "kmod")
+
"/bin/modprobe"))
+ (setenv "E2FSCK" (string-append (assoc-ref inputs
"e2fsprogs")
+
"/sbin/fsck.ext2"))
+ (setenv "E3FSCK" (string-append (assoc-ref inputs
"e2fsprogs")
+
"/sbin/fsck.ext3"))
+ (setenv "E4FSCK" (string-append (assoc-ref inputs
"e2fsprogs")
+
"/sbin/fsck.ext4"))
All of this can be avoided with:
+ (add-before 'configure 'fix-hard-coded-search-path
+ (lambda _
+ (substitute* "configure"
+ (("^searchpath=\".*\"")
+ "searchpath=\"$PATH\""))
+ #t))
allowing the configure script to do the work of finding things.
+ ;; Allow <rpc/rpc.h> & co. to be found.
+ (setenv "CPATH" (string-append (assoc-ref inputs
"libtirpc")
+ "/include/tirpc"))
+ ;; Makefile.rules defines a usable STRIP only
without the env var.
+ (unsetenv "STRIP")
+ #t)))))
Here too: I don't know if you simply copied these from Nix[0]
because they were there, or if you encountered errors without
them, but neither should be needed. I suspect STRIP is only
needed because of the bogus binutils input above, if at all.
+ (home-page
"https://www.kernel.org/pub/linux/daemons/autofs/")
+ (synopsis "Kernel-based automounter")
Which kernel? ;-)
+ (description "Autofs controls the operation of the
automount daemons. The
+automount daemons automatically mount filesystems when they are
used and
+unmount them after a period of inactivity. This is done based
on a set of
+pre-configured maps.")
The first sentence describes the autofs *command*.
+ (license license:gpl2)))
Kind regards,
T G-R
[0]:
https://github.com/NixOS/nixpkgs/blob/84cf00f98031e93f389f1eb93c4a7374a33cc0a9/pkgs/os-specific/linux/autofs/default.nix
[1]: https://issues.guix.gnu.org/42033
signature.asc
Description: PGP signature