From 560957bae1ee123b43d6534eebf2a5917a78e0a2 Mon Sep 17 00:00:00 2001 From: "Alexander V. Nikolaev" Date: Wed, 22 Nov 2023 18:23:59 +0200 Subject: [PATCH 1/4] edk2: building of `antlr` and `dlg` should be built with native architecture. They should be built with native architecture --- pkgs/development/compilers/edk2/default.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkgs/development/compilers/edk2/default.nix b/pkgs/development/compilers/edk2/default.nix index 17151cf9f947..b448a9c51406 100644 --- a/pkgs/development/compilers/edk2/default.nix +++ b/pkgs/development/compilers/edk2/default.nix @@ -82,6 +82,13 @@ edk2 = stdenv.mkDerivation rec { hardeningDisable = [ "format" "fortify" ]; + # Fix cross-compilation issue, use build cc/c++ for building antlr and dlg + postPatch = '' + substituteInPlace BaseTools/Source/C/VfrCompile/GNUmakefile \ + --replace '$(MAKE) -C Pccts/antlr' '$(MAKE) -C Pccts/antlr CC=cc CXX=c++' \ + --replace '$(MAKE) -C Pccts/dlg' '$(MAKE) -C Pccts/dlg CC=cc CXX=c++' + ''; + installPhase = '' mkdir -vp $out mv -v BaseTools $out From da5ec6b0c3e0bfce25dc9e5c3e45fdd8c38affdf Mon Sep 17 00:00:00 2001 From: "Alexander V. Nikolaev" Date: Thu, 23 Nov 2023 21:16:33 +0200 Subject: [PATCH 2/4] edk2: Fix OVMF cross compilation --- pkgs/development/compilers/edk2/default.nix | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/pkgs/development/compilers/edk2/default.nix b/pkgs/development/compilers/edk2/default.nix index b448a9c51406..2d2cce113f9e 100644 --- a/pkgs/development/compilers/edk2/default.nix +++ b/pkgs/development/compilers/edk2/default.nix @@ -82,11 +82,10 @@ edk2 = stdenv.mkDerivation rec { hardeningDisable = [ "format" "fortify" ]; - # Fix cross-compilation issue, use build cc/c++ for building antlr and dlg - postPatch = '' - substituteInPlace BaseTools/Source/C/VfrCompile/GNUmakefile \ - --replace '$(MAKE) -C Pccts/antlr' '$(MAKE) -C Pccts/antlr CC=cc CXX=c++' \ - --replace '$(MAKE) -C Pccts/dlg' '$(MAKE) -C Pccts/dlg CC=cc CXX=c++' + # For cross-compilation we need to build antlr and dlg for the build arch + preBuild = '' + BIN_DIR='.' make -C BaseTools/Source/C/VfrCompile/Pccts/antlr CC=$CC_FOR_BUILD CXX=$CXX_FOR_BUILD -j$NIX_BUILD_CORES + BIN_DIR='.' make -C BaseTools/Source/C/VfrCompile/Pccts/dlg CC=$CC_FOR_BUILD CXX=$CXX_FOR_BUILD -j$NIX_BUILD_CORES ''; installPhase = '' @@ -125,13 +124,13 @@ edk2 = stdenv.mkDerivation rec { prePatch = '' rm -rf BaseTools - ln -sv ${edk2}/BaseTools BaseTools + ln -sv ${buildPackages.edk2}/BaseTools BaseTools ''; configurePhase = '' runHook preConfigure export WORKSPACE="$PWD" - . ${edk2}/edksetup.sh BaseTools + . ${buildPackages.edk2}/edksetup.sh BaseTools runHook postConfigure ''; From 474fe1a90547c7d1b8509e8b4aeef9e8935f94a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Tue, 14 May 2024 15:18:04 +0200 Subject: [PATCH 3/4] edk2: use patchShebangs for fixing up shell wrappers --- pkgs/development/compilers/edk2/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/compilers/edk2/default.nix b/pkgs/development/compilers/edk2/default.nix index 2d2cce113f9e..302d5611c19e 100644 --- a/pkgs/development/compilers/edk2/default.nix +++ b/pkgs/development/compilers/edk2/default.nix @@ -94,8 +94,8 @@ edk2 = stdenv.mkDerivation rec { mv -v edksetup.sh $out # patchShebangs fails to see these when cross compiling for i in $out/BaseTools/BinWrappers/PosixLike/*; do - substituteInPlace $i --replace '/usr/bin/env bash' ${buildPackages.bash}/bin/bash chmod +x "$i" + patchShebangs --build "$i" done ''; From 7e2c76bb84c4cd7cccf07a3ef645c14516f09b6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Tue, 14 May 2024 15:50:21 +0200 Subject: [PATCH 4/4] edk2: fix cross-compilation by using an upstream patch --- pkgs/development/compilers/edk2/default.nix | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/pkgs/development/compilers/edk2/default.nix b/pkgs/development/compilers/edk2/default.nix index 302d5611c19e..cd15f29e370c 100644 --- a/pkgs/development/compilers/edk2/default.nix +++ b/pkgs/development/compilers/edk2/default.nix @@ -41,6 +41,11 @@ edk2 = stdenv.mkDerivation rec { url = "https://src.fedoraproject.org/rpms/edk2/raw/08f2354cd280b4ce5a7888aa85cf520e042955c3/f/0021-Tweak-the-tools_def-to-support-cross-compiling.patch"; hash = "sha256-E1/fiFNVx0aB1kOej2DJ2DlBIs9tAAcxoedym2Zhjxw="; }) + # https://github.com/tianocore/edk2/pull/5658 + (fetchpatch { + url = "https://github.com/tianocore/edk2/commit/a34ff4a8f69a7b8a52b9b299153a8fac702c7df1.patch"; + hash = "sha256-u+niqwjuLV5tNPykW4xhb7PW2XvUmXhx5uvftG1UIbU="; + }) ]; srcWithVendoring = fetchFromGitHub { @@ -82,12 +87,6 @@ edk2 = stdenv.mkDerivation rec { hardeningDisable = [ "format" "fortify" ]; - # For cross-compilation we need to build antlr and dlg for the build arch - preBuild = '' - BIN_DIR='.' make -C BaseTools/Source/C/VfrCompile/Pccts/antlr CC=$CC_FOR_BUILD CXX=$CXX_FOR_BUILD -j$NIX_BUILD_CORES - BIN_DIR='.' make -C BaseTools/Source/C/VfrCompile/Pccts/dlg CC=$CC_FOR_BUILD CXX=$CXX_FOR_BUILD -j$NIX_BUILD_CORES - ''; - installPhase = '' mkdir -vp $out mv -v BaseTools $out