GNU bug report logs - #35207
[PATCH] Resurrect pplacer.

Previous Next

Package: guix-patches;

Reported by: Ricardo Wurmus <rekado <at> elephly.net>

Date: Tue, 9 Apr 2019 13:03:02 UTC

Severity: normal

Tags: patch

Done: Ricardo Wurmus <rekado <at> elephly.net>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 35207 in the body.
You can then email your comments to 35207 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#35207; Package guix-patches. (Tue, 09 Apr 2019 13:03:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Ricardo Wurmus <rekado <at> elephly.net>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Tue, 09 Apr 2019 13:03:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Ricardo Wurmus <rekado <at> elephly.net>
To: guix-patches <at> gnu.org
Subject: [PATCH] Resurrect pplacer.
Date: Tue, 09 Apr 2019 15:00:02 +0200
Hi Guix,

this patch series adds pplacer, which had been removed due to its
dependency on the vulnerable OCaml 4.01.

-- 
Ricardo





Information forwarded to guix-patches <at> gnu.org:
bug#35207; Package guix-patches. (Tue, 09 Apr 2019 13:20:02 GMT) Full text and rfc822 format available.

Message #8 received at 35207 <at> debbugs.gnu.org (full text, mbox):

From: Ricardo Wurmus <rekado <at> elephly.net>
To: 35207 <at> debbugs.gnu.org
Cc: Ricardo Wurmus <rekado <at> elephly.net>
Subject: [PATCH 1/3] gnu: Add ocaml4.02-mcl.
Date: Tue,  9 Apr 2019 15:13:28 +0200
* gnu/packages/machine-learning.scm (ocaml4.02-mcl): New variable.
---
 gnu/packages/machine-learning.scm | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 10aff22206..5b2786b61c 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -334,6 +334,9 @@ networks) based on simulation of (stochastic) flow in graphs.")
 algorithm.")
     (license license:gpl3)))
 
+(define-public ocaml4.02-mcl
+  (package-with-ocaml4.02 ocaml-mcl))
+
 (define-public randomjungle
   (package
     (name "randomjungle")
-- 
2.20.1







Information forwarded to guix-patches <at> gnu.org:
bug#35207; Package guix-patches. (Tue, 09 Apr 2019 13:20:02 GMT) Full text and rfc822 format available.

Message #11 received at 35207 <at> debbugs.gnu.org (full text, mbox):

From: Ricardo Wurmus <rekado <at> elephly.net>
To: 35207 <at> debbugs.gnu.org
Cc: Ricardo Wurmus <rekado <at> elephly.net>
Subject: [PATCH 2/3] gnu: Add ocaml4.02-gsl.
Date: Tue,  9 Apr 2019 15:13:29 +0200
* gnu/packages/ocaml.scm (ocaml4.02-gsl): New variable.
---
 gnu/packages/ocaml.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 7bebf3921b..bf5d39db6c 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -4824,6 +4824,28 @@ Atom.")
 the OCaml language.")
     (license license:gpl3+)))
 
