Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at fix-function-merge 69 lines 1.8 kB view raw
1{ 2 fetchurl, 3 frink, 4 jdk, 5 lib, 6 rlwrap, 7 stdenv, 8 testers, 9}: 10stdenv.mkDerivation rec { 11 pname = "frink"; 12 version = "2024-05-09"; 13 14 src = fetchurl { 15 # Upstream does not provide versioned download links 16 url = "https://web.archive.org/web/20240605193919/https://frinklang.org/frinkjar/frink-tng.jar"; 17 sha256 = "sha256-ceV1p9wsXprcNLhol79evswVZ1SpH5IzfSbl8st4cmU="; 18 }; 19 20 dontUnpack = true; 21 22 nativeBuildInputs = [ jdk ]; 23 24 buildInputs = [ 25 jdk 26 rlwrap 27 ]; 28 29 installPhase = '' 30 runHook preInstall 31 32 mkdir -p $out/bin $out/lib 33 34 cp ${src} $out/lib/frink-tng.jar 35 36 # Generate rlwrap helper files. 37 # See https://frinklang.org/fsp/colorize.fsp?f=listUnits.frink 38 # and https://frinklang.org/fsp/colorize.fsp?f=listFunctions.frink 39 java -classpath "$out/lib/frink-tng.jar" frink.gui.FrinkStarter -e 'joinln[lexicalSort[units[]]]' > $out/lib/unitnames.txt 40 java -classpath "$out/lib/frink-tng.jar" frink.gui.FrinkStarter -e 'joinln[map[{|f| 41 f =~ %s/\s+//g 42 return "$f$" 43 }, lexicalSort[functions[]]]]' > $out/lib/functionnames.txt 44 45 cat > "$out/bin/frink" << EOF 46 #!${stdenv.shell} 47 exec ${rlwrap}/bin/rlwrap -f $out/lib/unitnames.txt -b '$' -f $out/lib/functionnames.txt ${jdk}/bin/java -classpath "$out/lib/frink-tng.jar" frink.gui.FrinkStarter "\$@" 48 EOF 49 50 chmod a+x "$out/bin/frink" 51 52 runHook postInstall 53 ''; 54 55 meta = with lib; { 56 description = "Practical calculating tool and programming language"; 57 homepage = "https://frinklang.org/"; 58 license = licenses.unfree; 59 sourceProvenance = [ sourceTypes.binaryBytecode ]; 60 maintainers = [ maintainers.stefanfehrenbach ]; 61 }; 62 63 passthru.tests = { 64 callFrinkVersion = testers.testVersion { 65 package = frink; 66 command = "frink -e 'FrinkVersion[]'"; 67 }; 68 }; 69}