Unverified Commit a68ee204 authored by TomaSajt's avatar TomaSajt
Browse files

redisinsight: 2.48.0 -> 2.68.0

parent b4b9c47c
Loading
Loading
Loading
Loading
+74 −68
Original line number Diff line number Diff line
{
  lib,
  stdenv,

  fetchFromGitHub,
  makeWrapper,
  fetchYarnDeps,
  makeDesktopItem,

  copyDesktopItems,
  fixup-yarn-lock,
  yarn,
  nodejs_18,
  python3,
  fetchYarnDeps,
  electron,
  nest-cli,
  libsass,
  buildPackages,
  dart-sass,
  makeWrapper,
  nodejs_20,
  pkg-config,
  yarnConfigHook,

  electron,
  libsecret,
  sqlite,
  xdg-utils,
}:

let
  nodejs = nodejs_18;
  nodejs = nodejs_20;
in
stdenv.mkDerivation (finalAttrs: {
  pname = "redisinsight";
  version = "2.48.0";
  version = "2.68.0";

  src = fetchFromGitHub {
    owner = "RedisInsight";
    repo = "RedisInsight";
    rev = finalAttrs.version;
    hash = "sha256-ek0Fp8v6j+mZPK2cEuFNrBgInXdYIKBBUg0UD1I51Sg=";
    hash = "sha256-rXp3C/Ui3vMBscsxlwU9fRF1bmvMrvXLtmJfGzfh1Rk=";
  };

  offlineCache = fetchYarnDeps {
    yarnLock = finalAttrs.src + "/yarn.lock";
    hash = "sha256-ohtU1h6wrg7asXDxTt1Jlzx9GaS3zDrGQD9P9tgzCOE=";
  patches = [
    # the `file:` specifier doesn't seem to be supported with fetchYarnDeps
    # upstream uses it to point the cpu-features dependency to a stub package
    # so it's safe to remove
    ./remove-cpu-features.patch
  ];

  baseOfflineCache = fetchYarnDeps {
    name = "redisinsight-${finalAttrs.version}-base-offline-cache";
    inherit (finalAttrs) src patches;
    hash = "sha256-ORVftwl/8Yrug2MeqWfZTsHNTRJlpKGn2P7JCHUf3do=";
  };

  feOfflineCache = fetchYarnDeps {
    yarnLock = finalAttrs.src + "/redisinsight/yarn.lock";
    hash = "sha256-9xbIdDeLUEk4eNeK7RTwidqDGinA8SPfcumqml66kTw=";
  innerOfflineCache = fetchYarnDeps {
    name = "redisinsight-${finalAttrs.version}-inner-offline-cache";
    inherit (finalAttrs) src patches;
    postPatch = "cd redisinsight";
    hash = "sha256-yFfkpWV/GD2CcAzb0D3lNZwmqzEN6Bi1MjPyRwClaQ0=";
  };

  apiOfflineCache = fetchYarnDeps {
    yarnLock = finalAttrs.src + "/redisinsight/api/yarn.lock";
    hash = "sha256-4zbffuneTceMEyKb8atTXTFhTv0DhrsRMdepZWgoxMQ=";
    name = "redisinsight-${finalAttrs.version}-api-offline-cache";
    inherit (finalAttrs) src patches;
    postPatch = "cd redisinsight/api";
    hash = "sha256-go7IR1UsW8TrWjaFSlC6/biUvb9cHo3PgJa16tF0XHo=";
  };

  nativeBuildInputs = [
    yarn
    fixup-yarn-lock
    nodejs
    copyDesktopItems
    makeWrapper
    (python3.withPackages (ps: [ ps.setuptools ]))
    nest-cli
    libsass
    nodejs
    (nodejs.python.withPackages (ps: [ ps.setuptools ]))
    pkg-config
    copyDesktopItems
    yarnConfigHook
  ];

  buildInputs = [
    sqlite
    xdg-utils
    sqlite # for `sqlite3` node module
    libsecret # for `keytar` node module
  ];

  configurePhase = ''
    runHook preConfigure

    export HOME=$(mktemp -d)
    yarn config --offline set yarn-offline-mirror ${finalAttrs.offlineCache}
    fixup-yarn-lock yarn.lock
    yarn install --offline --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive

    yarn config --offline set yarn-offline-mirror ${finalAttrs.feOfflineCache}
    fixup-yarn-lock redisinsight/yarn.lock
    yarn --offline --cwd redisinsight/ --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive

    yarn config --offline set yarn-offline-mirror ${finalAttrs.apiOfflineCache}
    fixup-yarn-lock redisinsight/api/yarn.lock
    yarn --offline --cwd redisinsight/api/ --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive

    patchShebangs node_modules/
    patchShebangs redisinsight/node_modules/
    patchShebangs redisinsight/api/node_modules/

    mkdir -p "$HOME/.node-gyp/${nodejs.version}"
    echo 9 >"$HOME/.node-gyp/${nodejs.version}/installVersion"
    ln -sfv "${nodejs}/include" "$HOME/.node-gyp/${nodejs.version}"
    export npm_config_nodedir=${nodejs}

    # Build the sqlite3 package.
    pushd redisinsight
    npm_config_node_gyp="${buildPackages.nodejs}/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" npm rebuild --verbose --sqlite=${sqlite.dev} sqlite3
    popd

    # Build node-sass
    LIBSASS_EXT=auto npm rebuild --verbose node-sass

  postPatch = ''
    substituteInPlace redisinsight/api/config/default.ts \
      --replace-fail "process['resourcesPath']" "\"$out/share/redisinsight\"" \
      --replace-fail "process['resourcesPath']" "\"$out/share/redisinsight\""

    # has irrelevant files
    rm -r resources/app
  '';

  # will run yarnConfigHook manually later
  dontYarnInstallDeps = true;

  configurePhase = ''
    runHook preConfigure

    yarnOfflineCache="$baseOfflineCache" yarnConfigHook
    cd redisinsight
    yarnOfflineCache="$innerOfflineCache" yarnConfigHook
    cd api
    yarnOfflineCache="$apiOfflineCache" yarnConfigHook
    cd ../..

    export npm_config_nodedir=${electron.headers}
    export npm_config_sqlite=${lib.getDev sqlite}
    export ELECTRON_SKIP_BINARY_DOWNLOAD=1
    npm rebuild --verbose --no-progress
    cd redisinsight
    npm rebuild --verbose --no-progress
    cd api
    npm rebuild --verbose --no-progress
    cd ../..

    runHook postConfigure
  '';
@@ -110,14 +110,20 @@ stdenv.mkDerivation (finalAttrs: {
  buildPhase = ''
    runHook preBuild

    yarn config --offline set yarn-offline-mirror ${finalAttrs.offlineCache}
    # force the sass npm dependency to use our own sass binary instead of the bundled one
    substituteInPlace node_modules/sass/dist/lib/src/compiler-path.js \
      --replace-fail 'compilerCommand = (() => {' 'compilerCommand = (() => { return ["${lib.getExe dart-sass}"];'

    yarn --offline build:prod

    # TODO: Generate defaults. Currently broken because it requires network access.
    # yarn --offline --cwd=redisinsight/api build:defaults

    yarn --offline electron-builder \
      --dir \
      -c.electronDist=${electron.dist} \
      -c.electronVersion=${electron.version}
      -c.electronVersion=${electron.version} \
      -c.npmRebuild=false # we've already rebuilt the native libs using the electron headers

    runHook postBuild
  '';
@@ -159,7 +165,7 @@ stdenv.mkDerivation (finalAttrs: {
  ];

  meta = {
    description = "RedisInsight Redis client powered by Electron";
    description = "Developer GUI for Redis";
    homepage = "https://github.com/RedisInsight/RedisInsight";
    license = lib.licenses.sspl;
    maintainers = with lib.maintainers; [
+70 −0
Original line number Diff line number Diff line
diff --git a/redisinsight/api/package.json b/redisinsight/api/package.json
index 4a24ac8..fab339c 100644
--- a/redisinsight/api/package.json
+++ b/redisinsight/api/package.json
@@ -49,7 +49,6 @@
     "@nestjs/platform-socket.io/socket.io": "^4.8.0",
     "@nestjs/cli/**/braces": "^3.0.3",
     "**/semver": "^7.5.2",
-    "**/cpu-features": "file:./stubs/cpu-features",
     "**/cross-spawn": "^7.0.5",
     "**/redis-parser": "3.0.0",
     "winston-daily-rotate-file/**/file-stream-rotator": "^1.0.0"
diff --git a/redisinsight/api/yarn.lock b/redisinsight/api/yarn.lock
index e0e8495..dfed1ae 100644
--- a/redisinsight/api/yarn.lock
+++ b/redisinsight/api/yarn.lock
@@ -3223,9 +3223,6 @@ cosmiconfig@^8.2.0:
     parse-json "^5.2.0"
     path-type "^4.0.0"
 
-"cpu-features@file:./stubs/cpu-features", cpu-features@~0.0.9:
-  version "1.0.0"
-
 create-jest@^29.7.0:
   version "29.7.0"
   resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320"
@@ -7969,7 +7966,6 @@ ssh2@^1.15.0:
     asn1 "^0.2.6"
     bcrypt-pbkdf "^1.0.2"
   optionalDependencies:
-    cpu-features "~0.0.9"
     nan "^2.18.0"
 
 ssri@^8.0.0, ssri@^8.0.1:
diff --git a/redisinsight/package.json b/redisinsight/package.json
index 8649be7..354ed42 100644
--- a/redisinsight/package.json
+++ b/redisinsight/package.json
@@ -16,8 +16,7 @@
   },
   "resolutions": {
     "**/semver": "^7.5.2",
-    "sqlite3/**/tar": "^6.2.1",
-    "**/cpu-features": "file:./api/stubs/cpu-features"
+    "sqlite3/**/tar": "^6.2.1"
   },
   "dependencies": {
     "keytar": "^7.9.0",
diff --git a/redisinsight/yarn.lock b/redisinsight/yarn.lock
index 7a063ce..22f37a7 100644
--- a/redisinsight/yarn.lock
+++ b/redisinsight/yarn.lock
@@ -183,9 +183,6 @@ console-control-strings@^1.1.0:
   resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
   integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==
 
-"cpu-features@file:./api/stubs/cpu-features", cpu-features@~0.0.10:
-  version "1.0.0"
-
 debug@4, debug@^4.3.3:
   version "4.3.4"
   resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
@@ -807,7 +804,6 @@ ssh2@^1.15.0:
     asn1 "^0.2.6"
     bcrypt-pbkdf "^1.0.2"
   optionalDependencies:
-    cpu-features "~0.0.10"
     nan "^2.20.0"
 
 ssri@^8.0.0, ssri@^8.0.1: