summary refs log tree commit diff
diff options
context:
space:
mode:
authorWeijia Wang <9713184+wegank@users.noreply.github.com>2022-12-08 14:19:42 +0100
committerWeijia Wang <9713184+wegank@users.noreply.github.com>2022-12-08 14:19:42 +0100
commit79a7bab6306716bd244af47e00b3bf5acc85cc29 (patch)
treee423a1601a813e35d1d371de02cbee9e02f87fb5
parent8cdc50c4341fa9f88e7f92cb18be20d31c87fef7 (diff)
downloadnixpkgs-79a7bab6306716bd244af47e00b3bf5acc85cc29.tar
nixpkgs-79a7bab6306716bd244af47e00b3bf5acc85cc29.tar.gz
nixpkgs-79a7bab6306716bd244af47e00b3bf5acc85cc29.tar.bz2
nixpkgs-79a7bab6306716bd244af47e00b3bf5acc85cc29.tar.lz
nixpkgs-79a7bab6306716bd244af47e00b3bf5acc85cc29.tar.xz
nixpkgs-79a7bab6306716bd244af47e00b3bf5acc85cc29.tar.zst
nixpkgs-79a7bab6306716bd244af47e00b3bf5acc85cc29.zip
cmdstan: unbreak on aarch64-linux
-rw-r--r--pkgs/development/compilers/cmdstan/default.nix33
1 files changed, 23 insertions, 10 deletions
diff --git a/pkgs/development/compilers/cmdstan/default.nix b/pkgs/development/compilers/cmdstan/default.nix
index 6aa30a584a8..c82fc654b47 100644
--- a/pkgs/development/compilers/cmdstan/default.nix
+++ b/pkgs/development/compilers/cmdstan/default.nix
@@ -1,14 +1,25 @@
 { lib, stdenv, fetchurl, python3, runtimeShell }:
 
-stdenv.mkDerivation rec {
-  pname = "cmdstan";
-  version = "2.31.0";
-
+let
+  # FIXME: remove conditional on future release
+  version = if stdenv.isx86_64 then "2.31.0" else "2.30.1";
   # includes stanc binaries needed to build cmdstand
-  src = fetchurl {
-    url = "https://github.com/stan-dev/cmdstan/releases/download/v${version}/cmdstan-${version}.tar.gz";
-    sha256 = "sha256-BMqRRWIC/Z7It2qkESJd9L3ycyxvA6NHiWbAvzVMzIQ=";
+  srcs = rec {
+    aarch64-linux = fetchurl {
+      url = "https://github.com/stan-dev/cmdstan/releases/download/v${version}/cmdstan-${version}-linux-arm64.tar.gz";
+      sha256 = "sha256-oj/7JHT4LZcRAHiA2KbM6pZbOe6C98Ff//cNsG9DIm8=";
+    };
+    x86_64-darwin = fetchurl {
+      url = "https://github.com/stan-dev/cmdstan/releases/download/v${version}/cmdstan-${version}.tar.gz";
+      sha256 = "sha256-BMqRRWIC/Z7It2qkESJd9L3ycyxvA6NHiWbAvzVMzIQ=";
+    };
+    x86_64-linux = x86_64-darwin;
   };
+  src = srcs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
+in
+stdenv.mkDerivation rec {
+  pname = "cmdstan";
+  inherit version src;
 
   buildFlags = [ "build" ];
   enableParallelBuilding = true;
@@ -22,6 +33,9 @@ stdenv.mkDerivation rec {
     substituteInPlace stan/lib/stan_math/make/libraries \
       --replace "/usr/bin/env bash" "bash"
     patchShebangs .
+  '' + lib.optionalString stdenv.isAarch64 ''
+    sed -z -i "s/TEST(CommandStansummary, check_console_output).*TEST(CommandStansummary, check_csv_output)/TEST(CommandStansummary, check_csv_output)/" \
+      src/test/interface/stansummary_test.cpp
   '';
 
   checkPhase = ''
@@ -41,10 +55,9 @@ stdenv.mkDerivation rec {
   '';
 
   # Hack to ensure that patchelf --shrink-rpath get rids of a $TMPDIR reference.
-  preFixup = "rm -rf $(pwd)";
+  preFixup = "rm -rf stan";
 
   meta = {
-    broken = stdenv.isLinux && stdenv.isAarch64;
     description = "Command-line interface to Stan";
     longDescription = ''
       Stan is a probabilistic programming language implementing full Bayesian
@@ -54,6 +67,6 @@ stdenv.mkDerivation rec {
     '';
     homepage = "https://mc-stan.org/interfaces/cmdstan.html";
     license = lib.licenses.bsd3;
-    platforms = lib.platforms.all;
+    platforms = [ "aarch64-linux" "x86_64-darwin" "x86_64-linux" ];
   };
 }