diff --git a/pkgs/by-name/de/deno/fetchers.nix b/pkgs/by-name/de/deno/fetchers.nix deleted file mode 100644 index cde3418ee764..000000000000 --- a/pkgs/by-name/de/deno/fetchers.nix +++ /dev/null @@ -1,21 +0,0 @@ -# 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_simdutf_release_${stdenv.hostPlatform.rust.rustcTarget}.a.gz"; - sha256 = args.shas.${stdenv.hostPlatform.system}; - meta = { - inherit (args) version; - sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; - }; - }; -} diff --git a/pkgs/by-name/de/deno/package.nix b/pkgs/by-name/de/deno/package.nix index 87c9bd465cd0..bcc620b3d62d 100644 --- a/pkgs/by-name/de/deno/package.nix +++ b/pkgs/by-name/de/deno/package.nix @@ -9,7 +9,7 @@ protobuf, installShellFiles, makeBinaryWrapper, - librusty_v8 ? callPackage ./librusty_v8.nix { }, + librusty_v8 ? callPackage ./rusty-v8 { }, libffi, sqlite, lld, @@ -248,7 +248,7 @@ rustPlatform.buildRustPackage (finalAttrs: { }; meta = { - homepage = "https://deno.land/"; + homepage = "https://deno.com/"; changelog = "https://github.com/denoland/deno/releases/tag/v${finalAttrs.version}"; description = "Secure runtime for JavaScript and TypeScript"; longDescription = '' diff --git a/pkgs/by-name/de/deno/librusty_v8.nix b/pkgs/by-name/de/deno/rusty-v8/default.nix similarity index 89% rename from pkgs/by-name/de/deno/librusty_v8.nix rename to pkgs/by-name/de/deno/rusty-v8/default.nix index ee70ced5226a..725ecebed0b3 100644 --- a/pkgs/by-name/de/deno/librusty_v8.nix +++ b/pkgs/by-name/de/deno/rusty-v8/default.nix @@ -132,7 +132,6 @@ rustPlatform.buildRustPackage (finalAttrs: { "rustc_version=\"${rustc.version}\"" "rust_sysroot_absolute=\"${rustToolchain}\"" "rust_bindgen_root=\"${rustToolchain}\"" - "use_chromium_rust_toolchain=true" # To accomodate our newer rustc compiler "removed_rust_stdlib_libs=[\"adler\"]" "added_rust_stdlib_libs=[\"adler2\"]" @@ -145,6 +144,15 @@ rustPlatform.buildRustPackage (finalAttrs: { buildFeatures = [ "simdutf" ]; + hardeningDisable = [ + # rusty-v8 has its own default hardening flags, which are "extensive" for release builds as long as `use_custom_libcxx` stays true. + # Avoids many warnings about redefined macros (on build failures) and uses the upstream flag. + "libcxxhardeningfast" + # from Arch Linux: this uses malloc_usable_size, which is incompatible with fortification level 3 + # https://gitlab.archlinux.org/archlinux/packaging/packages/deno/-/blob/cd9bdf9e67381da413142413646bd8648807510a/PKGBUILD#L49 + "fortify3" + ]; + checkFlags = [ # These tests probably fail due to a more recent rustc version (upstream: 1.89.0, here: 1.93.0) "--skip=ui" diff --git a/pkgs/by-name/de/deno/librusty_v8-darwin-fix-__rust_no_alloc_shim_is_unstable_v2.patch b/pkgs/by-name/de/deno/rusty-v8/librusty_v8-darwin-fix-__rust_no_alloc_shim_is_unstable_v2.patch similarity index 100% rename from pkgs/by-name/de/deno/librusty_v8-darwin-fix-__rust_no_alloc_shim_is_unstable_v2.patch rename to pkgs/by-name/de/deno/rusty-v8/librusty_v8-darwin-fix-__rust_no_alloc_shim_is_unstable_v2.patch diff --git a/pkgs/by-name/de/deno/librusty_v8_no_downloads.patch b/pkgs/by-name/de/deno/rusty-v8/librusty_v8_no_downloads.patch similarity index 100% rename from pkgs/by-name/de/deno/librusty_v8_no_downloads.patch rename to pkgs/by-name/de/deno/rusty-v8/librusty_v8_no_downloads.patch diff --git a/pkgs/by-name/de/deno/librusty_v8_revert_-fno-lifetime-dse.patch b/pkgs/by-name/de/deno/rusty-v8/librusty_v8_revert_-fno-lifetime-dse.patch similarity index 100% rename from pkgs/by-name/de/deno/librusty_v8_revert_-fno-lifetime-dse.patch rename to pkgs/by-name/de/deno/rusty-v8/librusty_v8_revert_-fno-lifetime-dse.patch diff --git a/pkgs/by-name/de/deno/update/librusty_v8.ts b/pkgs/by-name/de/deno/update/librusty_v8.ts deleted file mode 100644 index 8c02d1a63d22..000000000000 --- a/pkgs/by-name/de/deno/update/librusty_v8.ts +++ /dev/null @@ -1,74 +0,0 @@ -import * as toml from "jsr:@std/toml@1.0.1"; -import { getExistingVersion, logger, run, write } from "./common.ts"; - -const log = logger("librusty_v8"); - -export interface Architecture { - nix: string; - rust: string; -} -interface PrefetchResult { - arch: Architecture; - sha256: string; -} - -const getCargoLock = async ( - owner: string, - repo: string, - version: string, -) => - fetch(`https://github.com/${owner}/${repo}/raw/${version}/Cargo.lock`) - .then((res) => res.text()) - .then((txt) => toml.parse(txt)); - -const fetchArchShaTasks = (version: string, arches: Architecture[]) => - arches.map( - async (arch: Architecture): Promise => { - log("Fetching:", arch.nix); - const sha256 = await run("nix-prefetch-url", [ - `https://github.com/denoland/rusty_v8/releases/download/v${version}/librusty_v8_simdutf_release_${arch.rust}.a.gz` - ]); - const sha256_sri = await run("nix-hash", ["--type", "sha256", "--to-sri", sha256]); - log("Done: ", arch.nix); - return { arch, sha256: sha256_sri }; - }, - ); - -const templateDeps = (version: string, deps: PrefetchResult[]) => - `# auto-generated file -- DO NOT EDIT! -{ fetchLibrustyV8 }: - -fetchLibrustyV8 { - version = "${version}"; - shas = { -${deps.map(({ arch, sha256 }) => ` ${arch.nix} = "${sha256}";`).join("\n")} - }; -} -`; - -export async function updateLibrustyV8( - filePath: string, - owner: string, - repo: string, - denoVersion: string, - arches: Architecture[], -) { - log("Starting librusty_v8 update"); - // 0.0.0 - const cargoLockData = await getCargoLock(owner, repo, denoVersion); - console.log(cargoLockData); - const packageItem = cargoLockData.package.find(({ name }) => name === "v8"); - const version = packageItem.version; - if (typeof version !== "string") { - throw "no librusty_v8 version"; - } - log("librusty_v8 version:", version); - const existingVersion = await getExistingVersion(filePath); - if (version === existingVersion) { - log("Version already matches latest, skipping..."); - return; - } - const archShaResults = await Promise.all(fetchArchShaTasks(version, arches)); - await write(filePath, templateDeps(version, archShaResults)); - log("Finished deps update"); -}