From f4104c076ba453b09b6296a2533f7dbef7cc2157 Mon Sep 17 00:00:00 2001 From: Alexey Orlenko Date: Wed, 13 Sep 2023 15:22:26 +0200 Subject: [PATCH] nix: fix and update flake (#4224) - Update the Nix flake to get new things (especially newer Node.js and pnpm, current pnpm version was older than what driver-adapters required) - Switch from Node.js 18 to Node.js 20 to match .nvmrc - Fix the flake after updating to latest nixpkgs due to changes in cargo-auditable. The problem was that we were overriding cargo and rustc packages using our own overlay on top of rust-overlay, but the packages from rust-overlay do not accept the same arguments as those in nixpkgs. That's probably the reason why rust-overlay doesn't do that and defines new packages instead. The `rustToolchain` package we were defining was fine but I moved it to module arguments instead and got rid of the overlay completely. - Add a way to opt-out of nix for gitpod --- .envrc | 4 +++- Cargo.lock | 24 +++++++++++------------ flake.lock | 36 +++++++++++++++++------------------ nix/all-engines.nix | 13 ++++++++----- nix/args.nix | 10 +++++----- nix/shell.nix | 11 ++++++----- prisma-schema-wasm/Cargo.toml | 2 +- 7 files changed, 53 insertions(+), 47 deletions(-) diff --git a/.envrc b/.envrc index 3bd875aed813..29a3b25822d5 100644 --- a/.envrc +++ b/.envrc @@ -36,7 +36,9 @@ fi # Set up env vars and build inputs from flake.nix automatically for nix users. # If you don't use nix, you can safely ignore this. -if command -v nix &> /dev/null +# You can set the DISABLE_NIX environment variable if you're in an environment +# where nix is pre-installed (e.g. gitpod) but you don't want to use it. +if command -v nix &> /dev/null && [ -z ${DISABLE_NIX+x} ] then if nix flake metadata > /dev/null; then if type nix_direnv_watch_file &> /dev/null; then diff --git a/Cargo.lock b/Cargo.lock index 3cabff4234ff..66ab1a8b832d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5731,9 +5731,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -5741,16 +5741,16 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.28", "wasm-bindgen-shared", ] @@ -5768,9 +5768,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5778,22 +5778,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.28", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "wasm-logger" diff --git a/flake.lock b/flake.lock index 725613da576b..6f11c280dd3d 100644 --- a/flake.lock +++ b/flake.lock @@ -14,11 +14,11 @@ ] }, "locked": { - "lastModified": 1693163878, - "narHash": "sha256-HXuyMUVaRSoIA602jfFuYGXt6AMZ+WUxuvLq8iJmYTA=", + "lastModified": 1693787605, + "narHash": "sha256-rwq5U8dy+a9JFny/73L0SJu1GfWwATMPMTp7D+mjHy8=", "owner": "ipetkov", "repo": "crane", - "rev": "43db881168bc65b568d36ceb614a0fc8b276191b", + "rev": "8b4f7a4dab2120cf41e7957a28a853f45016bd9d", "type": "github" }, "original": { @@ -50,11 +50,11 @@ ] }, "locked": { - "lastModified": 1688466019, - "narHash": "sha256-VeM2akYrBYMsb4W/MmBo1zmaMfgbL4cH3Pu8PGyIwJ0=", + "lastModified": 1693611461, + "narHash": "sha256-aPODl8vAgGQ0ZYFIRisxYG5MOGSkIczvu2Cd8Gb9+1Y=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "8e8d955c22df93dbe24f19ea04f47a74adbdc5ec", + "rev": "7f53fdb7bdc5bb237da7fefef12d099e4fd611ca", "type": "github" }, "original": { @@ -70,11 +70,11 @@ ] }, "locked": { - "lastModified": 1689068808, - "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", + "lastModified": 1692799911, + "narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=", "owner": "numtide", "repo": "flake-utils", - "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", + "rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44", "type": "github" }, "original": { @@ -90,11 +90,11 @@ ] }, "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "lastModified": 1694102001, + "narHash": "sha256-vky6VPK1n1od6vXbqzOXnekrQpTL4hbPAwUhT5J9c9E=", "owner": "hercules-ci", "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "rev": "9e21c80adf67ebcb077d75bd5e7d724d21eeafd6", "type": "github" }, "original": { @@ -105,11 +105,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1689192006, - "narHash": "sha256-QM0f0d8oPphOTYJebsHioR9+FzJcy1QNIzREyubB91U=", + "lastModified": 1694422566, + "narHash": "sha256-lHJ+A9esOz9vln/3CJG23FV6Wd2OoOFbDeEs4cMGMqc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2de8efefb6ce7f5e4e75bdf57376a96555986841", + "rev": "3a2786eea085f040a66ecde1bc3ddc7099f6dbeb", "type": "github" }, "original": { @@ -139,11 +139,11 @@ ] }, "locked": { - "lastModified": 1693361441, - "narHash": "sha256-TRFdMQj9wSKMduNqe/1xF8TzcPWEdcn/hKWcVcZ5fO8=", + "lastModified": 1694484610, + "narHash": "sha256-aeSDkp7fkAqtVjW3QUn7vq7BKNlFul/BiGgdv7rK+mA=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "1fb2aa49635e9f30b6fa211ab7c454f7175e1ba3", + "rev": "c5b977a7e6a295697fa1f9c42174fd6313b38df4", "type": "github" }, "original": { diff --git a/nix/all-engines.nix b/nix/all-engines.nix index 9235060463a7..0e6a1c05b236 100644 --- a/nix/all-engines.nix +++ b/nix/all-engines.nix @@ -1,4 +1,4 @@ -{ pkgs, flakeInputs, lib, self', ... }: +{ pkgs, flakeInputs, lib, self', rustToolchain, ... }: let stdenv = pkgs.clangStdenv; @@ -15,7 +15,7 @@ let src = srcPath; name = "prisma-engines-source"; }; - craneLib = flakeInputs.crane.mkLib pkgs; + craneLib = (flakeInputs.crane.mkLib pkgs).overrideToolchain rustToolchain.default; deps = craneLib.vendorCargoDeps { inherit src; }; libSuffix = stdenv.hostPlatform.extensions.sharedLibrary; in @@ -34,6 +34,7 @@ in ] ++ lib.optionals stdenv.isDarwin [ perl # required to build openssl darwin.apple_sdk.frameworks.Security + iconv ]; configurePhase = '' @@ -53,13 +54,15 @@ in cp target/release/prisma-fmt $out/bin/ cp target/release/libquery_engine${libSuffix} $out/lib/libquery_engine.node ''; + + dontStrip = true; }; packages.test-cli = lib.makeOverridable ({ profile }: stdenv.mkDerivation { name = "test-cli"; inherit src; - inherit (self'.packages.prisma-engines) buildInputs nativeBuildInputs configurePhase; + inherit (self'.packages.prisma-engines) buildInputs nativeBuildInputs configurePhase dontStrip; buildPhase = "cargo build --profile=${profile} --bin=test-cli"; @@ -76,7 +79,7 @@ in ({ profile }: stdenv.mkDerivation { name = "query-engine-bin"; inherit src; - inherit (self'.packages.prisma-engines) buildInputs nativeBuildInputs configurePhase; + inherit (self'.packages.prisma-engines) buildInputs nativeBuildInputs configurePhase dontStrip; buildPhase = "cargo build --profile=${profile} --bin=query-engine"; @@ -96,7 +99,7 @@ in ({ profile }: stdenv.mkDerivation { name = "query-engine-bin-and-lib"; inherit src; - inherit (self'.packages.prisma-engines) buildInputs nativeBuildInputs configurePhase; + inherit (self'.packages.prisma-engines) buildInputs nativeBuildInputs configurePhase dontStrip; buildPhase = '' cargo build --profile=${profile} --bin=query-engine diff --git a/nix/args.nix b/nix/args.nix index d3a2e54dbc8a..2254b7f5b138 100644 --- a/nix/args.nix +++ b/nix/args.nix @@ -4,10 +4,10 @@ let overlays = [ flakeInputs.rust-overlay.overlays.default - (self: super: - let toolchain = super.rust-bin.stable.latest; in - { cargo = toolchain.minimal; rustc = toolchain.minimal; rustToolchain = toolchain; }) ]; - in - { pkgs = import flakeInputs.nixpkgs { inherit system overlays; }; }; + in rec + { + pkgs = import flakeInputs.nixpkgs { inherit system overlays; }; + rustToolchain = pkgs.rust-bin.stable.latest; + }; } diff --git a/nix/shell.nix b/nix/shell.nix index c30ca9080d47..94661c972d01 100644 --- a/nix/shell.nix +++ b/nix/shell.nix @@ -1,7 +1,8 @@ -{ self', pkgs, ... }: +{ self', pkgs, rustToolchain, ... }: let - devToolchain = pkgs.rustToolchain.default.override { extensions = [ "rust-analyzer" "rust-src" ]; }; + devToolchain = rustToolchain.default.override { extensions = [ "rust-analyzer" "rust-src" ]; }; + nodejs = pkgs.nodejs_latest; in { devShells.default = pkgs.mkShell { @@ -9,9 +10,9 @@ in devToolchain pkgs.llvmPackages_latest.bintools - pkgs.nodejs - pkgs.nodePackages.typescript-language-server - pkgs.nodePackages.pnpm + nodejs + nodejs.pkgs.typescript-language-server + nodejs.pkgs.pnpm ]; inputsFrom = [ self'.packages.prisma-engines ]; shellHook = pkgs.lib.optionalString pkgs.stdenv.isLinux diff --git a/prisma-schema-wasm/Cargo.toml b/prisma-schema-wasm/Cargo.toml index 6387aeedfbba..248c726c9ba4 100644 --- a/prisma-schema-wasm/Cargo.toml +++ b/prisma-schema-wasm/Cargo.toml @@ -7,6 +7,6 @@ edition = "2021" crate-type = ["cdylib"] [dependencies] -wasm-bindgen = "=0.2.84" +wasm-bindgen = "=0.2.87" wasm-logger = { version = "0.2.0", optional = true } prisma-fmt = { path = "../prisma-fmt" }