]> git.sesse.net Git - bcachefs-tools-debian/commitdiff
add mount and bch-bindgen nix builder file
authorKayla Firestack <dev@kaylafire.me>
Mon, 18 Oct 2021 16:34:12 +0000 (12:34 -0400)
committerKayla Firestack <dev@kaylafire.me>
Mon, 18 Oct 2021 16:34:12 +0000 (12:34 -0400)
update kernel diffHash

nix/overlay.nix
rust-src/bch_bindgen/default.nix [new file with mode: 0644]
rust-src/mount/default.nix [new file with mode: 0644]

index f84b60369515b938d1fd3104b7c0f5cf3a762251..947242bac294803b955adfee8814f606114866c6 100644 (file)
@@ -14,12 +14,15 @@ final: prev: {
                        debugMode = true;
                };
 
+               bch_bindgen = final.callPackage ../rust-src/bch_bindgen {};
+
                mount = final.callPackage ../rust-src/mount {};
+
                kernelPackages = final.recurseIntoAttrs (final.linuxPackagesFor final.bcachefs.kernel);
                kernel = final.callPackage ./bcachefs-kernel.nix {
                        commit = final.bcachefs.tools.bcachefs_revision;
                        # This needs to be recalculated for every revision change
-                       diffHash = "sha256-JrVRkEO7DKUTf+qhjWPwfbF3a/Qbd8me7oGay4aae3k=";
+                       diffHash = "sha256-XSA0dBZZL8RXplgjpoLOFSULM8t/0Ztz8xlhLn9hdyw=";
                        kernelPatches = [];
                };
        };
diff --git a/rust-src/bch_bindgen/default.nix b/rust-src/bch_bindgen/default.nix
new file mode 100644 (file)
index 0000000..f6053d5
--- /dev/null
@@ -0,0 +1,76 @@
+{ lib
+, stdenv
+, rustPlatform
+, llvmPackages
+, bcachefs
+, pkg-config
+
+, udev
+, liburcu
+, zstd
+, keyutils
+, libaio
+               
+, lz4 # liblz4
+, libsodium
+, libuuid
+, zlib # zlib1g
+, libscrypt
+
+, rustfmt
+
+, glibc
+, ...
+}: let 
+       include = {
+               glibc = "${glibc.dev}/include";
+               clang = let libc = llvmPackages.libclang; in
+                       "${libc.lib}/lib/clang/${libc.version}/include";
+               urcu = "${liburcu}/include";
+               zstd = "${zstd.dev}/include";
+       };
+       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; };
+
+       nativeBuildInputs = [ rustfmt pkg-config ];
+       buildInputs = [
+               
+               # libaio
+               keyutils # libkeyutils
+               lz4 # liblz4
+               libsodium
+               liburcu
+               libuuid
+               zstd # libzstd
+               zlib # zlib1g
+               udev
+               libscrypt
+               libaio
+       ];
+       
+       LIBBCACHEFS_LIB ="${bcachefs.tools}/lib";
+       LIBBCACHEFS_INCLUDE = bcachefs.tools.src;
+       LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib";
+       BINDGEN_EXTRA_CLANG_ARGS = lib.replaceStrings ["\n" "\t"] [" " ""] ''
+               -std=gnu99
+               -I${include.glibc}
+               -I${include.clang}
+               -I${include.urcu}
+               -I${include.zstd}
+       '';
+
+       postPatch = ''
+               cp ${./Cargo.lock} Cargo.lock
+       '';
+       
+
+       doCheck = true;
+       
+       # NIX_DEBUG = 4;
+}
\ No newline at end of file
diff --git a/rust-src/mount/default.nix b/rust-src/mount/default.nix
new file mode 100644 (file)
index 0000000..84c046b
--- /dev/null
@@ -0,0 +1,41 @@
+{ lib
+
+, stdenv
+, glibc
+, llvmPackages
+, rustPlatform
+
+, bcachefs
+
+, ...
+}: 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 = bcachefs.bch_bindgen.nativeBuildInputs;
+       buildInputs = bcachefs.bch_bindgen.buildInputs;
+       inherit (bcachefs.bch_bindgen)
+               LIBBCACHEFS_INCLUDE
+               LIBBCACHEFS_LIB
+               LIBCLANG_PATH
+               BINDGEN_EXTRA_CLANG_ARGS;
+       
+       preFixup = ''
+               ln $out/bin/mount-bcachefs $out/bin/mount.bcachefs
+               ln -s $out/bin $out/sbin
+       '';
+       # -isystem ${llvmPackages.libclang.lib}/lib/clang/${lib.getVersion llvmPackages.libclang}/include";
+       # CFLAGS = "-I${llvmPackages.libclang.lib}/include";
+       # LDFLAGS = "-L${libcdev}";
+
+       doCheck = false;
+       
+       # NIX_DEBUG = 4;
+})
\ No newline at end of file