diff --git a/.SRCINFO b/.SRCINFO
index a059c1dbd6903..913c250d55791 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = rstudio-desktop
pkgdesc = A powerful and productive integrated development environment (IDE) for R programming language
pkgver = 2024.04.1.748
- pkgrel = 3
+ pkgrel = 4
url = https://www.rstudio.com/products/rstudio/
arch = x86_64
license = AGPL3
@@ -26,7 +26,6 @@ pkgbase = rstudio-desktop
depends = qt5-xmlpatterns
depends = postgresql-libs
depends = sqlite3
- depends = soci
depends = clang
depends = hunspell-en_US
depends = mathjax2
@@ -36,15 +35,21 @@ pkgbase = rstudio-desktop
optdepends = subversion: for subversion support
optdepends = openssh-askpass: for a git ssh access
optdepends = quarto: for Quarto projects support
+ options = !emptydirs
+ options = !debug
source = rstudio-2024.04.1.748.tar.gz::https://github.com/rstudio/rstudio/archive/refs/tags/v2024.04.1+748.tar.gz
- source = https://github.com/quarto-dev/quarto/archive/refs/heads/release/rstudio-cherry-blossom.zip
- source = https://nodejs.org/dist/v18.19.1/node-v18.19.1-linux-x64.tar.gz
+ source = git+https://github.com/quarto-dev/quarto.git#branch=release/rstudio-cherry-blossom
+ source = https://github.com/SOCI/soci/archive/refs/tags/v4.0.3.tar.gz
source = qt.conf
- source = pandoc_version.patch
+ source = 0001-pandoc_version.patch
+ source = 0002-allow_system_node.patch
+ source = 0003-fortify_source.patch
sha256sums = 5c1190ae22e3a25740727ff1f341ef568f47359a0d1358958ec22f7e5b59b75b
- sha256sums = df3a040f0cf4ce1892519082dd6822a8ca433e9e4f02d9394ab2931733f7e5a6
- sha256sums = 724802c45237477dbe5777923743e6c77906830cae03a82b5653ebd75b301dda
+ sha256sums = SKIP
+ sha256sums = 4b1ff9c8545c5d802fbe06ee6cd2886630e5c03bf740e269bb625b45cf934928
sha256sums = 723626bfe05dafa545e135e8e61a482df111f488583fef155301acc5ecbbf921
sha256sums = 286925c442c1818979714feeec1577f03ae8a3527d2478b0f55238e2272a0b9e
+ sha256sums = ad4bd3076ff2bff7d075e3928a7e55c618fa744e3bf5d3d387bf70e01ff96c2f
+ sha256sums = c657f75f26f95c5dae3a3f5605305af2f47954a9d266de8ffc8fc2f0b47e8bd4
pkgname = rstudio-desktop
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index fe2b8481f8a4f..0000000000000
--- a/.gitignore
+++ /dev/null
@@ -1,11 +0,0 @@
-/src/
-/pkg/
-/*.log
-/*.pkg.tar.*
-/rstudio-*.tar.gz
-/gin-*.zip
-/gwt-*.zip
-/core-dictionaries.zip
-/*.diff
-
-/pkg-cache/
diff --git a/pandoc_version.patch b/0001-pandoc_version.patch
similarity index 100%
rename from pandoc_version.patch
rename to 0001-pandoc_version.patch
diff --git a/0002-allow_system_node.patch b/0002-allow_system_node.patch
new file mode 100644
index 0000000000000..517a45eabf7d5
--- /dev/null
+++ b/0002-allow_system_node.patch
@@ -0,0 +1,97 @@
+diff -ru rstudio-desktop.original/src/rstudio-2024.04.1-748/src/cpp/conf/rsession-dev.conf rstudio-desktop/src/rstudio-2024.04.1-748/src/cpp/conf/rsession-dev.conf
+--- rstudio-desktop.original/src/rstudio-2024.04.1-748/src/cpp/conf/rsession-dev.conf 2024-05-07 06:31:08.000000000 +1200
++++ rstudio-desktop/src/rstudio-2024.04.1-748/src/cpp/conf/rsession-dev.conf 2024-05-21 19:32:00.206198890 +1200
+@@ -39,7 +39,7 @@
+ external-pandoc-path=${RSTUDIO_DEPENDENCIES_PANDOC_DIR}
+ external-quarto-path=${RSTUDIO_DEPENDENCIES_QUARTO_DIR}
+ external-libclang-path=${RSTUDIO_DEPENDENCIES_DIR}/common/libclang
+-external-node-path=${RSTUDIO_DEPENDENCIES_DIR}/common/node/18.18.2/bin/node
++external-node-path=/usr/bin/node
+
+ # enable copilot
+ copilot-enabled=1
+diff -ru rstudio-desktop.original/src/rstudio-2024.04.1-748/src/cpp/session/CMakeLists.txt rstudio-desktop/src/rstudio-2024.04.1-748/src/cpp/session/CMakeLists.txt
+--- rstudio-desktop.original/src/rstudio-2024.04.1-748/src/cpp/session/CMakeLists.txt 2024-05-07 06:31:08.000000000 +1200
++++ rstudio-desktop/src/rstudio-2024.04.1-748/src/cpp/session/CMakeLists.txt 2024-05-21 10:33:50.351362947 +1200
+@@ -697,10 +697,12 @@
+ DESTINATION "${RSTUDIO_INSTALL_SUPPORTING}/resources")
+
+ # install node
+- install(
+- DIRECTORY "${RSTUDIO_DEPENDENCIES_DIR}/common/node/${RSTUDIO_INSTALLED_NODE_VERSION}/"
+- DESTINATION "${RSTUDIO_INSTALL_BIN}/node"
+- USE_SOURCE_PERMISSIONS)
++ if(NOT RSTUDIO_USE_SYSTEM_NODE)
++ install(
++ DIRECTORY "${RSTUDIO_DEPENDENCIES_DIR}/common/node/${RSTUDIO_INSTALLED_NODE_VERSION}/"
++ DESTINATION "${RSTUDIO_INSTALL_BIN}/node"
++ USE_SOURCE_PERMISSIONS)
++ endif()
+
+ # install quarto (or pandoc if quarto disabled)
+ if(QUARTO_ENABLED)
+diff -ru rstudio-desktop.original/src/rstudio-2024.04.1-748/src/cpp/session/SessionOptions.cpp rstudio-desktop/src/rstudio-2024.04.1-748/src/cpp/session/SessionOptions.cpp
+--- rstudio-desktop.original/src/rstudio-2024.04.1-748/src/cpp/session/SessionOptions.cpp 2024-05-07 06:31:08.000000000 +1200
++++ rstudio-desktop/src/rstudio-2024.04.1-748/src/cpp/session/SessionOptions.cpp 2024-05-21 19:33:46.308996710 +1200
+@@ -709,7 +709,7 @@
+ std::string* pPath)
+ {
+ #if defined(__linux__) && !defined(RSTUDIO_PACKAGE_BUILD)
+- FilePath dependenciesPath = resourcePath.completePath("../../dependencies/common/node/18.18.2");
++ FilePath dependenciesPath = resourcePath.completePath("/usr");
+ resolvePath(dependenciesPath, pPath);
+ #else
+ resolvePath(resourcePath, pPath);
+diff -ru rstudio-desktop.original/src/rstudio-2024.04.1-748/src/gwt/build.xml rstudio-desktop/src/rstudio-2024.04.1-748/src/gwt/build.xml
+--- rstudio-desktop.original/src/rstudio-2024.04.1-748/src/gwt/build.xml 2024-05-07 06:31:08.000000000 +1200
++++ rstudio-desktop/src/rstudio-2024.04.1-748/src/gwt/build.xml 2024-05-21 19:28:10.023896075 +1200
+@@ -85,8 +85,8 @@
+
+
+
+-
+-
++
++
+
+
+
+diff -ru rstudio-desktop.original/src/rstudio-2024.04.1-748/src/node/CMakeNodeTools.txt rstudio-desktop/src/rstudio-2024.04.1-748/src/node/CMakeNodeTools.txt
+--- rstudio-desktop.original/src/rstudio-2024.04.1-748/src/node/CMakeNodeTools.txt 2024-05-07 06:31:08.000000000 +1200
++++ rstudio-desktop/src/rstudio-2024.04.1-748/src/node/CMakeNodeTools.txt 2024-05-21 19:28:34.497148803 +1200
+@@ -19,7 +19,7 @@
+
+ # set the node version
+ if(NOT DEFINED RSTUDIO_NODE_VERSION)
+- set(RSTUDIO_NODE_VERSION "18.18.2")
++ set(RSTUDIO_NODE_VERSION "Current")
+ endif()
+ if(DEFINED ENV{RSTUDIO_NODE_VERSION})
+ set(RSTUDIO_NODE_VERSION $ENV{RSTUDIO_NODE_VERSION})
+@@ -45,7 +45,7 @@
+ NO_DEFAULT_PATH PATH_SUFFIXES "bin"
+ PATHS "/opt/rstudio-tools/dependencies/common/node/${RSTUDIO_NODE_VERSION}"
+ "c:/rstudio-tools/dependencies/common/node/${RSTUDIO_NODE_VERSION}"
+- "${CMAKE_CURRENT_LIST_DIR}/../../dependencies/common/node/${RSTUDIO_NODE_VERSION}")
++ "/usr")
+
+ find_program(NPM
+ NAMES npm
+@@ -53,7 +53,7 @@
+ NO_DEFAULT_PATH
+ PATHS "/opt/rstudio-tools/dependencies/common/node/${RSTUDIO_NODE_VERSION}"
+ "c:/rstudio-tools/dependencies/common/node/${RSTUDIO_NODE_VERSION}"
+- "${CMAKE_CURRENT_LIST_DIR}/../../dependencies/common/node/${RSTUDIO_NODE_VERSION}")
++ "/usr")
+
+ find_program(NPX
+ NAMES npx
+@@ -61,7 +61,7 @@
+ NO_DEFAULT_PATH
+ PATHS "/opt/rstudio-tools/dependencies/common/node/${RSTUDIO_NODE_VERSION}"
+ "c:/rstudio-tools/dependencies/common/node/${RSTUDIO_NODE_VERSION}"
+- "${CMAKE_CURRENT_LIST_DIR}/../../dependencies/common/node/${RSTUDIO_NODE_VERSION}")
++ "/usr")
+
+ endif()
+
diff --git a/0003-fortify_source.patch b/0003-fortify_source.patch
new file mode 100644
index 0000000000000..fd0b308e8567f
--- /dev/null
+++ b/0003-fortify_source.patch
@@ -0,0 +1,12 @@
+diff -ru a/src/rstudio-2024.04.1-748/src/cpp/CMakeLists.txt b/src/rstudio-2024.04.1-748/src/cpp/CMakeLists.txt
+--- a/src/rstudio-2024.04.1-748/src/cpp/CMakeLists.txt 2024-05-07 06:31:08.000000000 +1200
++++ b/src/rstudio-2024.04.1-748/src/cpp/CMakeLists.txt 2024-05-28 17:44:46.567294045 +1200
+@@ -139,7 +139,7 @@
+ # gcc hardending options (see: http://wiki.debian.org/Hardening)
+ if(NOT APPLE)
+ add_definitions(-Wformat -Wformat-security)
+- add_definitions(-D_FORTIFY_SOURCE=2)
++ add_definitions(-D_FORTIFY_SOURCE=3)
+ add_definitions(-fstack-protector-strong)
+ add_definitions(-fPIC)
+ if(CMAKE_BUILD_TYPE STREQUAL Debug)
diff --git a/PKGBUILD b/PKGBUILD
index 88285c0fbb04d..b43fa3172abd5 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -9,16 +9,16 @@ _gitcommit=3ada7c6
_gitname=rstudio-rstudio-${_gitcommit}
pkgver=${_vermajor}.${_verminor}.${_verpatch}.${_versuffix}
_srcname=rstudio-${_vermajor}.${_verminor}.${_verpatch}-${_versuffix}
-_nodever=18.19.1
_pandocver="current"
+_sociver="4.0.3"
_quarto="FALSE"
-pkgrel=3
+pkgrel=4
pkgdesc="A powerful and productive integrated development environment (IDE) for R programming language"
arch=('x86_64')
url="https://www.rstudio.com/products/rstudio/"
license=('AGPL3')
-depends=('r>=3.3.0' 'boost-libs' 'qt5-sensors' 'qt5-svg' 'qt5-webengine' 'qt5-xmlpatterns' 'postgresql-libs' 'sqlite3' 'soci' 'clang' 'hunspell-en_US' 'mathjax2' 'pandoc' 'yaml-cpp')
+depends=('r>=3.3.0' 'boost-libs' 'qt5-sensors' 'qt5-svg' 'qt5-webengine' 'qt5-xmlpatterns' 'postgresql-libs' 'sqlite3' 'clang' 'hunspell-en_US' 'mathjax2' 'pandoc' 'yaml-cpp')
makedepends=('git' 'cmake>=3.29' 'boost' 'desktop-file-utils' 'jdk8-openjdk' 'apache-ant' 'unzip' 'openssl' 'libcups' 'pam' 'patchelf' 'wget' 'yarn')
optdepends=('git: for git support'
'subversion: for subversion support'
@@ -26,21 +26,33 @@ optdepends=('git: for git support'
'quarto: for Quarto projects support')
source=("rstudio-$pkgver.tar.gz::https://github.com/rstudio/rstudio/archive/refs/tags/v${_vermajor}.${_verminor}.${_verpatch}+${_versuffix}.tar.gz"
- "https://github.com/quarto-dev/quarto/archive/refs/heads/release/rstudio-cherry-blossom.zip"
- "https://nodejs.org/dist/v${_nodever}/node-v${_nodever}-linux-x64.tar.gz"
+ "git+https://github.com/quarto-dev/quarto.git#branch=release/rstudio-cherry-blossom"
+ "https://github.com/SOCI/soci/archive/refs/tags/v${_sociver}.tar.gz"
"qt.conf"
- "pandoc_version.patch")
+ "0001-pandoc_version.patch"
+ "0002-allow_system_node.patch"
+ "0003-fortify_source.patch")
sha256sums=('5c1190ae22e3a25740727ff1f341ef568f47359a0d1358958ec22f7e5b59b75b'
- 'df3a040f0cf4ce1892519082dd6822a8ca433e9e4f02d9394ab2931733f7e5a6'
- '724802c45237477dbe5777923743e6c77906830cae03a82b5653ebd75b301dda'
+ 'SKIP'
+ '4b1ff9c8545c5d802fbe06ee6cd2886630e5c03bf740e269bb625b45cf934928'
'723626bfe05dafa545e135e8e61a482df111f488583fef155301acc5ecbbf921'
- '286925c442c1818979714feeec1577f03ae8a3527d2478b0f55238e2272a0b9e')
+ '286925c442c1818979714feeec1577f03ae8a3527d2478b0f55238e2272a0b9e'
+ 'ad4bd3076ff2bff7d075e3928a7e55c618fa744e3bf5d3d387bf70e01ff96c2f'
+ 'c657f75f26f95c5dae3a3f5605305af2f47954a9d266de8ffc8fc2f0b47e8bd4')
+
+options=('!emptydirs' '!debug')
prepare() {
cd ${srcdir}/${_srcname}
# Do not use outdated version name of pandoc
- patch -p1 < ${srcdir}/pandoc_version.patch
+ patch -p1 < ${srcdir}/0001-pandoc_version.patch
+
+ # Add option to use system node
+ patch -p3 < ${srcdir}/0002-allow_system_node.patch
+
+ # Suppress _FORTIFY_SOURCE mismatch warnings
+ patch -p3 < ${srcdir}/0003-fortify_source.patch
cd "${srcdir}/${_srcname}/dependencies/common"
install -d pandoc/${_pandocver}
@@ -50,18 +62,19 @@ prepare() {
ln -sfT /usr/bin/pandoc pandoc/${_pandocver}/pandoc
# Nodejs
- install -d node/${_nodever}
- cp -r "${srcdir}/node-v${_nodever}-linux-x64/"* node/${_nodever}
+ ##install -d node/${_nodever}
+ ##cp -r "${srcdir}/node-v${_nodever}-linux-x64/"* node/${_nodever}
# Fix links for src/cpp/session/CMakeLists.txt
cd "${srcdir}/${_srcname}/dependencies"
ln -sfT /usr/share/myspell/dicts dictionaries
ln -sfT /usr/share/mathjax2 mathjax-27
+ # Bundled SOCI libs
+ ln -sfT "${srcdir}/soci-${_sociver}" "soci-${_sociver}"
# Panmirror is picked up now from Quarto repo
- # Ideally: git clone --branch release/rstudio-cherry-blossom https://github.com/quarto-dev/quarto.git "${srcdir}/${_srcname}/src/gwt/lib/quarto"
- mkdir -p "${srcdir}/${_srcname}/src/gwt/lib/quarto"
- cp -r "${srcdir}/quarto-release-rstudio-cherry-blossom/"* "${srcdir}/${_srcname}/src/gwt/lib/quarto"
+ ln -sfT "${srcdir}/quarto" "${srcdir}/${_srcname}/src/gwt/lib/quarto"
+
}
build() {
@@ -81,8 +94,34 @@ build() {
ln -sfT /usr/bin/pandoc pandoc/${_pandocver}/bin/tools/pandoc
fi
- cd ${srcdir}
+ cd "${srcdir}/${_srcname}/dependencies/soci-${_sociver}"
+ msg "Buildind SOCI libs"
+ mkdir build
+ cd build
+ cmake \
+ -DCMAKE_POLICY_DEFAULT_CMP0063="NEW" \
+ -DCMAKE_POLICY_DEFAULT_CMP0074="NEW" \
+ -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true \
+ -DCMAKE_CXX_VISIBILITY_PRESET="$COMPILE_VISIBILITY" \
+ -DSOCI_TESTS=OFF \
+ -DSOCI_CXX11=ON \
+ -DSOCI_EMPTY=OFF \
+ -DWITH_BOOST=ON \
+ -DWITH_POSTGRESQL=ON \
+ -DWITH_SQLITE3=ON \
+ -DWITH_DB2=OFF \
+ -DWITH_MYSQL=OFF \
+ -DWITH_ORACLE=OFF \
+ -DWITH_FIREBIRD=OFF \
+ -DWITH_ODBC=OFF \
+ ..
+
+ cmake --build . --target all
+
+ export LDFLAGS="${LDFLAGS} -L${srcdir}/${_srcname}/dependencies/soci-${_sociver}/build/lib"
+
+ cd ${srcdir}
msg "Downloading and installing R packages..."
export R_LIBS_USER="${srcdir}/${_srcname}/dependencies/R"
_JOBS="$(grep -oP -- "-j\s*\K[0-9]+" <<< "${MAKEFLAGS}")" || _JOBS="1"
@@ -94,6 +133,8 @@ build() {
done
export PATH=/usr/lib/jvm/java-8-openjdk/jre/bin/:${PATH}
+ export RSTUDIO_TOOLS_ROOT="${srcdir}/${_srcname}/dependencies"
+ export RSTUDIO_NODE_PATH=/usr/
export RSTUDIO_VERSION_MAJOR=${_vermajor}
export RSTUDIO_VERSION_MINOR=${_verminor}
export RSTUDIO_VERSION_PATCH=${_verpatch}
@@ -113,6 +154,7 @@ build() {
# which results as empty '/usr/local/bin' in package
# Following override works for cmake >3.29
export CMAKE_INSTALL_PREFIX=/usr/lib/rstudio
+
cmake -S "${srcdir}/${_srcname}" -B build \
-DRSTUDIO_TARGET=Desktop \
@@ -121,15 +163,12 @@ build() {
-DQT_QMAKE_EXECUTABLE=/usr/bin/qmake \
-DBoost_NO_BOOST_CMAKE=ON \
-DQUARTO_ENABLED=${_quarto} \
- -DRSTUDIO_USE_SYSTEM_SOCI=yes \
+ -DRSTUDIO_USE_SYSTEM_NODE=yes \
-DRSTUDIO_BUNDLE_QT=FALSE
}
package() {
- # Should work for cmake >3.29
- export CMAKE_INSTALL_PREFIX=/usr/lib/rstudio
-
# Install the program
make -C build DESTDIR="${pkgdir}" install