diff --git a/pkgs/development/interpreters/j/default.nix b/pkgs/development/interpreters/j/default.nix index 2da499352b3e..97a8064cc60d 100644 --- a/pkgs/development/interpreters/j/default.nix +++ b/pkgs/development/interpreters/j/default.nix @@ -1,37 +1,34 @@ { lib , stdenv , fetchFromGitHub -, bc -, libedit -, readline -, avxSupport ? stdenv.hostPlatform.avxSupport +, which +, gmp +, avx2Support ? stdenv.hostPlatform.avx2Support }: stdenv.mkDerivation rec { pname = "j"; - version = "904-beta-c"; + version = "9.5.1"; src = fetchFromGitHub { - name = "${pname}-source"; owner = "jsoftware"; repo = "jsource"; - rev = "j${version}"; - hash = "sha256-MzEO/saHEBl1JwVlFC6P2UKm9RZnV7KVrNd9h4cPV/w="; + rev = "${version}"; + hash = "sha256-QRQhE8138+zaGQOdq9xUOrifkVIprzbJWbmMK+WhEOU="; }; - buildInputs = [ - readline - libedit - bc - ]; + nativeBuildInputs = [ which ]; + buildInputs = [ gmp ]; patches = [ ./fix-install-path.patch ]; + enableParallelBuilding = true; + dontConfigure = true; - # emulating build_all.sh configuration variables + # Emulate jplatform64.sh configuration variables jplatform = if stdenv.isDarwin then "darwin" else if stdenv.hostPlatform.isAarch then "raspberry" @@ -41,62 +38,39 @@ stdenv.mkDerivation rec { j64x = if stdenv.is32bit then "j32" else if stdenv.isx86_64 then - if (stdenv.isLinux && avxSupport) then "j64avx" else "j64" + if stdenv.isLinux && avx2Support then "j64avx2" else "j64" else if stdenv.isAarch64 then if stdenv.isDarwin then "j64arm" else "j64" else "unsupported"; + env.NIX_LDFLAGS = "-lgmp"; + buildPhase = '' runHook preBuild - - export SRCDIR=$(pwd) - export HOME=$TMPDIR - export JLIB=$SRCDIR/jlibrary - export CC=cc - - cd make2 - - patchShebangs . - - j64x="${j64x}" jplatform="${jplatform}" ./build_all.sh - - cp -v $SRCDIR/bin/${jplatform}/${j64x}/* "$JLIB/bin" - + MAKEFLAGS+=" ''${enableParallelBuilding:+-j$NIX_BUILD_CORES}" \ + jplatform=${jplatform} j64x=${j64x} make2/build_all.sh + cp -v bin/${jplatform}/${j64x}/* jlibrary/bin/ runHook postBuild ''; - doCheck = true; - - checkPhase = '' - runHook preCheck - - echo "Smoke test" - echo 'i. 10' | $JLIB/bin/jconsole | fgrep "0 1 2 3 4 5 6 7 8 9" - - # Now run the real tests - pushd $SRCDIR/test - for f in *.ijs - do - echo -n "test $f: " - $JLIB/bin/jconsole < $f > /dev/null || echo FAIL && echo PASS - done - popd - - runHook postCheck - ''; - installPhase = '' runHook preInstall - - mkdir -p "$out/share/j/" - cp -r $JLIB/{addons,system} "$out/share/j" - cp -r $JLIB/bin "$out" - + mkdir -p $out/share/j + cp -r jlibrary/{addons,system} $out/share/j/ + cp -r jlibrary/bin $out/ runHook postInstall ''; + doInstallCheck = false; # The "gregex" test fails due to not finding PCRE2 + + installCheckPhase = '' + runHook preInstallCheck + HOME="$TMPDIR" $out/bin/jconsole -lib $out/bin/libj* script/testga.ijs + runHook postInstallCheck + ''; + meta = with lib; { - homepage = "http://jsoftware.com/"; + homepage = "https://jsoftware.com/"; description = "J programming language, an ASCII-based APL successor"; longDescription = '' J is a high-level, general-purpose programming language that is @@ -104,8 +78,10 @@ stdenv.mkDerivation rec { of data. It is a powerful tool for developing algorithms and exploring problems that are not already well understood. ''; - license = licenses.gpl3Plus; + license = licenses.gpl3Only; maintainers = with maintainers; [ raskin synthetica AndersonTorres ]; - platforms = with platforms; unix; + broken = stdenv.isDarwin; + platforms = platforms.all; + mainProgram = "jconsole"; }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1a210d1e0ace..4b33aa976e4d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -17634,9 +17634,7 @@ with pkgs; ivy = callPackage ../development/interpreters/ivy { }; - j = callPackage ../development/interpreters/j { - stdenv = clangStdenv; - }; + j = callPackage ../development/interpreters/j { }; jacinda = haskell.lib.compose.justStaticExecutables haskellPackages.jacinda;