about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--third_party/overlays/patches/crate2nix-fix-resolve-missing-target-features-to-null.patch53
-rw-r--r--third_party/overlays/tvl.nix3
2 files changed, 56 insertions, 0 deletions
diff --git a/third_party/overlays/patches/crate2nix-fix-resolve-missing-target-features-to-null.patch b/third_party/overlays/patches/crate2nix-fix-resolve-missing-target-features-to-null.patch
new file mode 100644
index 0000000000..96e0fdd263
--- /dev/null
+++ b/third_party/overlays/patches/crate2nix-fix-resolve-missing-target-features-to-null.patch
@@ -0,0 +1,53 @@
+From 5ed4d5f99e8c2ee0e552ceb3842fdf0afaed7534 Mon Sep 17 00:00:00 2001
+From: tilpner <git@tilpner.com>
+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
+
diff --git a/third_party/overlays/tvl.nix b/third_party/overlays/tvl.nix
index c194e5005f..fd060214cf 100644
--- a/third_party/overlays/tvl.nix
+++ b/third_party/overlays/tvl.nix
@@ -118,6 +118,9 @@ depot.nix.readTree.drvTargets {
       # https://github.com/nix-community/crate2nix/pull/309
       ./patches/crate2nix-take-lndir-from-buildPackages.patch
       ./patches/crate2nix-skip-running-tests-when-cross-compiling.patch
+
+      # https://github.com/nix-community/crate2nix/pull/307
+      ./patches/crate2nix-fix-resolve-missing-target-features-to-null.patch
     ];
   });