![stuebinm](/assets/img/avatar_default.png)
The nixpkgs-unstable channel's programs.sqlite was used to identify packages producing exactly one binary, and these automatically added to their package definitions wherever possible.
67 lines
1.5 KiB
Nix
67 lines
1.5 KiB
Nix
{ lib
|
|
, stdenv
|
|
, fetchFromGitHub
|
|
, meson
|
|
, ninja
|
|
, nix-update-script
|
|
, runCommand
|
|
}:
|
|
|
|
stdenv.mkDerivation (finalAttrs: {
|
|
pname = "janet";
|
|
version = "1.33.0";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "janet-lang";
|
|
repo = "janet";
|
|
rev = "v${finalAttrs.version}";
|
|
hash = "sha256-kXbJtWxvysC4hLkgVyPpkunFhN+2iVu+S+LCo5ikj5s=";
|
|
};
|
|
|
|
postPatch = ''
|
|
substituteInPlace janet.1 \
|
|
--replace /usr/local/ $out/
|
|
'' + lib.optionalString stdenv.isDarwin ''
|
|
# error: Socket is not connected
|
|
substituteInPlace meson.build \
|
|
--replace "'test/suite-ev.janet'," ""
|
|
'';
|
|
|
|
nativeBuildInputs = [ meson ninja ];
|
|
|
|
mesonBuildType = "release";
|
|
mesonFlags = [ "-Dgit_hash=release" ];
|
|
|
|
doCheck = true;
|
|
|
|
doInstallCheck = true;
|
|
|
|
installCheckPhase = ''
|
|
$out/bin/janet -e '(+ 1 2 3)'
|
|
'';
|
|
|
|
passthru = {
|
|
tests.run = runCommand "janet-test-run" {
|
|
nativeBuildInputs = [finalAttrs.finalPackage];
|
|
} ''
|
|
echo "(+ 1 2 3)" | janet | tail -n 1 > arithmeticTest.txt;
|
|
diff -U3 --color=auto <(cat arithmeticTest.txt) <(echo "6");
|
|
|
|
echo "(print \"Hello, World!\")" | janet | tail -n 2 > ioTest.txt;
|
|
diff -U3 --color=auto <(cat ioTest.txt) <(echo -e "Hello, World!\nnil");
|
|
|
|
touch $out;
|
|
'';
|
|
updateScript = nix-update-script {};
|
|
};
|
|
|
|
meta = with lib; {
|
|
description = "Janet programming language";
|
|
mainProgram = "janet";
|
|
homepage = "https://janet-lang.org/";
|
|
license = licenses.mit;
|
|
maintainers = with maintainers; [ andrewchambers peterhoeg ];
|
|
platforms = platforms.all;
|
|
};
|
|
})
|