{"id":"yxsunq","deleted":false,"future_paste":false,"expired":false,"language":"text","created_at":"2020-09-27 18:44:00","expires_at":null,"content":"{ pkgs ? import <nixpkgs> {}\r\n, platformArch ? \"AARCH64\"\r\n, platformFile ? \"Platform\/RaspberryPi\/RPi3\/RPi3.dsc\"\r\n, ... }:\r\n\r\nlet\r\n  platform = if platformArch == \"AARCH64\" then \"aarch64-multiplatform\"\r\n    else if platformArch == \"ARM\" then \"armv7l-hf-multiplatform\"\r\n    else if platformArch == \"IA32\" then \"gnu32\"\r\n    else if platformArch == \"X64\" then \"gnu64\"\r\n    else if platformArch == \"RISCV64\" then \"riscv64\"\r\n    else builtins.throw \"Unknown platform architecture\";\r\n\r\n  platformPkgs = pkgs.pkgsCross.${platform};\r\n  src = {\r\n    edk2 = pkgs.fetchgit {\r\n      url = \"https:\/\/github.com\/tianocore\/edk2.git\";\r\n      rev = \"dd5c7e3c5282b084daa5bbf0ec229cec699b2c17\";\r\n      sha256 = \"1m49m8z1448lmds3ypzipv2yayhayj3w7f0fashry8563zc85cpb\";\r\n      fetchSubmodules = true;\r\n    };\r\n    edk2-platforms = pkgs.fetchgit {\r\n      url = \"https:\/\/github.com\/tianocore\/edk2-platforms.git\";\r\n      rev = \"4efd9ab2cfabdcbd6ca410f870bc889e76f18d85\";\r\n      sha256 = \"1mz8885scaksbkshab2sqwjxmblcy733l0qf1a8ixxjawa3rx7y9\";\r\n      fetchSubmodules = true;\r\n    };\r\n    edk2-non-osi = pkgs.fetchgit {\r\n      url = \"https:\/\/github.com\/tianocore\/edk2-non-osi.git\";\r\n      rev = \"ff6750947db338c5a8be116c0d3dfef8ec3064ec\";\r\n      sha256 = \"1844jsm2dafy4f70srgb3k1jpfx7xc70snjp30qzi74bcyka05l6\";\r\n      fetchSubmodules = true;\r\n    };\r\n  };\r\nin\r\n\r\nplatformPkgs.stdenv.mkDerivation rec {\r\n  pname = \"edk2-platform-${with builtins; head (split \"\\\\.\" (baseNameOf platformFile))}\";\r\n  version = \"4efd9ab\";\r\n\r\n  srcs = builtins.attrValues src;\r\n\r\n  depsBuildBuild = with pkgs; [ gcc utillinux python iasl openssl ];\r\n\r\n  unpackPhase = ''\r\n    mkdir -p $out\r\n    cp -r ${src.edk2} $out\/edk2\r\n    cp -r ${src.edk2-platforms} $out\/edk2-platforms\r\n    cp -r ${src.edk2-non-osi} $out\/edk2-non-osi\r\n    chmod -R u+w $out\r\n    cd $out\r\n  '';\r\n\r\n  NIX_CFLAGS_COMPILE = \"-Wno-format -Wno-format-security\";\r\n\r\n  patches = [ .\/rnglib.patch ];\r\n  patchFlags = [ \"--strip=1\" \"--directory=edk2-platforms\" ];\r\n  postPatch = \"patchShebangs .\";\r\n\r\n  configurePhase = ''\r\n    export WORKSPACE=$PWD\r\n    export PACKAGES_PATH=$PWD\/edk2:$PWD\/edk2-platforms:$PWD\/edk2-non-osi\r\n    export GCC5_${platformArch}_PREFIX=\"${pkgs.lib.systems.examples.${platform}.config}-\"\r\n    . edk2\/edksetup.sh\r\n  '';\r\n\r\n  buildPhase = ''\r\n    make -C edk2\/BaseTools\r\n    build -n $NIX_BUILD_CORES -b RELEASE -a ${platformArch} -t GCC5 -p ${platformFile}\r\n  '';\r\n\r\n  dontInstall = true;\r\n  dontFixup = true;\r\n}"}