Package: guix;
Reported by: Todor Kondić <tk.code <at> protonmail.com>
Date: Thu, 9 Sep 2021 12:37:02 UTC
Severity: normal
Done: zimoun <zimon.toutoune <at> gmail.com>
Bug is archived. No further changes may be made.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Todor Kondić <tk.code <at> protonmail.com> To: "bug-guix <at> gnu.org" <bug-guix <at> gnu.org> Subject: [R] Package r-shiny: Shiny server logic inactive Date: Thu, 09 Sep 2021 12:35:40 +0000
Hi, I started having issues with R Shiny applications with newer Guix distro commits. I have a feeling that this is an issue arising from `r-shiny` dependency clashes and that (some) of those dependencies should be either downgraded, or upgraded. The problem is that the server logic of a shiny application is never active. The web application UI is displayed correctly, even initialised correctly, but the logic behind it does not work. Take, for example, a classic shiny demo app [1]. The control with the number of observations is displayed, but the plot depending on it never shows up. This behavior exists on recent Guix builds [2]. However, on one older build from a few months ago [3], the application runs fine. You will find below the manifest[4] for creating the environment where Shiny programs malfunction and the command[5] to create the environment with the manifest. By the way, for those of you who are R savvy, comparing sessionInfo() between the running and non-running version did uncover few version changes. I have not yet delved deeper in what is the root cause, but I think I noticed that this is not the difference in versions of R itself. Lastly, if this is really a universal (ie I am not the only one seeing this), then this is a significant problem for a lot of people doing scientific computing on Guix. sessionInfo() for working version: R version 4.1.0 (2021-05-18) Platform: x86_64-unknown-linux-gnu (64-bit) Matrix products: default BLAS/LAPACK: /gnu/store/bs9pl1f805ins80xaf4s3n35a0x2lyq3-openblas-0.3.9/lib/libopenblasp-r0.3.9.so locale: [1] C attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] shiny_1.6.0 loaded via a namespace (and not attached): [1] compiler_4.1.0 fastmap_1.1.0 ellipsis_0.3.2 magrittr_2.0.1 [5] R6_2.5.0 promises_1.2.0.1 later_1.2.0 tools_4.1.0 [9] htmltools_0.5.1.1 Rcpp_1.0.6 digest_0.6.27 xtable_1.8-4 [13] httpuv_1.6.1 lifecycle_1.0.0 mime_0.10 rlang_0.4.11 sessionInfo for the non-working version: R version 4.1.1 (2021-08-10) Platform: x86_64-unknown-linux-gnu (64-bit) Matrix products: default BLAS/LAPACK: /gnu/store/bs9pl1f805ins80xaf4s3n35a0x2lyq3-openblas-0.3.9/lib/libopenblasp-r0.3.9.so locale: [1] LC_CTYPE=en_GB.utf8 LC_NUMERIC=C [3] LC_TIME=en_GB.utf8 LC_COLLATE=en_GB.utf8 [5] LC_MONETARY=en_GB.utf8 LC_MESSAGES=en_GB.utf8 [7] LC_PAPER=en_GB.utf8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=en_GB.utf8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] shiny_1.6.0 loaded via a namespace (and not attached): [1] compiler_4.1.1 fastmap_1.1.0 ellipsis_0.3.2 magrittr_2.0.1 [5] R6_2.5.1 promises_1.2.0.1 later_1.3.0 htmltools_0.5.1.1 [9] tools_4.1.1 Rcpp_1.0.7 digest_0.6.27 xtable_1.8-4 [13] httpuv_1.6.2 lifecycle_1.0.0 mime_0.11 rlang_0.4.11 Reproducible-ish demo: 1. runme.R ```r library(ggplot2) library(shiny) app <- shinyApp( ui = bootstrapPage( numericInput('n', 'Number of obs', 100), plotOutput('plot') ), server = function(input, output) { output$plot <- renderPlot({ hist(runif(input$n)) }) } ) # Will show a warning, because the browser is not in the manifest, but # it it will serve the application on a listed port, which means it # can be accessed by a browser external to the environment. options(browser="itdoesnotmatter") shiny::runApp(app) ``` 2. for example, guix version: 816d52ba93d262548f5e1139ff6051887f13dd0d 3. for example, guix version: 29745d23b87529275a677ee7962b0405594e84db 4. Manifest for creating the environment: ```scheme (use-modules (guix packages) (guix inferior) (guix channels) (guix profiles) (guix utils) (guix build-system gnu) (gnu packages) (gnu packages commencement) (gnu packages gcc) (srfi srfi-1) (ice-9 pretty-print)) (define base-specs '("git" "rsync" "make")) (define font-specs '("unicode-emoji" "fontconfig" "font-dejavu" "font-gnu-freefont" "font-terminus" "font-liberation" "font-inconsolata" "font-gnu-unifont" "font-public-sans" "font-misc-misc" "font-awesome" "font-hack" "font-iosevka" "font-iosevka-term" "font-iosevka-term-slab" "font-iosevka-slab" "font-iosevka-etoile" "font-iosevka-aile" "font-google-noto")) (define r-specs '("r" "r-curl" "r-ellipsis" "r-future" "r-rmarkdown" "r-knitr" "r-rcolorbrewer" "r-data-table" "r-shiny" "r-cowplot" "r-pander" "r-rstatix" "r-r-utils")) (define texlive-specs '("texlive")) (define misc-specs '("sshpass" "xdg-utils" "xdg-user-dirs" "pango" "libxft" "cairo" "gnupg" "openssl")) (define java-specs '(;"maven" "openjdk:out" "openjdk:jdk")) (define perl-specs '("perl-yaml-libyaml")) (define gnu-toolchain-specs '("gcc-toolchain")) (define specs `(,@base-specs ,@font-specs ,@perl-specs ,@r-specs ,@java-specs ,@gnu-toolchain-specs ,@misc-specs ,@texlive-specs)) (define dev-channels (list (channel ;; This is custom Environmental Cheminformatics LCSB channel. (name 'eci-addons) (url "https://git.sr.ht/~condor/eci-guix") (branch "master") (introduction (make-channel-introduction "6642600059913e86657242ba369d752c0af2bff5" (openpgp-fingerprint "EDC3 9790 A06D 5F72 41D9 70F9 BBEF E71B 7A28 3C6F")))) (channel (name 'guix) (url "https://git.savannah.gnu.org/git/guix.git") (commit "29745d23b87529275a677ee7962b0405594e84db")))) (define inferior (inferior-for-channels dev-channels)) (define inferior-mnf-entry-list (map (lambda (spec) (let* ((spkgout (string-split spec #\:)) (spkg (car spkgout)) (rest (cdr spkgout)) (sout (if (null? rest) "out" (car rest))) (pkg (first (lookup-inferior-packages inferior spkg)))) (display (format #f "Commiting ~a to the inferior manifest list.\n" spkg)) (inferior-package->manifest-entry pkg sout))) specs)) (display "Done building inferior list.\n") (define default-manifest (make-manifest '())) (define all-manifest-entries inferior-mnf-entry-list) (define manifest (make-manifest all-manifest-entries)) ;;; For the fresh version ;;; (define manifest (specifications->manifest specs)) (display "Ready to go.") (newline) manifest ``` 5. Shell command to invoke the environment ```shell guix environment -m ~/.local/my-scripts/r-manif.scm -c4 --pure -- R ``` After the command is run, just `source('runme.R')`.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.