pi4 edk2 builds

This commit is contained in:
mjallen18
2026-01-13 14:54:55 -06:00
parent 1dc075f405
commit a7c25fe70d
4 changed files with 70 additions and 63 deletions

View File

@@ -153,7 +153,7 @@ let
uefiBuilder = import ./uefi-builder.nix { uefiBuilder = import ./uefi-builder.nix {
inherit pkgs; inherit pkgs;
uefiPackage = ( uefiPackage = (
if (cfg.variant == "5") then pkgs.${namespace}.uefi-rpi5 else pkgs.${namespace}.uefi-rpi4 if (cfg.variant == "5") then pkgs.${namespace}.uefi-rpi5 else pkgs.${namespace}.edk2.override { MODEL = "4"; }
); );
firmwareBuilder = firmwarePopulateCmd; firmwareBuilder = firmwarePopulateCmd;
}; };

View File

@@ -1,11 +1,7 @@
{ stdenv { stdenv
, fetchFromGitHub
, lib , lib
, applyPatches , src
, fetchpatch , version ? "stable202511"
, MODEL ? "5"
, RELEASE_TYPE ? "RELEASE"
, EDK2_FLAGS ? ""
, python3 , python3
, git , git
, libuuid , libuuid
@@ -15,20 +11,9 @@
let let
pythonEnv = python3.withPackages (ps: [ ps.tkinter ]); pythonEnv = python3.withPackages (ps: [ ps.tkinter ]);
pname = "edk2-basetools"; pname = "edk2-basetools";
version = "stable202511";
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
inherit pname version; inherit src pname version;
edk2Src = fetchFromGitHub rec {
owner = "mjallen18";
repo = "edk2";
name = repo;
#tag = "edk2-${version}";
rev = "9765be56f1f816ef737153f5588b3294fcc69a63";
hash = "sha256-oqfJbNeOj2BVJqWE+snD6ri3lUO1aNcmPg+eJpjyr5E=";
fetchSubmodules = true;
};
env = { env = {
NIX_CFLAGS_COMPILE = NIX_CFLAGS_COMPILE =
@@ -54,7 +39,7 @@ stdenv.mkDerivation rec {
unpackPhase = '' unpackPhase = ''
runHook preUnpack runHook preUnpack
unpackFile "$edk2Src" unpackFile "$src"
chmod -R u+w . chmod -R u+w .
@@ -69,10 +54,12 @@ stdenv.mkDerivation rec {
postPatch = '' postPatch = ''
# enable compilation using Clang # enable compilation using Clang
# https://bugzilla.tianocore.org/show_bug.cgi?id=4620 # https://bugzilla.tianocore.org/show_bug.cgi?id=4620
ls -alh
substituteInPlace edk2/BaseTools/Conf/tools_def.template --replace-fail \ substituteInPlace edk2/BaseTools/Conf/tools_def.template --replace-fail \
'DEFINE CLANGPDB_WARNING_OVERRIDES = ' \ 'DEFINE CLANGPDB_WARNING_OVERRIDES = ' \
'DEFINE CLANGPDB_WARNING_OVERRIDES = -Wno-unneeded-internal-declaration ' 'DEFINE CLANGPDB_WARNING_OVERRIDES = -Wno-unneeded-internal-declaration '
substituteInPlace edk2/BaseTools/Conf/tools_def.template \
--replace "-Werror" "-Werror -Wno-error=format-security"
''; '';
buildPhase = '' buildPhase = ''

View File

@@ -1,7 +1,7 @@
{ stdenv { stdenv
, fetchFromGitHub , fetchFromGitHub
, lib , lib
, MODEL ? "4" , MODEL ? "5"
, RELEASE_TYPE ? "RELEASE" , RELEASE_TYPE ? "RELEASE"
, EDK2_FLAGS ? "" , EDK2_FLAGS ? ""
, nasm , nasm
@@ -11,6 +11,7 @@
, openssl , openssl
, git , git
, libuuid , libuuid
, acpica-tools
, pkgs , pkgs
, namespace , namespace
}: }:
@@ -18,33 +19,64 @@ let
pname = "edk2"; pname = "edk2";
version = "stable202511"; version = "stable202511";
edk2Src = fetchFromGitHub rec { edk2Src = (if MODEL == "5" then
owner = "mjallen18"; fetchFromGitHub rec {
repo = "edk2"; owner = "mjallen18";
name = repo; repo = "edk2";
#tag = "edk2-${version}"; name = repo;
rev = "9765be56f1f816ef737153f5588b3294fcc69a63"; rev = "9765be56f1f816ef737153f5588b3294fcc69a63";
hash = "sha256-oqfJbNeOj2BVJqWE+snD6ri3lUO1aNcmPg+eJpjyr5E="; hash = "sha256-oqfJbNeOj2BVJqWE+snD6ri3lUO1aNcmPg+eJpjyr5E=";
fetchSubmodules = true; fetchSubmodules = true;
}; }
else
fetchFromGitHub rec {
owner = "tianocore";
repo = "edk2";
name = repo;
tag = "edk2-${version}";
hash = "sha256-R/rgz8dWcDYVoiM67K2UGuq0xXbjjJYBPtJ1FmfGIaU=";
fetchSubmodules = true;
}
);
edk2NonOsiSrc = fetchFromGitHub rec { edk2NonOsiSrc = (if MODEL == "5" then
owner = "mjallen18"; fetchFromGitHub rec {
repo = "edk2-non-osi"; owner = "mjallen18";
name = repo; repo = "edk2-non-osi";
rev = "09ee44f07ded544d976be8a03dec3715719homeassistant-apif638e"; name = repo;
hash = "sha256-k7nUb3WaRUIr9IlXdam2WGKPOzKjLNVFLfuD5h4veMc="; rev = "09ee44f07ded544d976be8a03dec3715719f638e";
}; hash = "sha256-k7nUb3WaRUIr9IlXdam2WGKPOzKjLNVFLfuD5h4veMc=";
}
else
fetchFromGitHub rec {
owner = "tianocore";
repo = "edk2-non-osi";
name = repo;
rev = "94d048981116e2e3eda52dad1a89958ee404098d";
hash = "sha256-6yuvVvmGn4yaEksbbvGDX1ZcKpdWBKnwaNjLGvgAWyk=";
}
);
edk2PlatformsSrc = fetchFromGitHub rec { edk2PlatformsSrc = (if MODEL == "5" then
owner = "mjallen18"; fetchFromGitHub rec {
repo = "edk2-platforms"; owner = "mjallen18";
name = repo; repo = "edk2-platforms";
rev = "933314d94a3d05f2f62b0f2148151d4a0f1e1183"; name = repo;
hash = "sha256-Tnvrwk4g191LzfTkdoFw1BBN51EWhEQ7DRe9u5Mzc0w="; rev = "8dfa12ddd9e1d695f13a7e35e3646396a09ccb67";
}; hash = "sha256-8KaXpUWJtAbT35dX/fF94Y9HLzYHLOkX+Xzbn9l7idU=";
}
else
fetchFromGitHub rec {
owner = "tianocore";
repo = "edk2-platforms";
name = repo;
rev = "0991a0b643509d900e5d023a0116789827a696e5";
hash = "sha256-IdACr0NStqEpC0TFoKKgDwKT2mqyJwVXW/B7hlRXccI=";
}
);
baseTools = pkgs.${namespace}.edk2-basetools; baseTools = pkgs.${namespace}.edk2-basetools.override { version = "stable202511"; src = edk2Src; };
armTrustedFirmware = pkgs.${namespace}.arm-trusted-firmware.override { inherit MODEL; };
pythonEnv = python3.withPackages ( pythonEnv = python3.withPackages (
_ps: with python3Packages; [ _ps: with python3Packages; [
@@ -70,6 +102,7 @@ stdenv.mkDerivation rec {
git git
libuuid libuuid
baseTools baseTools
acpica-tools
]; ];
env = { env = {
@@ -105,27 +138,12 @@ stdenv.mkDerivation rec {
ln -sv ${baseTools}/BaseTools ./edk2/BaseTools ln -sv ${baseTools}/BaseTools ./edk2/BaseTools
''; '';
postPatch = ''
f=edk2/CryptoPkg/Library/OpensslLib/OpensslLib.inf
if grep -q '^\[BuildOptions\]' "$f"; then
# Add flag inside existing BuildOptions
sed -i '/^\[BuildOptions\]/a\ GCC:*_*_*_CC_FLAGS = -Wno-error' "$f"
else
# Append a new BuildOptions block
cat >> "$f" <<'EOF'
[BuildOptions]
GCC:*_*_*_CC_FLAGS = -Wno-error
EOF
fi
'';
configurePhase = '' configurePhase = ''
runHook preConfigure runHook preConfigure
export WORKSPACE=$PWD export WORKSPACE=$PWD
export PACKAGES_PATH=$WORKSPACE/edk2:$WORKSPACE/edk2-non-osi:$WORKSPACE/edk2-platforms export PACKAGES_PATH=$WORKSPACE/edk2:$WORKSPACE/edk2-non-osi:$WORKSPACE/edk2-platforms
export EDK_TOOLS_PATH=${baseTools}/BaseTools export EDK_TOOLS_PATH=${baseTools}/BaseTools
export ATF_BUILD_DIR="${pkgs.${namespace}.arm-trusted-firmware}/rpi${MODEL}/${RELEASE_TYPE}" export ATF_BUILD_DIR="${armTrustedFirmware}/rpi${MODEL}/${lib.toLower RELEASE_TYPE}"
. ${baseTools}/edksetup.sh BaseTools . ${baseTools}/edksetup.sh BaseTools
runHook postConfigure runHook postConfigure
@@ -144,7 +162,7 @@ stdenv.mkDerivation rec {
installPhase = '' installPhase = ''
mkdir -p $out mkdir -p $out
cp -r /Build/RPi${MODEL}/${RELEASE_TYPE}_GCC/FV/RPI_EFI.fd $out/RPI_EFI.fd cp -r /build/Build/RPi${MODEL}/${RELEASE_TYPE}_GCC/FV/RPI_EFI.fd $out/RPI_EFI.fd
''; '';
meta = with lib; { meta = with lib; {

View File

@@ -54,6 +54,8 @@ in
binfmt.emulatedSystems = [ "aarch64-linux" ]; # --argstr system aarch64-linux binfmt.emulatedSystems = [ "aarch64-linux" ]; # --argstr system aarch64-linux
}; };
nixpkgs.crossSystem.system = "aarch64-linux";
environment.systemPackages = with pkgsVersion; [ environment.systemPackages = with pkgsVersion; [
edk2-uefi-shell edk2-uefi-shell
]; ];