Open
Description
Feature
It would be great to avoid printing full paths of source files in the generated code.
Benefit
This would allow for better or more correct caching in third party build systems like Bazel or Nix.
Implementation
- The naive solution is to remove references to the source files:
diff --git a/cranelift/codegen/meta/src/srcgen.rs b/cranelift/codegen/meta/src/srcgen.rs
index d3c321e5b..5b94ddd19 100644
--- a/cranelift/codegen/meta/src/srcgen.rs
+++ b/cranelift/codegen/meta/src/srcgen.rs
@@ -94,7 +94,6 @@ impl Formatter {
directory: &std::path::Path,
) -> Result<(), error::Error> {
let path = directory.join(&filename);
- eprintln!("Writing generated file: {}", path.display());
let mut f = fs::File::create(path)?;
for l in self.lines.iter().map(|l| l.as_bytes()) {
diff --git a/cranelift/isle/isle/src/codegen.rs b/cranelift/isle/isle/src/codegen.rs
index 158285832..d292e43c0 100644
--- a/cranelift/isle/isle/src/codegen.rs
+++ b/cranelift/isle/isle/src/codegen.rs
@@ -127,9 +127,6 @@ impl<'a> Codegen<'a> {
"// Generated automatically from the instruction-selection DSL code in:",
)
.unwrap();
- for file in &self.files.file_names {
- writeln!(code, "// - {file}").unwrap();
- }
if !options.exclude_global_allow_pragmas {
writeln!(
@@ -641,12 +638,11 @@ impl<L: Length, C> Length for ContextIterWrapper<L, C> {{
stack.push((Self::validate_block(ret_kind, body), "", scope));
}
- &ControlFlow::Return { pos, result } => {
+ &ControlFlow::Return { pos: _pos, result } => {
writeln!(
ctx.out,
- "{}// Rule at {}.",
+ "{}",
&ctx.indent,
- pos.pretty_print_line(&self.files)
)?;
write!(ctx.out, "{}", &ctx.indent)?;
match ret_kind {
- The behavior could be enabled/disabled based on a crate feature or environment variable.
- The path could be made relative to
CARGO_MANIFEST_DIR
; alternatively only thebasename
of the source file could be retained and written to the generated files.
Not very familiar with the crate so can't make an educated decision! But this would be a nice improvement in the way of system-independent reproducible builds.
Metadata
Assignees
Labels
No labels