Subject: bug#54787: importer Bioconductor: no tarball, only Git

From: zimoun <[email-masked]>
Date: Tue, 12 Apr 2022 18:25:51 +0200

Hi Ricardo,

On lun., 11 avril 2022 at 18:15, Ricardo Wurmus <[email-masked]> wrote:
> zimoun <[email-masked]> writes:
>
>> $ guix import cran -a bioconductor CHETAH
>> guix import: warning: failed to retrieve package information from
>> https://cran.r-project.org/web/packages/CHETAH/DESCRIPTION: 404 (Not Found)
>> guix import: error: failed to download description for package 'CHETAH'
>>
>> The reason is because there is no source package.  Only the Git source
>> repo.
>
> We should finally switch to fetching the sources from Git.  I wonder why
> we haven’t done this earlier.

Because, maybe, we have just finished the janitor work cleaning the
files cran.scm, bioconductor.scm and bioinformatics.scm. :-)

> I guess we should do this gradually to avoid mass updates, so perhaps we
> should introduce bioconductor-git-reference and switch over packages one
> by one.

First, note that annotations do not have Git repo; at least not always,
e.g.,

<https://bioconductor.org/packages/release/data/annotation/html/GenomeInfoDbData.html>

Second, if we go for something like:

--8<---------------cut here---------------start------------->8---
(define* (bioconductor-git-reference name #:optional
                                     (release %bioconductor-version))
  "Return a <git-reference> for the R package archive on Bioconductor for the
RELEASE corresponding to NAME."
  (git-reference
   (url (string-append %bioconductor-git-url name))
   (commit (string-append "RELEASE_" (string-replace-substring
                                      %bioconductor-version "." "_")))))
--8<---------------cut here---------------end--------------->8---

then, it raises the question: import/cran.scm or build-system/r.scm ?
i.e., do we put a module dependency against (guix git-download) for the
r-build-system or not?

TeXLive already has a dependency to svn-download, so why not.

Well, I am also in favor to break the API and move %bioconductor-version
and %bioconductor-url to (guix build-system r).  WDYT?  It would
simplify some things (#36805 and #39885), I guess.

Third, the adjustments of the importer require a large cup of coffee.

Back to CHETAH, note that

   guix import cran -a git htpps://git.bioconductor.org/CHETAH

works but it points to master instead of RELEASE_3_14.  Well, I am not
very familiar with the Bioconductor workflow for their release.

Last, using this in gnu/packages/bioconductor.scm,

--8<---------------cut here---------------start------------->8---
(define-public r-chetah
  (package
    (name "r-chetah")
    (version "1.11.2")
    (source
     (origin
       (method git-fetch)
       (uri (bioconductor-git-reference "CHETAH"))
       (file-name (git-file-name name version))
       (sha256
        (base32 "021v5831zqdy4pirfsb35kbnz8kmz4lxqc4cwi55qgd6r081xlgh"))))
    (properties `((upstream-name . "CHETAH")))
    (build-system r-build-system)
    (propagated-inputs
     (list r-biodist
           r-corrplot
           r-cowplot
           r-dendextend
           r-ggplot2
           r-gplots
           r-pheatmap
           r-plotly
           r-reshape2
           r-s4vectors
           r-shiny
           r-singlecellexperiment
           r-summarizedexperiment))
    (native-inputs (list r-knitr))
    (home-page "https://git.bioconductor.org/packages/CHETAH")
    (synopsis "Fast and accurate scRNA-seq cell type identification")
    (description
     "CHETAH (CHaracterization of cEll Types Aided by Hierarchical classification) is
an accurate, selective and fast scRNA-seq classifier.  Classification is guided
by a reference dataset, preferentially also a scRNA-seq dataset.  By
hierarchical clustering of the reference data, CHETAH creates a classification
tree that enables a step-wise, top-to-bottom classification.  Using a novel
stopping rule, CHETAH classifies the input cells to the cell types of the
references and to \"intermediate types\": more general classifications that ended
in an intermediate node of the tree.")
    (license #f)))
--8<---------------cut here---------------end--------------->8---

it just builds with,

    ./pre-inst-env guix build r-chetah

WDYT?

Cheers,
simon