aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Hill <daniel@gluo.nz>2023-02-27 16:34:06 +1300
committerDaniel Hill <daniel@gluo.nz>2023-02-27 16:39:46 +1300
commitbf359ac1ad97929e1023632aafb272d655504516 (patch)
tree4ed1729ae4f3bbc562aed99f208cc4e238af6afb
parent203e40fcf5a11a4bfb29d758ae065445c6e766d5 (diff)
downloadbcachefs-tools-bf359ac1ad97929e1023632aafb272d655504516.tar.gz
nix fix up! Rust now integrated into bcachefs binary
Heavily simplified to just call make with the required rust dependencies. Signed-off-by: Daniel Hill <daniel@gluo.nz>
-rw-r--r--base.nix59
-rw-r--r--binary.nix129
-rw-r--r--build.nix64
-rw-r--r--flake.lock18
-rw-r--r--flake.nix9
-rw-r--r--rust-src/bch_bindgen/default.nix49
-rw-r--r--rust-src/default.nix27
-rw-r--r--rust-src/module.nix54
-rw-r--r--shell.nix21
9 files changed, 74 insertions, 356 deletions
diff --git a/base.nix b/base.nix
deleted file mode 100644
index 0253fd79..00000000
--- a/base.nix
+++ /dev/null
@@ -1,59 +0,0 @@
-{ lib
-, stdenvNoCC
-, callPackage
-, nixosTests
-, autoPatchelfHook
-, binary
-, mount
-, versionString ? "0.1"
-}:
-
-stdenvNoCC.mkDerivation {
- pname = "bcachefs-tools";
-
- version = "v0.1-flake-${versionString}";
-
- nativeBuildInputs = [
- binary
- mount
- ];
-
- buildInputs = mount.propagatedBuildInputs;
-
- phases = [ "installPhase" ];
-
- installPhase = ''
- mkdir $out
- mkdir $out/bin
- mkdir $out/lib
- mkdir $out/share
- mkdir $out/etc
- cp -pr "${binary}/bin/"* $out/bin
- cp -pr "${binary}/lib/"* $out/lib
- cp -pr "${binary}/share/"* $out/share
- cp -pr "${binary}/etc/"* $out/etc
- cp -pr "${mount}/bin/"* $out/bin/
- chmod u+w $out/bin/*
- patchelf --add-rpath $out/lib $out/bin/bcachefs-mount
- ln -s "$out/bin/bcachefs-mount" "$out/bin/mount.bcachefs"
- ln -s "$out/bin" "$out/sbin"
- '';
-
- passthru = {
- tests = {
- smoke-test = nixosTests.bcachefs;
- };
- };
-
- enableParallelBuilding = true;
- meta = with lib; {
- description = "Userspace tools for bcachefs";
- homepage = http://bcachefs.org;
- license = licenses.gpl2;
- platforms = platforms.linux;
- maintainers =
- [ "Kent Overstreet <kent.overstreet@gmail.com>"
- ];
-
- };
-}
diff --git a/binary.nix b/binary.nix
deleted file mode 100644
index e20e5033..00000000
--- a/binary.nix
+++ /dev/null
@@ -1,129 +0,0 @@
-{ lib
-, stdenv
-, pkg-config
-, attr
-, libuuid
-, libsodium
-, keyutils
-
-, liburcu
-, zlib
-, libaio
-, udev
-, zstd
-, lz4
-
-, python39
-, python39Packages
-, docutils
-, nixosTests
-
-, versionString ? "0.1"
-, doCheck ? true
-, inShell ? false
-, debugMode ? inShell
-
-, testWithValgrind ? true
-, valgrind
-
-, fuseSupport ? false
-, fuse3 ? null }:
-
-assert fuseSupport -> fuse3 != null;
-assert testWithValgrind -> valgrind != null;
-stdenv.mkDerivation {
- pname = "bcachefs-bin";
-
- version = "v0.1-flake-${versionString}";
- VERSION = "v0.1-flake-${versionString}";
-
- src = (lib.cleanSource (builtins.path { name = "bcachefs-tools-src"; path = ./. ;} ));
-
- postPatch = "patchShebangs --build doc/macro2rst.py";
-
- propagatedNativeBuildInputs = [
- # used to find dependencies
- ## see ./INSTALL
- pkg-config
- ];
-
- propagatedBuildInputs = [
- # bcachefs explicit dependencies
- ## see ./INSTALL
- libaio
-
- # libblkid
- keyutils # libkeyutils
- lz4 # liblz4
-
- libsodium
- liburcu
- libuuid
- zstd # libzstd
- zlib # zlib1g
-
- # unspecified dependencies
- attr
- udev
- ];
-
- buildInputs = [
- # documentation depenedencies
- docutils
- python39Packages.pygments
- ] ++ (lib.optional fuseSupport fuse3)
- ++ (lib.optional testWithValgrind valgrind);
-
- makeFlags = [
- "PREFIX=${placeholder "out"}"
- ] ++ lib.optional debugMode "EXTRA_CFLAGS=-ggdb";
-
- installFlags = [
- "INITRAMFS_DIR=${placeholder "out"}/etc/initramfs-tools"
- ];
-
- doCheck = doCheck; # needs bcachefs module loaded on builder
-
- checkInputs = [
- python39Packages.pytest
- python39Packages.pytest-xdist
- ] ++ lib.optional testWithValgrind valgrind;
-
- checkFlags = [
- "BCACHEFS_TEST_USE_VALGRIND=${if testWithValgrind then "yes" else "no"}"
- # cannot escape spaces within make flags, quotes are stripped
- "PYTEST_CMD=pytest" # "PYTEST_ARGS='-n4 --version'"
- ];
-
- preCheck =
- ''
- makeFlagsArray+=(PYTEST_ARGS="--verbose -n2")
- '' +
- lib.optionalString fuseSupport ''
- rm tests/test_fuse.py
- '';
-
- dontStrip = debugMode;
- passthru = {
- bcachefs_revision = let
- file = builtins.readFile ./.bcachefs_revision;
- removeLineFeeds = str: lib.lists.foldr (lib.strings.removeSuffix) str ["\r" "\n"];
- in removeLineFeeds file;
-
- tests = {
- smoke-test = nixosTests.bcachefs;
- };
- };
-
- enableParallelBuilding = true;
- meta = with lib; {
- description = "Userspace tools for bcachefs";
- homepage = http://bcachefs.org;
- license = licenses.gpl2;
- platforms = platforms.linux;
- maintainers =
- [ "Kent Overstreet <kent.overstreet@gmail.com>"
- ];
-
- };
-}
diff --git a/build.nix b/build.nix
new file mode 100644
index 00000000..7d2c2276
--- /dev/null
+++ b/build.nix
@@ -0,0 +1,64 @@
+{ lib
+, stdenv
+, pkg-config
+, attr
+, libuuid
+, libsodium
+, keyutils
+, liburcu
+, zlib
+, libaio
+, udev
+, zstd
+, lz4
+, nix-gitignore
+, rustPlatform
+ }:
+
+let
+ src = nix-gitignore.gitignoreSource [] ./. ;
+
+ commit = lib.strings.substring 0 7 (builtins.readFile ./.bcachefs_revision);
+ version = "git-${commit}";
+
+in stdenv.mkDerivation {
+ inherit src version;
+
+ pname = "bcachefs-tools";
+
+ nativeBuildInputs = [
+ pkg-config
+ rustPlatform.cargoSetupHook
+ rustPlatform.rust.cargo
+ rustPlatform.rust.rustc
+ rustPlatform.bindgenHook
+ ];
+
+ buildInputs = [
+ libaio
+ keyutils # libkeyutils
+ lz4 # liblz4
+
+ libsodium
+ liburcu
+ libuuid
+ zstd # libzstd
+ zlib # zlib1g
+ attr
+ udev
+ ];
+
+ cargoRoot = "rust-src";
+ cargoDeps = rustPlatform.importCargoLock {
+ lockFile = "${src}/rust-src/Cargo.lock";
+ };
+
+ makeFlags = [
+ "PREFIX=${placeholder "out"}"
+ "VERSION=${commit}"
+ ];
+
+ dontStrip = true;
+ checkPhase = "./bcachefs version";
+ doCheck = true;
+}
diff --git a/flake.lock b/flake.lock
index b38a3383..2f65864e 100644
--- a/flake.lock
+++ b/flake.lock
@@ -3,11 +3,11 @@
"flake-compat": {
"flake": false,
"locked": {
- "lastModified": 1668681692,
- "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=",
+ "lastModified": 1673956053,
+ "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
"owner": "edolstra",
"repo": "flake-compat",
- "rev": "009399224d5e398d03b22badca40a37ac85412a1",
+ "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
"type": "github"
},
"original": {
@@ -18,11 +18,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1675183161,
- "narHash": "sha256-Zq8sNgAxDckpn7tJo7V1afRSk2eoVbu3OjI1QklGLNg=",
+ "lastModified": 1677342105,
+ "narHash": "sha256-kv1fpkfCJGb0M+LZaCHFUuIS9kRIwyVgupHu86Y28nc=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "e1e1b192c1a5aab2960bf0a0bd53a2e8124fa18e",
+ "rev": "b1f87ca164a9684404c8829b851c3586c4d9f089",
"type": "github"
},
"original": {
@@ -41,11 +41,11 @@
},
"utils": {
"locked": {
- "lastModified": 1667395993,
- "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
+ "lastModified": 1676283394,
+ "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
"owner": "numtide",
"repo": "flake-utils",
- "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
+ "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
"type": "github"
},
"original": {
diff --git a/flake.nix b/flake.nix
index 93480c1b..0f8e90d2 100644
--- a/flake.nix
+++ b/flake.nix
@@ -13,16 +13,9 @@
utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
- binary = pkgs.callPackage ./binary.nix {
- testWithValgrind = false;
- };
- mount = pkgs.callPackage ./rust-src/default.nix { inherit binary; };
- bcachefs = pkgs.callPackage ./base.nix {
- inherit binary mount;
- };
+ bcachefs = pkgs.callPackage ./build.nix {};
in {
packages = {
- inherit binary mount;
default = bcachefs;
};
});
diff --git a/rust-src/bch_bindgen/default.nix b/rust-src/bch_bindgen/default.nix
deleted file mode 100644
index b7ad502a..00000000
--- a/rust-src/bch_bindgen/default.nix
+++ /dev/null
@@ -1,49 +0,0 @@
-{ lib
-, stdenv
-, rustPlatform
-, llvmPackages
-, bcachefs
-, pkg-config
-, udev
-, liburcu
-, zstd
-, keyutils
-, libaio
-, lz4 # liblz4
-, libsodium
-, libuuid
-, zlib # zlib1g
-, libscrypt
-, rustfmt
-, glibc
-, ...
-}:
-let
- cargo = lib.trivial.importTOML ./Cargo.toml;
-in
-rustPlatform.buildRustPackage {
- pname = cargo.package.name;
- version = cargo.package.version;
-
- src = builtins.path {
- path = ./.;
- name = "bch_bindgen";
- };
-
- cargoLock = { lockFile = ./Cargo.lock; };
-
- propagatedNativeBuildInputs = [ rustPlatform.bindgenHook ];
-
- propagatedBuildInputs = [
- bcachefs.tools
- ];
-
- LIBBCACHEFS_LIB ="${bcachefs.tools}/lib";
- LIBBCACHEFS_INCLUDE = bcachefs.tools.src;
-
- postPatch = ''
- cp ${./Cargo.lock} Cargo.lock
- '';
-
- doCheck = true;
-}
diff --git a/rust-src/default.nix b/rust-src/default.nix
deleted file mode 100644
index 7cc4b956..00000000
--- a/rust-src/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ lib
-, stdenv
-, glibc
-, udev
-, llvmPackages
-, rustPlatform
-, binary
-, ...
-}: rustPlatform.buildRustPackage ( let
- cargo = lib.trivial.importTOML ./Cargo.toml;
-in {
- pname = "mount.bcachefs";
- version = cargo.package.version;
-
- src = builtins.path { path = ../.; name = "rust-src"; };
- sourceRoot = "rust-src/mount";
-
- cargoLock = { lockFile = ./Cargo.lock; };
-
- nativeBuildInputs = [ binary rustPlatform.bindgenHook ];
- buildInputs = [ binary ];
-
- LIBBCACHEFS_LIB ="${binary}/lib";
- LIBBCACHEFS_INCLUDE = binary.src;
-
- doCheck = false;
-})
diff --git a/rust-src/module.nix b/rust-src/module.nix
deleted file mode 100644
index b62aa7dc..00000000
--- a/rust-src/module.nix
+++ /dev/null
@@ -1,54 +0,0 @@
-## Mirrors: https://github.com/NixOS/nixpkgs/blob/nixos-unstable/nixos/modules/tasks/filesystems/bcachefs.nix
-## with changes to use flakes and import mount.bcachefs
-{ config, lib, pkgs, utils, ... }:
-
-with lib;
-
-let
-
- bootFs = filterAttrs (n: fs: (fs.fsType == "bcachefs") && (utils.fsNeededForBoot fs)) config.fileSystems;
- cfg = config.filesystems.bcachefs;
-in
-
-{
- options.filesystems.bcachefs.packages.tools = lib.mkOption {
- description = "Which package to use to link in the bcachefs tools package";
- default = pkgs.bcachefs.tools;
- type = lib.types.package;
- };
- options.filesystems.bcachefs.packages.mount = lib.mkOption {
- description = "Which package to use to link in the bcachefs mount package";
- default = pkgs.bcachefs.mount;
- type = lib.types.package;
- };
- options.filesystems.bcachefs.packages.kernelPackages = lib.mkOption {
- description = "Which package to use to link in the kernel package to use";
- default = pkgs.bcachefs.kernelPackages;
- type = lib.types.attrs;
-
- };
-
- config = mkIf (elem "bcachefs" config.boot.supportedFilesystems) (mkMerge [
- {
- system.fsPackages = [ cfg.packages.tools cfg.packages.mount ];
-
- # use kernel package with bcachefs support until it's in mainline
- boot.kernelPackages = cfg.packages.kernelPackages;
- }
-
- (mkIf ((elem "bcachefs" config.boot.initrd.supportedFilesystems) || (bootFs != {})) {
- # chacha20 and poly1305 are required only for decryption attempts
- boot.initrd.availableKernelModules = [ "sha256" "chacha20" "poly1305" ];
- boot.initrd.kernelModules = [ "bcachefs" ];
-
- boot.initrd.extraUtilsCommands = ''
- copy_bin_and_libs ${cfg.packages.tools}/bin/bcachefs
- copy_bin_and_libs ${cfg.packages.mount}/bin/mount.bcachefs
- '';
- boot.initrd.extraUtilsCommandsTest = ''
- $out/bin/bcachefs version
- $out/bin/mount.bcachefs --version
- '';
- })
- ]);
-}
diff --git a/shell.nix b/shell.nix
deleted file mode 100644
index 24a6e0a9..00000000
--- a/shell.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-{ kversion ? "linux_5_15"
-, pkgs ? import <nixpkgs> {} }:
-
-with pkgs;
-
-let
- tools = pkgs.callPackage ./default.nix { doCheck = false ;} ;
-in
-mkShell {
- buildInputs = [
- linuxKernel.packages.${kversion}.perf
- gdb
- # lsp code completion in neovim/emacs
- clangd
- rust-analyzer
- rnix-lsp
- ];
- inputsFrom = [
- tools
- ];
-}