Ricardo Wurmus writes: > Roel Janssen <r...@gnu.org> writes: > >>>> +(define-public r-bioccheck >>>> + (package >>>> + (name "r-bioccheck") >>>> + (version "1.10.0") >>>> + (source (origin >>>> + (method url-fetch) >>>> + (uri (bioconductor-uri "BiocCheck" version)) >>>> + (sha256 >>>> + (base32 >>>> + "1rfy37xg1nc2cmgbclvzsi7sgmdcdjiahsx9crgx3yaw7kxgiack")))) >>>> + (properties >>>> + `((upstream-name . "BiocCheck"))) >>>> + (build-system r-build-system) >>>> + (arguments >>>> + '(#:phases >>>> + (modify-phases %standard-phases >>>> + ;; This package can be used by calling BiocCheck(<package>) from >>>> + ;; within R, or by running R CMD BiocCheck <package>. This phase >>>> + ;; makes sure the latter works. For this to work, the BiocCheck >>>> + ;; script must be somewhere on the PATH (not the R bin >>>> directory). >>>> + (add-after 'install 'install-bioccheck-subcommand >>>> + (lambda _ >>>> + (let ((dest-dir (string-append %output "/bin")) >>>> + (script-dir >>>> + (string-append %output >>>> "/site-library/BiocCheck/script/"))) >>> >>> We usually prefer to do this >>> >>> (lambda* (#:key outputs #:allow-other-keys) >>> (let* ((out (assoc-ref outputs "out")) >>> … out …))) >>> >>> instead of using the magical “%output”. >> >> Ofcourse! Sorry, I should've known this. >> >> >>>> + (mkdir-p dest-dir) >>>> + (zero? (system* "ln" "--symbolic" >>>> + (string-append script-dir >>>> "/checkBadDeps.R") >>>> + (string-append dest-dir >>>> "/checkBadDeps.R"))) >>>> + (zero? (system* "ln" "--symbolic" >>>> + (string-append script-dir "/BiocCheck") >>>> + (string-append dest-dir >>>> "/BiocCheck"))))))))) >>> >>> Would it work to use “install-file” here (or to use Guile’s “symlink >>> oldpath newpath”) instead of shelling out? >> >> I prefer symlinking. Sorry for being a shell-out. I updated the patch >> to use Guile's @code{symlink} instead (I wasn't aware of this function!). >> >> Here's the new patch: >> >>>From cce8a9580645011cf8f6b259296a4779633aa2af Mon Sep 17 00:00:00 2001 >> From: Roel Janssen <r...@gnu.org> >> Date: Thu, 20 Oct 2016 00:00:33 +0200 >> Subject: [PATCH] gnu: Add r-bioccheck. >> >> * gnu/packages/bioinformatics.scm (r-bioccheck): New variable. >> --- >> gnu/packages/bioinformatics.scm | 46 >> +++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 46 insertions(+) >> >> diff --git a/gnu/packages/bioinformatics.scm >> b/gnu/packages/bioinformatics.scm >> index 3fe7b5f..8e426d0 100644 >> --- a/gnu/packages/bioinformatics.scm >> +++ b/gnu/packages/bioinformatics.scm >> @@ -5936,6 +5936,52 @@ Bioconductor PDF and HTML documents. Package >> vignettes illustrate use and >> functionality.") >> (license license:artistic2.0))) >> >> +(define-public r-bioccheck >> + (package >> + (name "r-bioccheck") >> + (version "1.10.0") >> + (source (origin >> + (method url-fetch) >> + (uri (bioconductor-uri "BiocCheck" version)) >> + (sha256 >> + (base32 >> + "1rfy37xg1nc2cmgbclvzsi7sgmdcdjiahsx9crgx3yaw7kxgiack")))) >> + (properties >> + `((upstream-name . "BiocCheck"))) >> + (build-system r-build-system) >> + (arguments >> + '(#:phases >> + (modify-phases %standard-phases >> + ;; This package can be used by calling BiocCheck(<package>) from >> + ;; within R, or by running R CMD BiocCheck <package>. This phase >> + ;; makes sure the latter works. For this to work, the BiocCheck >> + ;; script must be somewhere on the PATH (not the R bin directory). >> + (add-after 'install 'install-bioccheck-subcommand >> + (lambda* (#:key outputs #:allow-other-keys) >> + (let ((dest-dir (string-append (assoc-ref outputs "out") >> "/bin")) >> + (script-dir >> + (string-append %output >> "/site-library/BiocCheck/script/"))) > > You missed one “%output” :) > I’d bind “out” it in the “let*” so that you don’t need to “assoc-ref” twice.
Aha! That's why you suggested binding "out" in the "let*".. I applied your suggestion. >> + (mkdir-p dest-dir) >> + (symlink (string-append script-dir "/checkBadDeps.R") >> + (string-append dest-dir "/checkBadDeps.R")) >> + (symlink (string-append script-dir "/BiocCheck") >> + (string-append dest-dir "/BiocCheck")))))))) > > One last thing: please let the lambda end with #t. > Other than that it’s all good. Right. The return value of @code{symlink} is unspecified, so I just added #t to the end of the lambda. I pushed the patch with these changes. Thanks a lot for your time! Kind regards, Roel Janssen