[PATCH 0/7] Enable Elixir packages that depend on Erlang packages to build

  • Open
  • quality assurance status badge
Details
3 participants
  • Pierre-Henry Fröhring
  • Hartmut Goebel
  • Liliana Marie Prikler
Owner
unassigned
Submitted by
Pierre-Henry Fröhring
Severity
normal
P
P
Pierre-Henry Fröhring wrote on 18 Dec 2023 14:02
(address . guix-patches@gnu.org)(name . Liliana Marie Prikler)(address . liliana.prikler@gmail.com)
871qbjlkw1.fsf@phfrohring.com
Hello lylip,

It's great to see progress!

I suggest the next objective is to enable Elixir packages that depend on Erlang
packages to build. For instance, the Elixir package [telemetry_metrics] depends on the
Erlang telemetry package and is a dependency of the Elixir Phoenix package.

While reviewing the code of the Rebar build system, we noticed the use of the
[skip_deps] Rebar flag, which is ignored by Rebar:
?????
? $ guix shell rebar3 -- rebar3 help compile
? […]
? -d, --deps_only Only compile dependencies, no project apps will be
? built.
?????

So, to build Elixir packages that depend on Erlang, the necessary steps inlcude:
1) Updating the Rebar build system to align with the current usages of Rebar.
2) Allowing Elixir to access Erlang compiled libraries as discussed in [issue 66801].

If the following plan is agreed upon, then we will have an Elixir package that
depends on an Erlang package to build, specifically `telemetry_metrics'. Patches in the
series will have these objectives:

1. ? Update the Rebar build system to align with the current usages of Rebar.
2. ? Update the Erlang build system to install libraries under `lib/erlang/X.Y' as discussed in issue 66801.
3. ? Update the Erlang package so that `GUIX_ERL_LIBS' gather all libraries installed under `lib/erlang/X.Y'.
4. ? Update the Erlang package to wrap its binaires so that they have access to
compiled libraries represented by `GUIX_ERL_LIBS'.
5. ? Add the Erlang Telemetry package.
6. ? Update the Elixir package so that it has access to Erlang packages represented by `GUIX_ERL_LIBS'.
7. ? Add the Elixir package `telemetry_metrics'.

If the corresponding patch series is merged, additional packages (whether Erlang,
Elixir, or other types) will be incorporated until Phoenix package builds.

What do you think of this plan?

Regards,
phf




L
L
Liliana Marie Prikler wrote on 18 Dec 2023 15:49
eb5dea6a62339dd8045af414a715dfe80894c2c0.camel@gmail.com
Am Montag, dem 18.12.2023 um 14:02 +0100 schrieb Pierre-Henry Fröhring:
Toggle quote (50 lines)
> Hello lylip,
>
> It's great to see progress!
>
> I suggest the next objective is to enable Elixir packages that depend
> on Erlang packages to build. For instance, the Elixir package
> [telemetry_metrics] depends on the Erlang telemetry package and is a
> dependency of the Elixir Phoenix package.
>
> While reviewing the code of the Rebar build system, we noticed the
> use of the [skip_deps] Rebar flag, which is ignored by Rebar:
> ?????
> ? $ guix shell rebar3 -- rebar3 help compile
> ? […]
> ?   -d, --deps_only  Only compile dependencies, no project apps will
> be
> ?                    built.
> ?????
>
> So, to build Elixir packages that depend on Erlang, the necessary
> steps inlcude:
> 1) Updating the Rebar build system to align with the current usages
> of Rebar.
> 2) Allowing Elixir to access Erlang compiled libraries as discussed
> in [issue 66801].
>
> If the following plan is agreed upon, then we will have an Elixir
> package that depends on an Erlang package to build, specifically
> `telemetry_metrics'. Patches in the series will have these
> objectives:
>
> 1. ? Update the Rebar build system to align with the current usages
> of Rebar.
> 2. ? Update the Erlang build system to install libraries under
> `lib/erlang/X.Y' as discussed in issue 66801.
> 3. ? Update the Erlang package so that `GUIX_ERL_LIBS' gather all
> libraries installed under `lib/erlang/X.Y'.
> 4. ? Update the Erlang package to wrap its binaires so that they have
> access to
>    compiled libraries represented by `GUIX_ERL_LIBS'.
> 5. ? Add the Erlang Telemetry package.
> 6. ? Update the Elixir package so that it has access to Erlang
> packages represented by `GUIX_ERL_LIBS'.
> 7. ? Add the Elixir package `telemetry_metrics'.
>
> If the corresponding patch series is merged, additional packages
> (whether Erlang, Elixir, or other types) will be incorporated until
> Phoenix package builds.
>
> What do you think of this plan?
Since we typically disable phoning home (including telemetry), I don't
think having a telemetry package in Guix would be good optics :)
Perhaps you can think of another example package but still follow the
steps laid out above?

