diff --git a/repo/rstudio-desktop/pandoc_version.patch b/repo/rstudio-desktop/0001-pandoc_version.patch similarity index 100% rename from repo/rstudio-desktop/pandoc_version.patch rename to repo/rstudio-desktop/0001-pandoc_version.patch diff --git a/repo/rstudio-desktop/0002-allow_system_node.patch b/repo/rstudio-desktop/0002-allow_system_node.patch new file mode 100644 index 0000000..517a45e --- /dev/null +++ b/repo/rstudio-desktop/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 @@ + + <!-- panmirror typescript library --> + <!-- ensure version matches RSTUDIO_NODE_VERSION --> +- <property name="node.version" value="18.18.2"/> +- <property name="node.dir" value="../../dependencies/common/node/${node.version}"/> ++ <property name="node.version" value="Current"/> ++ <property name="node.dir" value="/usr"/> + <!-- use yarn from system but will prefer yarn from dependencies if available --> + <condition property="yarn.bin" value="yarn"> + <not> +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/repo/rstudio-desktop/0003-fortify_source.patch b/repo/rstudio-desktop/0003-fortify_source.patch new file mode 100644 index 0000000..fd0b308 --- /dev/null +++ b/repo/rstudio-desktop/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/repo/rstudio-desktop/PKGBUILD b/repo/rstudio-desktop/PKGBUILD index c6fc59f..2eda13b 100644 --- a/repo/rstudio-desktop/PKGBUILD +++ b/repo/rstudio-desktop/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=("boost-libs" "clang" "hunspell-en_US" "mathjax2" "pandoc" "postgresql-libs" "qt5-sensors" "qt5-svg" "qt5-webengine" "qt5-xmlpatterns" "quarto-cli" "r>=3.3.0" "soci" "sqlite3" "yaml-cpp") +depends=("boost-libs" "clang" "hunspell-en_US" "mathjax2" "pandoc" "postgresql-libs" "qt5-sensors" "qt5-svg" "qt5-webengine" "qt5-xmlpatterns" "quarto-cli" "r>=3.3.0" "sqlite3" "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