From 0bfd573dda872598d7b7ee2a8f83bd849aa8f425 Mon Sep 17 00:00:00 2001
From: bjorn3 <17426603+bjorn3@users.noreply.github.com>
Date: Sat, 6 Jul 2024 22:00:18 +0200
Subject: [PATCH] Convert orbutils recipes from recipe.sh to recipe.toml

---
 recipes/gui/orbutils-background/recipe.sh   |  4 ----
 recipes/gui/orbutils-background/recipe.toml | 12 ++++++++++++
 recipes/gui/orbutils-launcher/recipe.sh     |  4 ----
 recipes/gui/orbutils-launcher/recipe.toml   | 11 +++++++++++
 recipes/gui/orbutils-orblogin/recipe.sh     |  4 ----
 recipes/gui/orbutils-orblogin/recipe.toml   | 12 ++++++++++++
 src/bin/cook.rs                             | 14 ++++++++------
 src/recipe.rs                               |  8 +++++++-
 8 files changed, 50 insertions(+), 19 deletions(-)
 delete mode 100644 recipes/gui/orbutils-background/recipe.sh
 create mode 100644 recipes/gui/orbutils-background/recipe.toml
 delete mode 100644 recipes/gui/orbutils-launcher/recipe.sh
 create mode 100644 recipes/gui/orbutils-launcher/recipe.toml
 delete mode 100644 recipes/gui/orbutils-orblogin/recipe.sh
 create mode 100644 recipes/gui/orbutils-orblogin/recipe.toml

diff --git a/recipes/gui/orbutils-background/recipe.sh b/recipes/gui/orbutils-background/recipe.sh
deleted file mode 100644
index 237d8b020..000000000
--- a/recipes/gui/orbutils-background/recipe.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-GIT=https://gitlab.redox-os.org/redox-os/orbutils.git
-BINDIR=/usr/bin
-CARGOFLAGS="--bin background -p orbutils"
-DEPENDS="orbital"
diff --git a/recipes/gui/orbutils-background/recipe.toml b/recipes/gui/orbutils-background/recipe.toml
new file mode 100644
index 000000000..9b13e8168
--- /dev/null
+++ b/recipes/gui/orbutils-background/recipe.toml
@@ -0,0 +1,12 @@
+[source]
+git = "https://gitlab.redox-os.org/redox-os/orbutils.git"
+
+[build]
+template = "cargo"
+package_path = "orbutils"
+cargoflags = "--bin background"
+
+[package]
+dependencies = [
+    "orbital"
+]
diff --git a/recipes/gui/orbutils-launcher/recipe.sh b/recipes/gui/orbutils-launcher/recipe.sh
deleted file mode 100644
index 4b4975b50..000000000
--- a/recipes/gui/orbutils-launcher/recipe.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-GIT=https://gitlab.redox-os.org/redox-os/orbutils.git
-BINDIR=/usr/bin
-CARGOFLAGS="--bin launcher -p orbutils"
-DEPENDS="orbital"
diff --git a/recipes/gui/orbutils-launcher/recipe.toml b/recipes/gui/orbutils-launcher/recipe.toml
new file mode 100644
index 000000000..78125ba93
--- /dev/null
+++ b/recipes/gui/orbutils-launcher/recipe.toml
@@ -0,0 +1,11 @@
+[source]
+git = "https://gitlab.redox-os.org/redox-os/orbutils.git"
+
+[build]
+template = "cargo"
+package_path = "launcher"
+
+[package]
+dependencies = [
+    "orbital"
+]
diff --git a/recipes/gui/orbutils-orblogin/recipe.sh b/recipes/gui/orbutils-orblogin/recipe.sh
deleted file mode 100644
index a7dd5f536..000000000
--- a/recipes/gui/orbutils-orblogin/recipe.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-GIT=https://gitlab.redox-os.org/redox-os/orbutils.git
-BINDIR=/usr/bin
-CARGOFLAGS="--bin orblogin -p orbutils"
-DEPENDS="orbital"
diff --git a/recipes/gui/orbutils-orblogin/recipe.toml b/recipes/gui/orbutils-orblogin/recipe.toml
new file mode 100644
index 000000000..6871a92e6
--- /dev/null
+++ b/recipes/gui/orbutils-orblogin/recipe.toml
@@ -0,0 +1,12 @@
+[source]
+git = "https://gitlab.redox-os.org/redox-os/orbutils.git"
+
+[build]
+template = "cargo"
+package_path = "orbutils"
+cargoflags = "--bin orblogin"
+
+[package]
+dependencies = [
+    "orbital"
+]
diff --git a/src/bin/cook.rs b/src/bin/cook.rs
index 5767d7cac..d271117a0 100644
--- a/src/bin/cook.rs
+++ b/src/bin/cook.rs
@@ -466,7 +466,7 @@ fi
 COOKBOOK_CARGO="${COOKBOOK_REDOXER}"
 function cookbook_cargo {
     "${COOKBOOK_CARGO}" install \
-        --path "${COOKBOOK_SOURCE}" \
+        --path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}" \
         --root "${COOKBOOK_STAGE}/usr" \
         --locked \
         --no-track \
@@ -480,7 +480,7 @@ function cookbook_cargo_examples {
     for example in "$@"
     do
         "${COOKBOOK_CARGO}" build \
-            --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \
+            --manifest-path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}/Cargo.toml" \
             --example "${example}" \
             ${build_flags}
         mkdir -pv "${COOKBOOK_STAGE}/usr/bin"
@@ -496,7 +496,7 @@ function cookbook_cargo_packages {
     for package in "$@"
     do
         "${COOKBOOK_CARGO}" build \
-            --manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \
+            --manifest-path "${COOKBOOK_SOURCE}/${PACKAGE_PATH}/Cargo.toml" \
             --package "${package}" \
             ${build_flags}
         mkdir -pv "${COOKBOOK_STAGE}/usr/bin"
@@ -560,9 +560,11 @@ done
         //TODO: configurable target
         //TODO: Add more configurability, convert scripts to Rust?
         let script = match &build.kind {
-            BuildKind::Cargo => "cookbook_cargo",
-            BuildKind::Configure => "cookbook_configure",
-            BuildKind::Custom { script } => script
+            BuildKind::Cargo { package_path, cargoflags } => {
+                format!("PACKAGE_PATH={} cookbook_cargo {cargoflags}", package_path.as_deref().unwrap_or("."))
+            }
+            BuildKind::Configure => "cookbook_configure".to_owned(),
+            BuildKind::Custom { script } => script.clone(),
         };
 
         let command = {
diff --git a/src/recipe.rs b/src/recipe.rs
index 197396c75..ca74754f3 100644
--- a/src/recipe.rs
+++ b/src/recipe.rs
@@ -38,7 +38,13 @@ pub enum SourceRecipe {
 pub enum BuildKind {
     /// Will build and install using cargo
     #[serde(rename = "cargo")]
-    Cargo,
+    Cargo {
+        #[serde(default)]
+        package_path: Option<String>,
+
+        #[serde(default)]
+        cargoflags: String,
+    },
     /// Will build and install using configure and make
     #[serde(rename = "configure")]
     Configure,
-- 
GitLab