From: Kayla Firestack Date: Mon, 18 Oct 2021 16:34:12 +0000 (-0400) Subject: add mount and bch-bindgen nix builder file X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=7e97ef59bd30154776417748b6518ec43a3db2b9;p=bcachefs-tools-debian add mount and bch-bindgen nix builder file update kernel diffHash --- diff --git a/nix/overlay.nix b/nix/overlay.nix index f84b603..947242b 100644 --- a/nix/overlay.nix +++ b/nix/overlay.nix @@ -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 index 0000000..f6053d5 --- /dev/null +++ b/rust-src/bch_bindgen/default.nix @@ -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 index 0000000..84c046b --- /dev/null +++ b/rust-src/mount/default.nix @@ -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