From 3808750687e7b6f953c251ae1281be5309d7d736 Mon Sep 17 00:00:00 2001 From: Scott Worley Date: Fri, 29 Sep 2023 12:37:21 -0700 Subject: [PATCH] client: Build in a Debian VM This finally makes it work. Hurray! Other things I tried that didn't help: * Other versions of cross gcc (8, 9, 10, 11 12) * Other versions of host gcc (10) * Other versions of pico-sdk (1.3.1, 1.4.0) arm-none-eabi-gcc as packaged in Debian works. arm-none-eabi-gcc as packaged in Nix doesn't. I haven't yet looked further into why. --- client/default.nix | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/client/default.nix b/client/default.nix index 322cf66..a2bbf91 100644 --- a/client/default.nix +++ b/client/default.nix @@ -1,6 +1,6 @@ { pkgs ? import { }, }: let - cc = pkgs.pkgsCross.arm-embedded.stdenv.cc; + tattlekey = { lib, stdenv, cmake, pico-sdk, python3 }: stdenv.mkDerivation { pname = "tattlekey"; @@ -8,12 +8,13 @@ let src = lib.cleanSource ./.; nativeBuildInputs = [ cmake python3 ]; cmakeFlags = [ - "-DCMAKE_C_COMPILER=${cc}/bin/arm-none-eabi-cc" - "-DCMAKE_CXX_COMPILER=${cc}/bin/arm-none-eabi-c++" + "-DCMAKE_C_COMPILER=/usr/bin/arm-none-eabi-gcc" + "-DCMAKE_CXX_COMPILER=/usr/bin/arm-none-eabi-c++" "-DPICO_BOARD=pico_w" "-DPICO_SDK_PATH=${pico-sdk}/lib/pico-sdk" - "-DPICO_TOOLCHAIN_PATH=${cc}/bin" ]; + diskImage = debImage; + diskImageFormat = "qcow2"; }; pico-sdk = pkgs.pico-sdk.overrideAttrs (old: rec { @@ -27,4 +28,17 @@ let }; }); -in pkgs.callPackage tattlekey { inherit pico-sdk; } + distro = "debian11x86_64"; + + extraPackages = [ + "build-essential" + "cmake" + "gcc-arm-none-eabi" + "libnewlib-arm-none-eabi" + "libstdc++-arm-none-eabi-newlib" + ]; + + debImage = pkgs.vmTools.diskImageFuns."${distro}" { inherit extraPackages; }; + +in pkgs.vmTools.runInLinuxImage +(pkgs.callPackage tattlekey { pico-sdk = pico-sdk; }) -- 2.42.0