From a5411330ca20f5ebf32d4c30d8833979ec88ab35 Mon Sep 17 00:00:00 2001 From: Lilac <lilac@noreply.bgme.me> Date: Sun, 23 Feb 2025 08:24:46 +0000 Subject: [PATCH] rstudio-desktop: auto updated to 2024.12.1-1 --- repo/rstudio-desktop/.nvchecker.toml | 6 + .../0002-allow_system_node.patch | 97 ---- repo/rstudio-desktop/PKGBUILD | 434 ++++++++++++------ repo/rstudio-desktop/qt.conf | 8 - 4 files changed, 298 insertions(+), 247 deletions(-) create mode 100644 repo/rstudio-desktop/.nvchecker.toml delete mode 100644 repo/rstudio-desktop/0002-allow_system_node.patch delete mode 100644 repo/rstudio-desktop/qt.conf diff --git a/repo/rstudio-desktop/.nvchecker.toml b/repo/rstudio-desktop/.nvchecker.toml new file mode 100644 index 0000000..b9a31c4 --- /dev/null +++ b/repo/rstudio-desktop/.nvchecker.toml @@ -0,0 +1,6 @@ +[rstudio-desktop] +source = "git" +git = "https://github.com/rstudio/rstudio.git" +prefix = "v" +from_pattern = '\+' +to_pattern = '.' diff --git a/repo/rstudio-desktop/0002-allow_system_node.patch b/repo/rstudio-desktop/0002-allow_system_node.patch deleted file mode 100644 index 517a45e..0000000 --- a/repo/rstudio-desktop/0002-allow_system_node.patch +++ /dev/null @@ -1,97 +0,0 @@ -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/PKGBUILD b/repo/rstudio-desktop/PKGBUILD index 35a48d2..ca8a993 100644 --- a/repo/rstudio-desktop/PKGBUILD +++ b/repo/rstudio-desktop/PKGBUILD @@ -1,99 +1,99 @@ -# Maintainer: Aleksandr Beliaev <trap000d@gmail.com> +# Maintainer: +# Contributor: Aleksandr Beliaev <trap000d@gmail.com> -pkgname=rstudio-desktop -_vermajor=2024 -_verminor=04 -_verpatch=2 -_versuffix=764 -_gitcommit=e4392fc -_gitname=rstudio-rstudio-${_gitcommit} -pkgver=${_vermajor}.${_verminor}.${_verpatch}.${_versuffix} -_srcname=rstudio-${_vermajor}.${_verminor}.${_verpatch}-${_versuffix} -_pandocver="current" -_sociver="4.0.3" -_quarto="FALSE" +## links +# https://posit.co/products/open-source/rstudio/ +# https://github.com/rstudio/rstudio +## options +: ${_nodeversion:=23} +: ${_pandocver:=current} +: ${_soci_version:=4.0.3} +: ${_quarto_branch:=release/rstudio-cranberry-hibiscus} +: ${_quarto:=false} + +: ${_commit:=c5bcd0ec4fb959b2a9fcd656f12eb62092f0617e} + +_pkgname="rstudio-desktop" +pkgname="$_pkgname" +pkgver=2024.12.1 pkgrel=1 pkgdesc="A powerful and productive integrated development environment (IDE) for R programming language" -arch=('x86_64') url="https://github.com/rstudio/rstudio" license=('AGPL-3.0-only') -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' 'ninja' 'desktop-file-utils' 'jdk8-openjdk' 'apache-ant' 'unzip' 'openssl' 'libcups' 'pam' 'patchelf' 'wget' 'yarn') -optdepends=('git: for git support' - 'subversion: for subversion support' - 'openssh-askpass: for a git ssh access' - 'quarto: for Quarto projects support') +arch=('x86_64') -source=("rstudio-$pkgver.tar.gz::https://github.com/rstudio/rstudio/archive/refs/tags/v${_vermajor}.${_verminor}.${_verpatch}+${_versuffix}.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" - "0002-allow_system_node.patch") +depends=("quarto-cli" + 'boost-libs' + 'dbus' + 'hicolor-icon-theme' + 'hunspell-en_US' + 'libcups' + 'mathjax2' + 'nspr' + 'nss' + 'pandoc' + 'r' +) +makedepends=( + 'apache-ant' + 'boost' + 'cmake' + 'git' + 'java-environment' + 'libcups' + 'ninja' + 'nvm' # AUR + 'openssl' + 'pam' + 'python' + 'python-setuptools' + 'wget' + 'yarn' +) +optdepends=( + 'git: for git support' + 'nodejs: for copilot support' + 'openssh-askpass: for a git ssh access' + 'quarto: for Quarto projects support' + 'subversion: for subversion support' +) -sha256sums=('89b0d6741b6bd4dac52fd8bd9372d4f1919c97dd41056a03c975d0570eaf439e' - 'SKIP' - '4b1ff9c8545c5d802fbe06ee6cd2886630e5c03bf740e269bb625b45cf934928' - '723626bfe05dafa545e135e8e61a482df111f488583fef155301acc5ecbbf921' - 'ad4bd3076ff2bff7d075e3928a7e55c618fa744e3bf5d3d387bf70e01ff96c2f') +if [[ "${_quarto::1}" == "t" ]]; then + makedepends+=('quarto') # AUR +fi + +provides=("$_pkgname") +conflicts=("$_pkgname") options=('!emptydirs' '!debug') -prepare() { - cd ${srcdir}/${_srcname} - msg "Do not use outdated version name of pandoc" - sed -i '/PANDOC_VERSION/s/2.18/current/' "${srcdir}/${_srcname}/CMakeGlobals.txt" - - msg "Suppress _FORTIFY_SOURCE mismatch warnings" - sed -i 's/D_FORTIFY_SOURCE=2/D_FORTIFY_SOURCE=3/' "${srcdir}/${_srcname}/src/cpp/CMakeLists.txt" - - # Add option to use system node - patch -p3 < ${srcdir}/0002-allow_system_node.patch - - cd "${srcdir}/${_srcname}/dependencies/common" - install -d pandoc/${_pandocver} - - ln -sfT /usr/share/myspell/dicts dictionaries - ln -sfT /usr/share/mathjax2 mathjax-27 - ln -sfT /usr/bin/pandoc pandoc/${_pandocver}/pandoc - - # 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 from Quarto repo - ln -sfT "${srcdir}/quarto" "${srcdir}/${_srcname}/src/gwt/lib/quarto" +_source_main() { + _pkgsrc="rstudio-$_commit" + local _pkgext="tar.gz" + source=( + "rstudio-$pkgver-${_commit::7}.$_pkgext"::"https://github.com/rstudio/rstudio/archive/$_commit.$_pkgext" + "quarto"::"git+https://github.com/quarto-dev/quarto.git#branch=${_quarto_branch}" + ) + sha256sums=( + 'SKIP' + 'SKIP' + ) } -build() { - # Quarto set up - if (pacman -Q quarto >/dev/null 2>/dev/null) ; then - _quarto="TRUE" - msg "Quarto is installed, include it to build" - cd "${srcdir}/${_srcname}/dependencies" - install -d quarto/bin/tools - ln -sfT /usr/bin/quarto quarto/bin/quarto - ln -sfT /usr/bin/pandoc quarto/bin/tools/pandoc - else - _quarto="FALSE" - msg "Quarto is not installed, use Pandoc" - cd "${srcdir}/${_srcname}/dependencies" - install -d pandoc/${_pandocver}/bin/tools - ln -sfT /usr/bin/pandoc pandoc/${_pandocver}/bin/tools/pandoc - fi +_source_soci() { + local _pkgext_soci="tar.gz" + source+=("soci-$_soci_version.$_pkgext_soci"::"https://github.com/SOCI/soci/archive/refs/tags/v$_soci_version.$_pkgext_soci") + sha256sums+=('4b1ff9c8545c5d802fbe06ee6cd2886630e5c03bf740e269bb625b45cf934928') - cd "${srcdir}/${_srcname}/dependencies/soci-${_sociver}" - msg "Building SOCI libs..." - - local _CMAKE_SOCI_OPTIONS=( - -DCMAKE_POLICY_DEFAULT_CMP0063="NEW" - -DCMAKE_POLICY_DEFAULT_CMP0074="NEW" - -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true - -DCMAKE_CXX_VISIBILITY_PRESET="$COMPILE_VISIBILITY" + _build_soci() ( + echo "Building SOCI..." + local _opts_soci=( + -B "soci-$_soci_version/build" + -S "soci-$_soci_version" + -G Ninja + -DCMAKE_BUILD_TYPE=None + -DCMAKE_INSTALL_PREFIX='/usr' -DSOCI_TESTS=OFF -DSOCI_CXX11=ON -DSOCI_EMPTY=OFF @@ -105,73 +105,223 @@ build() { -DWITH_ORACLE=OFF -DWITH_FIREBIRD=OFF -DWITH_ODBC=OFF + -DBUILD_SHARED_LIBS=OFF + -Wno-dev ) - cmake -G Ninja -S "${srcdir}/${_srcname}/dependencies/soci-${_sociver}" -B build "${_CMAKE_SOCI_OPTIONS[@]}" - cmake --build 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" - mkdir -p "${R_LIBS_USER}" - for RPKG in rmarkdown renv testthat xml2 yaml; do - RINSTALLCMD="if("'!'"require($RPKG, quietly = TRUE)) { options(Ncpus = ${_JOBS} ); install.packages('$RPKG', lib='$R_LIBS_USER', repos='https://cran.rstudio.com/') }" - echo "> $RINSTALLCMD" - Rscript -e "$RINSTALLCMD" - 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} - export RSTUDIO_VERSION_SUFFIX="+${_versuffix}" - export GIT_COMMIT=${_gitcommit} - export PACKAGE_OS=$(uname -om) - - # node-gyp or node have a bug that prevents building with "text file busy" - # if the kernel is too fast, so we have to disable IO_URING support. This - # is cleary a hack and needs to be removed as soon as possible - # nodejs/node#48444 is the necro bumped thread - # originally from docker - # https://github.com/nodejs/node/issues/48444 - export UV_USE_IO_URING=0 - - # -DCMAKE_INSTALL_PREFIX seems ignored for sub-dependencies, - # which results as empty '/usr/local/bin' in package - # Following override works for cmake >3.29 - export CMAKE_INSTALL_PREFIX=/usr/lib/rstudio - - local _CMAKE_RSTUDIO_OPTIONS=( - -DRSTUDIO_TARGET=Desktop - -DCMAKE_BUILD_TYPE=Release - -DRSTUDIO_USE_SYSTEM_BOOST=yes - -DQT_QMAKE_EXECUTABLE=/usr/bin/qmake - -DBoost_NO_BOOST_CMAKE=ON - -DQUARTO_ENABLED=${_quarto} - -DRSTUDIO_USE_SYSTEM_NODE=yes - -DRSTUDIO_BUNDLE_QT=FALSE - ) - cmake -G Ninja -S "${srcdir}/${_srcname}" -B build "${_CMAKE_RSTUDIO_OPTIONS[@]}" - cmake --build build + cmake "${_opts_soci[@]}" + cmake --build "soci-$_soci_version/build" + ) } +_source_main +_source_soci + +_nvm_env() { + export HOME="$SRCDEST/node-home" + export NVM_DIR="$SRCDEST/node-nvm" + + # set up nvm + source /usr/share/nvm/init-nvm.sh || [[ $? != 1 ]] + nvm install $_nodeversion + nvm use $_nodeversion + + _npm_path="$(which npm | sed -E 's&/[^/]+$&&')" + export RSTUDIO_NODE_VERSION=$(echo "$_npm_path" | sed -E 's&^\S+/v([0-9\.]+)/\S+$&\1&') +} + +prepare() ( + _nvm_env + #npm install yarn + + cd "$_pkgsrc" + # Do not use outdated version name of pandoc + sed -E -e '/PANDOC_VERSION/s/2.[0-9]+/current/' -i "cmake/globals.cmake" + + # Suppress _FORTIFY_SOURCE mismatch warnings + sed -i 's/D_FORTIFY_SOURCE=2/D_FORTIFY_SOURCE=3/' "src/cpp/CMakeLists.txt" + + # fix npm/node paths + sed -E -e 's&set\(RSTUDIO_NODE_PATH .*\)&set(RSTUDIO_NODE_PATH "/usr/bin")&' \ + -i cmake/globals.cmake + + install -dm755 "$srcdir/$_pkgsrc/dependencies/common/node" + ln -sfT "$NVM_DIR/versions/node/v$RSTUDIO_NODE_VERSION" "$srcdir/$_pkgsrc/dependencies/common/node/${RSTUDIO_NODE_VERSION}-patched" + + sed -E -e 's&^external-node-path=.*$&external-node-path=/usr/bin/node&' \ + -i src/cpp/conf/rsession-dev.conf + + sed -E -e 's&DIRECTORY "\$\{RSTUDIO_DEPENDENCIES_DIR\}/common/node/\$\{RSTUDIO_INSTALLED_NODE_VERSION\}-patched/"&DIRECTORY "/usr"&' \ + -e 's&(# install node)&\1\nif(FALSE)&' \ + -e 's&(# install quarto)&endif()\n\1&' \ + -i src/cpp/session/CMakeLists.txt + + sed -E -e 's&"\S+/common/node/\S+"&"/usr"&' \ + -i src/cpp/session/SessionOptions.cpp + + sed -E -e '/"node\.version"/s&value="[0-9\.]+"&value="Current"&' \ + -e '/"node\.dir"/s&value="\S+"&value="/usr"&' \ + -e 's&"\S+/common/node/\S+/bin/yarn"&"/usr/bin/yarn"&' \ + -i src/gwt/build.xml + + sed -E -e 's&PATHS "/opt/rstudio-tools/dependencies/common/node/\$\{RSTUDIO_NODE_VERSION\}"&PATHS "'"${_npm_path}"'"&' \ + -e 's&"\S+CMAKE_CURRENT_LIST_DIR\S+/dependencies/common/node/\S+"&"'"${_npm_path}"'"&g' \ + -e 's&set\(RSTUDIO_NODE_VERSION "[0-9\.]+"\)&set(RSTUDIO_NODE_VERSION "Current")&' \ + -i src/node/CMakeNodeTools.txt + + # fix os-release path + sed -E 's&(STRINGS) "/etc/os-release" (OS_RELEASE)&\1 "/usr/lib/os-release" \2&' \ + -i cmake/modules/OsRelease.cmake + + # fix boost 1.86 incompatibility + sed -E -e 's&return afterResponse_;&return (bool)afterResponse_;&' \ + -i src/cpp/core/json/JsonRpc.cpp + + cd "$srcdir/$_pkgsrc/dependencies/common" + install -d pandoc/${_pandocver} + + ln -sfT /usr/share/myspell/dicts dictionaries + ln -sfT /usr/share/mathjax2 mathjax-27 + ln -sfT /usr/bin/pandoc pandoc/${_pandocver}/pandoc + + # Fix links for src/cpp/session/CMakeLists.txt + cd "$srcdir/$_pkgsrc/dependencies" + ln -sfT /usr/share/myspell/dicts dictionaries + ln -sfT /usr/share/mathjax2 mathjax-27 + + # Bundled libs + ln -sfT "$srcdir/soci-$_soci_version" "soci-$_soci_version" + + # Panmirror is picked up now from Quarto repo + ln -sfT "$srcdir/quarto" "$srcdir/$_pkgsrc/src/gwt/lib/quarto" +) + +build() ( + _nvm_env + _run_if_exists _build_soci + + # Quarto set up + if (pacman -Q quarto > /dev/null 2> /dev/null); then + _quarto="ON" + echo "Quarto is installed, linking for build" + cd "$srcdir/$_pkgsrc/dependencies" + install -d quarto/bin/tools + ln -sfT /usr/bin/quarto quarto/bin/quarto + ln -sfT /usr/bin/pandoc quarto/bin/tools/pandoc + else + _quarto="OFF" + echo "Quarto is not installed, using Pandoc" + cd "$srcdir/$_pkgsrc/dependencies" + install -d pandoc/${_pandocver}/bin/tools + ln -sfT /usr/bin/pandoc pandoc/${_pandocver}/bin/tools/pandoc + fi + + local _ldflags=( + -L"$srcdir/$_pkgsrc/dependencies/soci-$_soci_version/build/lib" + ) + export LDFLAGS+=" ${_ldflags[@]}" + + cd "${srcdir}" + echo "Downloading and installing R packages..." + export R_LIBS_USER="$srcdir/$_pkgsrc/dependencies/R" + _JOBS="$(grep -oP -- "-j\s*\K[0-9]+" <<< "${MAKEFLAGS}")" || _JOBS="1" + mkdir -p "${R_LIBS_USER}" + local RPACKAGES=( + digest + purrr + rmarkdown + testthat + xml2 + yaml + ) + for RPKG in ${RPACKAGES[*]}; do + RINSTALLCMD="if("'!'"require($RPKG, quietly = TRUE)) { options(Ncpus = ${_JOBS} ); install.packages('$RPKG', lib='$R_LIBS_USER', repos='https://cran.rstudio.com/') }" + echo "> $RINSTALLCMD" + Rscript -e "$RINSTALLCMD" + done + + export RSTUDIO_TOOLS_ROOT="$srcdir/$_pkgsrc/dependencies" + export RSTUDIO_NODE_PATH=/usr/ + export RSTUDIO_VERSION_MAJOR=$(cut -d'.' -f1 <<< "$pkgver") + export RSTUDIO_VERSION_MINOR=$(cut -d'.' -f2 <<< "$pkgver") + export RSTUDIO_VERSION_PATCH=$(cut -d'.' -f3 <<< "$pkgver") + export RSTUDIO_VERSION_SUFFIX="+$(cut -d'.' -f4 <<< "$pkgver")" + export GIT_COMMIT="${_commit::7}" + export PACKAGE_OS=$(uname -om) + + # node-gyp or node have a bug that prevents building with "text file busy" + # if the kernel is too fast, so we have to disable IO_URING support. This + # is cleary a hack and needs to be removed as soon as possible + # nodejs/node#48444 is the necro bumped thread + # originally from docker + # https://github.com/nodejs/node/issues/48444 + export UV_USE_IO_URING=0 + + # -DCMAKE_INSTALL_PREFIX seems ignored for sub-dependencies, + # which results as empty '/usr/local/bin' in package + # Following override works for cmake >3.29 + export CMAKE_INSTALL_PREFIX=/usr/lib/rstudio + + local _opts_rstudio=( + -B build + -S "$_pkgsrc" + -G Ninja + -DCMAKE_BUILD_TYPE=None + -DRSTUDIO_TARGET=Electron + -DRSTUDIO_USE_SYSTEM_BOOST=YES + -DRSTUDIO_USE_SYSTEM_SOCI=NO + -DRSTUDIO_NODE_VERSION="Current" + -DRSTUDIO_INSTALLED_NODE_VERSION="Current" + -DQUARTO_ENABLED=${_quarto} + -DRSTUDIO_UNIT_TESTS_ENABLED=OFF + -DBUILD_TESTING=OFF + -Wno-dev + ) + + cmake "${_opts_rstudio[@]}" + cmake --build build +) + package() { + DESTDIR="$pkgdir" cmake --install build - # Install the program - DESTDIR="${pkgdir}" cmake --install build + install -Dm755 /dev/stdin "${pkgdir}/usr/bin/rstudio" << END +#!/usr/bin/env bash - # Install the license - install -Dm 644 "${srcdir}/${_srcname}/COPYING" "${pkgdir}/usr/share/licenses/${pkgname}/COPYING" +# See following script for potentially useful flags. +# https://github.com/ozankiratli/dotfiles/blob/master/.config/sway/scripts/rstudio-wayland - # Symlink main binary - install -d "${pkgdir}/usr/bin" - ln -s "/usr/lib/rstudio/bin/rstudio" "${pkgdir}/usr/bin/rstudio" +#!/usr/bin/bash - # BUGFIX: qt5-webengine isn't init'ing properly. Likely an Rstudio bug. - install -Dm 644 "${srcdir}/qt.conf" "${pkgdir}/usr/lib/qt/libexec/qt.conf" +name=rstudio +flags_file="\${XDG_CONFIG_HOME:-\$HOME/.config}/\${name}-flags.conf" +fallback_file="\${XDG_CONFIG_HOME:-\$HOME/.config}/electron-flags.conf" + +lines=() +if [[ -f "\${flags_file}" ]]; then + mapfile -t lines < "\${flags_file}" +elif [[ -f "\${fallback_file}" ]]; then + mapfile -t lines < "\${fallback_file}" +fi + +flags=() +for line in "\${lines[@]}"; do + if [[ ! "\${line}" =~ ^[[:space:]]*#.* ]] && [[ -n "\${line}" ]]; then + flags+=("\${line}") + fi +done + +: \${ELECTRON_IS_DEV:=0} +export ELECTRON_IS_DEV +: \${ELECTRON_FORCE_IS_PACKAGED:=true} +export ELECTRON_FORCE_IS_PACKAGED + +exec /usr/lib/rstudio/rstudio "\${flags[@]}" "\$@" +END +} + +_run_if_exists() { + if declare -F "$1" > /dev/null; then + eval "$1" + fi } diff --git a/repo/rstudio-desktop/qt.conf b/repo/rstudio-desktop/qt.conf deleted file mode 100644 index 840a682..0000000 --- a/repo/rstudio-desktop/qt.conf +++ /dev/null @@ -1,8 +0,0 @@ -[Paths] -Headers = /usr/include/qt/ -Data = /usr/share/qt/ -Libraries = /usr/lib/qt/ -LibraryExecutables = /usr/lib/qt/libexec/ -Plugins = /usr/lib/qt/plugins/ -Qml2Imports = /usr/lib/qt/qml/ -Translations = /usr/share/qt/translations/