-
-
Notifications
You must be signed in to change notification settings - Fork 14k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
12 changed files
with
250 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,118 @@ | ||
{ | ||
stdenv, | ||
lib, | ||
callPackage, | ||
fetchFromGitHub, | ||
rustPlatform, | ||
cmake, | ||
protobuf, | ||
installShellFiles, | ||
libiconv, | ||
darwin, | ||
librusty_v8 ? callPackage ./librusty_v8.nix { | ||
inherit (callPackage ./fetchers.nix { }) fetchLibrustyV8; | ||
}, | ||
}: | ||
rustPlatform.buildRustPackage rec { | ||
pname = "deno"; | ||
version = "1.46.3"; | ||
|
||
src = fetchFromGitHub { | ||
owner = "denoland"; | ||
repo = "deno"; | ||
rev = "refs/tags/v${version}"; | ||
hash = "sha256-AM6SjcIHo6Koxcnznhkv3cXoKaMy2TEVpiWe/bczDuA="; | ||
}; | ||
|
||
cargoHash = "sha256-D+CZpb6OTzM5Il0k8GQB7qSONy4myE5yKlaSkLLqHT8="; | ||
|
||
postPatch = '' | ||
# upstream uses lld on aarch64-darwin for faster builds | ||
# within nix lld looks for CoreFoundation rather than CoreFoundation.tbd and fails | ||
substituteInPlace .cargo/config.toml --replace "-fuse-ld=lld " "" | ||
''; | ||
|
||
# uses zlib-ng but can't dynamically link yet | ||
# https://github.com/rust-lang/libz-sys/issues/158 | ||
nativeBuildInputs = [ | ||
# required by libz-ng-sys crate | ||
cmake | ||
# required by deno_kv crate | ||
protobuf | ||
installShellFiles | ||
]; | ||
buildInputs = lib.optionals stdenv.isDarwin ( | ||
[ | ||
libiconv | ||
darwin.libobjc | ||
] | ||
++ (with darwin.apple_sdk_11_0.frameworks; [ | ||
Security | ||
CoreServices | ||
Metal | ||
MetalPerformanceShaders | ||
Foundation | ||
QuartzCore | ||
]) | ||
); | ||
|
||
buildAndTestSubdir = "cli"; | ||
|
||
# work around "error: unknown warning group '-Wunused-but-set-parameter'" | ||
env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-unknown-warning-option"; | ||
# The v8 package will try to download a `librusty_v8.a` release at build time to our read-only filesystem | ||
# To avoid this we pre-download the file and export it via RUSTY_V8_ARCHIVE | ||
env.RUSTY_V8_ARCHIVE = librusty_v8; | ||
|
||
# Tests have some inconsistencies between runs with output integration tests | ||
# Skipping until resolved | ||
doCheck = false; | ||
|
||
preInstall = '' | ||
find ./target -name libswc_common${stdenv.hostPlatform.extensions.sharedLibrary} -delete | ||
''; | ||
|
||
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) '' | ||
installShellCompletion --cmd deno \ | ||
--bash <($out/bin/deno completions bash) \ | ||
--fish <($out/bin/deno completions fish) \ | ||
--zsh <($out/bin/deno completions zsh) | ||
''; | ||
|
||
doInstallCheck = true; | ||
installCheckPhase = '' | ||
runHook preInstallCheck | ||
$out/bin/deno --help | ||
$out/bin/deno --version | grep "deno ${version}" | ||
runHook postInstallCheck | ||
''; | ||
|
||
passthru.tests = callPackage ./tests { }; | ||
|
||
meta = with lib; { | ||
homepage = "https://deno.land/"; | ||
changelog = "https://github.com/denoland/deno/releases/tag/v${version}"; | ||
description = "Secure runtime for JavaScript and TypeScript"; | ||
longDescription = '' | ||
Deno aims to be a productive and secure scripting environment for the modern programmer. | ||
Deno will always be distributed as a single executable. | ||
Given a URL to a Deno program, it is runnable with nothing more than the ~15 megabyte zipped executable. | ||
Deno explicitly takes on the role of both runtime and package manager. | ||
It uses a standard browser-compatible protocol for loading modules: URLs. | ||
Among other things, Deno is a great replacement for utility scripts that may have been historically written with | ||
bash or python. | ||
''; | ||
license = licenses.mit; | ||
mainProgram = "deno"; | ||
maintainers = with maintainers; [ jk ]; | ||
platforms = [ | ||
"x86_64-linux" | ||
"aarch64-linux" | ||
"x86_64-darwin" | ||
"aarch64-darwin" | ||
]; | ||
# NOTE: `aligned_alloc` error on darwin SDK < 10.15. Can't do usual overrideSDK with rust toolchain in current implementation. | ||
# Should be fixed with darwin SDK refactor and can be revisited. | ||
badPlatforms = [ "x86_64-darwin" ]; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# not a stable interface, do not reference outside the deno package but make a | ||
# copy if you need | ||
{ | ||
lib, | ||
stdenv, | ||
fetchurl, | ||
}: | ||
|
||
{ | ||
fetchLibrustyV8 = | ||
args: | ||
fetchurl { | ||
name = "librusty_v8-${args.version}"; | ||
url = "https://github.com/denoland/rusty_v8/releases/download/v${args.version}/librusty_v8_release_${stdenv.hostPlatform.rust.rustcTarget}.a.gz"; | ||
sha256 = args.shas.${stdenv.hostPlatform.system}; | ||
meta = { | ||
inherit (args) version; | ||
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; | ||
}; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# auto-generated file -- DO NOT EDIT! | ||
{ fetchLibrustyV8 }: | ||
|
||
fetchLibrustyV8 { | ||
version = "0.105.0"; | ||
shas = { | ||
x86_64-linux = "sha256-9yON4DNPxm4IUZSLZp9VZtzSRPPWX1tEuQLVJmN8cLs="; | ||
aarch64-linux = "sha256-5vAjw2vimjCHKPxjIp5vcwMCWUUDYVlk4QyOeEI0DLY="; | ||
x86_64-darwin = "sha256-o4WRkg4ptiJTNMkorn5K+P8xOJwpChM5PqkZCjP076g="; | ||
aarch64-darwin = "sha256-ZuWBnvxu1PgDtjtguxtj3BhFO01AChlbjAS0kZUws3A="; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
console.log(1 + 1) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
{ | ||
deno, | ||
runCommand, | ||
lib, | ||
testers, | ||
}: | ||
let | ||
testDenoRun = | ||
name: | ||
{ | ||
args ? "", | ||
dir ? ./. + "/${name}", | ||
file ? "index.ts", | ||
expected ? "", | ||
expectFailure ? false, | ||
}: | ||
let | ||
command = "deno run ${args} ${dir}/${file}"; | ||
in | ||
runCommand "deno-test-${name}" | ||
{ | ||
nativeBuildInputs = [ deno ]; | ||
meta.timeout = 60; | ||
} | ||
'' | ||
HOME=$(mktemp -d) | ||
if output=$(${command} 2>&1); then | ||
if [[ $output =~ '${expected}' ]]; then | ||
echo "Test '${name}' passed" | ||
touch $out | ||
else | ||
echo -n ${lib.escapeShellArg command} >&2 | ||
echo " output did not match what was expected." >&2 | ||
echo "The expected was:" >&2 | ||
echo '${expected}' >&2 | ||
echo "The output was:" >&2 | ||
echo "$output" >&2 | ||
exit 1 | ||
fi | ||
else | ||
if [[ "${toString expectFailure}" == "1" ]]; then | ||
echo "Test '${name}' failed as expected" | ||
touch $out | ||
exit 0 | ||
fi | ||
echo -n ${lib.escapeShellArg command} >&2 | ||
echo " returned a non-zero exit code." >&2 | ||
echo "$output" >&2 | ||
exit 1 | ||
fi | ||
''; | ||
in | ||
(lib.mapAttrs testDenoRun { | ||
basic = { | ||
dir = ./.; | ||
file = "basic.ts"; | ||
expected = "2"; | ||
}; | ||
import-json = { | ||
expected = "hello from JSON"; | ||
}; | ||
import-ts = { | ||
expected = "hello from ts"; | ||
}; | ||
read-file = { | ||
args = "--allow-read"; | ||
expected = "hello from a file"; | ||
}; | ||
fail-read-file = { | ||
expectFailure = true; | ||
dir = ./read-file; | ||
}; | ||
}) | ||
// { | ||
version = testers.testVersion { | ||
package = deno; | ||
command = "deno --version"; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{ "msg": "hello from JSON" } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
import file from "./data.json" assert { type: "json" }; | ||
console.log(file.msg); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
import { sayHello } from "./lib.ts" | ||
|
||
sayHello("ts") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
export function sayHello(thing: string) { | ||
console.log(`hello from ${thing}`); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
hello from a file |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
// trim 'file://' prefix | ||
const thisDir = Deno.mainModule.substring(7, Deno.mainModule.length); | ||
const getParent = (path: string) => path.substring(0, path.lastIndexOf("/")) | ||
const text = await Deno.readTextFile(getParent(thisDir) + "/data.txt"); | ||
console.log(text); |