summary refs log tree commit diff
diff options
context:
space:
mode:
authorYurii Rashkovskii <yrashk@gmail.com>2018-05-07 13:33:51 -0700
committerYurii Rashkovskii <yrashk@gmail.com>2018-05-07 13:33:51 -0700
commit783d547bddf66070b3a33b1fd4b972d945e5942c (patch)
tree6da3897a967f3f4345944f7b8cfe945b174d3068
parent17fe52a6c741ec7265d402c41e9419e903126fe8 (diff)
downloadnixlib-783d547bddf66070b3a33b1fd4b972d945e5942c.tar
nixlib-783d547bddf66070b3a33b1fd4b972d945e5942c.tar.gz
nixlib-783d547bddf66070b3a33b1fd4b972d945e5942c.tar.bz2
nixlib-783d547bddf66070b3a33b1fd4b972d945e5942c.tar.lz
nixlib-783d547bddf66070b3a33b1fd4b972d945e5942c.tar.xz
nixlib-783d547bddf66070b3a33b1fd4b972d945e5942c.tar.zst
nixlib-783d547bddf66070b3a33b1fd4b972d945e5942c.zip
sit: fix tests on aarch64
As we found out in #40032, sit tests won't pass on
aarch64. The problem seems to be related to
`create_dir` not returning an error if the directory
already exists, happening specifically on aarch64+debug
(not aarch64+release)

This update injects a patch for tests that will also
be included in subsequent versions of SIT.
-rw-r--r--pkgs/applications/version-management/sit/aarch64-eexist.patch17
-rw-r--r--pkgs/applications/version-management/sit/default.nix2
2 files changed, 19 insertions, 0 deletions
diff --git a/pkgs/applications/version-management/sit/aarch64-eexist.patch b/pkgs/applications/version-management/sit/aarch64-eexist.patch
new file mode 100644
index 000000000000..8b45e77d040d
--- /dev/null
+++ b/pkgs/applications/version-management/sit/aarch64-eexist.patch
@@ -0,0 +1,17 @@
+diff --git a/sit-core/src/repository.rs b/sit-core/src/repository.rs
+index ebd357d..074dcc9 100644
+--- a/sit-core/src/repository.rs
++++ b/sit-core/src/repository.rs
+@@ -305,6 +305,12 @@ impl Repository {
+         let id: String = name.into();
+         let mut path = self.items_path.clone();
+         path.push(&id);
++        #[cfg(all(debug_assertions, target_arch = "aarch64"))] {
++          use std::io;
++          if path.is_dir() {
++             return Err(io::Error::from_raw_os_error(17).into()); // 17 is EEXIST
++          }
++        }
+         fs::create_dir(path)?;
+         let id = OsString::from(id);
+         Ok(Item {
diff --git a/pkgs/applications/version-management/sit/default.nix b/pkgs/applications/version-management/sit/default.nix
index 0cc75f8bd5a3..ae84add283e6 100644
--- a/pkgs/applications/version-management/sit/default.nix
+++ b/pkgs/applications/version-management/sit/default.nix
@@ -15,6 +15,8 @@ rustPlatform.buildRustPackage rec {
 
   cargoSha256 = "102haqix13nwcncng1s8qkw68spn6fhh3vysk2nbahw6f78zczqg";
 
+  patches = [ ./aarch64-eexist.patch ];
+
   meta = with stdenv.lib; {
     description = "Serverless Information Tracker";
     homepage = https://sit.sh/;