Cheers
P
P
Pierre-Henry Fröhring wrote on 20 Dec 2023 11:57
(name . Liliana Marie Prikler)(address . liliana.prikler@gmail.com)(address . 67877@debbugs.gnu.org)
875y0tjfzx.fsf@phfrohring.com
Dear lylip,

Toggle quote (3 lines)
> Perhaps you can think of another example package but still follow the
> steps laid out above?

The [yaml_elixir] package should fit the bill as it calls [yamerl]. I have
got everything working here. I am in the process of crafting the various
patches. I have written a literate programming implementation of the rebar
build system to document the reasoning for future references. The code in
the post actually runs. Could you please review the reasoning? I will add
your remarks to the post. Here is the post:


Thank you.

--

Regards,

-- phf



H
H
Hartmut Goebel wrote on 13 Jul 13:45 +0200
[PATCH 0/7] Enable Elixir packages that depend on Erlang packages to build
(address . 67877@debbugs.gnu.org)
85e5c959-b16a-4b4f-be12-76e5923c5b37@crazy-compilers.com
Another Elixir package depending on Erlang package is artificery. Here
is a scratch of a package definition. Please let me know how I can help
implementing the required things.


* gnu/packages/elixir-xyz.scm (elixir-artificery): New variable.
---
gnu/packages/elixir-xyz.scm | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)

Toggle diff (49 lines)
diff --git a/gnu/packages/elixir-xyz.scm b/gnu/packages/elixir-xyz.scm
index f08e07bb57..618c5afe8e 100644
--- a/gnu/packages/elixir-xyz.scm
+++ b/gnu/packages/elixir-xyz.scm
@@ -1,4 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2020, 2021 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2023 Pierre-Henry Fröhring <phfrohring@deeplinks.com>
;;; Copyright © 2024 Igor Goryachev <igor@goryachev.org>
;;;
@@ -36,6 +37,24 @@ (define-module (gnu packages elixir-xyz)
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-26))

+(define-public elixir-artificery
+  (package
+    (name "elixir-artificery")
+    (version "0.4.3")
+    (source (origin
+              (method url-fetch)
+              (uri (hexpm-uri "artificery" version))
+              (sha256
+               (base32
+                "0105zjghn01zncvwza1bkih0apkz7vxbxgbsjd78h80flcrm7s8j"))))
+    (build-system elixir-build-system)
+    (inputs (list erlang-hex-core))
+    (home-page "https://github.com/bitwalker/artificery")
+    (synopsis "Toolkit for terminal user interfaces in Elixir")
+    (description "This package provides a toolkit for terminal user
interfaces
+in Elixir.")
+    (license license:asl2.0)))
+
(define-public elixir-nimble-parsec
  (package
    (name "elixir-nimble-parsec")
--
2.41.1





--
Regards
Hartmut Goebel

| Hartmut Goebel |h.goebel@crazy-compilers.com |
|www.crazy-compilers.com | compilers which you thought are impossible |
Attachment: file
P
P
Pierre-Henry Fröhring wrote on 14 Jul 12:47 +0200
(name . Hartmut Goebel)(address . h.goebel@crazy-compilers.com)(address . 67877@debbugs.gnu.org)
87plrgfdws.fsf@phfrohring.com
Hello Hartmut,

I have built a test case, which you can find here:


If `guix build -f test-package.scm` succeeds, there is a good chance that the issue is resolved.

Cheers,
--

Pierre-Henry FRÖHRING
- Tel: +33 7 88 17 15 73
- Email: contact@phfrohring.com
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 67877@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 67877
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch