diff --git a/pkgs/by-name/ja/jasp-desktop/cmake.patch b/pkgs/by-name/ja/jasp-desktop/cmake.patch index b6de8bc55269..60cf1814a031 100644 --- a/pkgs/by-name/ja/jasp-desktop/cmake.patch +++ b/pkgs/by-name/ja/jasp-desktop/cmake.patch @@ -1,5 +1,5 @@ diff --git a/Tools/CMake/Libraries.cmake b/Tools/CMake/Libraries.cmake -index cc4681a..f484013 100644 +index a95ef78..6ee84cd 100644 --- a/Tools/CMake/Libraries.cmake +++ b/Tools/CMake/Libraries.cmake @@ -67,7 +67,7 @@ if((NOT LibArchive_FOUND) AND (NOT WIN32)) @@ -11,36 +11,67 @@ index cc4681a..f484013 100644 find_package( Boost 1.78 REQUIRED COMPONENTS filesystem -@@ -178,10 +178,10 @@ if(LINUX) - set(LIBREADSTAT_INCLUDE_DIRS /app/include) - set(LIBREADSTAT_LIBRARY_DIRS /app/lib) - else() -- set(LIBREADSTAT_INCLUDE_DIRS /usr/local/include /usr/include) -+ set(LIBREADSTAT_INCLUDE_DIRS @readstat@/include /usr/include) - # The last two library paths handle the two most common multiarch cases. - # Other multiarch-compliant paths may come up but should be rare. -- set(LIBREADSTAT_LIBRARY_DIRS /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/aarch64-linux-gnu) -+ set(LIBREADSTAT_LIBRARY_DIRS @readstat@/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/aarch64-linux-gnu) +@@ -185,7 +185,7 @@ if(LINUX) endif() message(CHECK_START "Looking for libreadstat.so") +- find_file(LIBREADSTAT_LIBRARIES libreadstat.so ++ find_library(LIBREADSTAT_LIBRARIES libreadstat.so + HINTS ${LIBREADSTAT_LIBRARY_DIRS} REQUIRED) + + if(EXISTS ${LIBREADSTAT_LIBRARIES}) diff --git a/Tools/CMake/Programs.cmake b/Tools/CMake/Programs.cmake -index dbd089d..ef6857a 100644 +index bfdc8dc..af5ac03 100644 --- a/Tools/CMake/Programs.cmake +++ b/Tools/CMake/Programs.cmake -@@ -39,6 +39,7 @@ endif() +@@ -38,8 +38,9 @@ if(NOT WIN32) + endif() # ------ Linux Tools/Programs - -+#[[ - if(LINUX) +- +-if(LINUX) ++# We don't need to check for any dependencies that are used to build R packages ++# since we build them separately ++if(false) message(CHECK_START "Looking for 'gfortran'") -@@ -81,6 +82,7 @@ if(LINUX) - endif() + find_program( +diff --git a/Tools/CMake/R.cmake b/Tools/CMake/R.cmake +index 9ae27d4..64fd96a 100644 +--- a/Tools/CMake/R.cmake ++++ b/Tools/CMake/R.cmake +@@ -841,11 +841,6 @@ message(STATUS "R_CPP_INCLUDES_LIBRARY = ${R_CPP_INCLUDES_LIBRARY}") + configure_file(${PROJECT_SOURCE_DIR}/Modules/setup_renv.R.in + ${SCRIPT_DIRECTORY}/setup_renv.R @ONLY) - endif() -+]]# +-execute_process( +- COMMAND_ECHO STDOUT +- #ERROR_QUIET OUTPUT_QUIET +- WORKING_DIRECTORY ${R_HOME_PATH} +- COMMAND ${R_EXECUTABLE} --slave --no-restore --no-save --file=${SCRIPT_DIRECTORY}/setup_renv.R) - # ---------------------- + if(APPLE) + # Patch renv +@@ -867,11 +862,6 @@ endif() + configure_file(${PROJECT_SOURCE_DIR}/Modules/setup_rcpp_rinside.R.in + ${SCRIPT_DIRECTORY}/setup_rcpp_rinside.R @ONLY) + +-execute_process( +- COMMAND_ECHO STDOUT +- #ERROR_QUIET OUTPUT_QUIET +- WORKING_DIRECTORY ${R_HOME_PATH} +- COMMAND ${R_EXECUTABLE} --slave --no-restore --no-save --file=${SCRIPT_DIRECTORY}/setup_rcpp_rinside.R) + + if(APPLE) + # Patch RInside and RCpp +@@ -892,8 +882,8 @@ endif() + + include(FindRPackagePath) + +-find_package_path(RCPP_PATH ${R_CPP_INCLUDES_LIBRARY} "Rcpp") +-find_package_path(RINSIDE_PATH ${R_CPP_INCLUDES_LIBRARY} "RInside") ++find_package_path(RCPP_PATH ${R_LIBRARY_PATH} "Rcpp") ++find_package_path(RINSIDE_PATH ${R_LIBRARY_PATH} "RInside") + + set(RENV_PATH "${RENV_LIBRARY}/renv") diff --git a/pkgs/by-name/ja/jasp-desktop/modules.nix b/pkgs/by-name/ja/jasp-desktop/modules.nix index 46dd282c6f38..c211946d76d9 100644 --- a/pkgs/by-name/ja/jasp-desktop/modules.nix +++ b/pkgs/by-name/ja/jasp-desktop/modules.nix @@ -165,6 +165,12 @@ let src = jasp-src; sourceRoot = "${jasp-src.name}/Modules/${name}"; propagatedBuildInputs = deps; + + # some packages have a .Rprofile that tries to activate renv + # we disable this by removing .Rprofile + postPatch = '' + rm -f .Rprofile + ''; }; in { @@ -229,6 +235,20 @@ in jaspGraphs jaspSem ]; + jaspBFF = buildJaspModule "jaspBFF" [ + BFF + jaspBase + jaspGraphs + ]; + jaspBfpack = buildJaspModule "jaspBfpack" [ + BFpack + bain + ggplot2 + stringr + coda + jaspBase + jaspGraphs + ]; jaspBsts = buildJaspModule "jaspBsts" [ Boom bsts @@ -305,6 +325,7 @@ in conting' multibridge ggplot2 + interp jaspBase jaspGraphs plyr @@ -353,6 +374,8 @@ in ggforce tidyr igraph + HDInterval + metafor ]; jaspMachineLearning = buildJaspModule "jaspMachineLearning" [ kknn @@ -375,6 +398,7 @@ in jaspBase jaspGraphs MASS + mclust mvnormalTest neuralnet network @@ -385,6 +409,7 @@ in ROCR Rtsne signal + VGAM ]; jaspMetaAnalysis = buildJaspModule "jaspMetaAnalysis" [ dplyr @@ -406,6 +431,12 @@ in metamisc ggmcmc pema + clubSandwich + CompQuadForm + sp + dfoptim + nleqslv + patchwork ]; jaspMixedModels = buildJaspModule "jaspMixedModels" [ afex @@ -459,6 +490,8 @@ in BART EBMAforecast imputeTS + scoringRules + scoringutils ]; jaspProcess = buildJaspModule "jaspProcess" [ blavaan @@ -543,6 +576,7 @@ in lme4 MASS psych + mirt ]; jaspRobustTTests = buildJaspModule "jaspRobustTTests" [ RoBTT @@ -553,16 +587,17 @@ in jaspSem = buildJaspModule "jaspSem" [ forcats ggplot2 - jaspBase - jaspGraphs lavaan cSEM reshape2 + jaspBase + jaspGraphs semPlot semTools stringr tibble tidyr + SEMsens ]; jaspSummaryStatistics = buildJaspModule "jaspSummaryStatistics" [ BayesFactor @@ -579,7 +614,7 @@ in ]; jaspSurvival = buildJaspModule "jaspSurvival" [ survival - survminer + ggsurvfit jaspBase jaspGraphs ]; @@ -593,6 +628,12 @@ in plotrix plyr ]; + jaspTestModule = buildJaspModule "jaspTestModule" [ + jaspBase + jaspGraphs + svglite + stringi + ]; jaspTimeSeries = buildJaspModule "jaspTimeSeries" [ jaspBase jaspGraphs diff --git a/pkgs/by-name/ja/jasp-desktop/package.nix b/pkgs/by-name/ja/jasp-desktop/package.nix index 2fb25136e503..3f9a4010d945 100644 --- a/pkgs/by-name/ja/jasp-desktop/package.nix +++ b/pkgs/by-name/ja/jasp-desktop/package.nix @@ -1,31 +1,34 @@ { lib, stdenv, + fetchFromGitHub, - fetchpatch, + buildEnv, linkFarm, - replaceVars, - R, - rPackages, + cmake, ninja, pkg-config, + boost, + freexl, libarchive, - readstat, qt6, + R, + readstat, + rPackages, }: let - version = "0.19.1"; + version = "0.19.3"; src = fetchFromGitHub { owner = "jasp-stats"; repo = "jasp-desktop"; - rev = "v${version}"; - hash = "sha256-SACGyNVxa6rFjloRQrEVtUgujEEF7WYL8Qhw6ZqLwdQ="; + tag = "v${version}"; fetchSubmodules = true; + hash = "sha256-p489Q3jMQ7UWOCdAGskRF9KSLoRSatUwGVfj0/g4aPo="; }; moduleSet = import ./modules.nix { @@ -58,25 +61,19 @@ stdenv.mkDerivation { inherit version src; patches = [ - # remove unused cmake deps, ensure boost is dynamically linked, patch readstat path - (replaceVars ./cmake.patch { - inherit readstat; - }) - - (fetchpatch { - name = "fix-qt-6.8-crash.patch"; - url = "https://github.com/jasp-stats/jasp-desktop/commit/d96a35d262312f72081ac3f96ae8c2ae7c796b0.patch"; - hash = "sha256-KcsFy1ImPTHwDKN5Umfoa9CbtQn7B3FNu/Srr0dEJGA="; - }) + # - ensure boost is linked dynamically + # - fix readstat's find logic + # - disable some of the renv logic + # - dont't check for dependencies required for building modules + ./cmake.patch ]; cmakeFlags = [ - "-DGITHUB_PAT=dummy" - "-DGITHUB_PAT_DEF=dummy" - "-DINSTALL_R_FRAMEWORK=OFF" - "-DLINUX_LOCAL_BUILD=OFF" - "-DINSTALL_R_MODULES=OFF" - "-DCUSTOM_R_PATH=${customREnv}" + (lib.cmakeFeature "GITHUB_PAT" "dummy") + (lib.cmakeFeature "GITHUB_PAT_DEF" "dummy") + (lib.cmakeBool "LINUX_LOCAL_BUILD" false) + (lib.cmakeBool "INSTALL_R_MODULES" false) + (lib.cmakeFeature "CUSTOM_R_PATH" "${customREnv}") ]; nativeBuildInputs = [ @@ -87,10 +84,12 @@ stdenv.mkDerivation { ]; buildInputs = [ - customREnv boost + customREnv + freexl libarchive readstat + qt6.qtbase qt6.qtdeclarative qt6.qtwebengine @@ -98,6 +97,7 @@ stdenv.mkDerivation { qt6.qt5compat ]; + # needed so that JASPEngine can find libRInside.so env.NIX_LDFLAGS = "-L${rPackages.RInside}/library/RInside/lib"; postInstall = '' @@ -107,7 +107,7 @@ stdenv.mkDerivation { # Remove flatpak proxy script rm $out/bin/org.jaspstats.JASP substituteInPlace $out/share/applications/org.jaspstats.JASP.desktop \ - --replace-fail "Exec=org.jaspstats.JASP" "Exec=JASP" + --replace-fail "Exec=org.jaspstats.JASP" "Exec=JASP" # symlink modules from the store ln -s ${modulesDir} $out/Modules