summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wright <gienah@gentoo.org>2020-05-25 21:58:49 +1000
committerMark Wright <gienah@gentoo.org>2020-05-25 21:59:45 +1000
commit3baafff326dfe64a021b28d36a48751e81e95c32 (patch)
treec5a9f3170c9414eecc7116c74a5a4771c5b7dcdd /sci-mathematics/rstudio/files
parentdev-db/percona-server: drop old (diff)
downloadgentoo-3baafff326dfe64a021b28d36a48751e81e95c32.tar.gz
gentoo-3baafff326dfe64a021b28d36a48751e81e95c32.tar.bz2
gentoo-3baafff326dfe64a021b28d36a48751e81e95c32.zip
sci-mathematics/rstudio: Bump to 1.3.959
Package-Manager: Portage-2.3.100, Repoman-2.3.22 Signed-off-by: Mark Wright <gienah@gentoo.org>
Diffstat (limited to 'sci-mathematics/rstudio/files')
-rw-r--r--sci-mathematics/rstudio/files/rstudio-1.3.959-R-4.0.0.patch106
-rw-r--r--sci-mathematics/rstudio/files/rstudio-1.3.959-core.patch184
-rw-r--r--sci-mathematics/rstudio/files/rstudio-1.3.959-pandoc-mathjax.patch42
-rw-r--r--sci-mathematics/rstudio/files/rstudio-1.3.959-paths.patch118
-rw-r--r--sci-mathematics/rstudio/files/rstudio-1.3.959-prefs.patch68
-rw-r--r--sci-mathematics/rstudio/files/rstudio-1.3.959-qtsingleapplication.patch60
6 files changed, 578 insertions, 0 deletions
diff --git a/sci-mathematics/rstudio/files/rstudio-1.3.959-R-4.0.0.patch b/sci-mathematics/rstudio/files/rstudio-1.3.959-R-4.0.0.patch
new file mode 100644
index 000000000000..dc35d0ce0083
--- /dev/null
+++ b/sci-mathematics/rstudio/files/rstudio-1.3.959-R-4.0.0.patch
@@ -0,0 +1,106 @@
+From 71b1a935762efd24a79de193662450de5a89f67e Mon Sep 17 00:00:00 2001
+From: Jonathan McPherson <jonathan@rstudio.com>
+Date: Tue, 14 Jan 2020 12:53:20 -0800
+Subject: [PATCH] use R_NoSave over R_Slave for R 4.0+
+
+---
+ src/cpp/r/CMakeLists.txt | 12 ++++++++++++
+ src/cpp/r/config.h.in | 8 +++++++-
+ src/cpp/r/session/REmbeddedPosix.cpp | 20 ++++++++++++++------
+ 3 files changed, 33 insertions(+), 7 deletions(-)
+
+diff --git a/src/cpp/r/CMakeLists.txt b/src/cpp/r/CMakeLists.txt
+index 6984ae309c..29784b8b67 100644
+--- a/src/cpp/r/CMakeLists.txt
++++ b/src/cpp/r/CMakeLists.txt
+@@ -15,6 +15,18 @@
+
+ project (R)
+
++# find the version of R in play
++find_package(LibR REQUIRED)
++execute_process(
++ COMMAND "${LIBR_EXECUTABLE}" "--vanilla" "--slave" "-e" "cat(as.character(getRversion()))"
++ OUTPUT_VARIABLE LIBR_VERSION)
++
++# parse and save the R version to a variable
++string(REPLACE "." ";" R_VERSION_LIST "${LIBR_VERSION}")
++list(GET R_VERSION_LIST 0 R_VERSION_MAJOR)
++list(GET R_VERSION_LIST 1 R_VERSION_MINOR)
++list(GET R_VERSION_LIST 2 R_VERSION_PATCH)
++
+ # include files
+ file(GLOB_RECURSE R_HEADER_FILES "*.h*")
+
+diff --git a/src/cpp/r/config.h.in b/src/cpp/r/config.h.in
+index 6ba67c8e09..00bc8b6191 100644
+--- a/src/cpp/r/config.h.in
++++ b/src/cpp/r/config.h.in
+@@ -1,7 +1,7 @@
+ /*
+ * config.h.in
+ *
+- * Copyright (C) 2009-12 by RStudio, PBC
++ * Copyright (C) 2009-20 by RStudio, Inc.
+ *
+ * Unless you have received this program directly from RStudio pursuant
+ * to the terms of a commercial license agreement with RStudio, then
+@@ -16,4 +16,10 @@
+
+ #cmakedefine PANGO_CAIRO_FOUND
+
++// Important: These variables represent the version of R found during
++// compile/link time, NOT the version of R present at runtime.
++#define R_VERSION_MAJOR ${R_VERSION_MAJOR}
++#define R_VERSION_MINOR ${R_VERSION_MINOR}
++#define R_VERSION_PATCH ${R_VERSION_PATCH}
++
+
+diff --git a/src/cpp/r/session/REmbeddedPosix.cpp b/src/cpp/r/session/REmbeddedPosix.cpp
+index ac71b94522..73e2e2ce7f 100644
+--- a/src/cpp/r/session/REmbeddedPosix.cpp
++++ b/src/cpp/r/session/REmbeddedPosix.cpp
+@@ -1,7 +1,7 @@
+ /*
+ * REmbeddedPosix.cpp
+ *
+- * Copyright (C) 2009-19 by RStudio, PBC
++ * Copyright (C) 2009-20 by RStudio, Inc.
+ *
+ * Unless you have received this program directly from RStudio pursuant
+ * to the terms of a commercial license agreement with RStudio, then
+@@ -38,6 +38,8 @@ extern "C" void (*ptr_R_ProcessEvents)(void);
+ extern "C" typedef void (*ptr_QuartzCocoa_SetupEventLoop)(int, unsigned long);
+ #endif
+
++#include "config.h"
++
+ extern int R_running_as_main_program; // from unix/system.c
+
+ using namespace rstudio::core;
+@@ -103,14 +105,20 @@ void runEmbeddedR(const core::FilePath& /*rHome*/, // ignored on posix
+ //
+ structRstart rp;
+ Rstart Rp = &rp;
+- R_DefParams(Rp) ;
+- Rp->R_Slave = FALSE ;
++ R_DefParams(Rp);
++#if R_VERSION_MAJOR > 3
++ // R 4.0 and above use --no-echo to suppress output
++ Rp->R_NoEcho = FALSE;
++#else
++ // R 3.x and below use --slave
++ Rp->R_Slave = FALSE;
++#endif
+ Rp->R_Quiet = quiet ? TRUE : FALSE;
+- Rp->R_Interactive = TRUE ;
+- Rp->SaveAction = defaultSaveAction ;
++ Rp->R_Interactive = TRUE;
++ Rp->SaveAction = defaultSaveAction;
+ Rp->RestoreAction = SA_NORESTORE; // handled within initialize()
+ Rp->LoadInitFile = loadInitFile ? TRUE : FALSE;
+- R_SetParams(Rp) ;
++ R_SetParams(Rp);
+
+ // redirect console
+ R_Interactive = TRUE; // should have also been set by call to Rf_initialize_R
diff --git a/sci-mathematics/rstudio/files/rstudio-1.3.959-core.patch b/sci-mathematics/rstudio/files/rstudio-1.3.959-core.patch
new file mode 100644
index 000000000000..0f6af4ef7f12
--- /dev/null
+++ b/sci-mathematics/rstudio/files/rstudio-1.3.959-core.patch
@@ -0,0 +1,184 @@
+--- rstudio-1.3.959-orig/src/cpp/session/SessionClientInit.cpp 2020-05-19 04:11:10.000000000 +1000
++++ rstudio-1.3.959/src/cpp/session/SessionClientInit.cpp 2020-05-24 17:21:56.960469575 +1000
+@@ -91,13 +91,13 @@
+ boost::shared_ptr<http::Cookie>* pCookie)
+ {
+ // extract the base URL
+- json::JsonRpcRequest request;
++ core::json::JsonRpcRequest request;
+ Error error = parseJsonRpcRequest(ptrConnection->request().body(), &request);
+ if (error)
+ return error;
+ std::string baseURL;
+
+- error = json::readParams(request.params, &baseURL);
++ error = core::json::readParams(request.params, &baseURL);
+ if (error)
+ return error;
+
+@@ -143,7 +143,7 @@
+ if (options.programMode() == kSessionProgramModeServer &&
+ !core::http::validateCSRFHeaders(ptrConnection->request()))
+ {
+- ptrConnection->sendJsonRpcError(Error(json::errc::Unauthorized, ERROR_LOCATION));
++ ptrConnection->sendJsonRpcError(Error(core::json::errc::Unauthorized, ERROR_LOCATION));
+ return;
+ }
+
+@@ -173,12 +173,12 @@
+ }
+
+ // prepare session info
+- json::Object sessionInfo ;
++ core::json::Object sessionInfo ;
+ sessionInfo["clientId"] = clientId;
+ sessionInfo["mode"] = options.programMode();
+
+ // build initialization options for client
+- json::Object initOptions;
++ core::json::Object initOptions;
+ initOptions["restore_workspace"] = options.rRestoreWorkspace();
+ initOptions["run_rprofile"] = options.rRunRprofile();
+ sessionInfo["init_options"] = initOptions;
+@@ -194,8 +194,8 @@
+ }
+
+ // temp dir
+- FilePath tempDir = rstudio::r::session::utils::tempDir();
+- Error error = tempDir.ensureDirectory();
++ core::FilePath tempDir = rstudio::r::session::utils::tempDir();
++ core::Error error = tempDir.ensureDirectory();
+ if (error)
+ LOG_ERROR(error);
+ sessionInfo["temp_dir"] = tempDir.getAbsolutePath();
+@@ -213,12 +213,12 @@
+ sessionInfo["prompt"] = rstudio::r::options::getOption<std::string>("prompt");
+
+ // client state
+- json::Object clientStateObject;
++ core::json::Object clientStateObject;
+ rstudio::r::session::clientState().currentState(&clientStateObject);
+ sessionInfo["client_state"] = clientStateObject;
+
+ // source documents
+- json::Array jsonDocs;
++ core::json::Array jsonDocs;
+ error = modules::source::clientInitDocuments(&jsonDocs);
+ if (error)
+ LOG_ERROR(error);
+@@ -243,7 +243,7 @@
+ if (resumed)
+ {
+ // console actions
+- json::Object actionsObject;
++ core::json::Object actionsObject;
+ consoleActions.asJson(&actionsObject);
+ sessionInfo["console_actions"] = actionsObject;
+ }
+@@ -310,12 +310,12 @@
+ }
+ else
+ {
+- sessionInfo["active_project_file"] = json::Value();
+- sessionInfo["project_ui_prefs"] = json::Value();
+- sessionInfo["project_open_docs"] = json::Value();
++ sessionInfo["active_project_file"] = core::json::Value();
++ sessionInfo["project_ui_prefs"] = core::json::Value();
++ sessionInfo["project_open_docs"] = core::json::Value();
+ sessionInfo["project_supports_sharing"] = false;
+ sessionInfo["project_owned_by_user"] = false;
+- sessionInfo["project_user_data_directory"] = json::Value();
++ sessionInfo["project_user_data_directory"] = core::json::Value();
+ }
+
+ sessionInfo["system_encoding"] = std::string(::locale2charset(nullptr));
+@@ -352,20 +352,20 @@
+ sessionInfo["build_tools_bookdown_website"] =
+ module_context::isBookdownWebsite();
+
+- FilePath buildTargetDir = projects::projectContext().buildTargetPath();
++ core::FilePath buildTargetDir = projects::projectContext().buildTargetPath();
+ if (!buildTargetDir.isEmpty())
+ {
+ sessionInfo["build_target_dir"] = module_context::createAliasedPath(
+ buildTargetDir);
+- sessionInfo["has_pkg_src"] = (type == r_util::kBuildTypePackage) &&
++ sessionInfo["has_pkg_src"] = (type == core::r_util::kBuildTypePackage) &&
+ buildTargetDir.completeChildPath("src").exists();
+ sessionInfo["has_pkg_vig"] =
+- (type == r_util::kBuildTypePackage) &&
++ (type == core::r_util::kBuildTypePackage) &&
+ buildTargetDir.completeChildPath("vignettes").exists();
+ }
+ else
+ {
+- sessionInfo["build_target_dir"] = json::Value();
++ sessionInfo["build_target_dir"] = core::json::Value();
+ sessionInfo["has_pkg_src"] = false;
+ sessionInfo["has_pkg_vig"] = false;
+ }
+@@ -373,9 +373,9 @@
+ }
+ else
+ {
+- sessionInfo["build_tools_type"] = r_util::kBuildTypeNone;
++ sessionInfo["build_tools_type"] = core::r_util::kBuildTypeNone;
+ sessionInfo["build_tools_bookdown_website"] = false;
+- sessionInfo["build_target_dir"] = json::Value();
++ sessionInfo["build_target_dir"] = core::json::Value();
+ sessionInfo["has_pkg_src"] = false;
+ sessionInfo["has_pkg_vig"] = false;
+ }
+@@ -384,7 +384,7 @@
+ sessionInfo["presentation_commands"] = options.allowPresentationCommands();
+
+ sessionInfo["tutorial_api_available"] = false;
+- sessionInfo["tutorial_api_client_origin"] = json::Value();
++ sessionInfo["tutorial_api_client_origin"] = core::json::Value();
+
+ sessionInfo["build_state"] = modules::build::buildStateAsJson();
+ sessionInfo["devtools_installed"] = module_context::isMinimumDevtoolsInstalled();
+@@ -395,7 +395,7 @@
+
+ // console history -- we do this at the end because
+ // restoreBuildRestartContext may have reset it
+- json::Array historyArray;
++ core::json::Array historyArray;
+ rstudio::r::session::consoleHistory().asJson(&historyArray);
+ sessionInfo["console_history"] = historyArray;
+ sessionInfo["console_history_capacity"] =
+@@ -470,14 +470,14 @@
+
+ sessionInfo["multi_session"] = options.multiSession();
+
+- json::Object rVersionsJson;
++ core::json::Object rVersionsJson;
+ rVersionsJson["r_version"] = module_context::rVersion();
+ rVersionsJson["r_version_label"] = module_context::rVersionLabel();
+ rVersionsJson["r_home_dir"] = module_context::rHomeDir();
+ sessionInfo["r_versions_info"] = rVersionsJson;
+
+ sessionInfo["show_user_home_page"] = options.showUserHomePage();
+- sessionInfo["user_home_page_url"] = json::Value();
++ sessionInfo["user_home_page_url"] = core::json::Value();
+
+ sessionInfo["r_addins"] = modules::r_addins::addinRegistryAsJson();
+ sessionInfo["package_provided_extensions"] = modules::ppe::indexer().getPayload();
+@@ -501,7 +501,7 @@
+
+ sessionInfo["launcher_jobs_enabled"] = modules::overlay::launcherJobsFeatureDisplayed();
+
+- json::Object packageDependencies;
++ core::json::Object packageDependencies;
+ error = modules::dependency_list::getDependencyList(&packageDependencies);
+ if (error)
+ LOG_ERROR(error);
+@@ -529,7 +529,7 @@
+
+ // create response (we always set kEventsPending to false so that the client
+ // won't poll for events until it is ready)
+- json::JsonRpcResponse jsonRpcResponse;
++ core::json::JsonRpcResponse jsonRpcResponse;
+ jsonRpcResponse.setField(kEventsPending, "false");
+ jsonRpcResponse.setResult(sessionInfo);
+
diff --git a/sci-mathematics/rstudio/files/rstudio-1.3.959-pandoc-mathjax.patch b/sci-mathematics/rstudio/files/rstudio-1.3.959-pandoc-mathjax.patch
new file mode 100644
index 000000000000..d8718dda9b18
--- /dev/null
+++ b/sci-mathematics/rstudio/files/rstudio-1.3.959-pandoc-mathjax.patch
@@ -0,0 +1,42 @@
+--- rstudio-1.3.959-orig/src/cpp/session/CMakeLists.txt 2020-05-19 04:11:10.000000000 +1000
++++ rstudio-1.3.959/src/cpp/session/CMakeLists.txt 2020-05-24 18:54:40.444955162 +1000
+@@ -22,12 +22,6 @@
+ if(NOT EXISTS "${RSTUDIO_DEPENDENCIES_DIR}/common/dictionaries")
+ message(FATAL_ERROR "Dictionaries not found (re-run install-dependencies script to install)")
+ endif()
+-if(NOT EXISTS "${RSTUDIO_DEPENDENCIES_DIR}/common/mathjax-27")
+- message(FATAL_ERROR "Mathjax 2.7 not found (re-run install-dependencies script to install)")
+-endif()
+-if(NOT EXISTS "${RSTUDIO_DEPENDENCIES_DIR}/common/pandoc")
+- message(FATAL_ERROR "pandoc not found (re-run install-dependencies script to install)")
+-endif()
+
+ # verify embedded packages are available
+ foreach(PKG ${RSTUDIO_EMBEDDED_PACKAGES})
+@@ -500,10 +494,6 @@
+ install(DIRECTORY "${RSTUDIO_DEPENDENCIES_DIR}/common/dictionaries"
+ DESTINATION "${RSTUDIO_INSTALL_SUPPORTING}/resources")
+
+- # install mathjax for local html preview
+- install(DIRECTORY "${RSTUDIO_DEPENDENCIES_DIR}/common/mathjax-27"
+- DESTINATION "${RSTUDIO_INSTALL_SUPPORTING}/resources")
+-
+ # icons for database connections
+ install(DIRECTORY "resources/connections"
+ DESTINATION ${RSTUDIO_INSTALL_SUPPORTING}/resources)
+@@ -516,15 +506,6 @@
+ install(DIRECTORY "resources/dependencies"
+ DESTINATION ${RSTUDIO_INSTALL_SUPPORTING}/resources)
+
+- # install pandoc
+- set(PANDOC_VERSION "2.7.3" CACHE INTERNAL "Pandoc version")
+-
+- set(PANDOC_BIN "${RSTUDIO_DEPENDENCIES_DIR}/common/pandoc/${PANDOC_VERSION}")
+- file(GLOB PANDOC_FILES "${PANDOC_BIN}/pandoc*")
+- install(FILES ${PANDOC_FILES}
+- PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+- DESTINATION ${RSTUDIO_INSTALL_BIN}/pandoc)
+-
+ # install embedded packages
+ foreach(PKG ${RSTUDIO_EMBEDDED_PACKAGES})
+ file(GLOB PKG_FILES "${RSTUDIO_DEPENDENCIES_DIR}/common/${PKG}*.tar.gz")
diff --git a/sci-mathematics/rstudio/files/rstudio-1.3.959-paths.patch b/sci-mathematics/rstudio/files/rstudio-1.3.959-paths.patch
new file mode 100644
index 000000000000..175d52f7149a
--- /dev/null
+++ b/sci-mathematics/rstudio/files/rstudio-1.3.959-paths.patch
@@ -0,0 +1,118 @@
+--- rstudio-1.3.959-orig/CMakeGlobals.txt 2020-05-19 04:11:10.000000000 +1000
++++ rstudio-1.3.959/CMakeGlobals.txt 2020-05-25 19:30:10.711859714 +1000
+@@ -181,7 +181,7 @@
+ else()
+ set(RSTUDIO_INSTALL_BIN bin)
+ endif()
+- set(RSTUDIO_INSTALL_SUPPORTING .)
++ set(RSTUDIO_INSTALL_SUPPORTING ${DISTRO_SHARE})
+ endif()
+
+ # if the install prefix is /usr/local then tweak as appropriate
+--- rstudio-1.3.959-orig/src/cpp/server/CMakeLists.txt 2020-05-19 04:11:10.000000000 +1000
++++ rstudio-1.3.959/src/cpp/server/CMakeLists.txt 2020-05-25 19:30:10.711859714 +1000
+@@ -190,7 +190,7 @@
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${RSERVER_INITD_DEBIAN_SCRIPT}.in
+ ${CMAKE_CURRENT_BINARY_DIR}/${RSERVER_INITD_DEBIAN_SCRIPT})
+ install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${RSERVER_INITD_DEBIAN_SCRIPT}
+- DESTINATION ${RSERVER_INITD_DEBIAN_DIR})
++ DESTINATION ${DISTRO_SHARE}/${RSERVER_INITD_DEBIAN_DIR})
+
+ # install configured redhat init.d script
+ set(RSERVER_INITD_REDHAT_DIR "extras/init.d/redhat")
+@@ -198,7 +198,7 @@
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${RSERVER_INITD_REDHAT_SCRIPT}.in
+ ${CMAKE_CURRENT_BINARY_DIR}/${RSERVER_INITD_REDHAT_SCRIPT})
+ install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${RSERVER_INITD_REDHAT_SCRIPT}
+- DESTINATION ${RSERVER_INITD_REDHAT_DIR})
++ DESTINATION ${DISTRO_SHARE}/${RSERVER_INITD_REDHAT_DIR})
+
+ # install configured suse init.d script
+ set(RSERVER_INITD_SUSE_DIR "extras/init.d/suse")
+@@ -206,13 +206,13 @@
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${RSERVER_INITD_SUSE_SCRIPT}.in
+ ${CMAKE_CURRENT_BINARY_DIR}/${RSERVER_INITD_SUSE_SCRIPT})
+ install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${RSERVER_INITD_SUSE_SCRIPT}
+- DESTINATION ${RSERVER_INITD_SUSE_DIR})
++ DESTINATION ${DISTRO_SHARE}/${RSERVER_INITD_SUSE_DIR})
+
+ # install pam profile
+ set(RSERVER_PAM_DIR "extras/pam")
+ set(RSERVER_PAM_PROFILE "${RSERVER_PAM_DIR}/rstudio")
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${RSERVER_PAM_PROFILE}
+- DESTINATION ${RSERVER_PAM_DIR})
++ DESTINATION ${DISTRO_SHARE}/${RSERVER_PAM_DIR})
+
+ # install configured upstart profile
+ set(RSERVER_UPSTART_DIR "extras/upstart")
+@@ -220,12 +220,12 @@
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${RSERVER_UPSTART_PROFILE}.in
+ ${CMAKE_CURRENT_BINARY_DIR}/${RSERVER_UPSTART_PROFILE})
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${RSERVER_UPSTART_PROFILE}
+- DESTINATION ${RSERVER_UPSTART_DIR})
++ DESTINATION ${DISTRO_SHARE}/${RSERVER_UPSTART_DIR})
+ set(RSERVER_UPSTART_PROFILE_REDHAT "${RSERVER_UPSTART_DIR}/rstudio-server.redhat.conf")
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${RSERVER_UPSTART_PROFILE_REDHAT}.in
+ ${CMAKE_CURRENT_BINARY_DIR}/${RSERVER_UPSTART_PROFILE_REDHAT})
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${RSERVER_UPSTART_PROFILE_REDHAT}
+- DESTINATION ${RSERVER_UPSTART_DIR})
++ DESTINATION ${DISTRO_SHARE}/${RSERVER_UPSTART_DIR})
+
+ # install configured systemd profile
+ set(RSERVER_SYSTEMD_DIR "extras/systemd")
+--- rstudio-1.3.959-orig/src/cpp/server/ServerOptions.cpp 2020-05-19 04:11:10.000000000 +1000
++++ rstudio-1.3.959/src/cpp/server/ServerOptions.cpp 2020-05-25 19:34:19.377675880 +1000
+@@ -442,8 +442,8 @@
+
+ // convert relative paths by completing from the system installation
+ // path (this allows us to be relocatable)
+- resolvePath(resourcePath, &wwwLocalPath_);
+- resolvePath(resourcePath, &wwwSymbolMapsPath_);
++ resolvePath(resourcePath.completeChildPath(DISTRO_SHARE), &wwwLocalPath_);
++ resolvePath(resourcePath.completeChildPath(DISTRO_SHARE), &wwwSymbolMapsPath_);
+ resolvePath(binaryPath, &authPamHelperPath_);
+ resolvePath(binaryPath, &rsessionPath_);
+ resolvePath(binaryPath, &rldpathPath_);
+--- rstudio-1.3.959-orig/src/cpp/session/SessionOptions.cpp 2020-05-19 04:11:10.000000000 +1000
++++ rstudio-1.3.959/src/cpp/session/SessionOptions.cpp 2020-05-25 19:33:58.318606745 +1000
+@@ -52,7 +52,7 @@
+ namespace session {
+
+ namespace {
+-const char* const kDefaultPandocPath = "bin/pandoc";
++const char* const kDefaultPandocPath = "bin";
+ const char* const kDefaultPostbackPath = "bin/postback/rpostback";
+ const char* const kDefaultRsclangPath = "bin/rsclang";
+
+@@ -586,14 +586,14 @@
+ }
+
+ // convert relative paths by completing from the app resource path
+- resolvePath(resourcePath_, &rResourcesPath_);
+- resolvePath(resourcePath_, &agreementFilePath_);
+- resolvePath(resourcePath_, &wwwLocalPath_);
+- resolvePath(resourcePath_, &wwwSymbolMapsPath_);
+- resolvePath(resourcePath_, &coreRSourcePath_);
+- resolvePath(resourcePath_, &modulesRSourcePath_);
+- resolvePath(resourcePath_, &sessionLibraryPath_);
+- resolvePath(resourcePath_, &sessionPackageArchivesPath_);
++ resolvePath(resourcePath_.completeChildPath(DISTRO_SHARE), &rResourcesPath_);
++ resolvePath(resourcePath_.completeChildPath(DISTRO_SHARE), &agreementFilePath_);
++ resolvePath(resourcePath_.completeChildPath(DISTRO_SHARE), &wwwLocalPath_);
++ resolvePath(resourcePath_.completeChildPath(DISTRO_SHARE), &wwwSymbolMapsPath_);
++ resolvePath(resourcePath_.completeChildPath(DISTRO_SHARE), &coreRSourcePath_);
++ resolvePath(resourcePath_.completeChildPath(DISTRO_SHARE), &modulesRSourcePath_);
++ resolvePath(resourcePath_.completeChildPath(DISTRO_SHARE), &sessionLibraryPath_);
++ resolvePath(resourcePath_.completeChildPath(DISTRO_SHARE), &sessionPackageArchivesPath_);
+ resolvePostbackPath(resourcePath_, &rpostbackPath_);
+ #ifdef _WIN32
+ resolvePath(resourcePath_, &consoleIoPath_);
+@@ -626,7 +626,7 @@
+ }
+ winptyPath_ = pty.completePath(completion).getAbsolutePath();
+ #endif // _WIN32
+- resolvePath(resourcePath_, &hunspellDictionariesPath_);
++ resolvePath(resourcePath_.completeChildPath(DISTRO_SHARE), &hunspellDictionariesPath_);
+ resolvePath(resourcePath_, &mathjaxPath_);
+ resolvePath(resourcePath_, &libclangHeadersPath_);
+ resolvePandocPath(resourcePath_, &pandocPath_);
diff --git a/sci-mathematics/rstudio/files/rstudio-1.3.959-prefs.patch b/sci-mathematics/rstudio/files/rstudio-1.3.959-prefs.patch
new file mode 100644
index 000000000000..4f9613947694
--- /dev/null
+++ b/sci-mathematics/rstudio/files/rstudio-1.3.959-prefs.patch
@@ -0,0 +1,68 @@
+--- rstudio-1.3.959-orig/src/gwt/build.xml 2020-05-19 04:11:10.000000000 +1000
++++ rstudio-1.3.959/src/gwt/build.xml 2020-05-25 17:38:28.911881424 +1000
+@@ -28,19 +28,37 @@
+ classname="com.google.javascript.jscomp.ant.CompileTask"
+ classpath="${tools.dir}/compiler/compiler.jar"/>
+
++ <!-- Configure path to aopalliance -->
++ <property name="aopalliance.sdk" value="@GENTOO_PORTAGE_EPREFIX@/usr/share/aopalliance-1/lib"/>
++
++ <!-- Configure path to javax-inject -->
++ <property name="javax.inject" value="@GENTOO_PORTAGE_EPREFIX@/usr/share/javax-inject/lib"/>
++
++ <!-- Configure path to validation-api -->
++ <property name="validation.api" value="@GENTOO_PORTAGE_EPREFIX@/usr/share/validation-api-1.0/lib"/>
++ <property name="validation.api.sources" value="@GENTOO_PORTAGE_EPREFIX@/usr/share/validation-api-1.0/sources"/>
++
+ <!-- Configure path to GWT SDK -->
+ <property name="gwt.sdk" value="${lib.dir}/gwt/gwt-rstudio-1.3"/>
++ <!-- Configure path to Google Gin -->
++ <property name="gin.sdk" value="@GENTOO_PORTAGE_EPREFIX@/usr/share/gin-2.1/lib"/>
++
+ <property name="gwt.extra.args" value=""/>
+ <property name="gwt.main.module" value="org.rstudio.studio.RStudio"/>
+ <property name="ace.bin" value="${src.dir}/org/rstudio/studio/client/workbench/views/source/editors/text/ace"/>
++ <property environment="env"/>
+
+ <!-- configure code server -->
+ <property name="bind.address" value="127.0.0.1"/>
+
+ <path id="project.class.path">
+ <pathelement location="${build.dir}"/>
++ <fileset dir="${aopalliance.sdk}" includes="*.jar"/>
++ <fileset dir="${javax.inject}" includes="*.jar"/>
++ <fileset dir="${validation.api}" includes="*.jar"/>
++ <fileset dir="${validation.api.sources}" includes="*.zip"/>
+ <fileset dir="${gwt.sdk}" includes="*.jar"/>
+- <fileset dir="${lib.dir}/gin/2.1.2" includes="*.jar"/>
++ <fileset dir="${gin.sdk}" includes="*.jar"/>
+ </path>
+
+ <path id="test.class.path">
+@@ -114,8 +132,10 @@
+ <pathelement location="${src.dir}"/>
+ <path refid="project.class.path"/>
+ </classpath>
++ <jvmarg value="-Duser.home=${env.T}"/>
+ <!-- add jvmarg -Xss16M or similar if you see a StackOverflowError -->
+ <jvmarg value="-Xmx1536M"/>
++ <jvmarg value="-Djava.util.prefs.userRoot=${env.T}"/>
+ <arg value="-war"/>
+ <arg value="${www.dir}"/>
+ <arg value="-localWorkers"/>
+@@ -168,6 +188,7 @@
+ <pathelement location="${src.dir}"/>
+ <path refid="project.class.path"/>
+ </classpath>
++ <jvmarg value="-Duser.home=${env.T}"/>
+ <jvmarg value="-Xmx2048M"/>
+ <arg value="-style"/>
+ <arg value="PRETTY"/>
+@@ -212,6 +233,7 @@
+ <pathelement location="${test.dir}"/>
+ <pathelement location="${src.dir}"/>
+ </classpath>
++ <jvmarg value="-Duser.home=${env.T}"/>
+ <classpath refid="project.class.path"/>
+ <classpath refid="unittest.class.path"/>
+ <arg value="org.rstudio.studio.client.RStudioUnitTestSuite"/>
diff --git a/sci-mathematics/rstudio/files/rstudio-1.3.959-qtsingleapplication.patch b/sci-mathematics/rstudio/files/rstudio-1.3.959-qtsingleapplication.patch
new file mode 100644
index 000000000000..3ced4f9afa1c
--- /dev/null
+++ b/sci-mathematics/rstudio/files/rstudio-1.3.959-qtsingleapplication.patch
@@ -0,0 +1,60 @@
+--- rstudio-1.3.959-orig/src/cpp/desktop/CMakeLists.txt 2020-05-19 04:11:10.000000000 +1000
++++ rstudio-1.3.959/src/cpp/desktop/CMakeLists.txt 2020-05-24 17:15:47.039422975 +1000
+@@ -138,6 +138,13 @@
+ get_filename_component(QT_LIBRARY_PATH "${QT_BIN_DIR}/../lib" ABSOLUTE CACHE)
+ get_filename_component(QT_INSTALL_PATH "${QT_BIN_DIR}/.." ABSOLUTE CACHE)
+
++find_path(QTSINGLEAPPLIB_INCLUDE_DIR NAMES QtSingleApplication
++ PATH_SUFFIXES QtSolutions
++ PATHS
++ /usr/include/qt5)
++find_library(QTSINGLEAPPLIB Qt5Solutions_SingleApplication-2.6
++ libQt5Solutions_SingleApplication-2.6)
++
+ # disable clang warnings for qt sources
+ if(APPLE)
+ add_definitions(-Wno-unused-private-field
+@@ -156,7 +163,6 @@
+
+ set(MOC_DESKTOP_HEADER_FILES ${DESKTOP_HEADER_FILES})
+ list(REMOVE_ITEM MOC_DESKTOP_HEADER_FILES
+- ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/qtsingleapplication/qtlockedfile.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/DesktopDetectRHome.hpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/DesktopOptions.hpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/DesktopRVersion.hpp
+@@ -225,8 +231,6 @@
+ DesktopSynctex.cpp
+ DesktopJobLauncherOverlay.cpp
+ RemoteDesktopSessionLauncherOverlay.cpp
+- 3rdparty/qtsingleapplication/qtsingleapplication.cpp
+- 3rdparty/qtsingleapplication/qtlocalpeer.cpp
+ )
+
+ if(WIN32)
+@@ -283,6 +287,7 @@
+ ${OPENSSL_INCLUDE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR}
++ ${QTSINGLEAPPLIB_INCLUDE_DIR}
+ ${EXT_SOURCE_DIR}
+ ${SESSION_SOURCE_DIR}/include
+ ${TESTS_INCLUDE_DIR}
+@@ -386,6 +391,7 @@
+ # set link dependencies
+ target_link_libraries(rstudio
+ ${RSTUDIO_QTMODULES}
++ ${QTSINGLEAPPLIB}
+ ${QT_LIBRARIES}
+ ${Boost_LIBRARIES}
+ rstudio-core
+--- rstudio-1.3.959-orig/src/cpp/desktop/DesktopPosixApplication.hpp 2020-05-19 04:11:10.000000000 +1000
++++ rstudio-1.3.959/src/cpp/desktop/DesktopPosixApplication.hpp 2020-05-24 17:13:22.050016953 +1000
+@@ -16,7 +16,7 @@
+ #ifndef DESKTOP_POSIX_APPLICATION_HPP
+ #define DESKTOP_POSIX_APPLICATION_HPP
+
+-#include "3rdparty/qtsingleapplication/QtSingleApplication"
++#include <QtSingleApplication>
+
+ #include "DesktopApplicationLaunch.hpp"
+