Compile error "/priv/cldr/week_data.json": no such file or directory"
Closed this issue · 4 comments
I get some compile error when trying the latest version of ExCldr. Seesm like some files is missing / not downloaded correctly.
Any idea how to move forward with this?
= Compilation error in file lib/cldr/calendar.ex ==
** (File.Error) could not read file "/Users/kwando/Desktop/api/deps/ex_cldr_dates_times/priv/cldr/week_data.json": no such file or directory
(elixir) lib/file.ex:310: File.read!/1
lib/cldr/config/config.ex:983: Cldr.Config.week_info/0
lib/cldr/calendar.ex:66: (module)
(stdlib) erl_eval.erl:670: :erl_eval.do_apply/6
$ mix deps
* ex_cldr 1.6.1 (Hex package) (mix)
locked at 1.6.1 (ex_cldr) b1bc2c9d
ok
* ex_cldr_currencies 1.0.0 (Hex package) (mix)
locked at 1.0.0 (ex_cldr_currencies) 471c6374
ok
* ex_cldr_numbers 1.4.4 (Hex package) (mix)
locked at 1.4.4 (ex_cldr_numbers) 88930ca7
ok
* ex_cldr_dates_times (Hex package) (mix)
locked at 1.3.0 (ex_cldr_dates_times) 3628a394
the dependency build is outdated, please run "mix deps.compile"
Apologies for the inconvenience. I'm not seeing this issue on my integration test app so I'm going to have to dive a bit deeper to see why you are getting this error.
The file priv/cldr/week_data.json
is actually contained in the lib ex_cldr
. So the error from not finding the file in .../deps/ex_cldr_dates_times/priv/cldr/week_data.json
is surprising.
Would you mind running:
mix deps.clean ex_cldr_dates_times
mix deps.get
mix deps.compile --force
And let met know if this produces a different result? In parallel I'll dig into the code to see how it might possibly pick up the wrong directory.
No need to apologize, I'm thanking you for building/maintaining this library. ❤️
Yep, tried cleaning and recompiling a few times in different combinations with no success.
Though I think I found a lead for you, seems to be related to the configuration somehow. It works with an empty config.exs, but it breaks when configured like this:
use Mix.Config
config :ex_cldr,
default_locale: "sv",
locales: ["en", "sv"],
data_dir: "./priv/cldr"
Below is a repository with a reproduction
https://github.com/kwando/cldr_bug_repro
OK, i understand the source of the problem. One issue I have fixed with an updated version 1.6.2 ex_cldr. There was a bug whereby the Cldr.Config.client_data_dir/0
was being used to open static content instead of Cldr.Config.cldr_data_dir/0
. Upgrading to with mix deps.update ex_cldr
will fix this
The second issue which i can't reasonably fix until ex_cldr version 2.0
is that the :data_dir
config parameter will need to be an absolute path, not a relative one. I appreciate this isn't very friendly but its a consequence of the compile time downloading of locales. When that is happening, the current dir is actually the home dir of the ex_cldr
dependency; not the home dir of your app. This results in a bogus Cldr.Config.client_data_dir/0
resolution. Hence the need to use an absolute path.
Would you mind following the above and letting me know if that is working for you?
There is a lot simplification in the architecture and compilation phase in ex_cldr
version 2.0 but its going to take another couple of months to get to a release candidate.
Updating ex_cldr
to 1.6.2
works without further changes, even if I leave data_dir
as a relative path.
I don't really have a need to specify that option anyway so I can just remove that config option.
$ mix deps.update --all
Resolving Hex dependencies...
Dependency resolution completed:
Unchanged:
abnf2 0.1.2
decimal 1.5.0
ex_cldr_currencies 1.0.0
ex_cldr_dates_times 1.3.0
ex_cldr_numbers 1.4.4
poison 3.1.0
Upgraded:
ex_cldr 1.6.1 => 1.6.2
* Updating ex_cldr (Hex package)