From 8b464f085c9b255d81ee0e8501914ff7cb3cadd8 Mon Sep 17 00:00:00 2001
From: Tim Windelschmidt <tim@monogon.tech>
Date: Fri, 12 Jan 2024 15:41:50 +0100
Subject: [PATCH 1/2] Support no_std in Prost toolchain

---
 proto/prost/private/prost.bzl         |  8 ++++++++
 proto/prost/private/protoc_wrapper.rs | 17 ++++++++++++++---
 2 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/proto/prost/private/prost.bzl b/proto/prost/private/prost.bzl
index c3a7d4e0..6f7449d0 100644
--- a/proto/prost/private/prost.bzl
+++ b/proto/prost/private/prost.bzl
@@ -65,6 +65,9 @@ def _compile_proto(ctx, crate_name, proto_info, deps, prost_toolchain, rustfmt_t
     additional_args.add("--descriptor_set={}".format(proto_info.direct_descriptor_set.path))
     additional_args.add_all(prost_toolchain.prost_opts, format_each = "--prost_opt=%s")

+    if prost_toolchain.is_nostd:
+        additional_args.add("--is_nostd")
+
     if prost_toolchain.tonic_plugin:
         tonic_plugin = prost_toolchain.tonic_plugin[DefaultInfo].files_to_run
         additional_args.add(prost_toolchain.tonic_plugin_flag % tonic_plugin.executable.path)
@@ -372,6 +375,7 @@ def _rust_prost_toolchain_impl(ctx):
         tonic_plugin = ctx.attr.tonic_plugin,
         tonic_plugin_flag = ctx.attr.tonic_plugin_flag,
         tonic_runtime = ctx.attr.tonic_runtime,
+        is_nostd = ctx.attr.is_nostd,
     )]

 rust_prost_toolchain = rule(
@@ -423,6 +427,10 @@ rust_prost_toolchain = rule(
             doc = "The Tonic runtime crates to use.",
             providers = [[rust_common.crate_info], [rust_common.crate_group_info]],
         ),
+        "is_nostd": attr.bool(
+            doc = "If a no_std tag should be put into the generated code.",
+            default = False,
+        ),
     }, **proto_toolchains.if_legacy_toolchain({
         "_legacy_proto_toolchain": attr.label(
             default = "//proto/protobuf:legacy_proto_toolchain",
diff --git a/proto/prost/private/protoc_wrapper.rs b/proto/prost/private/protoc_wrapper.rs
index 9c41892c..5d67640d 100644
--- a/proto/prost/private/protoc_wrapper.rs
+++ b/proto/prost/private/protoc_wrapper.rs
@@ -117,7 +117,7 @@ struct Module {
 ///     }
 /// }
 /// ```
-fn generate_lib_rs(prost_outputs: &BTreeSet<PathBuf>, is_tonic: bool) -> String {
+fn generate_lib_rs(prost_outputs: &BTreeSet<PathBuf>, is_tonic: bool, is_nostd: bool) -> String {
     let mut module_info = BTreeMap::new();

     for path in prost_outputs.iter() {
@@ -189,7 +189,8 @@ fn generate_lib_rs(prost_outputs: &BTreeSet<PathBuf>, is_tonic: bool) -> String
         }
     }

-    let mut content = "// @generated\n\n".to_string();
+    let mut content = if is_nostd { "#![no_std]\n".to_string() } else { "".to_string() };
+    content.push_str(&"// @generated\n\n");
     write_module(&mut content, &module_info, "", 0);
     content
 }
@@ -443,6 +444,9 @@ struct Args {
     /// Whether to generate tonic code.
     is_tonic: bool,

+    // Whether to put a no_std tag into the generated code.
+    is_nostd: bool,
+
     /// Extra arguments to pass to protoc.
     extra_args: Vec<String>,
 }
@@ -463,6 +467,7 @@ impl Args {
         let mut label: Option<String> = None;
         let mut tonic_or_prost_opts = Vec::new();
         let mut is_tonic = false;
+        let mut is_nostd = false;

         let mut extra_args = Vec::new();

@@ -485,6 +490,10 @@ impl Args {
                 is_tonic = true;
                 return;
             }
+            if arg == "--is_nostd" {
+                is_nostd = true;
+                return;
+            }

             if !arg.contains('=') {
                 extra_args.push(arg);
@@ -613,6 +622,7 @@ impl Args {
             rustfmt,
             proto_paths,
             is_tonic,
+            is_nostd,
             label: label.unwrap(),
             extra_args,
         })
@@ -718,6 +728,7 @@ fn main() {
         rustfmt,
         proto_paths,
         is_tonic,
+        is_nostd,
         extra_args,
     } = Args::parse().expect("Failed to parse args");

@@ -830,7 +841,7 @@ fn main() {
         .expect("Failed to compute proto package info");

     // Write outputs
-    fs::write(&out_librs, generate_lib_rs(&rust_files, is_tonic)).expect("Failed to write file.");
+    fs::write(&out_librs, generate_lib_rs(&rust_files, is_tonic, is_nostd)).expect("Failed to write file.");
     fs::write(
         package_info_file,
         extern_paths
--
2.44.1

