unofficial mirror of help-guix@gnu.org 
 help / color / mirror / Atom feed
From: Julien Lepiller <julien@lepiller.eu>
To: Erwan Jahier <erwan.jahier@univ-grenoble-alpes.fr>
Cc: help-guix@gnu.org
Subject: Re: dune-based package design trouble
Date: Thu, 21 Sep 2023 07:57:30 +0200	[thread overview]
Message-ID: <20230921075730.6964647c@lepiller.eu> (raw)
In-Reply-To: <87editff74.fsf@univ-grenoble-alpes.fr>

Le Wed, 20 Sep 2023 09:52:03 +0200,
Erwan Jahier <erwan.jahier@univ-grenoble-alpes.fr> a écrit :

> Hello,
> 
> I am a newguix tring to package some of his software.
> 
> Since I already  have opam packages, I used =guix  import opam=, that
> helped a  little. Of course,  my packages have dependancies,  and not
> all of them exist in the main guix repo.
> 
> I have  able to build  some of them  (ocaml-junit,
> ocaml-junit-alcotest, ocaml-yaml,  ocaml-functory,
> ocaml-conf-graphviz),   but  I  am  having trouble with
> ocaml-mlgmpidl, for  which the build  phase isn't  able to
> (ocaml-)find gmp (see below).  So I've tried to package ocaml-gmp,
> but I am stuck again.
> 
> The error  "/bin/sh: bad interpreter:  No such file or  directory" is
> raised  during the  build phase  that  runs a  =configure= script
> that refers to a non existing /bin/sh.
> 
> The  problem  is that  the  =patch-source-shebangs=  phase cannot  be
> applied, as this  =configure= script is generated and  run inside the
> build phase (via =dune build=).
> 
> I feel like it might be a dune expert question, but I try my luck
> here.
> 
> Erwan.
> 

It's not very clean, but this works:

(define-public ocaml-mlgmpidl
  (package
    (name "ocaml-mlgmpidl")
    (version "1.2.15")
    (source (origin
              (method url-fetch)
              (uri
                "https://github.com/nberth/mlgmpidl/archive/1.2.15.tar.gz")
              (sha256
                (base32
                  "0hcaan4n5li0rnr55ilgxgd8w00lza9an6w4yj7v66dcb7plbasj"))))
       (build-system ocaml-build-system)
    (arguments
     `(#:tests? #f;
        #:phases
        (modify-phases %standard-phases
          (replace 'configure
            (lambda* (#:key outputs inputs #:allow-other-keys)
              (substitute* "configure"
                ((".*query gmp.*") "echo \"$camlidl_prefix\n\" \n")
                (("camlidl_prefix=`\\$ocamlfind.*")
                 (string-append "camlidl_prefix=\"" (assoc-ref inputs
"camlidl") "/lib/ocaml/site-lib/camlidl\"\n")))
              (invoke "./configure" "--prefix" (assoc-ref outputs
"out")))))))
    (inputs (list perl ocaml-findlib camlidl gmp mpfr
ocaml-bigarray-compat))
    (home-page
      "https://www.inrialpes.fr/pop-art/people/bjeannet/mlxxxidl-forge/mlgmpidl/")
    (synopsis "OCaml interface to the GMP library")
    (description #f)
    (license license:lgpl2.1)) ; with linking exception
)


  reply	other threads:[~2023-09-21  5:59 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-20  7:52 dune-based package design trouble Erwan Jahier
2023-09-21  5:57 ` Julien Lepiller [this message]
2023-09-21  6:45   ` Erwan Jahier
2023-09-21  9:58   ` Erwan Jahier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230921075730.6964647c@lepiller.eu \
    --to=julien@lepiller.eu \
    --cc=erwan.jahier@univ-grenoble-alpes.fr \
    --cc=help-guix@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).