aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2022-12-26 15:24:26 +0100
committerHimbeerserverDE <himbeerserverde@gmail.com>2022-12-26 15:24:26 +0100
commitf47be8483938b232c788f1a3e172faa469fc79e9 (patch)
tree149dcdeca76b949118207508318e9f06167507b8 /src
parentb09e5315f4e8ba66482f2afffe549e1f89c37330 (diff)
unpack kernel
Diffstat (limited to 'src')
-rw-r--r--src/main.rs19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs
index 8048fc2..231e55d 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,5 +1,7 @@
+use anyhow::bail;
use std::fs::File;
use std::path::Path;
+use std::process::Command;
const LATEST: &str = "https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.1.1.tar.xz";
@@ -7,11 +9,9 @@ const CONFIG: &str = r#"
CONFIG_IPV6=y
"#;
-fn download_kernel() -> anyhow::Result<()> {
+fn download_kernel(file_name: &str) -> anyhow::Result<()> {
println!("Downloading kernel source...");
- let file_name = Path::new(LATEST).file_name().unwrap().to_str().unwrap();
-
let mut file = File::create(file_name)?;
reqwest::blocking::get(LATEST)?
@@ -23,7 +23,18 @@ fn download_kernel() -> anyhow::Result<()> {
}
fn main() -> anyhow::Result<()> {
- download_kernel()?;
+ let file_name = Path::new(LATEST).file_name().unwrap().to_str().unwrap();
+
+ download_kernel(file_name)?;
+
+ let mut untar = Command::new("tar");
+ untar.arg("xf").arg(file_name);
+
+ if !untar.spawn()?.wait()?.success() {
+ bail!("untar failed");
+ }
+
+ println!("Kernel source unpacked successfully");
Ok(())
}