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: Justin Bedő <cu@cua0.org>
Also contributed: b-rodrigues and kupac
This commit is contained in:
László Kupcsik 2023-09-20 22:21:32 +02:00
parent 774c35c2a1
commit 217d974d84
7 changed files with 140 additions and 185 deletions

View file

@ -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 = {

View file

@ -1,13 +0,0 @@
--- 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}}")

View file

@ -1,85 +0,0 @@
{
"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"
}
}

View file

@ -1,11 +1,18 @@
--- 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

View file

@ -1,32 +0,0 @@
--- a/src/cpp/session/CMakeLists.txt
+++ b/src/cpp/session/CMakeLists.txt
@@ -43,12 +43,6 @@
set(RSTUDIO_DEPENDENCIES_MATHJAX_DIR "${RSTUDIO_DEPENDENCIES_DIR}/mathjax-27")
endif()
- if(EXISTS "${RSTUDIO_TOOLS_ROOT}/quarto")
- set(RSTUDIO_DEPENDENCIES_QUARTO_DIR "${RSTUDIO_TOOLS_ROOT}/quarto")
- else()
- set(RSTUDIO_DEPENDENCIES_QUARTO_DIR "${RSTUDIO_DEPENDENCIES_DIR}/quarto")
- endif()
-
endif()
@@ -67,14 +61,7 @@
# validate our dependencies exist
foreach(VAR RSTUDIO_DEPENDENCIES_DICTIONARIES_DIR
RSTUDIO_DEPENDENCIES_MATHJAX_DIR
- RSTUDIO_DEPENDENCIES_PANDOC_DIR
- RSTUDIO_DEPENDENCIES_QUARTO_DIR)
-
-
- # skip quarto if not enabled
- if("${VAR}" STREQUAL "RSTUDIO_DEPENDENCIES_QUARTO_DIR" AND NOT QUARTO_ENABLED)
- continue()
- endif()
+ RSTUDIO_DEPENDENCIES_PANDOC_DIR)
# validate existence
if(NOT EXISTS "${${VAR}}")

View file

@ -1,29 +1,60 @@
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 name="node.bin" value="@node@/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">

View file

@ -0,0 +1,46 @@
--- a/src/cpp/session/CMakeLists.txt
+++ b/src/cpp/session/CMakeLists.txt
@@ -36,18 +36,14 @@
else()
set(RSTUDIO_DEPENDENCIES_DICTIONARIES_DIR "${RSTUDIO_DEPENDENCIES_DIR}/dictionaries")
endif()
-
+
if(EXISTS "${RSTUDIO_TOOLS_ROOT}/mathjax-27")
set(RSTUDIO_DEPENDENCIES_MATHJAX_DIR "${RSTUDIO_TOOLS_ROOT}/mathjax-27")
else()
set(RSTUDIO_DEPENDENCIES_MATHJAX_DIR "${RSTUDIO_DEPENDENCIES_DIR}/mathjax-27")
endif()
- if(EXISTS "${RSTUDIO_TOOLS_ROOT}/quarto")
- set(RSTUDIO_DEPENDENCIES_QUARTO_DIR "${RSTUDIO_TOOLS_ROOT}/quarto")
- else()
- set(RSTUDIO_DEPENDENCIES_QUARTO_DIR "${RSTUDIO_DEPENDENCIES_DIR}/quarto")
- endif()
+ set(RSTUDIO_DEPENDENCIES_QUARTO_DIR "@quarto@")
endif()
@@ -56,7 +52,7 @@
# - by default, we use quarto + quarto's bundled pandoc
# - if quarto is not enabled, use pandoc fallback
if(QUARTO_ENABLED)
- set(RSTUDIO_DEPENDENCIES_PANDOC_DIR "${RSTUDIO_DEPENDENCIES_QUARTO_DIR}/bin/tools")
+ set(RSTUDIO_DEPENDENCIES_PANDOC_DIR "@pandoc@/bin")
elseif(EXISTS "${RSTUDIO_TOOLS_ROOT}/pandoc/${PANDOC_VERSION}")
set(RSTUDIO_DEPENDENCIES_PANDOC_DIR "${RSTUDIO_TOOLS_ROOT}/pandoc/${PANDOC_VERSION}")
else()
@@ -66,11 +62,9 @@
# validate our dependencies exist
foreach(VAR RSTUDIO_DEPENDENCIES_DICTIONARIES_DIR
- RSTUDIO_DEPENDENCIES_MATHJAX_DIR
- RSTUDIO_DEPENDENCIES_PANDOC_DIR
- RSTUDIO_DEPENDENCIES_QUARTO_DIR)
+ RSTUDIO_DEPENDENCIES_MATHJAX_DIR)
+
-
# skip quarto if not enabled
if("${VAR}" STREQUAL "RSTUDIO_DEPENDENCIES_QUARTO_DIR" AND NOT QUARTO_ENABLED)
continue()