summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAustin Seipp <aseipp@pobox.com>2017-12-15 17:39:12 -0600
committerAustin Seipp <aseipp@pobox.com>2017-12-17 12:46:45 -0600
commit8acc54456e11ee0ec80ed0c6abb6d68abae60592 (patch)
tree61a74c8bd928fb425d90fe0c39b59598a03049fe
parent5053c6ed2521ec83bde641f6dba21d7efa4a81ec (diff)
make: correct path to 'bcachefs' in mkfs/fsck scripts
The fsck and bcachefs scripts simply worked by running 'exec bcachefs ...', but this executes whatever is out of `$PATH`, which is likely not what a user expected when working inside the bcachefs-tools tree. This replaces the local uses of 'exec bcachefs' to use bash's readlink/dirname builtins in order to find the location of the currently executing wrapper, and execute the 'bcachefs' tool from there. This allows executing these wrappers from anywhere, provided 'bcachefs' is just right next to them, with the correct semantics. As a result, this also allows removing a tiny hack from the Nix expressions, allowing the included default.nix to use completely standard mkDerivation builders, with no extra patch/fixup phases. Signed-off-by: Austin Seipp <aseipp@pobox.com>
-rw-r--r--default.nix13
-rwxr-xr-xfsck.bcachefs5
-rwxr-xr-xmkfs.bcachefs5
3 files changed, 6 insertions, 17 deletions
diff --git a/default.nix b/default.nix
index 82d4a852..f19ff107 100644
--- a/default.nix
+++ b/default.nix
@@ -15,19 +15,6 @@ stdenv.mkDerivation rec {
libsodium libscrypt
];
- patchPhase = ''
- # ensure the mkfs and fsck scripts, which are just wrappers around
- # 'bcachefs', are patched to refer to the right location inside the
- # nix store. (you wouldn't expect built tools to call random outside
- # utilities, in general, but the exact tools they were built with.)
- #
- # TODO FIXME: it would be better to fix this in the 'install' target,
- # however, so this works with any bog-standard installation
-
- substituteInPlace fsck.bcachefs --replace bcachefs $out/bin/bcachefs
- substituteInPlace mkfs.bcachefs --replace bcachefs $out/bin/bcachefs
- '';
-
enableParallelBuilding = true;
makeFlags =
[ "PREFIX=$(out)"
diff --git a/fsck.bcachefs b/fsck.bcachefs
index e1d2a44c..1494e4c1 100755
--- a/fsck.bcachefs
+++ b/fsck.bcachefs
@@ -1,3 +1,4 @@
-#!/bin/sh
+#!/usr/bin/env bash
-exec bcachefs fsck "$@"
+SDIR="$(dirname "$(readlink -f "$0")")"
+exec "$SDIR/bcachefs" fsck "$@"
diff --git a/mkfs.bcachefs b/mkfs.bcachefs
index a1ce6159..a0541d52 100755
--- a/mkfs.bcachefs
+++ b/mkfs.bcachefs
@@ -1,3 +1,4 @@
-#!/bin/sh
+#!/usr/bin/env bash
-exec bcachefs format "$@"
+SDIR="$(dirname "$(readlink -f "$0")")"
+exec "$SDIR/bcachefs" format "$@"