Skip to content

Commit

Permalink
deno: 1.6.3 -> 1.8.0
Browse files Browse the repository at this point in the history
Added aarch64-darwin as it's been manually complied and added to
releases since 0.14.0

Removed fetchSubmodules as it couldn't fetch wpt at detached commit
a51d36327febebc8634d7b523a7e620f4ebdbf26. Doesn't seem required for much
other than testing.

Added installCheckPhase

Moved the librusty_v8 stuff within the preBuild phase and changed the
names

Skipped 1.7.X releases as there wasn't an aarch64-linux release of
librusty_v8.a available
  • Loading branch information
06kellyjac committed Mar 12, 2021
1 parent 163ffe2 commit dd50d1d
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 35 deletions.
64 changes: 37 additions & 27 deletions pkgs/development/web/deno/default.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{ lib, stdenv
{ stdenv
, lib
, fetchurl
, fetchFromGitHub
, rust
Expand All @@ -7,27 +8,18 @@
, Security
, CoreServices
}:
let
deps = import ./deps.nix { };
arch = rust.toRustTarget stdenv.hostPlatform;
rustyV8Lib = with deps.rustyV8Lib; fetchurl {
url = "https://github.com/denoland/rusty_v8/releases/download/v${version}/librusty_v8_release_${arch}.a";
sha256 = sha256s."${stdenv.hostPlatform.system}";
meta = { inherit version; };
};
in

rustPlatform.buildRustPackage rec {
pname = "deno";
version = "1.6.3";
version = "1.8.0";

src = fetchFromGitHub {
owner = "denoland";
repo = pname;
rev = "v${version}";
sha256 = "1wmkx458fpsfw57ysawxc0ghxag8v051hiyswm7nnb7gckrm6j8z";
fetchSubmodules = true;
sha256 = "sha256-26VTwc99XunkTqsdP4b7axjflLL93PGkgjGtMmI4/4A=";
};
cargoSha256 = "08vzsp53019gmxkn8lpa6l84w3fvbrnr11lzrfgf99nmii6l2hq5";
cargoSha256 = "sha256-T/xu/uokDvf9nBXNL31oXl+L5KifSs+bF4J7Tfw37zs=";

# Install completions post-install
nativeBuildInputs = [ installShellFiles ];
Expand All @@ -36,37 +28,55 @@ rustPlatform.buildRustPackage rec {

# The rusty_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 place it in the locations it will require it in advance
preBuild = ''
_rusty_v8_setup() {
for v in "$@"; do
dir="target/$v/gn_out/obj"
mkdir -p "$dir" && cp "${rustyV8Lib}" "$dir/librusty_v8.a"
done
}
preBuild =
let
inherit (import ./deps.nix { }) librusty_v8;
arch = rust.toRustTarget stdenv.hostPlatform;
librusty_v8_release = fetchurl {
url = "https://github.com/denoland/rusty_v8/releases/download/v${librusty_v8.version}/librusty_v8_release_${arch}.a";
sha256 = librusty_v8.sha256s.${stdenv.hostPlatform.system};
meta = { inherit (librusty_v8) version; };
};
in
''
_rusty_v8_setup() {
for v in "$@"; do
dir="target/$v/gn_out/obj"
mkdir -p "$dir" && cp "${librusty_v8_release}" "$dir/librusty_v8.a"
done
}
# Copy over the `librusty_v8.a` file inside target/XYZ/gn_out/obj, symlink not allowed
_rusty_v8_setup "debug" "release" "${arch}/release"
'';
# Copy over the `librusty_v8.a` file inside target/XYZ/gn_out/obj, symlink not allowed
_rusty_v8_setup "debug" "release" "${arch}/release"
'';

# Tests have some inconsistencies between runs with output integration tests
# Skipping until resolved
doCheck = false;

postInstall = ''
# remove test plugin and test server
rm -rf $out/lib $out/bin/test_server
rm -r $out/lib $out/bin/test_server $out/bin/denort
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.updateScript = ./update/update.ts;

meta = with lib; {
homepage = "https://deno.land/";
changelog = "${src.meta.homepage}/releases/tag/v${version}";
changelog = "https://github.com/denoland/deno/releases/tag/v${version}";
description = "A secure runtime for JavaScript and TypeScript";
longDescription = ''
Deno aims to be a productive and secure scripting environment for the modern programmer.
Expand All @@ -79,6 +89,6 @@ rustPlatform.buildRustPackage rec {
'';
license = licenses.mit;
maintainers = with maintainers; [ jk ];
platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" ];
platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
};
}
11 changes: 6 additions & 5 deletions pkgs/development/web/deno/deps.nix

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions pkgs/development/web/deno/update/deps.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ const templateDeps = (version: string, deps: PrefetchResult[]) =>
`# auto-generated file -- DO NOT EDIT!
{}:
rec {
rustyV8Lib = {
librusty_v8 = {
version = "${version}";
sha256s = {
${deps.map((d) => ` ${d.arch.nix} = "${d.sha256}";`).join("\n")}
Expand All @@ -65,9 +65,9 @@ export async function updateDeps(
// 0.0.0
const version = await getRustyV8Version(owner, repo, denoVersion);
if (typeof version !== "string") {
throw "no rusty_v8 version";
throw "no librusty_v8 version";
}
log("rusty_v8 version:", version);
log("librusty_v8 version:", version);
const existingVersion = await getExistingVersion(filePath);
if (version === existingVersion) {
log("Version already matches latest, skipping...");
Expand Down
1 change: 1 addition & 0 deletions pkgs/development/web/deno/update/update.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ const architectures: Architecture[] = [
{ nix: "x86_64-linux", rust: "x86_64-unknown-linux-gnu" },
{ nix: "aarch64-linux", rust: "aarch64-unknown-linux-gnu" },
{ nix: "x86_64-darwin", rust: "x86_64-apple-darwin" },
{ nix: "aarch64-darwin", rust: "aarch64-apple-darwin" },
];

log("Updating deno");
Expand Down

0 comments on commit dd50d1d

Please sign in to comment.