pi4 edk2 builds
This commit is contained in:
@@ -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;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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 = ''
|
||||||
|
|||||||
@@ -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; {
|
||||||
|
|||||||
@@ -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
|
||||||
];
|
];
|
||||||
|
|||||||
Reference in New Issue
Block a user