unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* New outreachy participant introduction
@ 2019-10-03 16:11 Asfaw, Nardos
  2019-10-03 17:29 ` Christopher Baines
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Asfaw, Nardos @ 2019-10-03 16:11 UTC (permalink / raw)
  To: guix-devel@gnu.org; +Cc: outreachy@lepiller.eu

[-- Attachment #1: Type: text/plain, Size: 1078 bytes --]

Hello Guix!

My name is Nardos, and I am an Outreachy participant from Indiana University, Bloomington. I am a first time open source contributor hopeful. I am excite to be here, but I will admit I am also a little nervous. I welcome feedback as I am here to learn from all of you. I can be reached at nasfaw@iu.edu or www.nardos.dev

I also have a few questions:

1. I am opting to run Guix in a virtual machine on a kali linux.  I have found this resource: https://guix.gnu.org/manual/en/html_node/Running-Guix-in-a-VM.html#Running-Guix-in-a-VM. Given your experience, would this cause a problem down the line? Any recommendation on running Guix in a virtual machine vs on my PC?

2. Upon making contributions, where is it posted? and how do I see feedbacks? I have seen lists of open projects and discussion treads such as this (https://issues.guix.gnu.org/issue/22138)  on the Guix patch tracker. Are these the issues we currently working on?


3. Any beginner tips? and a good place to start?


I look forward to working with you all.


Thanks,

Nardos

[-- Attachment #2: Type: text/html, Size: 2199 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: New outreachy participant introduction
  2019-10-03 16:11 New outreachy participant introduction Asfaw, Nardos
@ 2019-10-03 17:29 ` Christopher Baines
  2019-10-03 19:18 ` Gábor Boskovits
  2019-10-04 18:50 ` Julien Lepiller
  2 siblings, 0 replies; 13+ messages in thread
From: Christopher Baines @ 2019-10-03 17:29 UTC (permalink / raw)
  To: nasfaw; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 2117 bytes --]


Asfaw, Nardos <nasfaw@iu.edu> writes:

> My name is Nardos, and I am an Outreachy participant from Indiana
> University, Bloomington. I am a first time open source contributor
> hopeful. I am excite to be here, but I will admit I am also a little
> nervous. I welcome feedback as I am here to learn from all of you. I
> can be reached at nasfaw@iu.edu or www.nardos.dev

Hello Nardos,

> I also have a few questions:
>
> 1. I am opting to run Guix in a virtual machine on a kali linux.  I
> have found this resource:
> https://guix.gnu.org/manual/en/html_node/Running-Guix-in-a-VM.html#Running-Guix-in-a-VM. Given
> your experience, would this cause a problem down the line? Any
> recommendation on running Guix in a virtual machine vs on my PC?

If you're happy installing Guix as a package manager within Kali, that
might be easier than using a virtual machine. Both approaches should
work though, and when you have an idea of what contributions you want to
make, then you can work out which approach will be easier.

