GNU bug report logs -
#73458
Fix mix-build-system bugs (73453 , 73454)
Previous Next
Reported by: paul <goodoldpaul <at> autistici.org>
Date: Tue, 24 Sep 2024 17:33:02 UTC
Severity: normal
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
Am Mittwoch, dem 25.09.2024 um 10:24 +0200 schrieb Giacomo Leidi:
> Fixes <https://issues.guix.gnu.org/73453>
Note: It's not official yet, but Fixes: <URL> is nice for a trailer.
If it fits into 80 columns, you can also do Fixes: [shortdoc] <URL>.
> * guix/build/mix-build-system.scm (elixir-relative-libdir): New
> variable;
> (elixir-libdir): call elixir-relative-libdir;
Use full sentences, end each with a period (dot).
> (set-erl-env): this new phase sets ERL_LIBS to allow Erlang's virtual
> machine to load Erlang dependencies in Mix builds, in addition to
> Elixir
> ones;
> (%standard-phases): add set-erl-env phases.
>
> Change-Id: Ic1ef5db20680bfd265fbac72bafb760d21135f68
> ---
> guix/build/mix-build-system.scm | 20 +++++++++++++++++++-
> 1 file changed, 19 insertions(+), 1 deletion(-)
>
> diff --git a/guix/build/mix-build-system.scm b/guix/build/mix-build-
> system.scm
> index 0b021da791..41f6061444 100644
> --- a/guix/build/mix-build-system.scm
> +++ b/guix/build/mix-build-system.scm
> @@ -1,6 +1,7 @@
> ;;; GNU Guix --- Functional package management for GNU
> ;;; Copyright © 2023 Pierre-Henry Fröhring <contact <at> phfrohring.com>
> ;;; Copyright © 2024 Igor Goryachev <igor <at> goryachev.org>
> +;;; Copyright © 2024 Giacomo Leidi <goodoldpaul <at> autistici.org>
> ;;;
> ;;; This file is part of GNU Guix.
> ;;;
> @@ -39,10 +40,15 @@ (define-module (guix build mix-build-system)
> ;; minor version number of the Elixir used in the build.
> (define %elixir-version (make-parameter "X.Y"))
>
> +(define (elixir-relative-libdir version)
> + "Return the relative path inside a package namespace in the store
> where all
> +libraries for a specified Elixir VERSION are installed."
> + (string-append "lib/elixir/" version))
> +
> (define* (elixir-libdir path #:optional (version (%elixir-version)))
> "Return the path where all libraries under PATH for a specified
> Elixir
> VERSION are installed."
> - (string-append path "/lib/elixir/" version))
> + (string-append path "/" (elixir-relative-libdir version)))
Rather than having two procedures here, I think calling elixir-libdir
on "lib/erlang/lib" does what you want.
> (define* (strip-prefix name #:optional (prefix "elixir-"))
> "Return NAME without the prefix PREFIX."
> @@ -94,6 +100,17 @@ (define* (set-mix-env #:key inputs mix-path mix-
> exs #:allow-other-keys)
> (setenv "MIX_PATH" (or mix-path ""))
> (setenv "MIX_REBAR3" (string-append (assoc-ref inputs "rebar3")
> "/bin/rebar3")))
>
> +(define* (set-erl-env #:key inputs #:allow-other-keys)
> + "Add dependencies in Elixir's load path."
> + (setenv "ERL_LIBS"
> + (string-join (search-path-as-list
> + `("lib/erlang/lib"
> + ,(elixir-relative-libdir (elixir-version
> inputs)))
> + (map (match-lambda
> + ((label . package) package))
> + inputs))
> + ":")))
> +
> (define* (set-elixir-version #:key inputs #:allow-other-keys)
> "Store the version number of the Elixir input in a parameter."
> (%elixir-version (elixir-version inputs))
> @@ -152,6 +169,7 @@ (define %standard-phases
> (delete 'configure)
> (add-after 'install-locale 'set-mix-env set-mix-env)
> (add-after 'set-mix-env 'set-elixir-version set-elixir-version)
> + (add-after 'set-elixir-version 'set-erl-env set-erl-env)
I think we can reorder this so that set-elixir-version is called first
and set-erl-env can be inlined into set-mix-env.
Cheers
This bug report was last modified 280 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.