about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/interpreters/j/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/interpreters/j/default.nix')
-rw-r--r--nixpkgs/pkgs/development/interpreters/j/default.nix78
1 files changed, 78 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/interpreters/j/default.nix b/nixpkgs/pkgs/development/interpreters/j/default.nix
new file mode 100644
index 000000000000..b7f8b63d54ad
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/j/default.nix
@@ -0,0 +1,78 @@
+{ stdenv, fetchFromGitHub, readline, libedit, bc
+, avxSupport ? stdenv.hostPlatform.avxSupport
+}:
+
+stdenv.mkDerivation rec {
+  pname = "j";
+  version = "901";
+  jtype = "release-f";
+  src = fetchFromGitHub {
+    owner = "jsoftware";
+    repo = "jsource";
+    rev = "j${version}-${jtype}";
+    sha256 = "1776021m0j1aanzwg60by83n53pw7i6afd5wplfzczwk8bywax4p";
+    name = "jsource";
+  };
+
+  buildInputs = [ readline libedit bc ];
+  bits = if stdenv.is64bit then "64" else "32";
+  platform =
+    if (stdenv.isAarch32 || stdenv.isAarch64) then "raspberry" else
+    if stdenv.isLinux then "linux" else
+    if stdenv.isDarwin then "darwin" else
+    "unknown";
+  variant = if stdenv.isx86_64 && avxSupport then "avx" else "";
+
+  j64x="j${bits}${variant}";
+
+  doCheck = true;
+
+  # Causes build failure due to warning
+  hardeningDisable = stdenv.lib.optional stdenv.cc.isClang "strictoverflow";
+
+  buildPhase = ''
+    export SOURCE_DIR=$(pwd)
+    export HOME=$TMPDIR
+    export JLIB=$SOURCE_DIR/jlibrary
+
+    echo $OUT_DIR
+
+    cd make2
+
+    patchShebangs .
+    sed -i $JLIB/bin/profile.ijs -e "s@'/usr/share/j/.*'@'$out/share/j'@;"
+
+    j64x="${j64x}" ./build_all.sh
+
+    cp $SOURCE_DIR/bin/${platform}/j${bits}*/* "$JLIB/bin"
+  '';
+
+  checkPhase = ''
+
+    echo 'i. 5' | $JLIB/bin/jconsole | fgrep "0 1 2 3 4"
+
+    # Now run the real tests
+    cd $SOURCE_DIR/test
+    for f in *.ijs
+    do
+      echo $f
+      $JLIB/bin/jconsole < $f > /dev/null || echo FAIL && echo PASS
+    done
+  '';
+
+  installPhase = ''
+    mkdir -p "$out"
+
+    mkdir -p "$out/share/j"
+    cp -r $JLIB/{addons,system} "$out/share/j"
+    cp -r $JLIB/bin "$out"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "J programming language, an ASCII-based APL successor";
+    maintainers = with maintainers; [ raskin synthetica ];
+    platforms = with platforms; linux ++ darwin;
+    license = licenses.gpl3Plus;
+    homepage = "http://jsoftware.com/";
+  };
+}