Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion exla/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ XLA_EXTENSION_LIB = $(XLA_EXTENSION_DIR)/lib
XLA_INCLUDE_PATH = $(XLA_EXTENSION_DIR)/include

# Cache configuration
EXLA_CACHE_SO = cache/$(EXLA_VERSION)/libexla.so
EXLA_CACHE_SO = cache/libexla.so
EXLA_CACHE_OBJ_DIR = cache/$(EXLA_VERSION)/objs

# Private configuration
Expand Down
28 changes: 12 additions & 16 deletions exla/mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -135,26 +135,22 @@ defmodule EXLA.MixProject do
end

defp cached_make(args) do
force_rebuild_mode =
case System.get_env("EXLA_FORCE_REBUILD", "") do
"" ->
:none
force_rebuild_env_var = System.get_env("EXLA_FORCE_REBUILD", "")

"0" ->
force_rebuild_mode =
cond do
force_rebuild_env_var in ["", "false", "0"] ->
:none

"partial" ->
force_rebuild_env_var == "partial" ->
:partial

"true" ->
:full

"1" ->
force_rebuild_env_var in ["true", "1"] ->
:full

value ->
true ->
Mix.raise(
"invalid value for EXLA_FORCE_REBUILD: '#{value}'. Expected one of: partial, true"
"invalid value for EXLA_FORCE_REBUILD: '#{force_rebuild_env_var}'. Expected one of: partial, true, false"
)
end

Expand Down Expand Up @@ -183,24 +179,24 @@ defmodule EXLA.MixProject do
cached? = File.exists?(cached_so) and force_rebuild_mode == :none

if force_rebuild_mode in [:partial, :full] do
Mix.shell().info("Removing cached libexla.so file in cache/#{@version}/libexla.so")
File.rm_rf!("cache/#{@version}/libexla.so")
Mix.shell().info("Removing cached libexla.so file in cache/libexla.so")
File.rm_rf!("cache/libexla.so")

Mix.shell().info("Removing libexla.so cache at #{cached_so}")
File.rm_rf!(cached_so)
end

if cached? do
Mix.shell().info("Using libexla.so from #{cached_so}")
File.cp!(cached_so, "cache/#{@version}/libexla.so")
File.cp!(cached_so, "cache/libexla.so")
end

result = Mix.Tasks.Compile.ElixirMake.run(args)

if not cached? and match?({:ok, _}, result) do
Mix.shell().info("Caching libexla.so at #{cached_so}")
File.mkdir_p!(Path.dirname(cached_so))
File.cp!("cache/#{@version}/libexla.so", cached_so)
File.cp!("cache/libexla.so", cached_so)
end

result
Expand Down
Loading