summary refs log tree commit diff
diff options
context:
space:
mode:
authorThomas Strobel <ts468@cam.ac.uk>2015-07-04 16:30:24 +0200
committerThomas Strobel <ts468@cam.ac.uk>2015-07-04 16:36:47 +0200
commit5a5587ba6d209ac19857274a76b7e07450af527f (patch)
tree6f3ac8d235c10d73d5839045e092f8a9064cf915
parent8722e5453e58026c7be50b3f19368d8906ee02f1 (diff)
downloadnixpkgs-5a5587ba6d209ac19857274a76b7e07450af527f.tar
nixpkgs-5a5587ba6d209ac19857274a76b7e07450af527f.tar.gz
nixpkgs-5a5587ba6d209ac19857274a76b7e07450af527f.tar.bz2
nixpkgs-5a5587ba6d209ac19857274a76b7e07450af527f.tar.lz
nixpkgs-5a5587ba6d209ac19857274a76b7e07450af527f.tar.xz
nixpkgs-5a5587ba6d209ac19857274a76b7e07450af527f.tar.zst
nixpkgs-5a5587ba6d209ac19857274a76b7e07450af527f.zip
pam_mount: fix PATH issue
-rw-r--r--pkgs/os-specific/linux/pam_mount/default.nix10
-rw-r--r--pkgs/os-specific/linux/pam_mount/insert_utillinux_path_hooks.patch30
2 files changed, 38 insertions, 2 deletions
diff --git a/pkgs/os-specific/linux/pam_mount/default.nix b/pkgs/os-specific/linux/pam_mount/default.nix
index 0cf41276153..a4f52517df4 100644
--- a/pkgs/os-specific/linux/pam_mount/default.nix
+++ b/pkgs/os-specific/linux/pam_mount/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, autoconf, automake, pkgconfig, libtool, pam, libHX, utillinux, libxml2, pcre, perl, openssl, cryptsetup }:
+{ stdenv, fetchurl, autoconf, automake, pkgconfig, libtool, pam, libHX, libxml2, pcre, perl, openssl, cryptsetup, utillinux }:
 
 stdenv.mkDerivation rec {
   name = "pam_mount-2.15";
@@ -10,12 +10,18 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ autoconf automake pkgconfig libtool pam libHX utillinux libxml2 pcre perl openssl cryptsetup ];
 
-  preConfigure = "sh autogen.sh --prefix=$out";
+  patches = [ ./insert_utillinux_path_hooks.patch ];
+
+  preConfigure = ''
+    substituteInPlace src/mtcrypt.c --replace @@NIX_UTILLINUX@@ ${utillinux}/bin
+    sh autogen.sh --prefix=$out
+    '';
 
   makeFlags = "DESTDIR=$(out)";
 
   # Probably a hack, but using DESTDIR and PREFIX makes everything work!
   postInstall = ''
+    mkdir -p $out
     cp -r $out/$out/* $out
     rm -r $out/nix
     '';
diff --git a/pkgs/os-specific/linux/pam_mount/insert_utillinux_path_hooks.patch b/pkgs/os-specific/linux/pam_mount/insert_utillinux_path_hooks.patch
new file mode 100644
index 00000000000..6d9da05da29
--- /dev/null
+++ b/pkgs/os-specific/linux/pam_mount/insert_utillinux_path_hooks.patch
@@ -0,0 +1,30 @@
+diff -uNr pam_mount-2.15_old/src/mtcrypt.c pam_mount-2.15/src/mtcrypt.c
+--- pam_mount-2.15_old/src/mtcrypt.c	2015-07-04 16:00:12.917943336 +0200
++++ pam_mount-2.15/src/mtcrypt.c	2015-07-04 16:03:45.685302493 +0200
+@@ -534,7 +534,7 @@
+ 
+ 	/* candidate for replacement by some libmount calls, I guess. */
+ 	argk = 0;
+-	mount_args[argk++] = "mount";
++	mount_args[argk++] = "@@NIX_UTILLINUX@@/mount";
+ 	if (opt->fstype != NULL) {
+ 		mount_args[argk++] = "-t";
+ 		mount_args[argk++] = opt->fstype;
+@@ -668,7 +668,7 @@
+ 
+ 	if (!opt->no_update)
+ 		pmt_smtab_remove(mntpt, SMTABF_MOUNTPOINT);
+-	rmt_args[argk++] = "mount";
++	rmt_args[argk++] = "@@NIX_UTILLINUX@@/mount";
+ 	rmt_args[argk++] = "-o";
+ 	rmt_args[argk++] = opt->extra_opts;
+ 	rmt_args[argk++] = mntpt;
+@@ -749,7 +749,7 @@
+ 		pmt_smtab_remove(mountpoint, SMTABF_MOUNTPOINT);
+ 	pmt_cmtab_remove(mountpoint);
+ 
+-	umount_args[argk++] = "umount";
++	umount_args[argk++] = "@@NIX_UTILLINUX@@/umount";
+ 	umount_args[argk++] = "-i";
+ 	umount_args[argk++] = mountpoint;
+ 	umount_args[argk]   = NULL;