+;; This is the last version that can be built with without ocaml-base, which
+;; cannot be built with OCaml 4.02.
+(define-public ocaml4.02-gsl
+  (package
+    (inherit (package-with-ocaml4.02 ocaml-gsl))
+    (version "1.19.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/mmottl/gsl-ocaml"
+                                  "/releases/download/v"
+                                  version "/gsl-ocaml-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0nzp43hp8pbjqkrxnwp5lgjrabxayf61h18fjaydi0s5faq6f3xh"))))
+    (build-system ocaml-build-system)
+    (inputs
+     `(("gsl" ,gsl)))
+    (arguments
+     `(#:ocaml ,ocaml-4.02
+       #:findlib ,ocaml4.02-findlib))
+    (propagated-inputs '())))
+
 (define-public cubicle
   (package
     (name "cubicle")
-- 
2.20.1







Information forwarded to guix-patches <at> gnu.org:
bug#35207; Package guix-patches. (Tue, 09 Apr 2019 13:21:01 GMT) Full text and rfc822 format available.

Message #14 received at 35207 <at> debbugs.gnu.org (full text, mbox):

From: Ricardo Wurmus <rekado <at> elephly.net>
To: 35207 <at> debbugs.gnu.org
Cc: Ricardo Wurmus <rekado <at> elephly.net>
Subject: [PATCH 3/3] gnu: Add pplacer.
Date: Tue,  9 Apr 2019 15:13:30 +0200
* gnu/packages/bioinformatics.scm (pplacer, pplacer-scripts): New variables.
---
 gnu/packages/bioinformatics.scm | 151 ++++++++++++++++++++++++++++++++
 1 file changed, 151 insertions(+)

diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 4cd032abd4..c073519dc3 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -14555,3 +14555,154 @@ overlapping paired-ended reads into (longer) consensus sequences.
 Additionally, the AdapterRemoval may be used to recover a consensus adapter
 sequence for paired-ended data, for which this information is not available.")
     (license license:gpl3+)))
+
+(define-public pplacer
+  (let ((commit "807f6f3"))
+    (package
+      (name "pplacer")
+      ;; The commit should be updated with each version change.
+      (version "1.1.alpha19")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/matsen/pplacer.git")
+               (commit (string-append "v" version))))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "11ppbbbx20p2g9wj3ff64dhnarb12q79v7qh4rk0gj6lkbz4n7cn"))))
+      (build-system ocaml-build-system)
+      (arguments
+       `(#:ocaml ,ocaml-4.02
+         #:findlib ,ocaml4.02-findlib
+         #:modules ((guix build ocaml-build-system)
+                    (guix build utils)
+                    (ice-9 ftw))
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (add-after 'unpack 'fix-build-with-ocaml-4.02
+             (lambda _
+               (substitute* "myocamlbuild.ml"
+                 (("let run_and_read" m)
+                  (string-append "
+let split s ch =
+  let x = ref [] in
+  let rec go s =
+    let pos = String.index s ch in
+    x := (String.before s pos)::!x;
+    go (String.after s (pos + 1))
+  in
+  try go s
+  with Not_found -> !x
+let split_nl s = split s '\\n'
+let before_space s =
+  try String.before s (String.index s ' ')
+  with Not_found -> s
+
+" m))
+                 (("run_and_read \"ocamlfind list \\| cut -d' ' -f1\"" m)
+                  (string-append "List.map before_space (split_nl & " m ")"))
+                 (("    blank_sep_strings &") "")
+                 (("      Lexing.from_string &") ""))
+               #t))
+           (add-after 'unpack 'replace-bundled-cddlib
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let* ((cddlib-src (assoc-ref inputs "cddlib-src"))
+                      (local-dir "cddlib_guix"))
+                 (mkdir local-dir)
+                 (with-directory-excursion local-dir
+                   (invoke "tar" "xvf" cddlib-src))
+                 (let ((cddlib-src-folder
+                        (string-append local-dir "/"
+                                       (list-ref (scandir local-dir) 2)
+                                       "/lib-src")))
+                   (for-each make-file-writable (find-files "cdd_src" ".*"))
+                   (for-each
+                    (lambda (file)
+                      (copy-file file
+                                 (string-append "cdd_src/" (basename file))))
+                    (find-files cddlib-src-folder ".*[ch]$")))
+                 #t)))
+           (add-after 'unpack 'fix-makefile
+             (lambda _
+               ;; Remove system calls to 'git'.
+               (substitute* "Makefile"
+                 (("^DESCRIPT:=pplacer-.*")
+                  (string-append
+                   "DESCRIPT:=pplacer-$(shell uname)-v" ,version "\n")))
+               (substitute* "myocamlbuild.ml"
+                 (("git describe --tags --long .*\\\" with")
+                  (string-append
+                   "echo -n v" ,version "-" ,commit "\" with")))
+               #t))
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (bin (string-append out "/bin")))
+                 (copy-recursively "bin" bin))
+               #t)))))
+      (inputs
+       `(("zlib" ,zlib "static")
+         ("gsl" ,gsl)
+         ("ocaml-ounit" ,ocaml4.02-ounit)
+         ("ocaml-batteries" ,ocaml4.02-batteries)
+         ("ocaml-camlzip" ,ocaml4.02-camlzip)
+         ("ocaml-csv" ,ocaml4.02-csv)
+         ("ocaml-sqlite3" ,ocaml4.02-sqlite3)
+         ("ocaml-xmlm" ,ocaml4.02-xmlm)
+         ("ocaml-mcl" ,ocaml4.02-mcl)
+         ("ocaml-gsl" ,ocaml4.02-gsl)))
+      (native-inputs
+       `(("cddlib-src" ,(package-source cddlib))
+         ("pkg-config" ,pkg-config)))
+      (propagated-inputs
+       `(("pplacer-scripts" ,pplacer-scripts)))
+      (synopsis "Phylogenetic placement of biological sequences")
+      (description
+       "Pplacer places query sequences on a fixed reference phylogenetic tree
+to maximize phylogenetic likelihood or posterior probability according to a
+reference alignment.  Pplacer is designed to be fast, to give useful
+information about uncertainty, and to offer advanced visualization and
+downstream analysis.")
+      (home-page "http://matsen.fhcrc.org/pplacer")
+      (license license:gpl3))))
+
+;; This package is installed alongside 'pplacer'.  It is a separate package so
+;; that it can use the python-build-system for the scripts that are
+;; distributed alongside the main OCaml binaries.
+(define pplacer-scripts
+  (package
+    (inherit pplacer)
+    (name "pplacer-scripts")
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'enter-scripts-dir
+           (lambda _ (chdir "scripts") #t))
+         (replace 'check
+           (lambda _ (invoke "python" "-m" "unittest" "discover" "-v") #t))
+         (add-after 'install 'wrap-executables
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin")))
+               (let ((path (string-append
+                            (assoc-ref inputs "hmmer") "/bin:"
+                            (assoc-ref inputs "infernal") "/bin")))
+                 (display path)
+                 (wrap-program (string-append bin "/refpkg_align.py")
+                   `("PATH" ":" prefix (,path))))
+               (let ((path (string-append
+                            (assoc-ref inputs "hmmer") "/bin")))
+                 (wrap-program (string-append bin "/hrefpkg_query.py")
+                   `("PATH" ":" prefix (,path)))))
+             #t)))))
+    (inputs
+     `(("infernal" ,infernal)
+       ("hmmer" ,hmmer)))
+    (propagated-inputs
+     `(("python-biopython" ,python2-biopython)
+       ("taxtastic" ,taxtastic)))
+    (synopsis "Pplacer Python scripts")))
-- 
2.20.1







Information forwarded to guix-patches <at> gnu.org:
bug#35207; Package guix-patches. (Tue, 09 Apr 2019 17:13:02 GMT) Full text and rfc822 format available.

Message #17 received at 35207 <at> debbugs.gnu.org (full text, mbox):

From: Julien Lepiller <julien <at> lepiller.eu>
To: Ricardo Wurmus <rekado <at> elephly.net>,35207 <at> debbugs.gnu.org
Subject: Re: [bug#35207] [PATCH] Resurrect pplacer.
Date: Tue, 09 Apr 2019 19:12:43 +0200
Le 9 avril 2019 15:00:02 GMT+02:00, Ricardo Wurmus <rekado <at> elephly.net> a écrit :
>Hi Guix,
>
>this patch series adds pplacer, which had been removed due to its
>dependency on the vulnerable OCaml 4.01.

We're going to have the same issue with ocaml-4.02, so I don't think we should add more dependents. I'd like to remove ocaml-4.02 but I'm a bit stuck because of bap right now.

What's the most recent version of ocaml pplacer can use?




Information forwarded to guix-patches <at> gnu.org:
bug#35207; Package guix-patches. (Tue, 09 Apr 2019 17:42:02 GMT) Full text and rfc822 format available.

Message #20 received at 35207 <at> debbugs.gnu.org (full text, mbox):

From: Ricardo Wurmus <rekado <at> elephly.net>
To: Julien Lepiller <julien <at> lepiller.eu>
Cc: 35207 <at> debbugs.gnu.org
Subject: Re: [bug#35207] [PATCH] Resurrect pplacer.
Date: Tue, 09 Apr 2019 19:41:27 +0200
Julien Lepiller <julien <at> lepiller.eu> writes:

> What's the most recent version of ocaml pplacer can use?

It’s actually 4.01.  I don’t know how much effort it’s going to be to
make it work with the latest version.

-- 
Ricardo





Information forwarded to guix-patches <at> gnu.org:
bug#35207; Package guix-patches. (Thu, 11 Apr 2019 12:57:02 GMT) Full text and rfc822 format available.

Message #23 received at 35207 <at> debbugs.gnu.org (full text, mbox):

From: Ricardo Wurmus <rekado <at> elephly.net>
To: Julien Lepiller <julien <at> lepiller.eu>
Cc: 35207 <at> debbugs.gnu.org
Subject: Re: [bug#35207] [PATCH] Resurrect pplacer.
Date: Thu, 11 Apr 2019 14:55:44 +0200
Ricardo Wurmus <rekado <at> elephly.net> writes:

> Julien Lepiller <julien <at> lepiller.eu> writes:
>
>> What's the most recent version of ocaml pplacer can use?
>
> It’s actually 4.01.  I don’t know how much effort it’s going to be to
> make it work with the latest version.

I gave patching pplacer a try, but in more recent versions of OCaml
strings are byte streams, so it’s quite a bit of work to figure out
where exactly to convert strings to byte streams and back again.

I’ll keep working on this for a while, but for now I’d like to get
pplacer resurrected with 4.02 first.

--
Ricardo





Information forwarded to guix-patches <at> gnu.org:
bug#35207; Package guix-patches. (Thu, 11 Apr 2019 13:03:02 GMT) Full text and rfc822 format available.

Message #26 received at 35207 <at> debbugs.gnu.org (full text, mbox):

From: Julien Lepiller <julien <at> lepiller.eu>
To: Ricardo Wurmus <rekado <at> elephly.net>
Cc: 35207 <at> debbugs.gnu.org
Subject: Re: [bug#35207] [PATCH] Resurrect pplacer.
Date: Thu, 11 Apr 2019 15:02:28 +0200
Le 11 avril 2019 14:55:44 GMT+02:00, Ricardo Wurmus <rekado <at> elephly.net> a écrit :
>
>Ricardo Wurmus <rekado <at> elephly.net> writes:
>
>> Julien Lepiller <julien <at> lepiller.eu> writes:
>>
>>> What's the most recent version of ocaml pplacer can use?
>>
>> It’s actually 4.01.  I don’t know how much effort it’s going to be to
>> make it work with the latest version.
>
>I gave patching pplacer a try, but in more recent versions of OCaml
>strings are byte streams, so it’s quite a bit of work to figure out
>where exactly to convert strings to byte streams and back again.
>
>I’ll keep working on this for a while, but for now I’d like to get
>pplacer resurrected with 4.02 first.
>
>--
>Ricardo

Ok, I guess it's acceptable. I'll fully review your patches later today.




Information forwarded to guix-patches <at> gnu.org:
bug#35207; Package guix-patches. (Thu, 11 Apr 2019 14:58:01 GMT) Full text and rfc822 format available.

Message #29 received at 35207 <at> debbugs.gnu.org (full text, mbox):

From: Ricardo Wurmus <rekado <at> elephly.net>
To: Julien Lepiller <julien <at> lepiller.eu>
Cc: 35207 <at> debbugs.gnu.org
Subject: Re: [bug#35207] [PATCH] Resurrect pplacer.
Date: Thu, 11 Apr 2019 16:56:32 +0200
Julien Lepiller <julien <at> lepiller.eu> writes:

> Le 11 avril 2019 14:55:44 GMT+02:00, Ricardo Wurmus <rekado <at> elephly.net> a écrit :
>>
>>Ricardo Wurmus <rekado <at> elephly.net> writes:
>>
>>> Julien Lepiller <julien <at> lepiller.eu> writes:
>>>
>>>> What's the most recent version of ocaml pplacer can use?
>>>
>>> It’s actually 4.01.  I don’t know how much effort it’s going to be to
>>> make it work with the latest version.
>>
>>I gave patching pplacer a try, but in more recent versions of OCaml
>>strings are byte streams, so it’s quite a bit of work to figure out
>>where exactly to convert strings to byte streams and back again.
>>
>>I’ll keep working on this for a while, but for now I’d like to get
>>pplacer resurrected with 4.02 first.
>>
>>--
>>Ricardo
>
> Ok, I guess it's acceptable. I'll fully review your patches later today.

Thanks for the offer, but it won’t be necessary after all.  I figured
out how to make it work with the latest OCaml.  I had to also patch
ocaml-mcl, but that seems okay.

New patches coming in a few minutes!

--
Ricardo





Reply sent to Ricardo Wurmus <rekado <at> elephly.net>:
You have taken responsibility. (Thu, 11 Apr 2019 15:40:02 GMT) Full text and rfc822 format available.

Notification sent to Ricardo Wurmus <rekado <at> elephly.net>:
bug acknowledged by developer. (Thu, 11 Apr 2019 15:40:02 GMT) Full text and rfc822 format available.

Message #34 received at 35207-done <at> debbugs.gnu.org (full text, mbox):

From: Ricardo Wurmus <rekado <at> elephly.net>
To: Julien Lepiller <julien <at> lepiller.eu>
Cc: 35207-done <at> debbugs.gnu.org
Subject: Re: [bug#35207] [PATCH] Resurrect pplacer.
Date: Thu, 11 Apr 2019 17:23:21 +0200
Ricardo Wurmus <rekado <at> elephly.net> writes:

> Julien Lepiller <julien <at> lepiller.eu> writes:
>
>> Le 11 avril 2019 14:55:44 GMT+02:00, Ricardo Wurmus <rekado <at> elephly.net> a écrit :
>>>
>>>Ricardo Wurmus <rekado <at> elephly.net> writes:
>>>
>>>> Julien Lepiller <julien <at> lepiller.eu> writes:
>>>>
>>>>> What's the most recent version of ocaml pplacer can use?
>>>>
>>>> It’s actually 4.01.  I don’t know how much effort it’s going to be to
>>>> make it work with the latest version.
>>>
>>>I gave patching pplacer a try, but in more recent versions of OCaml
>>>strings are byte streams, so it’s quite a bit of work to figure out
>>>where exactly to convert strings to byte streams and back again.
>>>
>>>I’ll keep working on this for a while, but for now I’d like to get
>>>pplacer resurrected with 4.02 first.
>>>
>>>--
>>>Ricardo
>>
>> Ok, I guess it's acceptable. I'll fully review your patches later today.
>
> Thanks for the offer, but it won’t be necessary after all.  I figured
> out how to make it work with the latest OCaml.  I had to also patch
> ocaml-mcl, but that seems okay.
>
> New patches coming in a few minutes!

I pushed the new patches to the “master” branch with commit 12327d7447.

-- 
Ricardo





bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Fri, 10 May 2019 11:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 4 years and 346 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.