Commit 217d974d authored by László Kupcsik's avatar László Kupcsik
Browse files

rstudio: 2022.07.1+554 -> 2023.09.0+463



Updates rstudio to current version, fixes plotting and enables quarto
and markdown rendering.
Visual mode for markdown editing is still not functional.

 * Remove unneeded patch
 * Eliminate false quarto version warning
 * Fix pandoc and quarto paths
 * Adjust patch name to reflect purpose
 * Remove panmirror for now
 * Update quartoSrc

Co-authored-by: default avatarJustin Bedő <cu@cua0.org>
Also contributed: b-rodrigues and kupac
parent 774c35c2
Loading
Loading
Loading
Loading
+33 −32
Original line number Diff line number Diff line
@@ -16,13 +16,13 @@
, qtsensors
, qtwebengine
, qtwebchannel
, quarto
, libuuid
, hunspellDicts
, unzip
, ant
, jdk
, gnumake
, makeWrapper
, pandoc
, llvmPackages
, yaml-cpp
@@ -40,39 +40,39 @@

let
  pname = "RStudio";
  version = "2022.07.1+554";
  RSTUDIO_VERSION_MAJOR  = "2022";
  RSTUDIO_VERSION_MINOR  = "07";
  RSTUDIO_VERSION_PATCH  = "1";
  RSTUDIO_VERSION_SUFFIX = "+554";
  version =
  "${RSTUDIO_VERSION_MAJOR}.${RSTUDIO_VERSION_MINOR}.${RSTUDIO_VERSION_PATCH}${RSTUDIO_VERSION_SUFFIX}";
  RSTUDIO_VERSION_MAJOR  = "2023";
  RSTUDIO_VERSION_MINOR  = "09";
  RSTUDIO_VERSION_PATCH  = "0";
  RSTUDIO_VERSION_SUFFIX = "+463";

  src = fetchFromGitHub {
    owner = "rstudio";
    repo = "rstudio";
    rev = "v${version}";
    sha256 = "0rmdqxizxqg2vgr3lv066cjmlpjrxjlgi0m97wbh6iyhkfm2rrj1";
    hash = "sha256-FwNuU2rbE3GEhuwphvZISUMhvSZJ6FjjaZ1oQ9F8NWc=";
  };

  mathJaxSrc = fetchurl {
    url = "https://s3.amazonaws.com/rstudio-buildtools/mathjax-27.zip";
    sha256 = "sha256-xWy6psTOA8H8uusrXqPDEtL7diajYCVHcMvLiPsgQXY=";
    hash = "sha256-xWy6psTOA8H8uusrXqPDEtL7diajYCVHcMvLiPsgQXY=";
  };

  rsconnectSrc = fetchFromGitHub {
    owner = "rstudio";
    repo = "rsconnect";
    rev = "e287b586e7da03105de3faa8774c63f08984eb3c";
    sha256 = "sha256-ULyWdSgGPSAwMt0t4QPuzeUE6Bo6IJh+5BMgW1bFN+Y=";
    rev = "5175a927a41acfd9a21d9fdecb705ea3292109f2";
    hash = "sha256-c1fFcN6KAfxXv8bv4WnIqQKg1wcNP2AywhEmIbyzaBA=";
  };

  panmirrorModules = mkYarnModules rec {
    inherit pname version;
    packageJSON = ./package.json;
    yarnLock = "${src}/src/gwt/panmirror/src/editor/yarn.lock";
    offlineCache = fetchYarnDeps {
      inherit yarnLock;
      hash = "sha256-v05Up6VMlYlvgUYQVYo+YfpcsMohliNfMgyjq6QymCI=";
    };
  # Ideally, rev should match the rstudio release name.
  # e.g. release/rstudio-mountain-hydrangea
  quartoSrc = fetchFromGitHub {
    owner = "quarto-dev";
    repo = "quarto";
    rev = "bb264a572c6331d46abcf087748c021d815c55d7";
    hash = "sha256-lZnZvioztbBWWa6H177X6rRrrgACx2gMjVFDgNup93g=";
  };

  description = "Set of integrated tools for the R language";
@@ -86,7 +86,6 @@ in
      unzip
      ant
      jdk
      makeWrapper
      pandoc
      nodejs
    ] ++ lib.optionals (!server) [
@@ -102,6 +101,7 @@ in
      yaml-cpp
      soci
      postgresql
      quarto
    ] ++ (if server then [
      sqlite.dev
      pam
@@ -119,7 +119,7 @@ in
      "-DRSTUDIO_USE_SYSTEM_SOCI=ON"
      "-DRSTUDIO_USE_SYSTEM_BOOST=ON"
      "-DRSTUDIO_USE_SYSTEM_YAML_CPP=ON"
      "-DQUARTO_ENABLED=FALSE"
      "-DQUARTO_ENABLED=TRUE"
      "-DPANDOC_VERSION=${pandoc.version}"
      "-DCMAKE_INSTALL_PREFIX=${placeholder "out"}/lib/rstudio"
    ] ++ lib.optionals (!server) [
@@ -133,8 +133,7 @@ in
      ./use-system-node.patch
      ./fix-resources-path.patch
      ./pandoc-nix-path.patch
      ./remove-quarto-from-generator.patch
      ./do-not-install-pandoc.patch
      ./use-system-quarto.patch
    ];

    postPatch = ''
@@ -144,16 +143,20 @@ in
        --replace 'SOCI_LIBRARY_DIR "/usr/lib"' 'SOCI_LIBRARY_DIR "${soci}/lib"'

      substituteInPlace src/gwt/build.xml \
        --replace '@node@' ${nodejs}
        --replace '@node@' ${nodejs} \
        --replace './lib/quarto' ${quartoSrc}

      substituteInPlace src/cpp/core/libclang/LibClang.cpp \
        --replace '@libclang@' ${llvmPackages.libclang.lib} \
        --replace '@libclang.so@' ${llvmPackages.libclang.lib}/lib/libclang.so

      substituteInPlace src/cpp/session/include/session/SessionConstants.hpp \
        --replace '@pandoc@' ${pandoc}/bin/pandoc
      substituteInPlace src/cpp/session/CMakeLists.txt \
        --replace '@pandoc@' ${pandoc} \
        --replace '@quarto@' ${quarto}

      sed '1i#include <set>' -i src/cpp/core/include/core/Thread.hpp
      substituteInPlace src/cpp/session/include/session/SessionConstants.hpp \
        --replace '@pandoc@' ${pandoc}/bin \
        --replace '@quarto@' ${quarto}
    '';

    hunspellDictionaries = with lib; filter isDerivation (unique (attrValues hunspellDicts));
@@ -181,8 +184,6 @@ in

      cp -r ${rsconnectSrc} dependencies/rsconnect
      ( cd dependencies && ${R}/bin/R CMD build -d --no-build-vignettes rsconnect )

      cp -r "${panmirrorModules}" src/gwt/panmirror/src/editor/node_modules
    '';

    postInstall = ''
@@ -206,14 +207,14 @@ in
      rm -r $out/lib/rstudio/{INSTALL,COPYING,NOTICE,README.md,SOURCE,VERSION}
    '';

    meta = with lib; {
    meta = {
      broken = (stdenv.isLinux && stdenv.isAarch64);
      inherit description;
      homepage = "https://www.rstudio.com/";
      license = licenses.agpl3Only;
      maintainers = with maintainers; [ ciil cfhammill ];
      license = lib.licenses.agpl3Only;
      maintainers = with lib.maintainers; [ ciil cfhammill ];
      mainProgram = "rstudio" + lib.optionalString server "-server";
      platforms = platforms.linux;
      platforms = lib.platforms.linux;
    };

    passthru = {
+0 −13
Original line number Diff line number Diff line
--- a/src/cpp/session/CMakeLists.txt
+++ b/src/cpp/session/CMakeLists.txt
@@ -60,8 +60,7 @@
 
 # validate our dependencies exist
 foreach(VAR RSTUDIO_DEPENDENCIES_DICTIONARIES_DIR
-            RSTUDIO_DEPENDENCIES_MATHJAX_DIR
-            RSTUDIO_DEPENDENCIES_PANDOC_DIR)
+            RSTUDIO_DEPENDENCIES_MATHJAX_DIR)
 
    # validate existence
    if(NOT EXISTS "${${VAR}}")
+0 −85
Original line number Diff line number Diff line
{
  "name": "panmirror",
  "version": "0.1.0",
  "private": true,
  "license": "agpl-3.0",
  "dependencies": {
    "@types/ace": "^0.0.43",
    "@types/clipboard": "^2.0.7",
    "@types/diff-match-patch": "^1.0.32",
    "@types/js-yaml": "^4.0.3",
    "@types/lodash.debounce": "^4.0.6",
    "@types/lodash.orderby": "^4.6.6",
    "@types/lodash.uniqby": "^4.7.6",
    "@types/orderedmap": "^1.0.0",
    "@types/pinyin": "^2.10.0",
    "@types/prosemirror-commands": "^1.0.4",
    "@types/prosemirror-dropcursor": "^1.0.3",
    "@types/prosemirror-gapcursor": "^1.0.4",
    "@types/prosemirror-history": "^1.0.3",
    "@types/prosemirror-inputrules": "^1.0.4",
    "@types/prosemirror-keymap": "^1.0.4",
    "@types/prosemirror-schema-list": "^1.0.3",
    "@types/prosemirror-tables": "^0.9.1",
    "@types/react": "^17.0.20",
    "@types/react-dom": "^17.0.9",
    "@types/react-window": "^1.8.5",
    "@types/transliteration": "^1.6.6",
    "@types/zenscroll": "^4.0.1",
    "biblatex-csl-converter": "^2.0.2",
    "clipboard": "^2.0.8",
    "diff-match-patch": "^1.0.5",
    "fuse.js": "^6.4.6",
    "js-yaml": "^4.1.0",
    "lodash.debounce": "^4.0.8",
    "lodash.orderby": "^4.6.0",
    "lodash.uniqby": "^4.7.0",
    "orderedmap": "^1.0.0",
    "pinyin": "^2.10.2",
    "prosemirror-changeset": "^2.1.2",
    "prosemirror-commands": "^1.1.10",
    "prosemirror-dev-tools": "^2.1.1",
    "prosemirror-dropcursor": "^1.3.5",
    "prosemirror-gapcursor": "^1.1.5",
    "prosemirror-history": "^1.2.0",
    "prosemirror-inputrules": "^1.1.3",
    "prosemirror-keymap": "^1.1.4",
    "prosemirror-model": "^1.14.3",
    "prosemirror-schema-list": "^1.1.5",
    "prosemirror-state": "^1.3.4",
    "prosemirror-tables": "^1.1.1",
    "prosemirror-transform": "^1.3.2",
    "prosemirror-utils": "^0.9.6",
    "prosemirror-view": "^1.20.1",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-window": "^1.8.6",
    "sentence-splitter": "^3.2.2",
    "thenby": "^1.3.3",
    "tlite": "^0.1.9",
    "transliteration": "^2.2.0",
    "typescript": "3.8.3",
    "zenscroll": "^4.0.2"
  },
  "scripts": {
    "format": "prettier --write \"src/**/*.ts\" \"src/**/*.tsx\"",
    "lint": "tslint -c tslint.json 'src/**/*.{ts,tsx}'",
    "watch": "tsc --watch --noEmit --project './tsconfig.json'",
    "generate-symbols": "ts-node tools/generate-symbols.ts"
  },
  "devDependencies": {
    "@types/node": "^14.0.4",
    "@types/unzip": "^0.1.1",
    "fast-xml-parser": "^3.17.1",
    "fuse-box": "^3.7.1",
    "prettier": "^1.18.2",
    "terser": "^4.6.2",
    "ts-node": "^8.10.2",
    "tslint": "^5.20.0",
    "tslint-config-prettier": "^1.18.0",
    "tslint-react": "^5.0.0",
    "typescript-tslint-plugin": "^0.5.5",
    "uglify-js": "^3.7.4",
    "unzip": "^0.1.11"
  }
}
+12 −5
Original line number Diff line number Diff line
--- a/src/cpp/session/include/session/SessionConstants.hpp
+++ b/src/cpp/session/include/session/SessionConstants.hpp
@@ -140,7 +140,7 @@
@@ -142,13 +142,13 @@
 #define kSessionTmpDir             "rstudio-rsession"
 
 #ifdef QUARTO_ENABLED
 # define kDefaultPandocPath        "bin/quarto/bin"
 #else
-# define kDefaultPandocPath        "bin/pandoc"
-# define kDefaultPandocPath        "bin/quarto/bin/tools"
+# define kDefaultPandocPath        "@pandoc@"
 #else
 # define kDefaultPandocPath        "bin/pandoc"
 #endif
 
 #define kDefaultQuartoPath         "bin/quarto"
 #define kDefaultNodePath           "bin/node"
-#define kDefaultQuartoPath         "bin/quarto"
+#define kDefaultQuartoPath         "@quarto@"
 #define kDefaultRsclangPath        "bin/rsclang"
 
 #ifdef _WIN32
+49 −18
Original line number Diff line number Diff line
diff --git a/src/gwt/build.xml b/src/gwt/build.xml
index 83e9433..f1ee63d 100644
--- a/src/gwt/build.xml
+++ b/src/gwt/build.xml
@@ -83,24 +83,7 @@
       <echo>Concatenated acesupport files to 'acesupport.js'</echo>
    </target>
 
-   <!-- panmirror typescript library -->
-   <!-- ensure version matches RSTUDIO_NODE_VERSION -->
-   <property name="node.version" value="16.14.0"/>
-   <property name="node.dir" value="../../dependencies/common/node/${node.version}"/>
-   <condition property="node.bin" value="../../../${node.dir}/bin/node">
@@ -87,29 +87,7 @@
    <!-- ensure version matches RSTUDIO_NODE_VERSION -->
    <property name="node.version" value="16.14.0"/>
    <property name="node.dir" value="../../dependencies/common/node/${node.version}"/>
-   <!-- use yarn from system but will prefer yarn from dependencies if available -->
-   <condition property="yarn.bin" value="yarn">
-     <not>
-        <os family="windows" />
-     </not>
-   </condition>
-   <condition property="node.bin" value="${node.dir}/node.exe">
-   <available
-      property="yarn.bin"
-      value="${node.dir}/bin/yarn"
-      file="${node.dir}/bin/yarn"/>
-   <condition property="yarn.bin" value="${node.dir}/node_modules/yarn/bin/yarn.cmd">
-     <os family="windows" />
-   </condition>
-
-   <!-- use node from /opt/rstudio-tools if installed (typical for Docker) -->
-   <!-- use yarn from /opt/rstudio-tools if installed (typical for Docker) -->
-   <available
-      property="node.bin"
-      value="/opt/rstudio-tools/dependencies/common/node/${node.version}/bin/node"
-      file="/opt/rstudio-tools/dependencies/common/node/${node.version}/bin/node"/>
-      property="yarn.bin"
-      value="/opt/rstudio-tools/dependencies/common/node/${node.version}/bin/yarn"
-      file="/opt/rstudio-tools/dependencies/common/node/${node.version}/bin/yarn"/>
-   <!-- use yarn from c:/rstudio-tools if installed (typical for Docker on Windows) -->
-   <available
-      property="yarn.bin"
-      value="c:\rstudio-tools\dependencies\common\node\${node.version}\node_modules\yarn\bin\yarn.cmd"
-      file="c:\rstudio-tools\dependencies\common\node\${node.version}\node_modules\yarn\bin\yarn.cmd"/>
+   <property name="node.bin" value="@node@/bin/node"/>
 
    <property name="panmirror.dir" value="./panmirror/src/editor"/>
    <property name="panmirror.dir" value="./lib/quarto/apps/panmirror"/>
    <property name="panmirror.build.dir" value="./www/js/panmirror"/>
@@ -126,21 +104,11 @@
       file="c:\rstudio-tools\src\gwt\lib\quarto\apps\panmirror"/>
 
    <target name="panmirror" description="Compile panmirror library">
-      <echo message="yarn location: ${yarn.bin}"/>
-      <echo message="panmirror location: ${panmirror.dir}"/>
       <mkdir dir="${panmirror.build.dir}"/>
-      <exec executable="${yarn.bin}" dir="${panmirror.dir}" resolveexecutable="true" failonerror="true">
-         <arg value="install"/>
-         <arg value="--network-timeout"/>
-         <arg value="240000"/>
-      </exec>
-      <exec executable="${yarn.bin}" dir="${panmirror.dir}" resolveexecutable="true" failonerror="true">
-         <arg value="build"/>
-         <env key="PANMIRROR_OUTDIR" value="dist-rstudio"/>
+      <exec executable="${node.bin}" dir="${panmirror.dir}" spawn="${panmirror.spawn}">
+         <arg value="fuse"/>
+         <arg value="${panmirror.target}"/>
       </exec>
-      <copy todir="${panmirror.build.dir}">
-         <fileset dir="${panmirror.dir}/dist-rstudio"/>
-      </copy>
    </target>
 
    <target name="javac" description="Compile java source">
Loading