Cross compilation fails (wrong capnp invoked) #939

Closed
opened 2025-07-28 16:11:27 +00:00 by lheckemann · 1 comment
Member

Describe the bug

Since 8a5a477ca3, cross-compiling Lix from x86_64-linux to armv7l-linux fails because the build tries invoking the armv7l build of capnp.

Steps To Reproduce

nix-build -E 'with (import <nixpkgs> {}).pkgsCross.armv7l-hf-multiplatform; callPackage ./package.nix { stdenv = clangStdenv; }'

Expected behavior

Successful build

nix --version output

nix (Lix, like Nix) 2.94.0-dev-pre20250720-2fc47b6
System type: x86_64-linux
Additional system types: i686-linux, x86_64-v1-linux, x86_64-v2-linux, x86_64-v3-linux
Features: gc, signed-caches
System configuration file: /etc/nix/nix.conf
User configuration files: /home/linus/.config/nix/nix.conf:/etc/xdg/nix/nix.conf:/home/linus/.local/share/flatpak/exports/etc/xdg/nix/nix.conf:/var/lib/flatpak/exports/etc/xdg/nix/nix.conf:/home/linus/.nix-profile/etc/xdg/nix/nix.conf:/nix/profile/etc/xdg/nix/nix.conf:/home/linus/.local/state/nix/profile/etc/xdg/nix/nix.conf:/etc/profiles/per-user/linus/etc/xdg/nix/nix.conf:/nix/var/nix/profiles/default/etc/xdg/nix/nix.conf:/run/current-system/sw/etc/xdg/nix/nix.conf
Store directory: /nix/store
State directory: /nix/var/nix
Data directory: /nix/store/d8lpxag0aaqxcnc29j2v4r0khcy477zi-lix-2.94.0-dev-pre20250720-2fc47b6/share

Additional context

In package.nix, capnproto-lix is correctly placed in both nativeBuildInputs (for running at build time) and buildInputs (for linking against). However, capnproto-lix is provided from the package function's default args and is thus not spliced as the cross-capable callPackage (applied to package.nix) would usually do. We thus only have the armv7l build available, and this is used for nativeBuildInputs as well.

## Describe the bug Since 8a5a477ca32a9c90c41fbdd16d6f320f1e5d2542, cross-compiling Lix from x86_64-linux to armv7l-linux fails because the build tries invoking the armv7l build of `capnp`. ## Steps To Reproduce `nix-build -E 'with (import <nixpkgs> {}).pkgsCross.armv7l-hf-multiplatform; callPackage ./package.nix { stdenv = clangStdenv; }'` ## Expected behavior Successful build ## `nix --version` output ``` nix (Lix, like Nix) 2.94.0-dev-pre20250720-2fc47b6 System type: x86_64-linux Additional system types: i686-linux, x86_64-v1-linux, x86_64-v2-linux, x86_64-v3-linux Features: gc, signed-caches System configuration file: /etc/nix/nix.conf User configuration files: /home/linus/.config/nix/nix.conf:/etc/xdg/nix/nix.conf:/home/linus/.local/share/flatpak/exports/etc/xdg/nix/nix.conf:/var/lib/flatpak/exports/etc/xdg/nix/nix.conf:/home/linus/.nix-profile/etc/xdg/nix/nix.conf:/nix/profile/etc/xdg/nix/nix.conf:/home/linus/.local/state/nix/profile/etc/xdg/nix/nix.conf:/etc/profiles/per-user/linus/etc/xdg/nix/nix.conf:/nix/var/nix/profiles/default/etc/xdg/nix/nix.conf:/run/current-system/sw/etc/xdg/nix/nix.conf Store directory: /nix/store State directory: /nix/var/nix Data directory: /nix/store/d8lpxag0aaqxcnc29j2v4r0khcy477zi-lix-2.94.0-dev-pre20250720-2fc47b6/share ``` ## Additional context In `package.nix`, `capnproto-lix` is correctly placed in both `nativeBuildInputs` (for running at build time) and `buildInputs` (for linking against). However, `capnproto-lix` is provided from the package function's default args and is thus not spliced as the cross-capable `callPackage` (applied to `package.nix`) would usually do. We thus only have the `armv7l` build available, and this is used for `nativeBuildInputs` as well.
Member

This issue was mentioned on Gerrit on the following CLs:

  • commit message in cl/3857 ("build: fix cross-compilation")
<!-- GERRIT_LINKBOT: {"cls": [{"backlink": "https://gerrit.lix.systems/c/lix/+/3857", "number": 3857, "kind": "commit message"}], "cl_meta": {"3857": {"change_title": "build: fix cross-compilation"}}} --> This issue was mentioned on Gerrit on the following CLs: * commit message in [cl/3857](https://gerrit.lix.systems/c/lix/+/3857) ("build: fix cross-compilation")
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lix-project/lix#939
No description provided.