rpi5: edk2 building, with default config
CI / x86_64-linux (push) Successful in 1m7s Details
CI / aarch64-linux (push) Successful in 2m1s Details

main
Ari Gerus 2024-04-23 12:51:39 +02:00
parent 718e2a32e3
commit f355364c2e
3 changed files with 28 additions and 23 deletions

View File

@ -55,7 +55,7 @@ in {
echo ''${path/\/nix\/store\/}
}
cp ${pkgs.rpi5-uefi-bin}/boot/* firmware
cp ${pkgs.rpi5-uefi}/* firmware
mkdir -p firmware/EFI/nixos
touch firmware/EFI/nixos-sd-system-image
@ -249,8 +249,6 @@ in {
bluez
pipewire
(v4l-utils.override { withGUI = false; })
rpi5-edk2
];
programs.nix-index.enable = lib.mkForce false;
services.journald.extraConfig = ''

View File

@ -1,6 +1,5 @@
{ lib, stdenv, fetchFromGitHub, openssl
, buildPackages, runCommand, clangStdenv, fetchpatch, libuuid
, python3 }:
{ lib, stdenv, fetchFromGitHub, openssl, buildPackages, runCommand, clangStdenv
, fetchpatch, libuuid, python3 }:
let
srcWithVendoring = fetchFromGitHub {
@ -38,7 +37,7 @@ in stdenv.mkDerivation {
# trick taken from https://src.fedoraproject.org/rpms/edk2/blob/08f2354cd280b4ce5a7888aa85cf520e042955c3/f/edk2.spec#_319
GCC5_AARCH64_PREFIX = stdenv.cc.targetPrefix;
makeFlags = [ "-C edk2/BaseTools" ];
makeFlags = [ "-C edk2/BaseTools" "-j 14" ];
env.NIX_CFLAGS_COMPILE = "-Wno-return-type"
+ lib.optionalString stdenv.cc.isGNU " -Wno-error=stringop-truncation"

View File

@ -1,49 +1,57 @@
{ lib, stdenv, openssl, pkgsCross
, buildPackages, runCommand, rpi5-arm-tf, rpi5-edk2-tools, libuuid
, python3, bc }:
{ lib, stdenv, openssl, pkgsCross, buildPackages, runCommand, rpi5-arm-tf
, rpi5-edk2-tools, libuuid, python3, bc, util-linux, nasm, acpica-tools }:
let
pythonEnv = buildPackages.python3.withPackages (ps: [ps.tkinter]);
in stdenv.mkDerivation {
name = "rpi5-arm-uefi";
inherit (rpi5-edk2-tools) src version;
let pythonEnv = buildPackages.python3.withPackages (ps: [ ps.tkinter ]);
in stdenv.mkDerivation rec {
name = "rpi5-uefi";
version = "20240316";
nativeBuildInputs = [ bc pythonEnv ];
inherit (rpi5-edk2-tools) src;
nativeBuildInputs = [ bc pythonEnv util-linux nasm acpica-tools ];
depsBuildBuild = [ buildPackages.stdenv.cc ];
strictDeps = true;
# trick taken from https://src.fedoraproject.org/rpms/edk2/blob/08f2354cd280b4ce5a7888aa85cf520e042955c3/f/edk2.spec#_319
GCC5_AARCH64_PREFIX = stdenv.cc.targetPrefix;
env.NIX_CFLAGS_COMPILE = toString [ "-Wformat" ];
prePatch = ''
rm -rf BaseTools
ln -sv ${rpi5-edk2-tools}/BaseTools BaseTools
rm -rf edk2/BaseTools
ln -sv ${rpi5-edk2-tools}/BaseTools edk2/BaseTools
'';
configurePhase = ''
runHook preConfigure
export WORKSPACE="$PWD"
. ${rpi5-edk2-tools}/edksetup.sh BaseTools
export PACKAGES_PATH=$WORKSPACE/edk2:$WORKSPACE/edk2-platforms:$WORKSPACE/edk2-non-osi
. $WORKSPACE/edk2/edksetup.sh BaseTools
runHook postConfigure
'';
buildPhase = ''
runHook preBuild
build -a AARCH64 \
-b RELEASE \
-t GCC \
-p edk2-platforms/Platform/RaspberryPi/RPi5/RPi5.dsc \
-D TFA_BUILD_ARTIFACTS=${rpi5-arm-tf} \
--pcd gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString=L"${rpi5-edk2-tools.version}" \
--pcd gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString=L"${version}" \
-n $NIX_BUILD_CORES $buildFlags
runHook postBuild
'';
installPhase = ''
runHook preInstall
mv -v Build/*/* $out
mkdir -p $out
mv -v Build/RPi5/RELEASE_GCC/FV/RPI_EFI.fd $out/
mv -v config.txt $out/
runHook postInstall
'';
}