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

  • Open
  • quality assurance status badge
Details
2 participants
  • Pierre-Henry Fröhring
  • 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



?