> 2. Upon making contributions, where is it posted? and how do I see
> feedbacks? I have seen lists of open projects and discussion treads
> such as this (https://issues.guix.gnu.org/issue/22138) on the Guix
> patch tracker. Are these the issues we currently working on?

It depends on the contribution, but in general patches are sent to the
guix-patches@gnu.org email address, and then appear on the
https://issues.guix.info/ site. There's some relevant guidance here:

  https://guix.gnu.org/manual/en/html_node/Submitting-Patches.html#Submitting-Patches

> 3. Any beginner tips? and a good place to start?

I believe there are two Outreachy projects for Guix, so if you have a
particular one in mind, let us know.

If you're looking for where to begin contributing, it could be something
to do with one of the Outreachy projects, working on packages for Guix,
working on the documentation, fixing bugs, or something else.

But from your first question above, it looks like you've started in the
right place, getting Guix up and running on your machine is a
prerequisite to everything.

Chris

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 962 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: New outreachy participant introduction
  2019-10-03 16:11 New outreachy participant introduction Asfaw, Nardos
  2019-10-03 17:29 ` Christopher Baines
@ 2019-10-03 19:18 ` Gábor Boskovits
  2019-10-05  9:28   ` Gábor Boskovits
  2019-10-04 18:50 ` Julien Lepiller
  2 siblings, 1 reply; 13+ messages in thread
From: Gábor Boskovits @ 2019-10-03 19:18 UTC (permalink / raw)
  To: Asfaw, Nardos; +Cc: guix-devel@gnu.org, outreachy@lepiller.eu

[-- Attachment #1: Type: text/plain, Size: 2757 bytes --]

Hello Nardos,

Asfaw, Nardos <nasfaw@iu.edu> ezt írta (időpont: 2019. okt. 3., Cs, 18:13):

> Hello Guix!
>
> My name is Nardos, and I am an Outreachy participant from Indiana
> University, Bloomington. I am a first time open
> source contributor hopeful. I am excite to be here, but I will admit I am
> also a little nervous. I welcome feedback as I am here to learn from all
> of you. I can be reached at nasfaw@iu.edu or www.nardos.dev
>

Happy to see you here.


> I also have a few questions:
>
> 1. I am opting to run Guix in a virtual machine on a kali linux.  I have
> found this resource:
> https://guix.gnu.org/manual/en/html_node/Running-Guix-in-a-VM.html#Running-Guix-in-a-VM.
> Given your experience, would this cause a problem down the line? Any
> recommendation on running Guix in a virtual machine vs on my PC?
>

This should work fine, but as Chris metioned, it might be easier to install
Guix as a package manager. One trick with the vm image is that it barely
contains enough space to be useful as is, so you will have to resize it.


> 2. Upon making contributions, where is it posted? and how do I see
> feedbacks? I have seen lists of open projects and discussion treads such as
> this (https://issues.guix.gnu.org/issue/22138)  on the Guix patch
> tracker. Are these the issues we currently working on?
>

To open a new issue you can send a mail to either guix-patches or bug-guix
mailing list. Then the debbugs instance behind these lists creat a new
issue number for your request. Further mails should be sent to
issue-number@debbugs.gnu.org, where the issue number is in the
acknowledgement e-mail. You can see that later in an url like you posted at
issues.guix.gnu.org.

>
> 3. Any beginner tips? and a good place to start?
>
You could do some packaging, or go for an easy bug. In earlier rounds we
recommended to try to package some R stuff first, as R has a well working
importer. It is important to notice that there is a quite short deadline
for initial contribution, and having something in is strictly needed for
proceeding further. Therefore I would go for something really easy. Once
you have one contribution registered, we can find something that is nearer
to the project you are really interested in.

Another aspect is that doing a simple packaging will get you familiar with
the workflow and helps to check if everything is ok with the installation.

Also, if you have a particular project in mind please let us know.

>
> I look forward to working with you all.
>

I am also looking forward to working with you.

>
> Thanks,
>
> Nardos
>
Best regards,
g_bor

-- 
OpenPGP Key Fingerprint: 7988:3B9F:7D6A:4DBF:3719:0367:2506:A96C:CF63:0B21

[-- Attachment #2: Type: text/html, Size: 5715 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: New outreachy participant introduction
  2019-10-03 16:11 New outreachy participant introduction Asfaw, Nardos
  2019-10-03 17:29 ` Christopher Baines
  2019-10-03 19:18 ` Gábor Boskovits
@ 2019-10-04 18:50 ` Julien Lepiller
  2 siblings, 0 replies; 13+ messages in thread
From: Julien Lepiller @ 2019-10-04 18:50 UTC (permalink / raw)
  To: Asfaw, Nardos, guix-devel@gnu.org; +Cc: outreachy@lepiller.eu

[-- Attachment #1: Type: text/plain, Size: 1774 bytes --]

Hi Nardos, nice to meet you! Sorry I couldn't answer sooner. My server was having a bit of troubles and I only received your mail now. It should be fine from now on.

I think Gábor already answered your questions nicely, and I have nothing to add. I'd like to encourage you to join our irc at #guix on freenode to meet everyone. If you have any question regarding the process of packaging or about the proposed internships, do not hesitate to ask them here or on IRC. Even if when mentors are not available, others may have answers for you ;) 

Thank you,
Julien

Le 3 octobre 2019 18:11:58 GMT+02:00, "Asfaw, Nardos" <nasfaw@iu.edu> a écrit :
>Hello Guix!
>
>My name is Nardos, and I am an Outreachy participant from Indiana
>University, Bloomington. I am a first time open source contributor
>hopeful. I am excite to be here, but I will admit I am also a little
>nervous. I welcome feedback as I am here to learn from all of you. I
>can be reached at nasfaw@iu.edu or www.nardos.dev
>
>I also have a few questions:
>
>1. I am opting to run Guix in a virtual machine on a kali linux.  I
>have found this resource:
>https://guix.gnu.org/manual/en/html_node/Running-Guix-in-a-VM.html#Running-Guix-in-a-VM.
>Given your experience, would this cause a problem down the line? Any
>recommendation on running Guix in a virtual machine vs on my PC?
>
>2. Upon making contributions, where is it posted? and how do I see
>feedbacks? I have seen lists of open projects and discussion treads
>such as this (https://issues.guix.gnu.org/issue/22138)  on the Guix
>patch tracker. Are these the issues we currently working on?
>
>
>3. Any beginner tips? and a good place to start?
>
>
>I look forward to working with you all.
>
>
>Thanks,
>
>Nardos

[-- Attachment #2: Type: text/html, Size: 3044 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: New outreachy participant introduction
  2019-10-03 19:18 ` Gábor Boskovits
@ 2019-10-05  9:28   ` Gábor Boskovits
  2019-10-08  3:23     ` [External] " Asfaw, Nardos
  0 siblings, 1 reply; 13+ messages in thread
From: Gábor Boskovits @ 2019-10-05  9:28 UTC (permalink / raw)
  To: Asfaw, Nardos; +Cc: Guix-devel

[-- Attachment #1: Type: text/plain, Size: 251 bytes --]

>
> Hello Nardos,

How did the installation go?

Should you have any questions, please don't hesitate to contact us. We are
here to help.


>> Best regards,
> g_bor
>
> --
> OpenPGP Key Fingerprint: 7988:3B9F:7D6A:4DBF:3719:0367:2506:A96C:CF63:0B21
>

[-- Attachment #2: Type: text/html, Size: 1485 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [External] Re: New outreachy participant introduction
  2019-10-05  9:28   ` Gábor Boskovits
@ 2019-10-08  3:23     ` Asfaw, Nardos
  2019-10-08  6:48       ` Christopher Baines
  0 siblings, 1 reply; 13+ messages in thread
From: Asfaw, Nardos @ 2019-10-08  3:23 UTC (permalink / raw)
  To: Gábor Boskovits; +Cc: Guix-devel

[-- Attachment #1: Type: text/plain, Size: 1130 bytes --]


Hi Gabor,

I apologize for the late reply.

> How did the installation go?

Based on your suggestion I was able to install it as a package manager on kali (I had help from the IRC chat group).

> Should you have any questions, please don't hesitate to contact us. We are here to help.

 I am going through the packaging guide (https://guix.gnu.org/blog/2018/a-packaging-tutorial-for-guix/).  Are there more documentations on packaging? starting with packaging sounds interesting.

Thanks again.

Nardos


________________________________
From: Gábor Boskovits <boskovits@gmail.com>
Sent: Saturday, October 5, 2019 5:28 AM
To: Asfaw, Nardos
Cc: Guix-devel
Subject: [External] Re: New outreachy participant introduction

This message was sent from a non-IU address. Please exercise caution when clicking links or opening attachments from external sources.

Hello Nardos,

How did the installation go?

Should you have any questions, please don't hesitate to contact us. We are here to help.


Best regards,
g_bor

--
OpenPGP Key Fingerprint: 7988:3B9F:7D6A:4DBF:3719:0367:2506:A96C:CF63:0B21

[-- Attachment #2: Type: text/html, Size: 6692 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [External] Re: New outreachy participant introduction
  2019-10-08  3:23     ` [External] " Asfaw, Nardos
@ 2019-10-08  6:48       ` Christopher Baines
  2019-10-08 13:24         ` zimoun
  0 siblings, 1 reply; 13+ messages in thread
From: Christopher Baines @ 2019-10-08  6:48 UTC (permalink / raw)
  To: Asfaw, Nardos; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 1591 bytes --]


Asfaw, Nardos <nasfaw@iu.edu> writes:

> Hi Gabor,
>
> I apologize for the late reply.
>
>> How did the installation go?
>
> Based on your suggestion I was able to install it as a package manager
> on kali (I had help from the IRC chat group).

Great, good stuff :)

>> Should you have any questions, please don't hesitate to contact
>> us. We are here to help.
>
> I am going through the packaging guide
> (https://guix.gnu.org/blog/2018/a-packaging-tutorial-for-guix/).  Are
> there more documentations on packaging? starting with packaging sounds
> interesting.

That guide is a really good place to start, there's also the reference
documentation in the manual [1], and the packages already within Guix
itself. It's really useful to look at how existing packages work, to
work out how to make new ones work in a similar way.

1: https://guix.gnu.org/manual/en/html_node/package-Reference.html#package-Reference

The next challenge is finding something to package, it needs to be
something not already packaged for Guix, but ideally where most or all
of the dependencies are already packaged for Guix. If you have ideas,
let us know and we can help work out how feasible they are.

One good starting point would be an importer, there are a set of
importers included in Guix that take a package definition from somewhere
else (like the Python package index, or Rubygems) and try to generate a
Guix package definition. If you're familiar with some packages from one
of the collections with a corresponding importer, that might be a good
place to start.

Let us know how you get on,

Chris

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 962 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [External] Re: New outreachy participant introduction
  2019-10-08  6:48       ` Christopher Baines
@ 2019-10-08 13:24         ` zimoun
  2019-10-13  0:41           ` Asfaw, Nardos
  0 siblings, 1 reply; 13+ messages in thread
From: zimoun @ 2019-10-08 13:24 UTC (permalink / raw)
  To: Christopher Baines; +Cc: Guix Devel

Hi Nardos,

Welcome ! :-)


On Tue, 8 Oct 2019 at 08:48, Christopher Baines <mail@cbaines.net> wrote:

> One good starting point would be an importer, there are a set of
> importers included in Guix that take a package definition from somewhere
> else (like the Python package index, or Rubygems) and try to generate a
> Guix package definition. If you're familiar with some packages from one
> of the collections with a corresponding importer, that might be a good
> place to start.

As an example, let consider packages from BioConductor [1] (mainly R
packages used in bioinformatics field). If I have right, then 2002
packages are still missing in Guix, so there is materials. ;-)

Well, let's pick one which is not packaged yet: zinbwave [2]. Then it is easy:

  guix import cran -r -a bioconductor zinbwave

This will download TAR archives and automatically compute the hash. It
corresponds to the manual:

  guix download
https://bioconductor.org/packages/release/bioc/src/contrib/zinbwave_1.6.0.tar.gz


[1] https://bioconductor.org/
[2] https://bioconductor.org/packages/release/bioc/html/zinbwave.html


Moreover, the importer provides the definition of the package:

--8<---------------cut here---------------start------------->8---
(define-public r-zinbwave
  (package
    (name "r-zinbwave")
    (version "1.6.0")
    (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "zinbwave" version))
        (sha256
          (base32
            "187r7l9jf2q74qaqx63df5zx6iphmvl817448balvfv9vqyhrp2j"))))
    (properties `((upstream-name . "zinbwave")))
    (build-system r-build-system)
    (propagated-inputs
      `(("r-biocparallel" ,r-biocparallel)
        ("r-copula" ,r-copula)
        ("r-edger" ,r-edger)
        ("r-genefilter" ,r-genefilter)
        ("r-glmnet" ,r-glmnet)
        ("r-matrix" ,r-matrix)
        ("r-singlecellexperiment"
         ,r-singlecellexperiment)
        ("r-softimpute" ,r-softimpute)
        ("r-summarizedexperiment"
         ,r-summarizedexperiment)))
    (home-page
      "https://bioconductor.org/packages/zinbwave")
    (synopsis
      "Zero-Inflated Negative Binomial Model for RNA-Seq Data")
    (description
      " Implements a general and flexible zero-inflated negative
binomial model that can be used to provide a low-dimensional
representations of single-cell RNA-seq data.  The model accounts for
zero inflation (dropouts), over-dispersion, and the count nature of
the data.  The model also accounts for the difference in library sizes
and optionally for batch effects and/or other covariates, avoiding the
need for pre-normalize the data.")
    (license artistic2.0)))
--8<---------------cut here---------------end--------------->8---

In the propagated input, you can see the package `r-copula` which is
not yet packaged neither. But, the nice option --recursive does the
job for you and it also gives you the package definition.

Now, let add them to the Guix source. Clone the repo and go in the
folder. The command:

  guix environment guix

will download the dependencies to build Guix and setup all the
variables correctly. Well, refer to the documentation to compile Guix
from source. Basically:

  ./bootstrap
  ./configure --localstatedir=/var
  make

Now, you can run this version with ./pre-inst-env, for example:

   ./pre-inst-env guix describe


Well, ready to add one package! For example, add `r-copula` to the
file gnu/package/cran.scm then recompile with make. Check if it is ok:

  ./pre-inst-env guile show r-copula

Ouch! `r-psline` is missing so let also add it (the definition was
provided by the importer), run make again. Now "./pre-inst-env guix
show r-copula" should work.
Add the package definition of zinbwave to the file gnu/package/bioconductor.scm.

Let build them:

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

and time to breath. ;-)


If something fails, try to investigate by yourself and do not hesitate
to ask advices or help.
If everything is ok, the package still needs some polishing: synopsis,
description, indentation, etc and really important: check the license
field.

The next step is to commit the changes. In this case, three commits
(one per package) seem nice. Give a look to previous commits as
example of commit message (ChangeLog format, etc.). Now, it is time to
prepare the submission:

  git format-patch --cover-letter - o patches master

this will create the 3 patches in the folder patches/ and one cover
letter. Edit the cover letter to describe what the patches are about
then submit it to the bug tracker:

  git send-email --to=guix-patches@gnu.org patches/0000-cover-letter.patch

Wait the answer to the bug tracker.
You should receive an email (if your .gitconfig is ok) with the bug
number. Last submit the patches:

  git send-email --to=ABCDEF@debbugs.gnu.org patches/000{1,2,3}-*

where ABCDEF is the bug number.



Well, if you need some inspiration to find unpackaged tools from BioConductor:

  wget https://git.bioconductor.org -qO - | sed -ne
'/packages\/[a-zA-Z]/{s,^.*R.*packages/,,p}' > bioc_manifest
  ./pre-inst-env guile --no-auto-compile missing-bioconductor.scm bioc_manifest

where the file `missing-bioconductor.scm` is given by:

--8<---------------cut here---------------start------------->8---
(use-modules ((guix import utils) #:select (guix-name))
             (gnu packages)
             (srfi srfi-1)  ;lists
             (ice-9 textual-ports))

(define (fetch-names manifest)
  "Return a list of strings, each corresponding to a name from the
input file MANIFEST."
  (call-with-input-file manifest
    (lambda (port)
      (let loop ((lines '())
                 (line (get-line port)))
        (if (eof-object? line)
            (reverse lines)
            (loop (cons line lines)
                  (get-line port)))))))

;;; Start!

(map (lambda (name)
       (when (null? (find-packages-by-name (guix-name "r-" name)))
         (begin
           (display name)
           (newline))))
     (fetch-names (cadr (command-line))))

;; wget https://git.bioconductor.org -qO - | sed -ne
'/packages\/[a-zA-Z]/{s,^.*R.*packages/,,p}' > bioc_manifest
;; ./pre-inst-env guile --no-auto-compile missing-bioconductor.scm bioc_manifest
--8<---------------cut here---------------end--------------->8---


Hope that help.

All the best,
simon

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [External] Re: New outreachy participant introduction
  2019-10-08 13:24         ` zimoun
@ 2019-10-13  0:41           ` Asfaw, Nardos
  2019-10-16  8:00             ` Gábor Boskovits
  0 siblings, 1 reply; 13+ messages in thread
From: Asfaw, Nardos @ 2019-10-13  0:41 UTC (permalink / raw)
  To: zimoun, Christopher Baines; +Cc: Guix Devel

Thank you Zimon. 

This has been very helpful. 
________________________________________
From: zimoun <zimon.toutoune@gmail.com>
Sent: Tuesday, October 8, 2019 9:24 AM
To: Christopher Baines
Cc: Asfaw, Nardos; Guix Devel
Subject: Re: [External] Re: New outreachy participant introduction

Hi Nardos,

Welcome ! :-)


On Tue, 8 Oct 2019 at 08:48, Christopher Baines <mail@cbaines.net> wrote:

> One good starting point would be an importer, there are a set of
> importers included in Guix that take a package definition from somewhere
> else (like the Python package index, or Rubygems) and try to generate a
> Guix package definition. If you're familiar with some packages from one
> of the collections with a corresponding importer, that might be a good
> place to start.

As an example, let consider packages from BioConductor [1] (mainly R
packages used in bioinformatics field). If I have right, then 2002
packages are still missing in Guix, so there is materials. ;-)

Well, let's pick one which is not packaged yet: zinbwave [2]. Then it is easy:

  guix import cran -r -a bioconductor zinbwave

This will download TAR archives and automatically compute the hash. It
corresponds to the manual:

  guix download
https://bioconductor.org/packages/release/bioc/src/contrib/zinbwave_1.6.0.tar.gz


[1] https://bioconductor.org/
[2] https://bioconductor.org/packages/release/bioc/html/zinbwave.html


Moreover, the importer provides the definition of the package:

--8<---------------cut here---------------start------------->8---
(define-public r-zinbwave
  (package
    (name "r-zinbwave")
    (version "1.6.0")
    (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "zinbwave" version))
        (sha256
          (base32
            "187r7l9jf2q74qaqx63df5zx6iphmvl817448balvfv9vqyhrp2j"))))
    (properties `((upstream-name . "zinbwave")))
    (build-system r-build-system)
    (propagated-inputs
      `(("r-biocparallel" ,r-biocparallel)
        ("r-copula" ,r-copula)
        ("r-edger" ,r-edger)
        ("r-genefilter" ,r-genefilter)
        ("r-glmnet" ,r-glmnet)
        ("r-matrix" ,r-matrix)
        ("r-singlecellexperiment"
         ,r-singlecellexperiment)
        ("r-softimpute" ,r-softimpute)
        ("r-summarizedexperiment"
         ,r-summarizedexperiment)))
    (home-page
      "https://bioconductor.org/packages/zinbwave")
    (synopsis
      "Zero-Inflated Negative Binomial Model for RNA-Seq Data")
    (description
      " Implements a general and flexible zero-inflated negative
binomial model that can be used to provide a low-dimensional
representations of single-cell RNA-seq data.  The model accounts for
zero inflation (dropouts), over-dispersion, and the count nature of
the data.  The model also accounts for the difference in library sizes
and optionally for batch effects and/or other covariates, avoiding the
need for pre-normalize the data.")
    (license artistic2.0)))
--8<---------------cut here---------------end--------------->8---

In the propagated input, you can see the package `r-copula` which is
not yet packaged neither. But, the nice option --recursive does the
job for you and it also gives you the package definition.

Now, let add them to the Guix source. Clone the repo and go in the
folder. The command:

  guix environment guix

will download the dependencies to build Guix and setup all the
variables correctly. Well, refer to the documentation to compile Guix
from source. Basically:

  ./bootstrap
  ./configure --localstatedir=/var
  make

Now, you can run this version with ./pre-inst-env, for example:

   ./pre-inst-env guix describe


Well, ready to add one package! For example, add `r-copula` to the
file gnu/package/cran.scm then recompile with make. Check if it is ok:

  ./pre-inst-env guile show r-copula

Ouch! `r-psline` is missing so let also add it (the definition was
provided by the importer), run make again. Now "./pre-inst-env guix
show r-copula" should work.
Add the package definition of zinbwave to the file gnu/package/bioconductor.scm.

Let build them:

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

and time to breath. ;-)


