summaryrefslogtreecommitdiff
path: root/patches
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2026-05-13 22:39:12 +0200
committerRicardo Wurmus <rekado@elephly.net>2026-05-16 12:20:02 +0200
commit24317029245eddca35f64b81280a831a18bc680c (patch)
treed5fd85712862401b88177dca3f86792f53f62b14 /patches
parentc0321213ed34a76fc513a0f930d5d072b6785bec (diff)
rstudio: rstudio-server: Update to 2026.04.0+526.
* patches/rstudio-server-install.patch: Update file. * patches/rstudio-server-multi-version/0001-handleClientInit-Store-R-versions-in-sessionInfo.patch, patches/rstudio-server-multi-version/0002-launchAndTrackSession-Configure-R-version-from-activ.patch, patches/rstudio-server-multi-version/0003-NewProjectWizard-Unhide-version-selector-widget.patch, patches/rstudio-server-multi-version/0004-handleConnection-Switch-R-version-when-switching-pro.patch, patches/rstudio-server-multi-version/0005-Add-version-switcher-widget-to-toolbar.patch, patches/rstudio-server-multi-version/0006-Look-at-.local-share-rstudio-r-versions-for-custom-R.patch, patches/rstudio-server-multi-version/0007-detectRLocationsUsingR-Restore-R_HOME-at-the-end.patch: Update to latest version. * guix-science/packages/rstudio.scm (dtl-for-rstudio, utfcpp-for-rstudio): New variables. (rstudio-server): Update to 2026.04.0+526. [arguments]: Do not use #:OUT-OF-SOURCE?, add extra configure flags; update generated cmake files; rename phase 'unpack-dictionary to 'unpack-extras and unpack GWT sources; update patching in 'patch-paths; update location of script in 'generate-server-options. [native-inputs]: Replace openjdk11:jdk with openjdk:jdk; add googletest and r-here; add origin for gwt sources. [inputs]: Replace boost-1.88 with boost; add dtl-for-rstudio, libgit2, and utfcpp-for-rstudio.
Diffstat (limited to 'patches')
-rw-r--r--patches/rstudio-server-install.patch140
-rw-r--r--patches/rstudio-server-multi-version/0001-handleClientInit-Store-R-versions-in-sessionInfo.patch12
-rw-r--r--patches/rstudio-server-multi-version/0002-launchAndTrackSession-Configure-R-version-from-activ.patch27
-rw-r--r--patches/rstudio-server-multi-version/0003-NewProjectWizard-Unhide-version-selector-widget.patch8
-rw-r--r--patches/rstudio-server-multi-version/0004-handleConnection-Switch-R-version-when-switching-pro.patch14
-rw-r--r--patches/rstudio-server-multi-version/0005-Add-version-switcher-widget-to-toolbar.patch30
-rw-r--r--patches/rstudio-server-multi-version/0006-Look-at-.local-share-rstudio-r-versions-for-custom-R.patch8
-rw-r--r--patches/rstudio-server-multi-version/0007-detectRLocationsUsingR-Restore-R_HOME-at-the-end.patch6
8 files changed, 163 insertions, 82 deletions
diff --git a/patches/rstudio-server-install.patch b/patches/rstudio-server-install.patch
index 89bdee4..9ee3304 100644
--- a/patches/rstudio-server-install.patch
+++ b/patches/rstudio-server-install.patch
@@ -3,7 +3,7 @@ Avoid building copies of existing libraries. Link with Guix-provided libraries
3 3
4--- a/src/cpp/session/CMakeLists.txt 4--- a/src/cpp/session/CMakeLists.txt
5+++ b/src/cpp/session/CMakeLists.txt 5+++ b/src/cpp/session/CMakeLists.txt
6@@ -469,18 +469,6 @@ 6@@ -493,18 +493,6 @@
7 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../../../NOTICE 7 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../../../NOTICE
8 ${CMAKE_CURRENT_SOURCE_DIR}/resources COPYONLY) 8 ${CMAKE_CURRENT_SOURCE_DIR}/resources COPYONLY)
9 9
@@ -22,7 +22,7 @@ Avoid building copies of existing libraries. Link with Guix-provided libraries
22 # set include directories 22 # set include directories
23 include_directories( 23 include_directories(
24 include 24 include
25@@ -682,9 +670,6 @@ 25@@ -715,9 +703,6 @@
26 # notice 26 # notice
27 install(FILES "resources/NOTICE" 27 install(FILES "resources/NOTICE"
28 DESTINATION ${RSTUDIO_INSTALL_SUPPORTING}/resources) 28 DESTINATION ${RSTUDIO_INSTALL_SUPPORTING}/resources)
@@ -32,7 +32,7 @@ Avoid building copies of existing libraries. Link with Guix-provided libraries
32 32
33 # citation 33 # citation
34 configure_file("resources/CITATION.in" 34 configure_file("resources/CITATION.in"
35@@ -721,10 +706,6 @@ 35@@ -754,16 +739,6 @@
36 install(DIRECTORY "${RSTUDIO_DEPENDENCIES_DICTIONARIES_DIR}" 36 install(DIRECTORY "${RSTUDIO_DEPENDENCIES_DICTIONARIES_DIR}"
37 DESTINATION "${RSTUDIO_INSTALL_SUPPORTING}/resources") 37 DESTINATION "${RSTUDIO_INSTALL_SUPPORTING}/resources")
38 38
@@ -40,10 +40,16 @@ Avoid building copies of existing libraries. Link with Guix-provided libraries
40- install(DIRECTORY "${RSTUDIO_DEPENDENCIES_MATHJAX_DIR}" 40- install(DIRECTORY "${RSTUDIO_DEPENDENCIES_MATHJAX_DIR}"
41- DESTINATION "${RSTUDIO_INSTALL_SUPPORTING}/resources") 41- DESTINATION "${RSTUDIO_INSTALL_SUPPORTING}/resources")
42- 42-
43- # install node
44- install(
45- DIRECTORY "${RSTUDIO_DEPENDENCIES_DIR}/common/node/${RSTUDIO_INSTALLED_NODE_VERSION}-installed/"
46- DESTINATION "${RSTUDIO_INSTALL_BIN}/node"
47- USE_SOURCE_PERMISSIONS)
48-
43 # install quarto (or pandoc if quarto disabled) 49 # install quarto (or pandoc if quarto disabled)
44 if(QUARTO_ENABLED) 50 if(QUARTO_ENABLED)
45 # install some quarto folders into Resources, as needed 51 # install some quarto folders into Resources, as needed
46@@ -742,9 +723,6 @@ 52@@ -781,9 +756,6 @@
47 EXCLUDE) 53 EXCLUDE)
48 endif() 54 endif()
49 else() 55 else()
@@ -53,22 +59,26 @@ Avoid building copies of existing libraries. Link with Guix-provided libraries
53 endif() 59 endif()
54 60
55 # install Copilot Language Server 61 # install Copilot Language Server
62
56--- a/src/cpp/ext/CMakeLists.txt 63--- a/src/cpp/ext/CMakeLists.txt
57+++ b/src/cpp/ext/CMakeLists.txt 64+++ b/src/cpp/ext/CMakeLists.txt
58@@ -228,30 +228,3 @@ 65@@ -360,7 +360,7 @@
59 websocketpp WEBSOCKETPP 66 # a valid library artifact when libgit2's SelectZlib.cmake calls find_package(ZLIB).
60 yaml-cpp YAML_CPP 67 # If zlib is not yet present, FindZLIB fails and libgit2 falls back to its bundled
61 zlib ZLIB) 68 # deps/zlib, resulting in duplicate zlib symbols in the final binary.
62- 69-fetch(zlib ZLIB)
63-# Create rapidjson target. 70+fetch(ZLIB ZLIB)
64-add_library(rstudio-rapidjson INTERFACE EXCLUDE_FROM_ALL) 71
65-target_compile_definitions(rstudio-rapidjson INTERFACE "-DRAPIDJSON_NO_SIZETYPEDEFINE") 72 # libgit2's src/libgit2/CMakeLists.txt uses FILE(WRITE) to produce git2.h in
66-target_include_directories(rstudio-rapidjson INTERFACE "${RAPIDJSON_SOURCE_DIR}/include") 73 # the build tree. Unlike configure_file(), FILE(WRITE) unconditionally updates
67- 74@@ -403,45 +403,6 @@
75
76 restore_global_settings()
77
68- 78-
69-# Create websocketpp target. 79-# Create dtl target.
70-add_library(rstudio-websocketpp INTERFACE EXCLUDE_FROM_ALL) 80-add_library(rstudio-dtl INTERFACE EXCLUDE_FROM_ALL)
71-target_include_directories(rstudio-websocketpp INTERFACE "${WEBSOCKETPP_SOURCE_DIR}") 81-target_include_directories(rstudio-dtl INTERFACE "${DTL_SOURCE_DIR}")
72- 82-
73- 83-
74-# Create hunspell target. 84-# Create hunspell target.
@@ -86,30 +96,53 @@ Avoid building copies of existing libraries. Link with Guix-provided libraries
86-else() 96-else()
87- target_compile_options(rstudio-hunspell PRIVATE -Wno-deprecated-declarations -Wno-sign-compare -Wno-unused-but-set-variable) 97- target_compile_options(rstudio-hunspell PRIVATE -Wno-deprecated-declarations -Wno-sign-compare -Wno-unused-but-set-variable)
88-endif() 98-endif()
99-
100-
101-# Create rapidjson target.
102-add_library(rstudio-rapidjson INTERFACE EXCLUDE_FROM_ALL)
103-target_compile_definitions(rstudio-rapidjson INTERFACE "-DRAPIDJSON_NO_SIZETYPEDEFINE")
104-target_include_directories(rstudio-rapidjson INTERFACE "${RAPIDJSON_SOURCE_DIR}/include")
105-
106-
107-# Create utfcpp target.
108-add_library(rstudio-utfcpp INTERFACE EXCLUDE_FROM_ALL)
109-target_include_directories(rstudio-utfcpp INTERFACE "${UTFCPP_SOURCE_DIR}/source")
110-
111-
112-# Create websocketpp target.
113-add_library(rstudio-websocketpp INTERFACE EXCLUDE_FROM_ALL)
114-target_include_directories(rstudio-websocketpp INTERFACE "${WEBSOCKETPP_SOURCE_DIR}")
115-
116-
117 # Create zlib target (Windows only).
118 # Uses a custom target name to avoid colliding with the 'zlib' OBJECT target
119 # that libgit2 creates from its bundled deps/zlib.
89--- a/src/cpp/shared_core/CMakeLists.txt 120--- a/src/cpp/shared_core/CMakeLists.txt
90+++ b/src/cpp/shared_core/CMakeLists.txt 121+++ b/src/cpp/shared_core/CMakeLists.txt
91@@ -46,6 +46,8 @@ 122@@ -46,6 +46,9 @@
92 set (SHARED_INCLUDE_DIRS 123 set (SHARED_INCLUDE_DIRS
93 include 124 include
94 ${BOOST_INCLUDEDIR} 125 ${BOOST_INCLUDEDIR}
95+ ${rapidjson_INCLUDE_DIRS} 126+ ${rapidjson_INCLUDE_DIRS}
96+ ${gsl_lite_INCLUDE_DIRS} 127+ ${gsl_lite_INCLUDE_DIRS}
128+ ${dtl_INCLUDE_DIRS}
97 ${EXT_SOURCE_DIR}) 129 ${EXT_SOURCE_DIR})
98 130
99 # UNIX specific 131 # UNIX specific
100@@ -93,7 +94,7 @@ 132@@ -92,8 +94,8 @@
133 target_link_libraries(rstudio-shared-core
101 ${Boost_LIBRARIES} 134 ${Boost_LIBRARIES}
102 ${SHARED_CORE_SYSTEM_LIBS} 135 ${SHARED_CORE_SYSTEM_LIBS}
103- gsl::gsl-lite-v1 136- gsl::gsl-lite-v1
104+ ${gsl_lite_LIBRARIES}
105- rstudio-rapidjson) 137- rstudio-rapidjson)
138+ ${gsl_lite_LIBRARIES}
106+ ${rapidjson_LIBRARIES}) 139+ ${rapidjson_LIBRARIES})
107 140
108 # Define executable for running unit tests 141 # Define executable for running unit tests
109 if (RSTUDIO_UNIT_TESTS_ENABLED) 142 if (RSTUDIO_UNIT_TESTS_ENABLED)
110--- a/src/cpp/core/CMakeLists.txt 143--- a/src/cpp/core/CMakeLists.txt
111+++ b/src/cpp/core/CMakeLists.txt 144+++ b/src/cpp/core/CMakeLists.txt
112@@ -318,6 +318,10 @@ 145@@ -324,6 +324,11 @@
113 ${EXT_SOURCE_DIR} 146 ${EXT_SOURCE_DIR}
114 ${CMAKE_CURRENT_BINARY_DIR} 147 ${CMAKE_CURRENT_BINARY_DIR}
115 ${TESTS_INCLUDE_DIR} 148 ${TESTS_INCLUDE_DIR}
@@ -117,40 +150,79 @@ Avoid building copies of existing libraries. Link with Guix-provided libraries
117+ ${tl-expected_INCLUDE_DIRS} 150+ ${tl-expected_INCLUDE_DIRS}
118+ ${gsl_lite_INCLUDE_DIRS} 151+ ${gsl_lite_INCLUDE_DIRS}
119+ ${websocketpp_INCLUDE_DIRS} 152+ ${websocketpp_INCLUDE_DIRS}
153+ ${dtl_INCLUDE_DIRS}
120 ) 154 )
121 155
122 # define shared library 156 # define shared library
123@@ -327,8 +329,8 @@ 157@@ -333,10 +338,10 @@
124 # link dependencies 158 # link dependencies
125 target_link_libraries(rstudio-core 159 target_link_libraries(rstudio-core
126 rstudio-shared-core 160 rstudio-shared-core
161- rstudio-dtl
127- rstudio-hunspell 162- rstudio-hunspell
163- rstudio-utfcpp
128- rstudio-websocketpp 164- rstudio-websocketpp
165+ ${dtl_LIBRARIES}
166+ ${utfcpp_LIBRARIES}
129+ ${hunspell_LIBRARIES} 167+ ${hunspell_LIBRARIES}
130+ ${websocketpp_LIBRARIES} 168+ ${websocketpp_LIBRARIES}
131 ${Boost_LIBRARIES} 169 ${Boost_LIBRARIES}
132 ${CRASHPAD_LIBRARIES}
133 ${SOCI_LIBRARIES} 170 ${SOCI_LIBRARIES}
134@@ -361,7 +363,7 @@ 171 ${CORE_SYSTEM_LIBRARIES}
135 rstudio-shared-core
136 rstudio-core
137 rstudio-core-synctex
138- rstudio-hunspell
139+ ${hunspell_LIBRARIES}
140 ${Boost_LIBRARIES}
141 ${SOCI_LIBRARIES}
142 ${CORE_SYSTEM_LIBRARIES}
143--- a/src/cpp/CMakeLists.txt 172--- a/src/cpp/CMakeLists.txt
144+++ b/src/cpp/CMakeLists.txt 173+++ b/src/cpp/CMakeLists.txt
145@@ -492,5 +492,11 @@ 174@@ -381,7 +381,14 @@
146 175
147 find_package(OpenSSL REQUIRED) 176 find_package(OpenSSL REQUIRED)
148 include_directories(SYSTEM "${OPENSSL_INCLUDE_DIR}") 177 include_directories(SYSTEM "${OPENSSL_INCLUDE_DIR}")
178-
149+ find_package(fmt REQUIRED) 179+ find_package(fmt REQUIRED)
150+ find_package(gsl-lite REQUIRED) 180+ find_package(gsl-lite REQUIRED)
151+ find_package(tl-expected REQUIRED) 181+ find_package(tl-expected REQUIRED)
152+ find_package(yaml-cpp REQUIRED) 182+ find_package(yaml-cpp REQUIRED)
153+ find_package(hunspell REQUIRED) 183+ find_package(hunspell REQUIRED)
154+ include_directories(SYSTEM "${hunspell_INCLUDE_DIRS}") 184+ include_directories(SYSTEM "${hunspell_INCLUDE_DIRS}")
155 185+ find_package(dtl REQUIRED)
186+ include_directories(SYSTEM "${dtl_INCLUDE_DIRS}")
156 endif() 187 endif()
188
189 if(WIN32)
190--- a/src/gwt/build.xml
191+++ b/src/gwt/build.xml
192@@ -87,18 +87,9 @@
193 <!-- For automatically re-generating acesupport on change -->
194 <property name="acesupport.watcher.dir" value="${tools.dir}/acesupport-watcher"/>
195
196- <!-- Detect git worktree and resolve main repo root for shared dependencies -->
197- <exec executable="git" outputproperty="git.common.dir"
198- failonerror="false" errorproperty="git.common.dir.error">
199- <arg value="rev-parse"/>
200- <arg value="--path-format=absolute"/>
201- <arg value="--git-common-dir"/>
202- </exec>
203- <dirname property="git.main.worktree" file="${git.common.dir}"/>
204-
205 <!-- Path to GWT libraries -->
206 <set-if-exists property="lib.dir" value="../../dependencies/common/gwtproject"/>
207- <set-if-exists property="lib.dir" value="${git.main.worktree}/dependencies/common/gwtproject"/>
208+ <set-if-exists property="lib.dir" value="./lib"/>
209 <set-if-exists property="lib.dir" value="/opt/rstudio-tools/dependencies/common/gwtproject"/>
210 <set-if-exists property="lib.dir" value="C:/rstudio-tools/dependencies/common/gwtproject"/>
211
212@@ -235,7 +226,6 @@
213 <!-- ensure version matches RSTUDIO_NODE_VERSION -->
214 <property name="node.version" value="18.18.2"/>
215 <set-if-exists property="node.dir" value="../../dependencies/common/node/${node.version}"/>
216- <set-if-exists property="node.dir" value="${git.main.worktree}/dependencies/common/node/${node.version}"/>
217 <set-if-exists property="node.dir" value="/opt/rstudio-tools/dependencies/common/node/${node.version}"/>
218 <set-if-unset property="node.dir" value="/gnu/store/wb4d206jpiskjjp3jqv6ngqxrxvmdjw4-node-22.14.0"/>
219
220@@ -253,7 +243,7 @@
221 <set-if-exists property="panmirror.dir" value="./lib/quarto/apps/panmirror"/>
222 <property name="panmirror.build.dir" value="./www/js/panmirror"/>
223
224- <target name="panmirror" description="Compile panmirror library">
225+ <target name="panmirror" if="false" description="Compile panmirror library">
226
227 <!-- Make sure a default value for panmirror.minify is set -->
228 <condition property="panmirror.minify" value="true">
diff --git a/patches/rstudio-server-multi-version/0001-handleClientInit-Store-R-versions-in-sessionInfo.patch b/patches/rstudio-server-multi-version/0001-handleClientInit-Store-R-versions-in-sessionInfo.patch
index ea0573a..8f45779 100644
--- a/patches/rstudio-server-multi-version/0001-handleClientInit-Store-R-versions-in-sessionInfo.patch
+++ b/patches/rstudio-server-multi-version/0001-handleClientInit-Store-R-versions-in-sessionInfo.patch
@@ -1,4 +1,4 @@
1From 72b511ab4ab4bd60cabb54c66fe3e78d669791fb Mon Sep 17 00:00:00 2001 1From d2d45cebfcbbdebd6997f9663b029f834ae6d7c7 Mon Sep 17 00:00:00 2001
2From: Ricardo Wurmus <rekado@elephly.net> 2From: Ricardo Wurmus <rekado@elephly.net>
3Date: Fri, 18 Dec 2020 10:26:44 +0100 3Date: Fri, 18 Dec 2020 10:26:44 +0100
4Subject: [PATCH 1/7] handleClientInit: Store R versions in sessionInfo. 4Subject: [PATCH 1/7] handleClientInit: Store R versions in sessionInfo.
@@ -15,7 +15,7 @@ r_versions_info->available_r_versions.
15 1 file changed, 29 insertions(+), 6 deletions(-) 15 1 file changed, 29 insertions(+), 6 deletions(-)
16 16
17diff --git a/src/cpp/session/SessionClientInit.cpp b/src/cpp/session/SessionClientInit.cpp 17diff --git a/src/cpp/session/SessionClientInit.cpp b/src/cpp/session/SessionClientInit.cpp
18index 5610f4cffd..649f648e25 100644 18index 06ec9c20ec..f2ed4790e0 100644
19--- a/src/cpp/session/SessionClientInit.cpp 19--- a/src/cpp/session/SessionClientInit.cpp
20+++ b/src/cpp/session/SessionClientInit.cpp 20+++ b/src/cpp/session/SessionClientInit.cpp
21@@ -2,6 +2,7 @@ 21@@ -2,6 +2,7 @@
@@ -26,16 +26,16 @@ index 5610f4cffd..649f648e25 100644
26 * 26 *
27 * Unless you have received this program directly from Posit Software pursuant 27 * Unless you have received this program directly from Posit Software pursuant
28 * to the terms of a commercial license agreement with Posit Software, then 28 * to the terms of a commercial license agreement with Posit Software, then
29@@ -63,6 +64,8 @@ 29@@ -66,6 +67,8 @@
30 #include <core/r_util/RSessionContext.hpp>
31 #include <core/system/Environment.hpp> 30 #include <core/system/Environment.hpp>
31 #include <core/system/Locale.hpp>
32 32
33+#include <server_core/RVersionsScanner.hpp> 33+#include <server_core/RVersionsScanner.hpp>
34+ 34+
35 #include <session/SessionConsoleProcess.hpp> 35 #include <session/SessionConsoleProcess.hpp>
36 #include <session/SessionClientEventService.hpp> 36 #include <session/SessionClientEventService.hpp>
37 #include <session/SessionHttpConnection.hpp> 37 #include <session/SessionHttpConnection.hpp>
38@@ -573,12 +576,32 @@ void handleClientInit(const boost::function<void()>& initFunction, 38@@ -597,12 +600,32 @@ void handleClientInit(const boost::function<void()>& initFunction,
39 39
40 sessionInfo["multi_session"] = options.multiSession(); 40 sessionInfo["multi_session"] = options.multiSession();
41 41
@@ -75,5 +75,5 @@ index 5610f4cffd..649f648e25 100644
75 sessionInfo["show_user_home_page"] = options.showUserHomePage(); 75 sessionInfo["show_user_home_page"] = options.showUserHomePage();
76 sessionInfo["user_home_page_url"] = json::Value(); 76 sessionInfo["user_home_page_url"] = json::Value();
77-- 77--
782.52.0 782.54.0
79 79
diff --git a/patches/rstudio-server-multi-version/0002-launchAndTrackSession-Configure-R-version-from-activ.patch b/patches/rstudio-server-multi-version/0002-launchAndTrackSession-Configure-R-version-from-activ.patch
index b39088c..3e75fdb 100644
--- a/patches/rstudio-server-multi-version/0002-launchAndTrackSession-Configure-R-version-from-activ.patch
+++ b/patches/rstudio-server-multi-version/0002-launchAndTrackSession-Configure-R-version-from-activ.patch
@@ -1,4 +1,4 @@
1From 2005f097b76582e5781a32aafa7cfcf35e369e7b Mon Sep 17 00:00:00 2001 1From faf9b22bc1caa538009356a3be1f0ee3ac8205f0 Mon Sep 17 00:00:00 2001
2From: Ricardo Wurmus <rekado@elephly.net> 2From: Ricardo Wurmus <rekado@elephly.net>
3Date: Fri, 18 Dec 2020 10:32:01 +0100 3Date: Fri, 18 Dec 2020 10:32:01 +0100
4Subject: [PATCH 2/7] launchAndTrackSession: Configure R version from active 4Subject: [PATCH 2/7] launchAndTrackSession: Configure R version from active
@@ -20,11 +20,11 @@ procedure to configure the R environment using the R version that has
20been recorded in the active session. 20been recorded in the active session.
21(launchAndTrackSession): Register loadRVersion as a config filter. 21(launchAndTrackSession): Register loadRVersion as a config filter.
22--- 22---
23 .../server/session/ServerSessionManager.cpp | 47 +++++++++++++++++++ 23 .../server/session/ServerSessionManager.cpp | 49 +++++++++++++++++++
24 1 file changed, 47 insertions(+) 24 1 file changed, 49 insertions(+)
25 25
26diff --git a/src/cpp/server/session/ServerSessionManager.cpp b/src/cpp/server/session/ServerSessionManager.cpp 26diff --git a/src/cpp/server/session/ServerSessionManager.cpp b/src/cpp/server/session/ServerSessionManager.cpp
27index ab7aab1842..fa67ed0b56 100644 27index 17bcd10b56..e107b89dff 100644
28--- a/src/cpp/server/session/ServerSessionManager.cpp 28--- a/src/cpp/server/session/ServerSessionManager.cpp
29+++ b/src/cpp/server/session/ServerSessionManager.cpp 29+++ b/src/cpp/server/session/ServerSessionManager.cpp
30@@ -2,6 +2,7 @@ 30@@ -2,6 +2,7 @@
@@ -35,7 +35,15 @@ index ab7aab1842..fa67ed0b56 100644
35 * 35 *
36 * Unless you have received this program directly from Posit Software pursuant 36 * Unless you have received this program directly from Posit Software pursuant
37 * to the terms of a commercial license agreement with Posit Software, then 37 * to the terms of a commercial license agreement with Posit Software, then
38@@ -24,10 +25,14 @@ 38@@ -14,6 +15,7 @@
39 */
40
41 #include <server/session/ServerSessionManager.hpp>
42+#include <session/SessionScopes.hpp>
43
44 #include <boost/format.hpp>
45
46@@ -22,10 +24,14 @@
39 #include <core/SocketRpc.hpp> 47 #include <core/SocketRpc.hpp>
40 #include <core/system/System.hpp> 48 #include <core/system/System.hpp>
41 #include <core/system/Process.hpp> 49 #include <core/system/Process.hpp>
@@ -50,7 +58,7 @@ index ab7aab1842..fa67ed0b56 100644
50 #include <session/SessionConstants.hpp> 58 #include <session/SessionConstants.hpp>
51 59
52 #include <monitor/MonitorClient.hpp> 60 #include <monitor/MonitorClient.hpp>
53@@ -373,6 +378,45 @@ void setProcessConfigFilter(const core::system::ProcessConfigFilter& filter) 61@@ -380,6 +386,46 @@ void setProcessConfigFilter(const core::system::ProcessConfigFilter& filter)
54 END_LOCK_MUTEX 62 END_LOCK_MUTEX
55 } 63 }
56 64
@@ -60,7 +68,8 @@ index ab7aab1842..fa67ed0b56 100644
60+ FilePath storageDir = 68+ FilePath storageDir =
61+ system::xdg::userDataDir(user.getUsername(), user.getHomePath()); 69+ system::xdg::userDataDir(user.getUsername(), user.getHomePath());
62+ std::shared_ptr<r_util::IActiveSessionsStorage> sessionStorage = 70+ std::shared_ptr<r_util::IActiveSessionsStorage> sessionStorage =
63+ std::shared_ptr<r_util::IActiveSessionsStorage>(new r_util::FileActiveSessionsStorage(storageDir)); 71+ std::shared_ptr<r_util::IActiveSessionsStorage>(new r_util::FileActiveSessionsStorage(storageDir, rstudio::session::filePathToProjectId(storageDir, FilePath(server::options().getOverlayOption(kSessionSharedStoragePath)))));
72+
64+ std::unique_ptr<r_util::ActiveSessions> activeSessions = 73+ std::unique_ptr<r_util::ActiveSessions> activeSessions =
65+ std::unique_ptr<r_util::ActiveSessions>(new r_util::ActiveSessions(sessionStorage, storageDir)); 74+ std::unique_ptr<r_util::ActiveSessions>(new r_util::ActiveSessions(sessionStorage, storageDir));
66+ std::vector<boost::shared_ptr<r_util::ActiveSession> > sessions = 75+ std::vector<boost::shared_ptr<r_util::ActiveSession> > sessions =
@@ -96,7 +105,7 @@ index ab7aab1842..fa67ed0b56 100644
96 // default session launcher -- does the launch then tracks the pid 105 // default session launcher -- does the launch then tracks the pid
97 // for later reaping 106 // for later reaping
98 Error SessionManager::launchAndTrackSession( 107 Error SessionManager::launchAndTrackSession(
99@@ -383,6 +427,9 @@ Error SessionManager::launchAndTrackSession( 108@@ -390,6 +436,9 @@ Error SessionManager::launchAndTrackSession(
100 using namespace rstudio::core::system; 109 using namespace rstudio::core::system;
101 std::string runAsUser = realUserIsRoot() ? profile.context.username : ""; 110 std::string runAsUser = realUserIsRoot() ? profile.context.username : "";
102 111
@@ -107,5 +116,5 @@ index ab7aab1842..fa67ed0b56 100644
107 LOCK_MUTEX(s_configFilterMutex) 116 LOCK_MUTEX(s_configFilterMutex)
108 { 117 {
109-- 118--
1102.52.0 1192.54.0
111 120
diff --git a/patches/rstudio-server-multi-version/0003-NewProjectWizard-Unhide-version-selector-widget.patch b/patches/rstudio-server-multi-version/0003-NewProjectWizard-Unhide-version-selector-widget.patch
index 6b1c9d6..69289ef 100644
--- a/patches/rstudio-server-multi-version/0003-NewProjectWizard-Unhide-version-selector-widget.patch
+++ b/patches/rstudio-server-multi-version/0003-NewProjectWizard-Unhide-version-selector-widget.patch
@@ -1,4 +1,4 @@
1From 007b29e0af1c6132d80f9ee81799d1c3519ece2d Mon Sep 17 00:00:00 2001 1From b8117de5cf4117f4be4886fcef60f05adf3f7c53 Mon Sep 17 00:00:00 2001
2From: Ricardo Wurmus <rekado@elephly.net> 2From: Ricardo Wurmus <rekado@elephly.net>
3Date: Fri, 18 Dec 2020 10:35:39 +0100 3Date: Fri, 18 Dec 2020 10:35:39 +0100
4Subject: [PATCH 3/7] NewProjectWizard: Unhide version selector widget. 4Subject: [PATCH 3/7] NewProjectWizard: Unhide version selector widget.
@@ -11,10 +11,10 @@ Do not hide the widget.
11 1 file changed, 1 deletion(-) 11 1 file changed, 1 deletion(-)
12 12
13diff --git a/src/gwt/src/org/rstudio/studio/client/projects/ui/newproject/NewProjectWizard.java b/src/gwt/src/org/rstudio/studio/client/projects/ui/newproject/NewProjectWizard.java 13diff --git a/src/gwt/src/org/rstudio/studio/client/projects/ui/newproject/NewProjectWizard.java b/src/gwt/src/org/rstudio/studio/client/projects/ui/newproject/NewProjectWizard.java
14index 0a5713495e..344c2868b1 100644 14index cb2cbbd74e..ac61ff9695 100644
15--- a/src/gwt/src/org/rstudio/studio/client/projects/ui/newproject/NewProjectWizard.java 15--- a/src/gwt/src/org/rstudio/studio/client/projects/ui/newproject/NewProjectWizard.java
16+++ b/src/gwt/src/org/rstudio/studio/client/projects/ui/newproject/NewProjectWizard.java 16+++ b/src/gwt/src/org/rstudio/studio/client/projects/ui/newproject/NewProjectWizard.java
17@@ -71,7 +71,6 @@ public class NewProjectWizard extends Wizard<NewProjectInput,NewProjectResult> 17@@ -73,7 +73,6 @@ public class NewProjectWizard extends Wizard<NewProjectInput,NewProjectResult>
18 rVersions.getRVersionSpec()); 18 rVersions.getRVersionSpec());
19 addLeftWidget(rVersionSelector_); 19 addLeftWidget(rVersionSelector_);
20 rVersionSelector_.getElement().getStyle().setMarginRight(8, Unit.PX); 20 rVersionSelector_.getElement().getStyle().setMarginRight(8, Unit.PX);
@@ -23,5 +23,5 @@ index 0a5713495e..344c2868b1 100644
23 23
24 openInNewWindow_ = new CheckBox(constants_.openNewSessionLabel()); 24 openInNewWindow_ = new CheckBox(constants_.openNewSessionLabel());
25-- 25--
262.52.0 262.54.0
27 27
diff --git a/patches/rstudio-server-multi-version/0004-handleConnection-Switch-R-version-when-switching-pro.patch b/patches/rstudio-server-multi-version/0004-handleConnection-Switch-R-version-when-switching-pro.patch
index c3af0e0..3531ed6 100644
--- a/patches/rstudio-server-multi-version/0004-handleConnection-Switch-R-version-when-switching-pro.patch
+++ b/patches/rstudio-server-multi-version/0004-handleConnection-Switch-R-version-when-switching-pro.patch
@@ -1,4 +1,4 @@
1From b31dfc6f120c01ff6612b682b56d92449eb82ef8 Mon Sep 17 00:00:00 2001 1From 296b8aa60025f88f34167f35d257cc401352d231 Mon Sep 17 00:00:00 2001
2From: Ricardo Wurmus <rekado@elephly.net> 2From: Ricardo Wurmus <rekado@elephly.net>
3Date: Sat, 19 Dec 2020 00:57:26 +0100 3Date: Sat, 19 Dec 2020 00:57:26 +0100
4Subject: [PATCH 4/7] handleConnection: Switch R version when switching 4Subject: [PATCH 4/7] handleConnection: Switch R version when switching
@@ -13,7 +13,7 @@ project switch back to the default.
13 2 files changed, 30 insertions(+), 5 deletions(-) 13 2 files changed, 30 insertions(+), 5 deletions(-)
14 14
15diff --git a/src/cpp/session/SessionHttpMethods.cpp b/src/cpp/session/SessionHttpMethods.cpp 15diff --git a/src/cpp/session/SessionHttpMethods.cpp b/src/cpp/session/SessionHttpMethods.cpp
16index 2b313f2b77..19669a3623 100644 16index 01e3ffb12f..133ae4abad 100644
17--- a/src/cpp/session/SessionHttpMethods.cpp 17--- a/src/cpp/session/SessionHttpMethods.cpp
18+++ b/src/cpp/session/SessionHttpMethods.cpp 18+++ b/src/cpp/session/SessionHttpMethods.cpp
19@@ -2,6 +2,7 @@ 19@@ -2,6 +2,7 @@
@@ -24,7 +24,7 @@ index 2b313f2b77..19669a3623 100644
24 * 24 *
25 * Unless you have received this program directly from Posit Software pursuant 25 * Unless you have received this program directly from Posit Software pursuant
26 * to the terms of a commercial license agreement with Posit Software, then 26 * to the terms of a commercial license agreement with Posit Software, then
27@@ -711,6 +712,33 @@ void handleConnection(boost::shared_ptr<HttpConnection> ptrConnection, 27@@ -734,6 +735,33 @@ void handleConnection(boost::shared_ptr<HttpConnection> ptrConnection,
28 activeSession().setWorkingDir(projDir); 28 activeSession().setWorkingDir(projDir);
29 } 29 }
30 30
@@ -58,7 +58,7 @@ index 2b313f2b77..19669a3623 100644
58 if (options().switchProjectsWithUrl()) 58 if (options().switchProjectsWithUrl())
59 { 59 {
60 r_util::SessionScope scope; 60 r_util::SessionScope scope;
61@@ -763,10 +791,6 @@ void handleConnection(boost::shared_ptr<HttpConnection> ptrConnection, 61@@ -789,10 +817,6 @@ void handleConnection(boost::shared_ptr<HttpConnection> ptrConnection,
62 { 62 {
63 FilePath projFile = resolveAliasedPath(switchToProject); 63 FilePath projFile = resolveAliasedPath(switchToProject);
64 std::string projDir = createAliasedPath(projFile.getParent()); 64 std::string projDir = createAliasedPath(projFile.getParent());
@@ -70,10 +70,10 @@ index 2b313f2b77..19669a3623 100644
70 module_context::sharedProjectScratchPath(), 70 module_context::sharedProjectScratchPath(),
71 version, 71 version,
72diff --git a/src/gwt/src/org/rstudio/studio/client/projects/Projects.java b/src/gwt/src/org/rstudio/studio/client/projects/Projects.java 72diff --git a/src/gwt/src/org/rstudio/studio/client/projects/Projects.java b/src/gwt/src/org/rstudio/studio/client/projects/Projects.java
73index 0ab01f9945..26c332b58d 100644 73index b369c97c24..066a0c9db0 100644
74--- a/src/gwt/src/org/rstudio/studio/client/projects/Projects.java 74--- a/src/gwt/src/org/rstudio/studio/client/projects/Projects.java
75+++ b/src/gwt/src/org/rstudio/studio/client/projects/Projects.java 75+++ b/src/gwt/src/org/rstudio/studio/client/projects/Projects.java
76@@ -1131,7 +1131,8 @@ public class Projects implements OpenProjectFileEvent.Handler, 76@@ -1184,7 +1184,8 @@ public class Projects implements OpenProjectFileEvent.Handler,
77 { 77 {
78 // perform quit 78 // perform quit
79 applicationQuit_.performQuit(null, saveChanges, 79 applicationQuit_.performQuit(null, saveChanges,
@@ -84,5 +84,5 @@ index 0ab01f9945..26c332b58d 100644
84 }; 84 };
85 85
86-- 86--
872.52.0 872.54.0
88 88
diff --git a/patches/rstudio-server-multi-version/0005-Add-version-switcher-widget-to-toolbar.patch b/patches/rstudio-server-multi-version/0005-Add-version-switcher-widget-to-toolbar.patch
index 52d7164..dfb8400 100644
--- a/patches/rstudio-server-multi-version/0005-Add-version-switcher-widget-to-toolbar.patch
+++ b/patches/rstudio-server-multi-version/0005-Add-version-switcher-widget-to-toolbar.patch
@@ -1,4 +1,4 @@
1From 6c7733f8eca28ad8276c1e3d7236162bb0461d8f Mon Sep 17 00:00:00 2001 1From fdca633e307d4915fc99ba44c9bbc823b64c75a2 Mon Sep 17 00:00:00 2001
2From: Ricardo Wurmus <rekado@elephly.net> 2From: Ricardo Wurmus <rekado@elephly.net>
3Date: Sat, 19 Dec 2020 23:33:16 +0100 3Date: Sat, 19 Dec 2020 23:33:16 +0100
4Subject: [PATCH 5/7] Add version switcher widget to toolbar. 4Subject: [PATCH 5/7] Add version switcher widget to toolbar.
@@ -14,12 +14,12 @@ Subject: [PATCH 5/7] Add version switcher widget to toolbar.
14 create mode 100644 src/gwt/src/org/rstudio/studio/client/application/ui/RVersionPopupMenu.java 14 create mode 100644 src/gwt/src/org/rstudio/studio/client/application/ui/RVersionPopupMenu.java
15 15
16diff --git a/src/gwt/src/org/rstudio/core/client/ElementIds.java b/src/gwt/src/org/rstudio/core/client/ElementIds.java 16diff --git a/src/gwt/src/org/rstudio/core/client/ElementIds.java b/src/gwt/src/org/rstudio/core/client/ElementIds.java
17index 4af0d49c82..8f3de94a97 100644 17index 531dfb43d8..36297de2a8 100644
18--- a/src/gwt/src/org/rstudio/core/client/ElementIds.java 18--- a/src/gwt/src/org/rstudio/core/client/ElementIds.java
19+++ b/src/gwt/src/org/rstudio/core/client/ElementIds.java 19+++ b/src/gwt/src/org/rstudio/core/client/ElementIds.java
20@@ -384,6 +384,8 @@ public class ElementIds 20@@ -394,6 +394,8 @@ public class ElementIds
21 public final static String PROJECT_MENUBUTTON_TOOLBAR_SUFFIX = "toolbar"; 21 public final static String SIDEBAR_TOGGLE_BUTTON = "sidebar_toggle_button";
22 public final static String PROJECT_MENUBUTTON_MENUBAR_SUFFIX = "menubar"; 22 public final static String ASSISTANT_TOGGLE_BUTTON = "assistant_toggle_button";
23 23
24+ public final static String VERSION_MENUBUTTON = "version_menubutton"; 24+ public final static String VERSION_MENUBUTTON = "version_menubutton";
25+ 25+
@@ -27,10 +27,10 @@ index 4af0d49c82..8f3de94a97 100644
27 public final static String BUILD_MORE_MENUBUTTON = "build_more_menubutton"; 27 public final static String BUILD_MORE_MENUBUTTON = "build_more_menubutton";
28 public final static String BUILD_BOOKDOWN_MENUBUTTON = "build_bookdown_menubutton"; 28 public final static String BUILD_BOOKDOWN_MENUBUTTON = "build_bookdown_menubutton";
29diff --git a/src/gwt/src/org/rstudio/studio/client/RStudioGinjector.java b/src/gwt/src/org/rstudio/studio/client/RStudioGinjector.java 29diff --git a/src/gwt/src/org/rstudio/studio/client/RStudioGinjector.java b/src/gwt/src/org/rstudio/studio/client/RStudioGinjector.java
30index 8d1a11014d..7422e2da56 100644 30index 91a398836b..5a082a0f03 100644
31--- a/src/gwt/src/org/rstudio/studio/client/RStudioGinjector.java 31--- a/src/gwt/src/org/rstudio/studio/client/RStudioGinjector.java
32+++ b/src/gwt/src/org/rstudio/studio/client/RStudioGinjector.java 32+++ b/src/gwt/src/org/rstudio/studio/client/RStudioGinjector.java
33@@ -37,6 +37,7 @@ import org.rstudio.studio.client.application.AriaLiveService; 33@@ -39,6 +39,7 @@ import org.rstudio.studio.client.application.LoggedOutDialog;
34 import org.rstudio.studio.client.application.events.EventBus; 34 import org.rstudio.studio.client.application.events.EventBus;
35 import org.rstudio.studio.client.application.ui.AboutDialog; 35 import org.rstudio.studio.client.application.ui.AboutDialog;
36 import org.rstudio.studio.client.application.ui.ProjectPopupMenu; 36 import org.rstudio.studio.client.application.ui.ProjectPopupMenu;
@@ -38,7 +38,7 @@ index 8d1a11014d..7422e2da56 100644
38 import org.rstudio.studio.client.application.ui.addins.AddinsToolbarButton; 38 import org.rstudio.studio.client.application.ui.addins.AddinsToolbarButton;
39 import org.rstudio.studio.client.application.ui.impl.DesktopApplicationHeader; 39 import org.rstudio.studio.client.application.ui.impl.DesktopApplicationHeader;
40 import org.rstudio.studio.client.application.ui.impl.WebApplicationHeader; 40 import org.rstudio.studio.client.application.ui.impl.WebApplicationHeader;
41@@ -235,6 +236,7 @@ public interface RStudioGinjector extends Ginjector 41@@ -242,6 +243,7 @@ public interface RStudioGinjector extends Ginjector
42 void injectMembers(CodeFilesList codeFilesList); 42 void injectMembers(CodeFilesList codeFilesList);
43 void injectMembers(ToolbarPopupMenu toolbarPopupMenu); 43 void injectMembers(ToolbarPopupMenu toolbarPopupMenu);
44 void injectMembers(ProjectPopupMenu projectPopupMenu); 44 void injectMembers(ProjectPopupMenu projectPopupMenu);
@@ -47,10 +47,10 @@ index 8d1a11014d..7422e2da56 100644
47 void injectMembers(TextEditingTargetPresentationHelper presHelper); 47 void injectMembers(TextEditingTargetPresentationHelper presHelper);
48 void injectMembers(TextEditingTargetRMarkdownHelper rmarkdownHelper); 48 void injectMembers(TextEditingTargetRMarkdownHelper rmarkdownHelper);
49diff --git a/src/gwt/src/org/rstudio/studio/client/application/ui/GlobalToolbar.java b/src/gwt/src/org/rstudio/studio/client/application/ui/GlobalToolbar.java 49diff --git a/src/gwt/src/org/rstudio/studio/client/application/ui/GlobalToolbar.java b/src/gwt/src/org/rstudio/studio/client/application/ui/GlobalToolbar.java
50index 65a2842c89..f22a1f0254 100644 50index 82e2de1941..94332f29db 100644
51--- a/src/gwt/src/org/rstudio/studio/client/application/ui/GlobalToolbar.java 51--- a/src/gwt/src/org/rstudio/studio/client/application/ui/GlobalToolbar.java
52+++ b/src/gwt/src/org/rstudio/studio/client/application/ui/GlobalToolbar.java 52+++ b/src/gwt/src/org/rstudio/studio/client/application/ui/GlobalToolbar.java
53@@ -240,6 +240,10 @@ public class GlobalToolbar extends Toolbar 53@@ -349,6 +349,10 @@ public class GlobalToolbar extends Toolbar
54 ProjectPopupMenu projectMenu = new ProjectPopupMenu( 54 ProjectPopupMenu projectMenu = new ProjectPopupMenu(
55 sessionInfo, commands_, ElementIds.PROJECT_MENUBUTTON_TOOLBAR_SUFFIX); 55 sessionInfo, commands_, ElementIds.PROJECT_MENUBUTTON_TOOLBAR_SUFFIX);
56 addRightWidget(projectMenu.getToolbarButton()); 56 addRightWidget(projectMenu.getToolbarButton());
@@ -230,10 +230,10 @@ index 0000000000..eedc5996ae
230+ private EventBus events_; 230+ private EventBus events_;
231+} 231+}
232diff --git a/src/gwt/src/org/rstudio/studio/client/workbench/commands/Commands.cmd.xml b/src/gwt/src/org/rstudio/studio/client/workbench/commands/Commands.cmd.xml 232diff --git a/src/gwt/src/org/rstudio/studio/client/workbench/commands/Commands.cmd.xml b/src/gwt/src/org/rstudio/studio/client/workbench/commands/Commands.cmd.xml
233index 2a5b6e43af..785adfcb35 100644 233index 20322193cd..361864d129 100644
234--- a/src/gwt/src/org/rstudio/studio/client/workbench/commands/Commands.cmd.xml 234--- a/src/gwt/src/org/rstudio/studio/client/workbench/commands/Commands.cmd.xml
235+++ b/src/gwt/src/org/rstudio/studio/client/workbench/commands/Commands.cmd.xml 235+++ b/src/gwt/src/org/rstudio/studio/client/workbench/commands/Commands.cmd.xml
236@@ -1368,6 +1368,17 @@ See `/src/gwt/tools/i18n-helpers/README.md`. 236@@ -1387,6 +1387,17 @@ See `/src/gwt/tools/i18n-helpers/README.md`.
237 desc="Edit options for the current project" 237 desc="Edit options for the current project"
238 windowMode="main"/> 238 windowMode="main"/>
239 239
@@ -252,7 +252,7 @@ index 2a5b6e43af..785adfcb35 100644
252 menuLabel="" 252 menuLabel=""
253 buttonLabel="" 253 buttonLabel=""
254diff --git a/src/gwt/src/org/rstudio/studio/client/workbench/commands/Commands.java b/src/gwt/src/org/rstudio/studio/client/workbench/commands/Commands.java 254diff --git a/src/gwt/src/org/rstudio/studio/client/workbench/commands/Commands.java b/src/gwt/src/org/rstudio/studio/client/workbench/commands/Commands.java
255index ff6e358843..536994086f 100644 255index adc2c49d0e..627a0292ab 100644
256--- a/src/gwt/src/org/rstudio/studio/client/workbench/commands/Commands.java 256--- a/src/gwt/src/org/rstudio/studio/client/workbench/commands/Commands.java
257+++ b/src/gwt/src/org/rstudio/studio/client/workbench/commands/Commands.java 257+++ b/src/gwt/src/org/rstudio/studio/client/workbench/commands/Commands.java
258@@ -2,6 +2,7 @@ 258@@ -2,6 +2,7 @@
@@ -281,7 +281,7 @@ index ff6e358843..536994086f 100644
281+ 281+
282 // Console 282 // Console
283 public abstract AppCommand consoleClear(); 283 public abstract AppCommand consoleClear();
284 public abstract AppCommand interruptR(); 284 public abstract AppCommand consoleFind();
285-- 285--
2862.52.0 2862.54.0
287 287
diff --git a/patches/rstudio-server-multi-version/0006-Look-at-.local-share-rstudio-r-versions-for-custom-R.patch b/patches/rstudio-server-multi-version/0006-Look-at-.local-share-rstudio-r-versions-for-custom-R.patch
index 6fcd3cf..faf2c0b 100644
--- a/patches/rstudio-server-multi-version/0006-Look-at-.local-share-rstudio-r-versions-for-custom-R.patch
+++ b/patches/rstudio-server-multi-version/0006-Look-at-.local-share-rstudio-r-versions-for-custom-R.patch
@@ -1,4 +1,4 @@
1From ccc0dac68ed530e563662a3a5d72b8f05daadf00 Mon Sep 17 00:00:00 2001 1From 08f9713c698072e7ffc33c2cec52197863834196 Mon Sep 17 00:00:00 2001
2From: Ricardo Wurmus <rekado@elephly.net> 2From: Ricardo Wurmus <rekado@elephly.net>
3Date: Sun, 20 Dec 2020 00:25:42 +0100 3Date: Sun, 20 Dec 2020 00:25:42 +0100
4Subject: [PATCH 6/7] Look at ~/.local/share/rstudio/r-versions for custom R 4Subject: [PATCH 6/7] Look at ~/.local/share/rstudio/r-versions for custom R
@@ -68,10 +68,10 @@ index ee06a3d536..1bb653b065 100644
68 bool detectRVersion(const core::FilePath& rScriptPath, 68 bool detectRVersion(const core::FilePath& rScriptPath,
69 core::r_util::RVersion* pVersion, 69 core::r_util::RVersion* pVersion,
70diff --git a/src/cpp/session/SessionClientInit.cpp b/src/cpp/session/SessionClientInit.cpp 70diff --git a/src/cpp/session/SessionClientInit.cpp b/src/cpp/session/SessionClientInit.cpp
71index 649f648e25..a63f0942c7 100644 71index f2ed4790e0..a77bbb2186 100644
72--- a/src/cpp/session/SessionClientInit.cpp 72--- a/src/cpp/session/SessionClientInit.cpp
73+++ b/src/cpp/session/SessionClientInit.cpp 73+++ b/src/cpp/session/SessionClientInit.cpp
74@@ -577,8 +577,14 @@ void handleClientInit(const boost::function<void()>& initFunction, 74@@ -601,8 +601,14 @@ void handleClientInit(const boost::function<void()>& initFunction,
75 sessionInfo["multi_session"] = options.multiSession(); 75 sessionInfo["multi_session"] = options.multiSession();
76 76
77 // Read versions from /etc/rstudio/r-versions 77 // Read versions from /etc/rstudio/r-versions
@@ -88,5 +88,5 @@ index 649f648e25..a63f0942c7 100644
88 { 88 {
89 json::Object rVersionJson; 89 json::Object rVersionJson;
90-- 90--
912.52.0 912.54.0
92 92
diff --git a/patches/rstudio-server-multi-version/0007-detectRLocationsUsingR-Restore-R_HOME-at-the-end.patch b/patches/rstudio-server-multi-version/0007-detectRLocationsUsingR-Restore-R_HOME-at-the-end.patch
index aefa035..b4e8d1b 100644
--- a/patches/rstudio-server-multi-version/0007-detectRLocationsUsingR-Restore-R_HOME-at-the-end.patch
+++ b/patches/rstudio-server-multi-version/0007-detectRLocationsUsingR-Restore-R_HOME-at-the-end.patch
@@ -1,4 +1,4 @@
1From d24ecdaf549c3f35cc3ee32b5af3ccb70b1a45c4 Mon Sep 17 00:00:00 2001 1From 767399d1d3305cec2aea6b36517e5e74b521e3aa Mon Sep 17 00:00:00 2001
2From: Ricardo Wurmus <rekado@elephly.net> 2From: Ricardo Wurmus <rekado@elephly.net>
3Date: Sun, 20 Dec 2020 14:49:51 +0100 3Date: Sun, 20 Dec 2020 14:49:51 +0100
4Subject: [PATCH 7/7] detectRLocationsUsingR: Restore R_HOME at the end. 4Subject: [PATCH 7/7] detectRLocationsUsingR: Restore R_HOME at the end.
@@ -11,7 +11,7 @@ process is calling it, and its R_HOME may not be unset.
11 1 file changed, 3 insertions(+) 11 1 file changed, 3 insertions(+)
12 12
13diff --git a/src/cpp/core/r_util/REnvironmentPosix.cpp b/src/cpp/core/r_util/REnvironmentPosix.cpp 13diff --git a/src/cpp/core/r_util/REnvironmentPosix.cpp b/src/cpp/core/r_util/REnvironmentPosix.cpp
14index a4e964d49d..3fee33ff49 100644 14index 07ed73ec05..712e72f19e 100644
15--- a/src/cpp/core/r_util/REnvironmentPosix.cpp 15--- a/src/cpp/core/r_util/REnvironmentPosix.cpp
16+++ b/src/cpp/core/r_util/REnvironmentPosix.cpp 16+++ b/src/cpp/core/r_util/REnvironmentPosix.cpp
17@@ -493,6 +493,7 @@ bool detectRLocationsUsingR(const std::string& rScriptPath, 17@@ -493,6 +493,7 @@ bool detectRLocationsUsingR(const std::string& rScriptPath,
@@ -32,5 +32,5 @@ index a4e964d49d..3fee33ff49 100644
32 } 32 }
33 #endif 33 #endif
34-- 34--
352.52.0 352.54.0
36 36