about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/beam-modules/mix-configure-hook.sh
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/beam-modules/mix-configure-hook.sh')
-rwxr-xr-xnixpkgs/pkgs/development/beam-modules/mix-configure-hook.sh18
1 files changed, 18 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/beam-modules/mix-configure-hook.sh b/nixpkgs/pkgs/development/beam-modules/mix-configure-hook.sh
new file mode 100755
index 000000000000..f8b4f3d159fe
--- /dev/null
+++ b/nixpkgs/pkgs/development/beam-modules/mix-configure-hook.sh
@@ -0,0 +1,18 @@
+# shellcheck shell=bash
+# this hook will symlink all dependencies found in ERL_LIBS
+# since Elixir 1.12.2 elixir does not look into ERL_LIBS for
+# elixir depencencies anymore, so those have to be symlinked to the _build directory
+mkdir -p _build/"$MIX_ENV"/lib
+while read -r -d ':' lib; do
+    for dir in "$lib"/*; do
+    # Strip version number for directory name if it exists, so naming of
+    # all libs matches what mix's expectation.
+    dest=$(basename "$dir" | cut -d '-' -f1)
+    build_dir="_build/$MIX_ENV/lib/$dest"
+    ((MIX_DEBUG == 1)) && echo "Linking $dir to $build_dir"
+    # Symlink libs to _build so that mix can find them when compiling.
+    # This is what allows mix to compile the package without searching
+    # for dependencies over the network.
+    ln -s "$dir" "$build_dir"
+    done
+done <<< "$ERL_LIBS:"