If something fails, try to investigate by yourself and do not hesitate
to ask advices or help.
If everything is ok, the package still needs some polishing: synopsis,
description, indentation, etc and really important: check the license
field.

The next step is to commit the changes. In this case, three commits
(one per package) seem nice. Give a look to previous commits as
example of commit message (ChangeLog format, etc.). Now, it is time to
prepare the submission:

  git format-patch --cover-letter - o patches master

this will create the 3 patches in the folder patches/ and one cover
letter. Edit the cover letter to describe what the patches are about
then submit it to the bug tracker:

  git send-email --to=guix-patches@gnu.org patches/0000-cover-letter.patch

Wait the answer to the bug tracker.
You should receive an email (if your .gitconfig is ok) with the bug
number. Last submit the patches:

  git send-email --to=ABCDEF@debbugs.gnu.org patches/000{1,2,3}-*

where ABCDEF is the bug number.



Well, if you need some inspiration to find unpackaged tools from BioConductor:

  wget https://git.bioconductor.org -qO - | sed -ne
'/packages\/[a-zA-Z]/{s,^.*R.*packages/,,p}' > bioc_manifest
  ./pre-inst-env guile --no-auto-compile missing-bioconductor.scm bioc_manifest

where the file `missing-bioconductor.scm` is given by:

