summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorManuela Kuhn <36827019+manuelakuhn@users.noreply.github.com>2021-07-26 09:57:56 +0200
committerGitHub <noreply@github.com>2021-07-26 09:57:56 +0200
commitde6d3ef1ee87528074933d6caaf8ac43ac45d3b6 (patch)
tree8f48a99d57d7769b0967fb5854d030a6c5bad93a /var
parent24048b35456633516f0d82b90efe9ea717b108a8 (diff)
downloadspack-de6d3ef1ee87528074933d6caaf8ac43ac45d3b6.tar.gz
spack-de6d3ef1ee87528074933d6caaf8ac43ac45d3b6.tar.bz2
spack-de6d3ef1ee87528074933d6caaf8ac43ac45d3b6.tar.xz
spack-de6d3ef1ee87528074933d6caaf8ac43ac45d3b6.zip
rstudio: add new package (#24647)
Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/rstudio/package.py124
1 files changed, 124 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/rstudio/package.py b/var/spack/repos/builtin/packages/rstudio/package.py
new file mode 100644
index 0000000000..fabfe23a56
--- /dev/null
+++ b/var/spack/repos/builtin/packages/rstudio/package.py
@@ -0,0 +1,124 @@
+# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+import os
+
+from spack import *
+
+
+class Rstudio(CMakePackage):
+ """RStudio is an integrated development environment (IDE) for R."""
+
+ homepage = "www.rstudio.com/products/rstudio/"
+ url = "https://github.com/rstudio/rstudio/archive/refs/tags/v1.4.1717.tar.gz"
+
+ version('1.4.1717', sha256='3af234180fd7cef451aef40faac2c7b52860f14a322244c1c7aede029814d261')
+
+ variant('notebook', default=False, description='Enable notebook support.')
+
+ depends_on('r@3.0.1:', type=('build', 'run'))
+ depends_on('cmake@3.4.3:', type='build')
+ depends_on('pkgconfig', type='build')
+ depends_on('ant', type='build')
+ depends_on('boost+pic@1.69:')
+ depends_on('qt+webkit@5.12:')
+ depends_on('patchelf@0.9:')
+ depends_on('yaml-cpp@:0.6.3') # find_package fails with newest version
+ depends_on('node-js')
+ depends_on('yarn')
+ depends_on('pandoc@2.11.4:')
+ depends_on('icu4c')
+ depends_on('soci~static+boost+postgresql+sqlite')
+ depends_on('java@8:')
+
+ with when('+notebook'):
+ depends_on('r-base64enc')
+ depends_on('r-digest')
+ depends_on('r-evaluate')
+ depends_on('r-glue')
+ depends_on('r-highr')
+ depends_on('r-htmltools')
+ depends_on('r-jsonlite')
+ depends_on('r-knitr')
+ depends_on('r-magrittr')
+ depends_on('r-markdown')
+ depends_on('r-mime')
+ depends_on('r-rmarkdown')
+ depends_on('r-stringi')
+ depends_on('r-stringr')
+ depends_on('r-tinytex')
+ depends_on('r-xfun')
+ depends_on('r-yaml')
+
+ # to use node-js provided by spack
+ patch('https://src.fedoraproject.org/rpms/rstudio/raw/5bda2e290c9e72305582f2011040938d3e356906/f/0004-use-system-node.patch',
+ sha256='4a6aff2b586ddfceb7c59215e5f4a03f25b08fcc55687acaa6ae23c11d75d0e8')
+
+ def cmake_args(self):
+ args = [
+ '-DRSTUDIO_TARGET=Desktop',
+ '-DRSTUDIO_PACKAGE_BUILD=Yes',
+ '-DRSTUDIO_USE_SYSTEM_YAML_CPP=Yes',
+ '-DRSTUDIO_USE_SYSTEM_BOOST=Yes',
+ '-DRSTUDIO_USE_SYSTEM_SOCI=Yes',
+ '-DQT_QMAKE_EXECUTABLE="{0}"'.format(self.spec['qt'].prefix.bin.qmake),
+ ]
+
+ return args
+
+ def setup_build_environment(self, env):
+ env.set('RSTUDIO_TOOLS_ROOT', self.prefix.tools)
+
+ def patch(self):
+ # fix hardcoded path for node-js in use_system_node patch
+ filter_file('<property name="node.bin" value="/usr/bin/node"/>',
+ '<property name="node.bin" value="{0}"/>'.format(
+ self.spec['node-js'].prefix.bin.node),
+ 'src/gwt/build.xml',
+ string=True)
+
+ # remove hardcoded soci path to use spack soci
+ if self.spec['soci'].version <= Version('4.0.0'):
+ soci_lib = self.spec['soci'].prefix.lib64
+ else:
+ soci_lib = self.spec['soci'].prefix.lib
+ filter_file('set(SOCI_LIBRARY_DIR "/usr/lib")',
+ 'set(SOCI_LIBRARY_DIR "{0}")'.format(soci_lib),
+ 'src/cpp/CMakeLists.txt',
+ string=True)
+
+ # unbundle icu libraries
+ filter_file('${QT_LIBRARY_DIR}/${ICU_LIBRARY}.so',
+ join_path(self.spec['icu4c'].prefix.lib, '${ICU_LIBRARY}.so'),
+ 'src/cpp/desktop/CMakeLists.txt',
+ string=True)
+
+ @run_before('cmake')
+ def install_deps(self):
+ deps = Executable('./dependencies/common/install-dictionaries')
+ deps()
+ deps = Executable('./dependencies/common/install-mathjax')
+ deps()
+
+ # two methods for pandoc
+ # 1) replace install-pandoc:
+ # - link pandoc into tools/pandoc/$PANDOC_VERSION
+ # (this is what install-pandoc would do)
+ # - cmake then installs pandoc files from there into bin
+ # 2) remove install-pandoc and cmake install step + link directly into bin
+
+ # method 1)
+ filter_file('set(PANDOC_VERSION "2.11.4" CACHE INTERNAL "Pandoc version")',
+ 'set(PANDOC_VERSION "{0}" CACHE INTERNAL "Pandoc version")'.format(
+ self.spec['pandoc'].version),
+ 'src/cpp/session/CMakeLists.txt',
+ string=True)
+
+ pandoc_dir = join_path(self.prefix.tools, 'pandoc', self.spec['pandoc'].version)
+ os.makedirs(pandoc_dir)
+ with working_dir(pandoc_dir):
+ os.symlink(self.spec['pandoc'].prefix.bin.pandoc, 'pandoc')
+ os.symlink(os.path.join(self.spec['pandoc'].prefix.bin, 'pandoc-citeproc'),
+ 'pandoc-citeproc')