From 34875f66131027b4ea8b46ab0414e0ee0e5822f4 Mon Sep 17 00:00:00 2001 From: Alex Mohr Date: Thu, 22 Dec 2022 09:20:44 -0800 Subject: [PATCH 1/4] Fix Create Disk Image Example The example code didn't compile. This patch fixes that. --- docs/create-disk-image.md | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/docs/create-disk-image.md b/docs/create-disk-image.md index b58b951d..98e56870 100644 --- a/docs/create-disk-image.md +++ b/docs/create-disk-image.md @@ -38,20 +38,28 @@ members = ["kernel"] ```rust // build.rs +use std::path::Path; + fn main() { // set by cargo, build scripts should use this directory for output files let out_dir = std::env::var_os("OUT_DIR").unwrap(); + let out_dir_path = Path::new(&out_dir); // set by cargo's artifact dependency feature, see // https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#artifact-dependencies - let kernel = std::env::var_os("CARGO_BIN_FILE_KERNEL_kernel"); + let kernel = std::env::var_os("CARGO_BIN_FILE_KERNEL_kernel").unwrap(); + let kernel_path = Path::new(&kernel); // create an UEFI disk image (optional) - let uefi_path = out_dir.join("uefi.img"); - bootloader::UefiBoot::new(&kernel).create_disk_image(uefi_path).unwrap(); + let uefi_path = out_dir_path.join("uefi.img"); + bootloader::UefiBoot::new(&kernel_path) + .create_disk_image(&uefi_path) + .unwrap(); - // create a BIOS disk image (optional) - let out_bios_path = out_dir.join("bios.img"); - bootloader::BiosBoot::new(&kernel).create_disk_image(uefi_path).unwrap(); + // create a BIOS disk image + let bios_path = out_dir_path.join("bios.img"); + bootloader::BiosBoot::new(&kernel_path) + .create_disk_image(&bios_path) + .unwrap(); // pass the disk image paths as env variables to the `main.rs` println!("cargo:rustc-env=UEFI_PATH={}", uefi_path.display()); @@ -77,8 +85,8 @@ fn main() { } else { cmd.arg("-drive").arg(format!("format=raw,file={bios_path}")); } - let mut child = cmd.spawn()?; - child.wait()?; + let mut child = cmd.spawn().unwrap(); + child.wait().unwrap(); } ``` From cc09d3d688b71883361ab19369c64a0930b4faf8 Mon Sep 17 00:00:00 2001 From: Alex Mohr Date: Thu, 29 Dec 2022 09:52:05 -0800 Subject: [PATCH 2/4] Simplify path construction in disk image example --- docs/create-disk-image.md | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/docs/create-disk-image.md b/docs/create-disk-image.md index 98e56870..772667f6 100644 --- a/docs/create-disk-image.md +++ b/docs/create-disk-image.md @@ -42,24 +42,18 @@ use std::path::Path; fn main() { // set by cargo, build scripts should use this directory for output files - let out_dir = std::env::var_os("OUT_DIR").unwrap(); - let out_dir_path = Path::new(&out_dir); + let out_dir = Path::new(&std::env::var_os("OUT_DIR").unwrap()); // set by cargo's artifact dependency feature, see // https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#artifact-dependencies - let kernel = std::env::var_os("CARGO_BIN_FILE_KERNEL_kernel").unwrap(); - let kernel_path = Path::new(&kernel); + let kernel = Path::new(&std::env::var_os("CARGO_BIN_FILE_KERNEL_kernel").unwrap()); // create an UEFI disk image (optional) - let uefi_path = out_dir_path.join("uefi.img"); - bootloader::UefiBoot::new(&kernel_path) - .create_disk_image(&uefi_path) - .unwrap(); + let uefi_path = out_dir.join("uefi.img"); + bootloader::UefiBoot::new(&kernel).create_disk_image(&uefi_path).unwrap(); // create a BIOS disk image - let bios_path = out_dir_path.join("bios.img"); - bootloader::BiosBoot::new(&kernel_path) - .create_disk_image(&bios_path) - .unwrap(); + let bios_path = out_dir.join("bios.img"); + bootloader::BiosBoot::new(&kernel).create_disk_image(&bios_path).unwrap(); // pass the disk image paths as env variables to the `main.rs` println!("cargo:rustc-env=UEFI_PATH={}", uefi_path.display()); From 63284c610bca46b7f021d842e2300570598c3f99 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Mon, 2 Jan 2023 09:45:26 +0100 Subject: [PATCH 3/4] Use `PathBuf` instead of `Path` to avoid borrow error --- docs/create-disk-image.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/create-disk-image.md b/docs/create-disk-image.md index 772667f6..ae1209c3 100644 --- a/docs/create-disk-image.md +++ b/docs/create-disk-image.md @@ -38,14 +38,14 @@ members = ["kernel"] ```rust // build.rs -use std::path::Path; +use std::path::PathBuf; fn main() { // set by cargo, build scripts should use this directory for output files - let out_dir = Path::new(&std::env::var_os("OUT_DIR").unwrap()); + let out_dir = PathBuf::from(std::env::var_os("OUT_DIR").unwrap()); // set by cargo's artifact dependency feature, see // https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#artifact-dependencies - let kernel = Path::new(&std::env::var_os("CARGO_BIN_FILE_KERNEL_kernel").unwrap()); + let kernel = PathBuf::from(std::env::var_os("CARGO_BIN_FILE_KERNEL_kernel").unwrap()); // create an UEFI disk image (optional) let uefi_path = out_dir.join("uefi.img"); From 0d24cef05198572efa3eff9dd2cd80561f883a7d Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Mon, 2 Jan 2023 09:46:07 +0100 Subject: [PATCH 4/4] Fix `ovmf-prebuilt` dependency in example --- docs/create-disk-image.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/create-disk-image.md b/docs/create-disk-image.md index ae1209c3..f4da7e5a 100644 --- a/docs/create-disk-image.md +++ b/docs/create-disk-image.md @@ -29,7 +29,7 @@ test-kernel = { path = "kernel", artifact = "bin", target = "x86_64-unknown-none [dependencies] # used for UEFI booting in QEMU -ovmf_prebuilt = "0.1.0-alpha.1" +ovmf-prebuilt = "0.1.0-alpha.1" [workspace] members = ["kernel"]