Wondering if anyone has any advice on this one. I’m building a Rust package which includes serde_derive and running into a list of errors that points to me needing some special rules with serde_derive.
So, I’ve made a repository that demonstrates the very initial problem. If you run nix build .#serde_test --print-build-logs
in that repository, this is the problem you’ll run into:
rust_serde_test> = help: message: file missing from serde_derive manifest directory during macro expansion: /build/serde_derive-1.0.181/serde_derive-x86_64-unknown-linux-gnu
I have tried a few things by overriding the build steps of the serde_derive
crate:
- I manually copied
serde_derive-x86_64-unknown-linux-gnu
into theserde_derive-1.0.181
target - I manually copied the libraries from the
serde_derive
component into theserde_derive-1.0.181-lib
target
However, neither of these actually addressed the issue that the serde_test repository seems to want serde_derive-x86_64-unknown-linux-gnu
in the build directory. Unfortunately, I don’t know how to reference serde_derive
in the serde_test
override, if I’m defining those overrides for the buildRustCrateForPackages
parameter for the crate2nix
derivation.
So, do you have any ideas?
packages."x86_64-linux" =
let
pkgs = import nixpkgs { system = "x86_64-linux"; };
in
{
serde_test = (import ./Cargo.nix {
inherit pkgs;
buildRustCrateForPkgs = pkgs.defaultCrateOverrides // {
serde_test = attrs: {
preBuildPhase = ''
???
'';
};
};
release = true;
}).rootCrate.build;
};