--8<---------------cut here---------------start------------->8---
(use-modules ((guix import utils) #:select (guix-name))
             (gnu packages)
             (srfi srfi-1)  ;lists
             (ice-9 textual-ports))

(define (fetch-names manifest)
  "Return a list of strings, each corresponding to a name from the
input file MANIFEST."
  (call-with-input-file manifest
    (lambda (port)
      (let loop ((lines '())
                 (line (get-line port)))
        (if (eof-object? line)
            (reverse lines)
            (loop (cons line lines)
                  (get-line port)))))))

;;; Start!

(map (lambda (name)
       (when (null? (find-packages-by-name (guix-name "r-" name)))
         (begin
           (display name)
           (newline))))
     (fetch-names (cadr (command-line))))

;; wget https://git.bioconductor.org -qO - | sed -ne
'/packages\/[a-zA-Z]/{s,^.*R.*packages/,,p}' > bioc_manifest
;; ./pre-inst-env guile --no-auto-compile missing-bioconductor.scm bioc_manifest
--8<---------------cut here---------------end--------------->8---


Hope that help.

All the best,
simon

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [External] Re: New outreachy participant introduction
  2019-10-13  0:41           ` Asfaw, Nardos
@ 2019-10-16  8:00             ` Gábor Boskovits
  2019-10-16 14:16               ` Asfaw, Nardos
  0 siblings, 1 reply; 13+ messages in thread
From: Gábor Boskovits @ 2019-10-16  8:00 UTC (permalink / raw)
  To: Asfaw, Nardos; +Cc: Guix Devel

[-- Attachment #1: Type: text/plain, Size: 7363 bytes --]

Hello Nardos,

We have not heard from you for a while. Should you need any help, please
feel free to reach out to us.

Asfaw, Nardos <nasfaw@iu.edu> ezt írta (időpont: 2019. okt. 13., Vas 2:41):

> Thank you Zimon.
>
> This has been very helpful.
> ________________________________________
> From: zimoun <zimon.toutoune@gmail.com>
> Sent: Tuesday, October 8, 2019 9:24 AM
> To: Christopher Baines
> Cc: Asfaw, Nardos; Guix Devel
> Subject: Re: [External] Re: New outreachy participant introduction
>
> Hi Nardos,
>
> Welcome ! :-)
>
>
> On Tue, 8 Oct 2019 at 08:48, Christopher Baines <mail@cbaines.net> wrote:
>
> > One good starting point would be an importer, there are a set of
> > importers included in Guix that take a package definition from somewhere
> > else (like the Python package index, or Rubygems) and try to generate a
> > Guix package definition. If you're familiar with some packages from one
> > of the collections with a corresponding importer, that might be a good
> > place to start.
>
> As an example, let consider packages from BioConductor [1] (mainly R
> packages used in bioinformatics field). If I have right, then 2002
> packages are still missing in Guix, so there is materials. ;-)
>
> Well, let's pick one which is not packaged yet: zinbwave [2]. Then it is
> easy:
>
>   guix import cran -r -a bioconductor zinbwave
>
> This will download TAR archives and automatically compute the hash. It
> corresponds to the manual:
>
>   guix download
>
> https://bioconductor.org/packages/release/bioc/src/contrib/zinbwave_1.6.0.tar.gz
>
>
> [1] https://bioconductor.org/
> [2] https://bioconductor.org/packages/release/bioc/html/zinbwave.html
>
>
> Moreover, the importer provides the definition of the package:
>
> --8<---------------cut here---------------start------------->8---
> (define-public r-zinbwave
>   (package
>     (name "r-zinbwave")
>     (version "1.6.0")
>     (source
>       (origin
>         (method url-fetch)
>         (uri (bioconductor-uri "zinbwave" version))
>         (sha256
>           (base32
>             "187r7l9jf2q74qaqx63df5zx6iphmvl817448balvfv9vqyhrp2j"))))
>     (properties `((upstream-name . "zinbwave")))
>     (build-system r-build-system)
>     (propagated-inputs
>       `(("r-biocparallel" ,r-biocparallel)
>         ("r-copula" ,r-copula)
>         ("r-edger" ,r-edger)
>         ("r-genefilter" ,r-genefilter)
>         ("r-glmnet" ,r-glmnet)
>         ("r-matrix" ,r-matrix)
>         ("r-singlecellexperiment"
>          ,r-singlecellexperiment)
>         ("r-softimpute" ,r-softimpute)
>         ("r-summarizedexperiment"
>          ,r-summarizedexperiment)))
>     (home-page
>       "https://bioconductor.org/packages/zinbwave")
>     (synopsis
>       "Zero-Inflated Negative Binomial Model for RNA-Seq Data")
>     (description
>       " Implements a general and flexible zero-inflated negative
> binomial model that can be used to provide a low-dimensional
> representations of single-cell RNA-seq data.  The model accounts for
> zero inflation (dropouts), over-dispersion, and the count nature of
> the data.  The model also accounts for the difference in library sizes
> and optionally for batch effects and/or other covariates, avoiding the
> need for pre-normalize the data.")
>     (license artistic2.0)))
> --8<---------------cut here---------------end--------------->8---
>
> In the propagated input, you can see the package `r-copula` which is
> not yet packaged neither. But, the nice option --recursive does the
> job for you and it also gives you the package definition.
>
> Now, let add them to the Guix source. Clone the repo and go in the
> folder. The command:
>
>   guix environment guix
>
> will download the dependencies to build Guix and setup all the
> variables correctly. Well, refer to the documentation to compile Guix
> from source. Basically:
>
>   ./bootstrap
>   ./configure --localstatedir=/var
>   make
>
> Now, you can run this version with ./pre-inst-env, for example:
>
>    ./pre-inst-env guix describe
>
>
> Well, ready to add one package! For example, add `r-copula` to the
> file gnu/package/cran.scm then recompile with make. Check if it is ok:
>
>   ./pre-inst-env guile show r-copula
>
> Ouch! `r-psline` is missing so let also add it (the definition was
> provided by the importer), run make again. Now "./pre-inst-env guix
> show r-copula" should work.
> Add the package definition of zinbwave to the file
> gnu/package/bioconductor.scm.
>
> Let build them:
>
>   ./pre-inst-env guix build r-zinbwave
>
> and time to breath. ;-)
>
>
> If something fails, try to investigate by yourself and do not hesitate
> to ask advices or help.
> If everything is ok, the package still needs some polishing: synopsis,
> description, indentation, etc and really important: check the license
> field.
>
> The next step is to commit the changes. In this case, three commits
> (one per package) seem nice. Give a look to previous commits as
> example of commit message (ChangeLog format, etc.). Now, it is time to
> prepare the submission:
>
>   git format-patch --cover-letter - o patches master
>
> this will create the 3 patches in the folder patches/ and one cover
> letter. Edit the cover letter to describe what the patches are about
> then submit it to the bug tracker:
>
>   git send-email --to=guix-patches@gnu.org patches/0000-cover-letter.patch
>
> Wait the answer to the bug tracker.
> You should receive an email (if your .gitconfig is ok) with the bug
> number. Last submit the patches:
>
>   git send-email --to=ABCDEF@debbugs.gnu.org patches/000{1,2,3}-*
>
> where ABCDEF is the bug number.
>
>
>
> Well, if you need some inspiration to find unpackaged tools from
> BioConductor:
>
>   wget https://git.bioconductor.org -qO - | sed -ne
> '/packages\/[a-zA-Z]/{s,^.*R.*packages/,,p}' > bioc_manifest
>   ./pre-inst-env guile --no-auto-compile missing-bioconductor.scm
> bioc_manifest
>
> where the file `missing-bioconductor.scm` is given by:
>
> --8<---------------cut here---------------start------------->8---
> (use-modules ((guix import utils) #:select (guix-name))
>              (gnu packages)
>              (srfi srfi-1)  ;lists
>              (ice-9 textual-ports))
>
> (define (fetch-names manifest)
>   "Return a list of strings, each corresponding to a name from the
> input file MANIFEST."
>   (call-with-input-file manifest
>     (lambda (port)
>       (let loop ((lines '())
>                  (line (get-line port)))
>         (if (eof-object? line)
>             (reverse lines)
>             (loop (cons line lines)
>                   (get-line port)))))))
>
> ;;; Start!
>
> (map (lambda (name)
>        (when (null? (find-packages-by-name (guix-name "r-" name)))
>          (begin
>            (display name)
>            (newline))))
>      (fetch-names (cadr (command-line))))
>
> ;; wget https://git.bioconductor.org -qO - | sed -ne
> '/packages\/[a-zA-Z]/{s,^.*R.*packages/,,p}' > bioc_manifest
> ;; ./pre-inst-env guile --no-auto-compile missing-bioconductor.scm
> bioc_manifest
> --8<---------------cut here---------------end--------------->8---
>
>
> Hope that help.
>
> All the best,
> simon
>
>

[-- Attachment #2: Type: text/html, Size: 9508 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [External] Re: New outreachy participant introduction
  2019-10-16  8:00             ` Gábor Boskovits
@ 2019-10-16 14:16               ` Asfaw, Nardos
  2019-10-19 20:33                 ` Ludovic Courtès
  2019-10-24 12:51                 ` Gábor Boskovits
  0 siblings, 2 replies; 13+ messages in thread
From: Asfaw, Nardos @ 2019-10-16 14:16 UTC (permalink / raw)
  To: Gábor Boskovits; +Cc: Guix Devel

[-- Attachment #1: Type: text/plain, Size: 7755 bytes --]

Hi Gabor,


Thanks for reaching out. I am still hanging. I am learning a lot on what it means to be a developer outside of university courses. I am going through the documentation (and examples provided in the email by simon) and the chat logs to sees if my questions have been asked before I come with questions and solutions I have tried.


Thanks,

Nardos

________________________________
From: Gábor Boskovits <boskovits@gmail.com>
Sent: Wednesday, October 16, 2019 4:00 AM
To: Asfaw, Nardos
Cc: zimoun; Christopher Baines; Guix Devel
Subject: Re: [External] Re: New outreachy participant introduction

Hello Nardos,

We have not heard from you for a while. Should you need any help, please feel free to reach out to us.

Asfaw, Nardos <nasfaw@iu.edu<mailto:nasfaw@iu.edu>> ezt írta (időpont: 2019. okt. 13., Vas 2:41):
Thank you Zimon.

This has been very helpful.
________________________________________
From: zimoun <zimon.toutoune@gmail.com<mailto:zimon.toutoune@gmail.com>>
Sent: Tuesday, October 8, 2019 9:24 AM
To: Christopher Baines
Cc: Asfaw, Nardos; Guix Devel
Subject: Re: [External] Re: New outreachy participant introduction

Hi Nardos,

Welcome ! :-)


On Tue, 8 Oct 2019 at 08:48, Christopher Baines <mail@cbaines.net<mailto:mail@cbaines.net>> wrote:

> One good starting point would be an importer, there are a set of
> importers included in Guix that take a package definition from somewhere
> else (like the Python package index, or Rubygems) and try to generate a
> Guix package definition. If you're familiar with some packages from one
> of the collections with a corresponding importer, that might be a good
> place to start.

As an example, let consider packages from BioConductor [1] (mainly R
packages used in bioinformatics field). If I have right, then 2002
packages are still missing in Guix, so there is materials. ;-)

Well, let's pick one which is not packaged yet: zinbwave [2]. Then it is easy:

  guix import cran -r -a bioconductor zinbwave

This will download TAR archives and automatically compute the hash. It
corresponds to the manual:

  guix download
https://bioconductor.org/packages/release/bioc/src/contrib/zinbwave_1.6.0.tar.gz


[1] https://bioconductor.org/
[2] https://bioconductor.org/packages/release/bioc/html/zinbwave.html


Moreover, the importer provides the definition of the package:

--8<---------------cut here---------------start------------->8---
(define-public r-zinbwave
  (package
    (name "r-zinbwave")
    (version "1.6.0")
    (source
      (origin
        (method url-fetch)
        (uri (bioconductor-uri "zinbwave" version))
        (sha256
          (base32
            "187r7l9jf2q74qaqx63df5zx6iphmvl817448balvfv9vqyhrp2j"))))
    (properties `((upstream-name . "zinbwave")))
    (build-system r-build-system)
    (propagated-inputs
      `(("r-biocparallel" ,r-biocparallel)
        ("r-copula" ,r-copula)
        ("r-edger" ,r-edger)
        ("r-genefilter" ,r-genefilter)
        ("r-glmnet" ,r-glmnet)
        ("r-matrix" ,r-matrix)
        ("r-singlecellexperiment"
         ,r-singlecellexperiment)
        ("r-softimpute" ,r-softimpute)
        ("r-summarizedexperiment"
         ,r-summarizedexperiment)))
    (home-page
      "https://bioconductor.org/packages/zinbwave")
    (synopsis
      "Zero-Inflated Negative Binomial Model for RNA-Seq Data")
    (description
      " Implements a general and flexible zero-inflated negative
binomial model that can be used to provide a low-dimensional
representations of single-cell RNA-seq data.  The model accounts for
zero inflation (dropouts), over-dispersion, and the count nature of
the data.  The model also accounts for the difference in library sizes
and optionally for batch effects and/or other covariates, avoiding the
need for pre-normalize the data.")
    (license artistic2.0)))
--8<---------------cut here---------------end--------------->8---

In the propagated input, you can see the package `r-copula` which is
not yet packaged neither. But, the nice option --recursive does the
job for you and it also gives you the package definition.

Now, let add them to the Guix source. Clone the repo and go in the
folder. The command:

  guix environment guix

will download the dependencies to build Guix and setup all the
variables correctly. Well, refer to the documentation to compile Guix
from source. Basically:

  ./bootstrap
  ./configure --localstatedir=/var
  make

Now, you can run this version with ./pre-inst-env, for example:

   ./pre-inst-env guix describe


Well, ready to add one package! For example, add `r-copula` to the
file gnu/package/cran.scm then recompile with make. Check if it is ok:

  ./pre-inst-env guile show r-copula

Ouch! `r-psline` is missing so let also add it (the definition was
provided by the importer), run make again. Now "./pre-inst-env guix
show r-copula" should work.
Add the package definition of zinbwave to the file gnu/package/bioconductor.scm.

Let build them:

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

and time to breath. ;-)


If something fails, try to investigate by yourself and do not hesitate
to ask advices or help.
If everything is ok, the package still needs some polishing: synopsis,
description, indentation, etc and really important: check the license
field.

The next step is to commit the changes. In this case, three commits
(one per package) seem nice. Give a look to previous commits as
example of commit message (ChangeLog format, etc.). Now, it is time to
prepare the submission:

  git format-patch --cover-letter - o patches master

this will create the 3 patches in the folder patches/ and one cover
letter. Edit the cover letter to describe what the patches are about
then submit it to the bug tracker:

  git send-email --to=guix-patches@gnu.org<mailto:guix-patches@gnu.org> patches/0000-cover-letter.patch

Wait the answer to the bug tracker.
You should receive an email (if your .gitconfig is ok) with the bug
number. Last submit the patches:

  git send-email --to=ABCDEF@debbugs.gnu.org<mailto:ABCDEF@debbugs.gnu.org> patches/000{1,2,3}-*

where ABCDEF is the bug number.



Well, if you need some inspiration to find unpackaged tools from BioConductor:

  wget https://git.bioconductor.org -qO - | sed -ne
'/packages\/[a-zA-Z]/{s,^.*R.*packages/,,p}' > bioc_manifest
  ./pre-inst-env guile --no-auto-compile missing-bioconductor.scm bioc_manifest

where the file `missing-bioconductor.scm` is given by:

--8<---------------cut here---------------start------------->8---
(use-modules ((guix import utils) #:select (guix-name))
             (gnu packages)
             (srfi srfi-1)  ;lists
             (ice-9 textual-ports))

(define (fetch-names manifest)
  "Return a list of strings, each corresponding to a name from the
input file MANIFEST."
  (call-with-input-file manifest
    (lambda (port)
      (let loop ((lines '())
                 (line (get-line port)))
        (if (eof-object? line)
            (reverse lines)
            (loop (cons line lines)
                  (get-line port)))))))

;;; Start!

(map (lambda (name)
       (when (null? (find-packages-by-name (guix-name "r-" name)))
         (begin
           (display name)
           (newline))))
     (fetch-names (cadr (command-line))))

;; wget https://git.bioconductor.org -qO - | sed -ne
'/packages\/[a-zA-Z]/{s,^.*R.*packages/,,p}' > bioc_manifest
;; ./pre-inst-env guile --no-auto-compile missing-bioconductor.scm bioc_manifest
--8<---------------cut here---------------end--------------->8---


Hope that help.

All the best,
simon


[-- Attachment #2: Type: text/html, Size: 11700 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [External] Re: New outreachy participant introduction
  2019-10-16 14:16               ` Asfaw, Nardos
@ 2019-10-19 20:33                 ` Ludovic Courtès
  2019-10-24 12:51                 ` Gábor Boskovits
  1 sibling, 0 replies; 13+ messages in thread
From: Ludovic Courtès @ 2019-10-19 20:33 UTC (permalink / raw)
  To: Asfaw, Nardos; +Cc: Guix Devel

Hi Nardos,

"Asfaw, Nardos" <nasfaw@iu.edu> skribis:

> Thanks for reaching out. I am still hanging. I am learning a lot on what it means to be a developer outside of university courses. I am going through the documentation (and examples provided in the email by simon) and the chat logs to sees if my questions have been asked before I come with questions and solutions I have tried.

At any rate, don’t hesitate to ask questions here or on #guix on IRC!
It’s surely tricky to get started with a development project so asking
questions can be helpful and we’ll be happy to provide guidance.

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [External] Re: New outreachy participant introduction
  2019-10-16 14:16               ` Asfaw, Nardos
  2019-10-19 20:33                 ` Ludovic Courtès
@ 2019-10-24 12:51                 ` Gábor Boskovits
  1 sibling, 0 replies; 13+ messages in thread
From: Gábor Boskovits @ 2019-10-24 12:51 UTC (permalink / raw)
  To: Asfaw, Nardos; +Cc: Guix Devel

[-- Attachment #1: Type: text/plain, Size: 719 bytes --]

Hello,

We have not heard from you for a while. Should you need any help, please
let us know.

Asfaw, Nardos <nasfaw@iu.edu> ezt írta (időpont: 2019. okt. 16., Sze,
16:16):

> Hi Gabor,
>
>
> Thanks for reaching out. I am still hanging. I am learning a lot on what
> it means to be a developer outside of university courses. I am going
> through the documentation (and examples provided in the email by simon) and
> the chat logs to sees if my questions have been asked before I come with
> questions and solutions I have tried.
>
>
> Thanks,
>
> Nardos
> ------------------------------
>

Best regards,
g_bor
-- 
OpenPGP Key Fingerprint: 7988:3B9F:7D6A:4DBF:3719:0367:2506:A96C:CF63:0B21

[-- Attachment #2: Type: text/html, Size: 1403 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2019-10-24 12:52 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-10-03 16:11 New outreachy participant introduction Asfaw, Nardos
2019-10-03 17:29 ` Christopher Baines
2019-10-03 19:18 ` Gábor Boskovits
2019-10-05  9:28   ` Gábor Boskovits
2019-10-08  3:23     ` [External] " Asfaw, Nardos
2019-10-08  6:48       ` Christopher Baines
2019-10-08 13:24         ` zimoun
2019-10-13  0:41           ` Asfaw, Nardos
2019-10-16  8:00             ` Gábor Boskovits
2019-10-16 14:16               ` Asfaw, Nardos
2019-10-19 20:33                 ` Ludovic Courtès
2019-10-24 12:51                 ` Gábor Boskovits
2019-10-04 18:50 ` Julien Lepiller

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).