Sorry, I realise my first post lacked a lot of informations.
Here are the derivations I’ve written:
pkgs/development/libraries/lib45d/default.nix
{ lib, stdenv, fetchFromGitHub}:
stdenv.mkDerivation rec {
pname = "lib45d";
version = "0.3.6";
src = fetchFromGitHub {
owner = "45Drives";
repo = "lib45d";
sha256 = "sha256-42xB30Iu2WxNrBxomVBKd/uyIRt27y/Y1ah5mckOrc0=";
rev = "v${version}";
};
installFlags = [ "LIB_PREFIX=/lib" "INCLUDE_PREFIX=/include" "DESTDIR=\${out}" "DEVEL=TRUE" ];
meta = with lib; {
description = "45Drives C++ Library";
homepage = "https://github.com/45Drives/lib45d";
license = with licenses; [ gpl3 ];
platforms = platforms.unix;
};
}
pkgs/tools/filesystems/autotier/default.nix
{ lib, stdenv, fetchFromGitHub
, fuse3
, lib45d
, boost
}:
stdenv.mkDerivation rec {
pname = "autotier";
version = "1.2.0";
src = fetchFromGitHub {
owner = "45Drives";
repo = "autotier";
sha256 = "sha256-XNM82yYwh3xapj3Euy++v0eKR1RVru9idOJzuKWBfIo=";
rev = "v${version}";
fetchSubmodules = true;
};
# Fix missing fstream import
preBuild = ''
sed '/<sstream>/a #include <fstream>' -i src/impl/autotierfs/config.cpp
'';
buildInputs = [ fuse3 lib45d boost ];
installFlags = [ "DESTDIR=\${out}" ];
meta = with lib; {
description = "A multi tiered storage solution";
longDescription = ''
A passthrough FUSE filesystem that intelligently moves files between
storage tiers based on frequency of use, file age, and tier fullness.
'';
homepage = "https://github.com/45Drives/autotier";
license = with licenses; [ gpl3 ];
platforms = platforms.unix;
};
}
The autotier derivation doesn’t detect the fuse.h header when I’m using the fuse3 package.
fuse3
[cafehaine@kgenix:~/Documents/Prog/nixpkgs]$ nix-build -A autotier
this derivation will be built:
/nix/store/1kjv5j8dqkqcibcm3z8vm8majl4h871g-autotier-1.2.0.drv
building '/nix/store/1kjv5j8dqkqcibcm3z8vm8majl4h871g-autotier-1.2.0.drv'...
unpacking sources
unpacking source archive /nix/store/7iq1qjfxigg32bv3n1zl8iypamk9si1w-source
source root is source
patching sources
configuring
no configure script, doing nothing
building
build flags: SHELL=/nix/store/p7bpdnxqd3i5hwm92mrscf7mvxk66404-bash-5.1-p16/bin/bash
CC build/autotierfs/config.o
CC build/autotierfs/autotierfs.o
CC build/autotierfs/TierEngine/components/mutex.o
CC build/autotierfs/TierEngine/components/tiering.o
CC build/autotierfs/TierEngine/components/adhoc.o
CC build/autotierfs/TierEngine/components/database.o
CC build/autotierfs/TierEngine/components/base.o
CC build/autotierfs/TierEngine/components/sleep.o
CC build/autotierfs/TierEngine/TierEngine.o
CC build/autotierfs/fuseOps/link.o
In file included from src/impl/autotierfs/fuseOps/link.cpp:24:
src/incl/fuseOps.hpp:31:10: fatal error: fuse.h: No such file or directory
31 | #include <fuse.h>
| ^~~~~~~~
compilation terminated.
make: *** [makefile:51: build/autotierfs/fuseOps/link.o] Error 1
error: builder for '/nix/store/1kjv5j8dqkqcibcm3z8vm8majl4h871g-autotier-1.2.0.drv' failed with exit code 2;
last 10 log lines:
> CC build/autotierfs/TierEngine/components/base.o
> CC build/autotierfs/TierEngine/components/sleep.o
> CC build/autotierfs/TierEngine/TierEngine.o
> CC build/autotierfs/fuseOps/link.o
> In file included from src/impl/autotierfs/fuseOps/link.cpp:24:
> src/incl/fuseOps.hpp:31:10: fatal error: fuse.h: No such file or directory
> 31 | #include <fuse.h>
> | ^~~~~~~~
> compilation terminated.
> make: *** [makefile:51: build/autotierfs/fuseOps/link.o] Error 1
For full logs, run 'nix log /nix/store/1kjv5j8dqkqcibcm3z8vm8majl4h871g-autotier-1.2.0.drv'.
When I’m using the fuse package instead of fuse3, the fuse.h file is detected, but an enum in fuse.h isn’t properly detected by g++
fuse
[cafehaine@kgenix:~/Documents/Prog/nixpkgs]$ nix-build -A autotier
this derivation will be built:
/nix/store/n6jk5wpcdbbs7yzfxccis6fiih2v2fbp-autotier-1.2.0.drv
building '/nix/store/n6jk5wpcdbbs7yzfxccis6fiih2v2fbp-autotier-1.2.0.drv'...
unpacking sources
unpacking source archive /nix/store/7iq1qjfxigg32bv3n1zl8iypamk9si1w-source
source root is source
patching sources
configuring
no configure script, doing nothing
building
build flags: SHELL=/nix/store/p7bpdnxqd3i5hwm92mrscf7mvxk66404-bash-5.1-p16/bin/bash
CC build/autotierfs/config.o
CC build/autotierfs/autotierfs.o
CC build/autotierfs/TierEngine/components/mutex.o
CC build/autotierfs/TierEngine/components/tiering.o
CC build/autotierfs/TierEngine/components/adhoc.o
CC build/autotierfs/TierEngine/components/database.o
CC build/autotierfs/TierEngine/components/base.o
CC build/autotierfs/TierEngine/components/sleep.o
CC build/autotierfs/TierEngine/TierEngine.o
CC build/autotierfs/fuseOps/link.o
In file included from src/impl/autotierfs/fuseOps/link.cpp:24:
src/incl/fuseOps.hpp:265:38: error: use of enum 'fuse_readdir_flags' without previous declaration
265 | enum fuse_readdir_flags flags);
| ^~~~~~~~~~~~~~~~~~
make: *** [makefile:51: build/autotierfs/fuseOps/link.o] Error 1
error: builder for '/nix/store/n6jk5wpcdbbs7yzfxccis6fiih2v2fbp-autotier-1.2.0.drv' failed with exit code 2;
last 10 log lines:
> CC build/autotierfs/TierEngine/components/database.o
> CC build/autotierfs/TierEngine/components/base.o
> CC build/autotierfs/TierEngine/components/sleep.o
> CC build/autotierfs/TierEngine/TierEngine.o
> CC build/autotierfs/fuseOps/link.o
> In file included from src/impl/autotierfs/fuseOps/link.cpp:24:
> src/incl/fuseOps.hpp:265:38: error: use of enum 'fuse_readdir_flags' without previous declaration
> 265 | enum fuse_readdir_flags flags);
> | ^~~~~~~~~~~~~~~~~~
> make: *** [makefile:51: build/autotierfs/fuseOps/link.o] Error 1
For full logs, run 'nix log /nix/store/n6jk5wpcdbbs7yzfxccis6fiih2v2fbp-autotier-1.2.0.drv'.