Subject: Re: [PATCH 1/5] guix: build-system: rebar: build Erlang packages with dependencies.

From: Pierre-Henry Fröhring <[email-masked]>
Date: Mon, 13 Nov 2023 19:58:45 +0100

This loses the previous erlang-depends logic, which unpackaged the
      already compiled packages.  I really don't think we should have
erlang be
      yet another rust that heats up the planet compiling leftpad over and
over
      again.  Can we somehow have that cake?

Okay, perhaps it would have been better to start working on the Mix
building system
and inform you simultaneously, instead of sending patches all at once. So,
let's
start anew.

I have taken into account all of your suggestions and have crafted this
patch
introducing the mix-build-system. Yes, there are ChangeLogs now. Currently,
the
"Machete" package is compiled and tested without repeatedly compiling
leftpad — i.e.,
considering pure Elixir packages up to transitive dependencies, it works as
expected. This is new.

As I'm learning how all this works, I'm not entirely sure that updating the
rebar
build system is absolutely necessary. I suppose we will understand more as
we add an
increasing number of Elixir packages, especially when incorporating Elixir
packages
with Erlang dependencies.

So, here's what's coming up:

1. A patch that introduces the mix-build-system variable.
2. Several patches that introduce Elixir packages, up to elixir-machete,
which is one
   of the few packages that includes tests in the tarball.

I guess the next steps are as follows:

1. To determine if the approach is acceptable. Will we boil the world by
compiling
   left-pad endlessly?
2. If the approach is deemed acceptable, the next step is to evaluate the
code. Is
   the code riddled with delicious regexes?
3. If the first two points are verified, it might be worthwhile to continue
   developing this implementation until Phoenix is successfully compiled
and tested
   as expected.

For reference, I have attached a file named `mix-build-system.org'.
This file contains a description of a prototype in Bash that
illustrates the approach taken in this patch.

Cheers.