EDK2: Significant cleanup and
modularization, and add OVMF as an example of how to use it svn path=/nixpkgs/trunk/; revision=33059
This commit is contained in:
parent
853dd7266b
commit
6cf8e4f815
19
pkgs/applications/virtualization/OVMF/default.nix
Normal file
19
pkgs/applications/virtualization/OVMF/default.nix
Normal file
@ -0,0 +1,19 @@
|
||||
{ stdenv, edk2 }:
|
||||
|
||||
stdenv.mkDerivation (edk2.setup "OvmfPkg/OvmfPkgX64.dsc" {
|
||||
name = "OVMF-2012-03-13";
|
||||
|
||||
src = edk2.src;
|
||||
|
||||
patchPhase = ''
|
||||
rm -fR Conf BaseTools EdkCompatibilityPkg
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Sample UEFI firmware for QEMU and KVM";
|
||||
homepage = http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=OVMF;
|
||||
license = "BSD";
|
||||
maintainers = [ stdenv.lib.maintainers.shlevy ];
|
||||
platforms = ["x86_64-linux" "i686-linux"];
|
||||
};
|
||||
})
|
@ -2,16 +2,14 @@
|
||||
|
||||
let
|
||||
|
||||
targetArch = if stdenv.isi686 then
|
||||
"IA32"
|
||||
else if stdenv.isx86_64 then
|
||||
"X64"
|
||||
else
|
||||
throw "Unsupported architecture";
|
||||
targetArch = if stdenv.isi686 then
|
||||
"IA32"
|
||||
else if stdenv.isx86_64 then
|
||||
"X64"
|
||||
else
|
||||
throw "Unsupported architecture";
|
||||
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
edk2 = stdenv.mkDerivation {
|
||||
name = "edk2-2012-03-13";
|
||||
|
||||
src = fetchsvn {
|
||||
@ -24,24 +22,14 @@ stdenv.mkDerivation {
|
||||
|
||||
buildPhase = ''
|
||||
make -C BaseTools
|
||||
build="$(pwd)"
|
||||
cd ..
|
||||
mv $build $out
|
||||
export EDK_TOOLS_PATH="$out"/BaseTools
|
||||
cd $out
|
||||
. edksetup.sh BaseTools
|
||||
sed -e 's|Nt32Pkg/Nt32Pkg.dsc|MdeModulePkg/MdeModulePkg.dsc|' -e \
|
||||
's|MYTOOLS|GCC46|' -e 's|IA32|${targetArch}|' -e 's|DEBUG|RELEASE|'\
|
||||
< $out/Conf/target.txt > target.txt.tmp
|
||||
mv target.txt.tmp $out/Conf/target.txt
|
||||
sed -e 's|DEFINE GCC46_IA32_PREFIX = /usr/bin/|DEFINE GCC46_IA32_PREFIX = ""|' \
|
||||
-e 's|DEFINE GCC46_X64_PREFIX = /usr/bin/|DEFINE GCC46_X64_PREFIX = ""|' \
|
||||
-e 's|DEFINE UNIX_IASL_BIN = /usr/bin/iasl|DEFINE UNIX_IASL_BIN = ${iasl}/bin/iasl|' < $out/Conf/tools_def.txt > tools_def.txt.tmp
|
||||
mv tools_def.txt.tmp $out/Conf/tools_def.txt
|
||||
build
|
||||
'';
|
||||
|
||||
installPhase = "true";
|
||||
installPhase = ''
|
||||
mkdir -vp $out
|
||||
mv -v BaseTools $out
|
||||
mv -v EdkCompatibilityPkg $out
|
||||
mv -v edksetup.sh $out
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Intel EFI development kit";
|
||||
@ -50,4 +38,37 @@ stdenv.mkDerivation {
|
||||
maintainers = [ stdenv.lib.maintainers.shlevy ];
|
||||
platforms = ["x86_64-linux" "i686-linux"];
|
||||
};
|
||||
}
|
||||
|
||||
passthru = {
|
||||
setup = projectDscPath: attrs: {
|
||||
buildInputs = [ pythonFull ] ++
|
||||
stdenv.lib.optionals (attrs ? buildInputs) attrs.buildInputs;
|
||||
|
||||
configurePhase = ''
|
||||
mkdir -v Conf
|
||||
sed -e 's|Nt32Pkg/Nt32Pkg.dsc|${projectDscPath}|' -e \
|
||||
's|MYTOOLS|GCC46|' -e 's|IA32|${targetArch}|' -e 's|DEBUG|RELEASE|'\
|
||||
< ${edk2}/BaseTools/Conf/target.template > Conf/target.txt
|
||||
sed -e 's|DEFINE GCC46_IA32_PREFIX = /usr/bin/|DEFINE GCC46_IA32_PREFIX = ""|' \
|
||||
-e 's|DEFINE GCC46_X64_PREFIX = /usr/bin/|DEFINE GCC46_X64_PREFIX = ""|' \
|
||||
-e 's|DEFINE UNIX_IASL_BIN = /usr/bin/iasl|DEFINE UNIX_IASL_BIN = ${iasl}/bin/iasl|' \
|
||||
< ${edk2}/BaseTools/Conf/tools_def.template > Conf/tools_def.txt
|
||||
export WORKSPACE="$PWD"
|
||||
export EFI_SOURCE="$PWD/EdkCompatibilityPkg"
|
||||
ln -sv ${edk2}/BaseTools BaseTools
|
||||
ln -sv ${edk2}/EdkCompatibilityPkg EdkCompatibilityPkg
|
||||
. ${edk2}/edksetup.sh BaseTools
|
||||
'';
|
||||
|
||||
buildPhase = "
|
||||
build
|
||||
";
|
||||
|
||||
installPhase = "mv -v Build $out";
|
||||
} // (removeAttrs attrs [ "buildInputs" ] );
|
||||
};
|
||||
};
|
||||
|
||||
in
|
||||
|
||||
edk2
|
||||
|
@ -5192,6 +5192,8 @@ let
|
||||
oidentd = callPackage ../servers/identd/oidentd { };
|
||||
|
||||
openfire = callPackage ../servers/xmpp/openfire { };
|
||||
|
||||
OVMF = callPackage ../applications/virtualization/OVMF { };
|
||||
|
||||
postgresql = postgresql83;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user