From 5ed4d5f99e8c2ee0e552ceb3842fdf0afaed7534 Mon Sep 17 00:00:00 2001 From: tilpner Date: Tue, 24 Oct 2023 20:26:29 +0200 Subject: [PATCH] fix: resolve missing target features to 'null' --- crate2nix/Cargo.nix | 16 ++++++++-------- crate2nix/src/render.rs | 10 +++++----- sample_projects/bin/Cargo.toml | 3 +++ .../bin_with_git_submodule_dep/Cargo.nix | 6 +++--- sample_projects/codegen/Cargo.nix | 2 +- 5 files changed, 20 insertions(+), 17 deletions(-) diff --git a/crate2nix/src/render.rs b/crate2nix/src/render.rs index 8ca2f1c..a269fc7 100644 --- a/src/render.rs +++ b/src/render.rs @@ -224,7 +224,7 @@ fn cfg_to_nix_expr(cfg: &CfgExpr) -> String { } else if key == "target_family" { format!("(builtins.elem {} target.{})", escaped_value, target(key)) } else { - format!("({} == target.{})", escaped_value, target(key)) + format!("({} == target.{} or null)", escaped_value, target(key)) }); } CfgExpr::Not(expr) => { @@ -292,19 +292,19 @@ fn test_render_cfg_to_nix_expr() { &cfg_to_nix_expr(&kv("target_family", "unix")) ); assert_eq!( - "(\"linux\" == target.\"os\")", + "(\"linux\" == target.\"os\" or null)", &cfg_to_nix_expr(&kv("target_os", "linux")) ); assert_eq!( - "(!(\"linux\" == target.\"os\"))", + "(!(\"linux\" == target.\"os\" or null))", &cfg_to_nix_expr(&CfgExpr::Not(Box::new(kv("target_os", "linux")))) ); assert_eq!( - "((target.\"unix\" or false) || (\"linux\" == target.\"os\"))", + "((target.\"unix\" or false) || (\"linux\" == target.\"os\" or null))", &cfg_to_nix_expr(&CfgExpr::Any(vec![name("unix"), kv("target_os", "linux")])) ); assert_eq!( - "((target.\"unix\" or false) && (\"linux\" == target.\"os\"))", + "((target.\"unix\" or false) && (\"linux\" == target.\"os\" or null))", &cfg_to_nix_expr(&CfgExpr::All(vec![name("unix"), kv("target_os", "linux")])) ); assert_eq!("true", &cfg_to_nix_expr(&CfgExpr::All(vec![]))); -- 2.42.0