~ruther/guix-local

3dab48ccbb7123ec37507311e5100c6928a7750d — Giacomo Leidi 6 months ago 80554b2
doc: Add mix-build-system.

* doc/guix.texi: Document mix-build-system and its most common keyword
arguments.
* gnu/build-system/mix.scm: Update links to documentation without hard
coding an Elixir version.

Change-Id: I68eb76efaaf5639f0eac2d9b674cdb05008e15a4
Reviewed-by: Hartmut Goebel <h.goebel@crazy-compilers.com>
Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
2 files changed, 32 insertions(+), 4 deletions(-)

M doc/guix.texi
M guix/build-system/mix.scm
M doc/guix.texi => doc/guix.texi +28 -0
@@ 10116,6 10116,34 @@ directory, the parameter @code{#:javascript-files} can be used to
specify a list of file names to feed to the minifier.
@end defvar

@defvar mix-build-system
This is a variable exported by @code{guix build-system mix}.  It implements
the standard build procedure used by Elixr programs with
@url{https://hexdocs.pm/mix/Mix.html,Mix}, which consists
of running @command{mix compile}, thereby creating bytecode.

The API is similar to the @var{gnu-build-system}, with some specifics for
Elixir:
@itemize
@item
@code{#:tests?} is a boolean, @code{#true} by default, determining whether tests
for the current build have to be run or not.
@item
@code{#:test-flags} is a list of arguments append to the @command{mix test}
invocation.  It defaults to @code{'()}.
@item
@code{#:mix-exs}, changes the full path to the @code{mix.exs}
file.  It defaults to @code{"mix.exs"}.  Please refer to
@url{https://hexdocs.pm/mix/Mix.html#module-environment-variables,upstream}
documentation for more details.
@item
@code{#:mix-path}, appends extra code paths.  It
defaults to @code{#f}.  Please refer to
@url{https://hexdocs.pm/mix/Mix.html#module-environment-variables,upstream}
documentation for more details.
@end itemize
@end defvar

@defvar mozilla-build-system
This variable is exported by @code{(guix build-system mozilla)}.  It
sets the @code{--target} and @code{--host} configuration flags to what

M guix/build-system/mix.scm => guix/build-system/mix.scm +4 -4
@@ 66,9 66,9 @@ See: https://github.com/hexpm/specifications/blob/main/endpoints.md"

;; A number of environment variables specific to the Mix build system are
;; reflected here.  They are documented at
;; https://hexdocs.pm/mix/1.15.7/Mix.html#module-environment-variables.  Other
;; https://hexdocs.pm/mix/Mix.html#module-environment-variables.  Other
;; parameters located in mix.exs are defined at
;; https://hexdocs.pm/mix/1.15.7/Mix.Project.html#module-configuration
;; https://hexdocs.pm/mix/Mix.Project.html#module-configuration
(define* (mix-build name
                    inputs
                    #:key


@@ 90,9 90,9 @@ See: https://github.com/hexpm/specifications/blob/main/endpoints.md"
  "Build SOURCE using Elixir, and with INPUTS."

  ;; Check the documentation of :build_per_environment here:
  ;; https://hexdocs.pm/mix/1.15.7/Mix.Project.html#module-configuration And
  ;; https://hexdocs.pm/mix/Mix.Project.html#module-configuration And
  ;; "Environments" here:
  ;; https://hexdocs.pm/mix/1.15.7/Mix.html#module-environments
  ;; https://hexdocs.pm/mix/Mix.html#module-environments
  (define mix-environments
    (if build-per-environment
        `("prod" ,@(if tests? '("test") '()))