aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMilan Pässler <milan@petabyte.dev>2021-01-02 18:29:20 +0100
committerMilan Pässler <milan@petabyte.dev>2021-01-02 18:29:20 +0100
commit471014819efb15efa5fb506c4c621024096951a4 (patch)
tree6256ef5ac037113ec4609bca134cc3a2ad6b2393
parente3ac34626eb30a8373aee0d2ba3fc1973940eb95 (diff)
Revert "coreboot-payload-tianocore: use nixpkgs edk2"
This reverts commit 4dde3d592ca60d465896f63fec902ce748a4f5bf.
-rw-r--r--pkgs/coreboot-payload-tianocore/default.nix87
-rw-r--r--pkgs/coreboot-payload-tianocore/pr-1170-fix-build.diff12
2 files changed, 71 insertions, 28 deletions
diff --git a/pkgs/coreboot-payload-tianocore/default.nix b/pkgs/coreboot-payload-tianocore/default.nix
index 7ce866e400c0..5c3e5362462f 100644
--- a/pkgs/coreboot-payload-tianocore/default.nix
+++ b/pkgs/coreboot-payload-tianocore/default.nix
@@ -1,23 +1,78 @@
-{ fetchFromGitHub
-, fetchpatch
-, edk2
-, stdenv
-, libuuid
-, bc
-, utillinux
-, nasm
-, iasl
+{ fetchFromGitHub, python2, stdenv, libuuid, bc, utillinux, nasm, iasl, seabios
}:
-edk2.mkDerivation "UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc" {
+# we can not override the source in edk2, so we had to copy the entire thing
+
+let
+ src = fetchFromGitHub {
+ owner = "MrChromebox";
+ repo = "edk2";
+ rev = "860a8d95c2ee89c9916d6e11230f246afa1cd629";
+ sha256 = "1bykw3lzfjl6idca37i736mwpqv60haczp7davhgqlmlb3nw6y3s";
+ fetchSubmodules = true;
+ };
+
+ version = "unstable";
+
+ pythonEnv = python2.withPackages (ps: [ ps.tkinter ]);
+
+ toolchain = stdenv.mkDerivation {
+ pname = "edk2-coreboot";
+
+ inherit version src;
+
+ buildInputs = [ libuuid pythonEnv ];
+
+ makeFlags = [ "-C BaseTools" ];
+
+ NIX_CFLAGS_COMPILE = "-Wno-return-type -Wno-error=stringop-truncation";
+
+ hardeningDisable = [ "format" "fortify" ];
+
+ installPhase = ''
+ mkdir -vp $out
+ mv -v BaseTools $out
+ mv -v edksetup.sh $out
+ '';
+
+ enableParallelBuilding = true;
+ };
+
+in stdenv.mkDerivation {
pname = "coreboot-payload-tianocore";
- inherit (edk2) version;
+ inherit version src;
+
+ buildInputs = [ bc pythonEnv utillinux nasm iasl ];
+
+ prePatch = ''
+ rm -rf BaseTools
+ ln -sv ${toolchain}/BaseTools BaseTools
+ '';
+
+ configurePhase = ''
+ runHook preConfigure
+ export WORKSPACE="$PWD"
+ . ${toolchain}/edksetup.sh BaseTools
+ runHook postConfigure
+ '';
+
+ buildPhase = ''
+ runHook preBuild
+ build -a X64 -a IA32 -b RELEASE -t GCC5 -p CorebootPayloadPkg/CorebootPayloadPkgIa32X64.dsc -n $NIX_BUILD_CORES -D CSM_ENABLE
+ runHook postBuild
+ '';
+
+ installPhase = ''
+ runHook preInstall
+ mv -v Build/*/* $out
+ runHook postInstall
+ '';
+
+ hardeningDisable = [ "format" "stackprotector" "pic" "fortify" ];
- patches = [
- ./pr-1170-fix-build.diff
- ];
+ postPatch = ''
+ cp ${seabios}/Csm16.bin OvmfPkg/Csm/Csm16/Csm16.bin
+ '';
- buildInputs = [ utillinux bc nasm iasl ];
- buildFlags = [ "-a IA32" "-D BOOTLOADER=COREBOOT" ];
dontPatchELF = true;
}
diff --git a/pkgs/coreboot-payload-tianocore/pr-1170-fix-build.diff b/pkgs/coreboot-payload-tianocore/pr-1170-fix-build.diff
deleted file mode 100644
index c36df5e0725c..000000000000
--- a/pkgs/coreboot-payload-tianocore/pr-1170-fix-build.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc b/UefiPayloadPkg/UefiPayloadPkg.dsc
-index 74ff58bc5af..ae62a9c4d66 100644
---- a/UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc
-+++ b/UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc
-@@ -142,6 +142,7 @@
- PeCoffLib|MdePkg/Library/BasePeCoffLib/BasePeCoffLib.inf
- PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeCoffGetEntryPointLib.inf
- CacheMaintenanceLib|MdePkg/Library/BaseCacheMaintenanceLib/BaseCacheMaintenanceLib.inf
-+ SafeIntLib|MdePkg/Library/BaseSafeIntLib/BaseSafeIntLib.inf
-
- #
- # UEFI & PI