Groups keyboard shortcuts have been updated
Dismiss
See shortcuts

[Proposal] Add new optional compile parameter to prevent error during project compilation in environment where Hardlink is disallowed

81 views
Skip to first unread message

Mohd Norhaimi Yahya

unread,
Dec 29, 2024, 10:52:28 PM12/29/24
to elixir-lang-core
Hi everyone,

The background story is like this, I install Termux from PlayStore on my non rooted Poco M6 Pro phone then I install Erlang and Elixir. I created a new Elixir project with command ```mix new hello_world```, then I CD to the directory then try to compile the project with ```mix compile``. The compilation failed with error like below.

```
~/.../elixir/hello_world $ mix compile
** (File.LinkError) could not create hard link from "/data/data/com.termux/files/usr/tmp/mix_lock/4JzyjFIskDOoiK7WEYxDnA/port_47507" to "/data/data/com.termux/files/usr/tmp/mix_lock/4JzyjFIskDOoiK7WEYxDnA/lock_1": permission denied
    (mix 1.18.1) lib/mix/sync/lock.ex:201: Mix.Sync.Lock.grab_lock/3
    (mix 1.18.1) lib/mix/sync/lock.ex:160: Mix.Sync.Lock.try_lock/4
    (mix 1.18.1) lib/mix/sync/lock.ex:126: Mix.Sync.Lock.lock/2
    (mix 1.18.1) lib/mix/sync/lock.ex:104: Mix.Sync.Lock.with_lock/3
    (mix 1.18.1) lib/mix/task.ex:495: anonymous fn/3 in Mix.Task.run_task/5
    (mix 1.18.1) lib/mix/tasks/compile.ex:135: Mix.Tasks.Compile.run/1
    (mix 1.18.1) lib/mix/task.ex:495: anonymous fn/3 in Mix.Task.run_task/5
    (mix 1.18.1) lib/mix/cli.ex:107: Mix.CLI.run_task/2
```
I tried to browse to directory ```/data/data/com.termux/files/usr/tmp/mix_lock/4JzyjFIskDOoiK7WEYxDnA``` and I can see the file port_47507, so I can be certain this is not a file writing issue.

Then I CD to directory ```/data/data/com.termux/files/usr/tmp/mix_lock/4JzyjFIskDOoiK7WEYxDnA``` then tried to issue the link command like below and received the error:

```
.../mix_lock/4JzyjFIskDOoiK7WEYxDnA $ ln port_47507 lock_1
ln: failed to create hard link 'lock_1' => 'port_47507': Permission denied
```

I seems his locking mechanism prevents the project to be compiled in environment without hardlink permission.

So I'm thinking, for short term solution will it better if there is an optional parameter to turn off this locking mechanism? And for the long term is there any other way to accomplish the locking mechanism without using hardlinks?

thank you very much,

José Valim

unread,
Dec 30, 2024, 7:02:49 AM12/30/24
to elixir-l...@googlegroups.com

--
You received this message because you are subscribed to the Google Groups "elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elixir-lang-co...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/elixir-lang-core/2250d5e9-b996-4b1a-ad5a-d6531981411bn%40googlegroups.com.

Mohd Norhaimi Yahya

unread,
Dec 30, 2024, 10:57:36 PM12/30/24
to elixir-lang-core
Thank you Jose.
Reply all
Reply to author
Forward
0 new messages