An almost complete rewrite was made. Now the detection of main features are made by Nix code, emulating the detection of upstream source scripts.
108 lines
2.4 KiB
Nix
108 lines
2.4 KiB
Nix
{ lib
|
|
, stdenv
|
|
, fetchFromGitHub
|
|
, bc
|
|
, libedit
|
|
, readline
|
|
, avxSupport ? stdenv.hostPlatform.avxSupport
|
|
}:
|
|
|
|
stdenv.mkDerivation rec {
|
|
pname = "j";
|
|
version = "904-beta-c";
|
|
|
|
src = fetchFromGitHub {
|
|
name = "${pname}-source";
|
|
owner = "jsoftware";
|
|
repo = "jsource";
|
|
rev = "j${version}";
|
|
hash = "sha256-MzEO/saHEBl1JwVlFC6P2UKm9RZnV7KVrNd9h4cPV/w=";
|
|
};
|
|
|
|
buildInputs = [
|
|
readline
|
|
libedit
|
|
bc
|
|
];
|
|
|
|
dontConfigure = true;
|
|
|
|
# emulating build_all.sh configuration variables
|
|
jplatform =
|
|
if stdenv.isDarwin then "darwin"
|
|
else if (stdenv.isAarch32 || stdenv.isAarch64) then "raspberry"
|
|
else if stdenv.isLinux then "linux"
|
|
else "unsupported";
|
|
|
|
j64x =
|
|
if stdenv.is32bit then "j32"
|
|
else if stdenv.isx86_64 then
|
|
if (stdenv.isLinux && avxSupport) then "j64avx" else "j64"
|
|
else if stdenv.isAarch64 then
|
|
if stdenv.isDarwin then "j64arm" else "j64"
|
|
else "unsupported";
|
|
|
|
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"
|
|
|
|
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"
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
meta = with lib; {
|
|
homepage = "http://jsoftware.com/";
|
|
description = "J programming language, an ASCII-based APL successor";
|
|
longDescription = ''
|
|
J is a high-level, general-purpose programming language that is
|
|
particularly suited to the mathematical, statistical, and logical analysis
|
|
of data. It is a powerful tool for developing algorithms and exploring
|
|
problems that are not already well understood.
|
|
'';
|
|
license = licenses.gpl3Plus;
|
|
maintainers = with maintainers; [ raskin synthetica AndersonTorres ];
|
|
platforms = with platforms; unix;
|
|
};
|
|
}
|