Merge pull request #325089 from feathecutie/inko
inko: init at 0.15.0 & ivm: init at 0.5.0
This commit is contained in:
commit
fa4b81d8e9
68
pkgs/by-name/in/inko/package.nix
Normal file
68
pkgs/by-name/in/inko/package.nix
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
{ lib
|
||||||
|
, rustPlatform
|
||||||
|
, fetchFromGitHub
|
||||||
|
, llvm_16
|
||||||
|
, libffi
|
||||||
|
, libz
|
||||||
|
, libxml2
|
||||||
|
, ncurses
|
||||||
|
, stdenv
|
||||||
|
, makeWrapper
|
||||||
|
, callPackage
|
||||||
|
}:
|
||||||
|
|
||||||
|
rustPlatform.buildRustPackage rec {
|
||||||
|
pname = "inko";
|
||||||
|
version = "0.15.0";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "inko-lang";
|
||||||
|
repo = "inko";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-Iojv8pTyILYpLFnoTlgUGmlfWWH0DgsGBRxzd3oRNwA=";
|
||||||
|
};
|
||||||
|
|
||||||
|
cargoHash = "sha256-PaZD7wwcami6EWvOHLislNkwQhCZItN9XZkPSExwo0U=";
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
libffi
|
||||||
|
libz
|
||||||
|
libxml2
|
||||||
|
ncurses
|
||||||
|
stdenv.cc.cc.lib
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
llvm_16
|
||||||
|
makeWrapper
|
||||||
|
];
|
||||||
|
|
||||||
|
env = {
|
||||||
|
INKO_STD = "${placeholder "out"}/lib";
|
||||||
|
INKO_RT = "${placeholder "out"}/lib/runtime";
|
||||||
|
};
|
||||||
|
|
||||||
|
postFixup = ''
|
||||||
|
wrapProgram $out/bin/inko \
|
||||||
|
--prefix PATH : ${lib.makeBinPath [ stdenv.cc ]}
|
||||||
|
'';
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
mkdir -p $out/lib/runtime
|
||||||
|
mv $out/lib/*.a $out/lib/runtime/
|
||||||
|
cp -r std/src/* $out/lib/
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru.tests = {
|
||||||
|
simple = callPackage ./test.nix { };
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Language for building concurrent software with confidence";
|
||||||
|
homepage = "https://inko-lang.org/";
|
||||||
|
license = lib.licenses.mpl20;
|
||||||
|
maintainers = [ lib.maintainers.feathecutie ];
|
||||||
|
platforms = lib.platforms.unix;
|
||||||
|
mainProgram = "inko";
|
||||||
|
};
|
||||||
|
}
|
39
pkgs/by-name/in/inko/test.nix
Normal file
39
pkgs/by-name/in/inko/test.nix
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
{ inko
|
||||||
|
, writeText
|
||||||
|
, runCommand
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
source = writeText "hello.inko" /* inko */ ''
|
||||||
|
import std.process (sleep)
|
||||||
|
import std.stdio (STDOUT)
|
||||||
|
import std.time (Duration)
|
||||||
|
|
||||||
|
class async Printer {
|
||||||
|
fn async print(message: String, channel: Channel[Nil]) {
|
||||||
|
let _ = STDOUT.new.print(message)
|
||||||
|
|
||||||
|
channel.send(nil)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class async Main {
|
||||||
|
fn async main {
|
||||||
|
let channel = Channel.new(size: 2)
|
||||||
|
|
||||||
|
Printer().print('Hello', channel)
|
||||||
|
Printer().print('world', channel)
|
||||||
|
|
||||||
|
channel.receive
|
||||||
|
channel.receive
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
|
||||||
|
runCommand "inko-test" { } ''
|
||||||
|
${inko}/bin/inko run ${source} > $out
|
||||||
|
cat $out | grep -q Hello
|
||||||
|
cat $out | grep -q world
|
||||||
|
''
|
54
pkgs/by-name/iv/ivm/package.nix
Normal file
54
pkgs/by-name/iv/ivm/package.nix
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
{ lib
|
||||||
|
, rustPlatform
|
||||||
|
, fetchFromGitHub
|
||||||
|
, makeWrapper
|
||||||
|
, cargo
|
||||||
|
, llvm_16
|
||||||
|
, stdenv
|
||||||
|
, libffi
|
||||||
|
, libz
|
||||||
|
, libxml2
|
||||||
|
, ncurses
|
||||||
|
}:
|
||||||
|
|
||||||
|
rustPlatform.buildRustPackage rec {
|
||||||
|
pname = "ivm";
|
||||||
|
version = "0.5.0";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "inko-lang";
|
||||||
|
repo = "ivm";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-z0oo1JUZbX3iT8N9+14NcqUzalpARImcbtUiQYS4djA=";
|
||||||
|
};
|
||||||
|
|
||||||
|
cargoHash = "sha256-EP3fS4lAGOaXJXAM22ZCn4+9Ah8TM1+wvNerKCKByo0=";
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
stdenv.cc.cc.lib
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
makeWrapper
|
||||||
|
];
|
||||||
|
|
||||||
|
postFixup = ''
|
||||||
|
wrapProgram $out/bin/ivm \
|
||||||
|
--prefix PATH : ${lib.makeBinPath [ cargo llvm_16.dev stdenv.cc ]} \
|
||||||
|
--prefix LIBRARY_PATH : ${lib.makeLibraryPath [
|
||||||
|
libffi
|
||||||
|
libz
|
||||||
|
libxml2
|
||||||
|
ncurses
|
||||||
|
]}
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Cross-platform Inko version manager";
|
||||||
|
homepage = "https://github.com/inko-lang/ivm";
|
||||||
|
license = lib.licenses.mpl20;
|
||||||
|
maintainers = [ lib.maintainers.feathecutie ];
|
||||||
|
platforms = lib.platforms.unix;
|
||||||
|
mainProgram = "ivm";
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user