From 307a84fc96911cb54dc8d7b55356a17fb880cb00 Mon Sep 17 00:00:00 2001 From: Govind Singh Date: Fri, 5 Jun 2026 15:20:26 +0400 Subject: [PATCH] compulab: ucm-imx95: fix cross-build of mkimage host tools imx-mkimage runs on the build machine, but ucm-imx95-boot used target stdenv and forced clang. Cross-building the SD image from x86_64 then failed building mkimage_imx8 with "stdio.h not found", blocking flash.bin. Build mkimage with buildPackages; keep firmware blobs from target pkgs. --- compulab/ucm-imx95/bsp/ucm-imx95-boot.nix | 53 +++++++++-------------- compulab/ucm-imx95/overlay.nix | 2 +- nxp/imx93-evk/bsp/imx93-atf.nix | 2 +- 3 files changed, 23 insertions(+), 34 deletions(-) diff --git a/compulab/ucm-imx95/bsp/ucm-imx95-boot.nix b/compulab/ucm-imx95/bsp/ucm-imx95-boot.nix index e49ff90e..83a9a28c 100644 --- a/compulab/ucm-imx95/bsp/ucm-imx95-boot.nix +++ b/compulab/ucm-imx95/bsp/ucm-imx95-boot.nix @@ -1,24 +1,17 @@ { - callPackage, - fetchFromGitHub, - stdenv, - clang, - git, - dtc, - glibc, - zlib, - vim, + pkgs, }: let + bp = pkgs.buildPackages; - imx95-atf = callPackage ./ucm-imx95-atf.nix { }; - imx95-firmware = callPackage ./ucm-imx95-firmware.nix { }; - imx95-uboot = callPackage ./ucm-imx95-uboot.nix { }; - imx95-optee-os = callPackage ./ucm-imx95-optee-os.nix { }; - imx95-sm-fw = callPackage ./ucm-imx95-sm-fw.nix { }; - imx95-oei-ddr = callPackage ./ucm-imx95-oei-ddr.nix { }; - imx95-oei-tcm = callPackage ./ucm-imx95-oei-tcm.nix { }; - src = fetchFromGitHub { + imx95-atf = pkgs.callPackage ./ucm-imx95-atf.nix { }; + imx95-firmware = pkgs.callPackage ./ucm-imx95-firmware.nix { }; + imx95-uboot = pkgs.callPackage ./ucm-imx95-uboot.nix { }; + imx95-optee-os = pkgs.callPackage ./ucm-imx95-optee-os.nix { }; + imx95-sm-fw = pkgs.callPackage ./ucm-imx95-sm-fw.nix { }; + imx95-oei-ddr = pkgs.callPackage ./ucm-imx95-oei-ddr.nix { }; + imx95-oei-tcm = pkgs.callPackage ./ucm-imx95-oei-tcm.nix { }; + src = pkgs.fetchFromGitHub { owner = "nxp-imx"; repo = "imx-mkimage"; #tag: lf-6.6.52-2.2.1 @@ -28,7 +21,8 @@ let shortRev = builtins.substring 0 8 src.rev; in { - imx95-boot = stdenv.mkDerivation rec { + # mkimage runs on the build machine; use buildPackages when cross-compiling. + imx95-boot = bp.stdenv.mkDerivation { inherit src; name = "imx95-mkimage"; version = "lf-6.6.52-2.2.1"; @@ -36,27 +30,22 @@ in postPatch = '' substituteInPlace Makefile \ --replace-fail 'git rev-parse --short=8 HEAD' 'echo ${shortRev}' - substituteInPlace Makefile \ - --replace-fail 'CC = gcc' 'CC = clang' substituteInPlace iMX95/soc.mak \ - --replace-fail 'xxd' "${vim.xxd}/bin/xxd" + --replace-fail 'xxd' "${bp.vim.xxd}/bin/xxd" substituteInPlace scripts/fspi_fcb_gen.sh \ - --replace-fail 'xxd' "${vim.xxd}/bin/xxd" + --replace-fail 'xxd' "${bp.vim.xxd}/bin/xxd" substituteInPlace scripts/fspi_packer.sh \ - --replace-fail 'xxd' "${vim.xxd}/bin/xxd" + --replace-fail 'xxd' "${bp.vim.xxd}/bin/xxd" patchShebangs scripts ''; nativeBuildInputs = [ - clang - git - dtc - ]; - - buildInputs = [ - glibc.static - zlib - zlib.static + bp.stdenv.cc + bp.git + bp.dtc + bp.glibc.static + bp.zlib + bp.zlib.static ]; buildPhase = '' diff --git a/compulab/ucm-imx95/overlay.nix b/compulab/ucm-imx95/overlay.nix index 516f9e79..942a3711 100644 --- a/compulab/ucm-imx95/overlay.nix +++ b/compulab/ucm-imx95/overlay.nix @@ -1,3 +1,3 @@ final: _prev: { - inherit (final.callPackage ./bsp/ucm-imx95-boot.nix { }) imx95-boot; + inherit (final.callPackage ./bsp/ucm-imx95-boot.nix { pkgs = final; }) imx95-boot; } diff --git a/nxp/imx93-evk/bsp/imx93-atf.nix b/nxp/imx93-evk/bsp/imx93-atf.nix index aff26c85..7caaaa7b 100644 --- a/nxp/imx93-evk/bsp/imx93-atf.nix +++ b/nxp/imx93-evk/bsp/imx93-atf.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { (fetchpatch { name = "imx93-trdc-header-guard.patch"; url = "https://github.com/nxp-imx/imx-atf/commit/e194a14ec55f13386babc80c90098874367ab3d6.patch"; - sha256 = "sha256-uXRgeyFmxDww93nJe04aoOLml2R7IbABZLhywyYmePk="; + sha256 = "sha256-K1JECateo4mUrOaV41PUmCXHn7DfmgRQXx4KdcIALqE="; }) ];