hexpm / hex

Package manager for the Erlang ecosystem.
https://hex.pm
973 stars 185 forks source link

Unpacking inner tarball failed (Windows) #474

Closed rockerBOO closed 6 years ago

rockerBOO commented 6 years ago

Hello,

I am currently running into issues getting dependencies on Windows. Getting the following error and not finding any information about what might be causing it. I know there is a pull request for rebuilding Hex.Tar so maybe this is related or will be fixed with that.

**(Mix) Unpacking inner tarball failed: invalid argument

PS F:\projects> mix phx.new test2
* creating test2/config/config.exs
...

Fetch and install dependencies? [Yn] n

...

PS F:\projects> cd .\test2\
PS F:\projects\test2> mix deps.get
Resolving Hex dependencies...
Dependency resolution completed:
  connection 1.0.4
  cowboy 1.1.2
  cowlib 1.0.2
  db_connection 1.1.2
  decimal 1.4.1
  ecto 2.2.7
  file_system 0.2.2
  gettext 0.14.0
  mime 1.2.0
  phoenix 1.3.0
  phoenix_ecto 3.3.0
  phoenix_html 2.10.5
  phoenix_live_reload 1.1.3
  phoenix_pubsub 1.0.2
  plug 1.4.3
  poison 3.1.0
  poolboy 1.5.1
  postgrex 0.13.3
  ranch 1.3.2
* Getting phoenix (Hex package)
  Checking package (https://repo.hex.pm/tarballs/phoenix-1.3.0.tar)
  Fetched package
* Getting phoenix_pubsub (Hex package)
  Checking package (https://repo.hex.pm/tarballs/phoenix_pubsub-1.0.2.tar)
  Fetched package
* Getting phoenix_ecto (Hex package)
  Checking package (https://repo.hex.pm/tarballs/phoenix_ecto-3.3.0.tar)
  Fetched package
** (Mix) Unpacking inner tarball failed: invalid argument
PS F:\projects\test2> mix hex.info
Hex:    0.17.1
Elixir: 1.5.2
OTP:    20.1

Built with: Elixir 1.5.1 and OTP 18.3
ericmj commented 6 years ago

Can you try to narrow down which package is causing this error?

rgrativol commented 6 years ago

Same here.

* Updating ecto (Hex package)
  Checking package (https://repo.hex.pm/tarballs/ecto-2.2.7.tar)
  Fetched package
** (Mix) Unpacking inner tarball failed: invalid argument

I think it is a Windows problem.

rockerBOO commented 6 years ago

Getting this error on various packages. I individually went through my dependencies (setting only 1 deps active) and got the following list of errors. Thanks 😄

{:phoenix, "~> 1.3.0"},
{:phoenix_pubsub, "~> 1.0"},
{:phoenix_ecto, "~> 3.2"},
{:postgrex, ">= 0.0.0"},
{:phoenix_html, "~> 2.10"},
{:phoenix_live_reload, "~> 1.0", only: :dev},
{:gettext, "~> 0.11"},
{:cowboy, "~> 1.0"},
{:mongodb, "~> 0.4.3"},
{:httpoison, "~> 0.13"},
{:timex, "~> 3.0"},
{:quantum, ">= 1.2.4"},
* Getting phoenix_html (Hex package)
  Checking package (https://repo.hex.pm/tarballs/phoenix_html-2.10.5.tar)
  Fetched package
** (Mix) Unpacking inner tarball failed: invalid argument
* Getting phoenix_live_reload (Hex package)
  Checking package (https://repo.hex.pm/tarballs/phoenix_live_reload-1.1.3.tar)
  Fetched package
** (Mix) Unpacking inner tarball failed: invalid argument
* Getting connection (Hex package)
  Checking package (https://repo.hex.pm/tarballs/connection-1.0.4.tar)
  Fetched package
* Getting db_connection (Hex package)
  Checking package (https://repo.hex.pm/tarballs/db_connection-1.1.2.tar)
  Fetched package
* Getting decimal (Hex package)
  Checking package (https://repo.hex.pm/tarballs/decimal-1.4.1.tar)
  Fetched package
** (Mix) Unpacking inner tarball failed: invalid argument
* Updating mongodb (Hex package)
  Checking package (https://repo.hex.pm/tarballs/mongodb-0.4.3.tar)
  Fetched package
** (Mix) Unpacking inner tarball failed: invalid argument
* Updating httpoison (Hex package)
  Checking package (https://repo.hex.pm/tarballs/httpoison-0.13.0.tar)
  Fetched package
** (Mix) Unpacking inner tarball failed: invalid argument
* Updating combine (Hex package)
  Checking package (https://repo.hex.pm/tarballs/combine-0.10.0.tar)
  Fetched package
** (Mix) Unpacking inner tarball failed: invalid argument
* Updating quantum (Hex package)
  Checking package (https://repo.hex.pm/tarballs/quantum-2.2.0.tar)
  Fetched package
** (Mix) Unpacking inner tarball failed: invalid argument
ericmj commented 6 years ago

When did this start happening for you, after updating Hex, Elixir or maybe OS update?

I don't have a Windows computer so it's hard for me to investigate. If you want to help investigate, the error is raised here: https://github.com/hexpm/hex/blob/master/lib/hex/tar.ex#L124.

ttoomes commented 6 years ago

I was having the same issue, and narrowed it down to trying to run a project on a flash drive. I was trying to build a project on an SD card when I first had the issue. Moving the project to an internal drive resolved the issue. I've replicated the issue on three different PCs running Windows 10 with different flash drives and SD cards (with exFAT and FAT32 file systems).

I'm not sure if there's anything that can be done about this -- Windows doesn't support , but is there a warning on running hex on a portable drive?

I'm running Windows 10 (must recent update), Elixir 1.5.3, and Erlang 20.2.

rockerBOO commented 6 years ago

Yes I can confirm this issue only seems to occur on the FAT32 drive I have. On NTFS it works properly. I can't seem to quickly make a test case that fails for FAT32.

The following works on both FAT32 and NTFS.

iex(1)> :hex_erl_tar.extract('phoenix_html-2.10.5.tar', [:memory])
{:ok,
 [{'VERSION', "3"},
  {'CHECKSUM',
   "4F9DF6B0FB7422A9440A73182A566CB9CBE0E3FFE8884EF9337CCF284FC1EF0A"},
  {'metadata.config',
...
ericmj commented 6 years ago

We need a minimal reproducing case to verify if this an issue with Hex or OTP. I would appreciate any help from developers using Windows.

/cc @OvermindDL1 @OnorioCatenacci

OnorioCatenacci commented 6 years ago

I'll see what I can do Eric.

OnorioCatenacci commented 6 years ago

@rockerBOO and @ttoomes Can you find your exact version of Windows 10 so I can try to repro this issue on the same version of Windows if possible? For example if I run "ver" from a command prompt I get this:

Microsoft Windows [Version 10.0.15063]

Could both of you do the same and post the result to this thread?

rockerBOO commented 6 years ago

Microsoft Windows [Version 10.0.15063]

OnorioCatenacci commented 6 years ago

I just gave this a quick try (mix phx.new test2) on my windows box and I didn't see an issue. Couple of obvious differences though:

1.) I'm pretty sure my drive is NTFS. I need to see how to confirm that.

2.) I tried it with 1.6.0-rc1. If it is a Windows issue, then using 1.6.0-rc1 (vs. 1.5.3) shouldn't make a difference but it is different. I can revert to 1.5.3 to try it too.

In other words, I just gave it a quick try and no luck. I'll try again when I have time.

rockerBOO commented 6 years ago

To get your file system right click on the drive and go to Properties. Should be listed there.

OnorioCatenacci commented 6 years ago

Yeah it’s NTFS On Thu, Jan 11, 2018 at 5:27 PM Dave Lage notifications@github.com wrote:

To get your file system right click on the drive and go to Properties. Should be listed there.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/hexpm/hex/issues/474#issuecomment-357082146, or mute the thread https://github.com/notifications/unsubscribe-auth/AAJXFWCP4Gkf5dguqehvQZ4KU_BneuKpks5tJorTgaJpZM4RNGsd .

OvermindDL1 commented 6 years ago

Only have NTFS here and I've ran those commands a few times up to 1.5.* without issues. Do I need to try it in 1.6? (Thankfully my primary development environment has finally finished converting to linux when the server running software did too so I've not done much Elixir on Windows after 1.5.)

wojtekmach commented 6 years ago

@OvermindDL1 what OTP version are you using? Could you try on 20.1 or 20.2?

OvermindDL1 commented 6 years ago

Checking... Windows currently has Elixir 1.5.0 with OTP 19 (erts-8.2). I can try updating OTP and updating to Elixir 1.5.1. Hold on...

EDIT: Whenever Erlang downloads, wow it is going slow, only ~80kb/sec...

OvermindDL1 commented 6 years ago

Using OTP 20 (erts-9.2) with Elixir 1.5.3, following precisely the same steps and commands as the OP shows no issues with acquiring the packages or extracting the tarballs (also compiled the deps just to make sure) on Win10.

milmazz commented 6 years ago

@ericmj @wojtekmach I'll further investigate this problem, so far I found the following:

In a vfat partition on Windows I did:

iex(1)> parent_dir = "e:/elixir"
"e:elixir"
iex(2)> tar_file = Path.join(parent_dir, "earmark-1.2.4.tar")
"e:elixir/earmark-1.2.4.tar"

iex(3)> Hex.Tar.unpack(tar_file, parent_dir)
{:error, {:inner_tarball, :einval}}

That's the reported error, going deeper we find the following:

iex(4)> {ok, files} = :hex_erl_tar.extract(tar_file, [:memory])
iex(5)> files = Enum.into(files, %{})

iex(6)> :hex_erl_tar.extract({:binary, files['contents.tar.gz']}, [:compressed, :memory])
# works
iex(7)> :hex_erl_tar.extract({:binary, files['contents.tar.gz']}, [:compressed, cwd: parent_dir])
{:error, :einval}
wojtekmach commented 6 years ago

@milmazz thank you, this is most helpful! Does parent_dir exist before you try to unpack? If not, could you create beforehand? Or, unpack to an empty existing directory etc?

milmazz commented 6 years ago

@wojtekmach Yes, parent_dir already exists, that directory contains the file earmark-1.2.4.tar among others.

wojtekmach commented 6 years ago

ah, right. How about unpacking to existing empty or non-existing directory?

milmazz commented 6 years ago

@wojtekmach Same result in both cases.

wojtekmach commented 6 years ago

couple more ideas:

  1. einval error is possibly related to permissions [1] [2] (but might be just a catch-all error as well), could you double-check permissions in the directory you're extracting to?
  2. could you try creating a package & unpacking (e.g. using mix hex.build --unpack :-)), perhaps it doesn't handle packages built on different OS for some reason?

btw, are you testing on latest (v0.17.3)?

[1] https://github.com/hexpm/hex/blob/v0.17.3/src/hex_erl_tar.erl#L369 [2] https://github.com/hexpm/hex/blob/v0.17.3/src/hex_erl_tar.erl#L389

milmazz commented 6 years ago
  1. Already checked that I have permissions under that directory, but I did it again: File.touch!(Path.join(parent_dir, "something")) works as usual.
  2. cd /e/elixir/ex_doc && mix hex.build --unpack returns the same message: ** (Mix) Unpacking inner tarball failed: invalid argument

I'm working with Hex v0.17.4-dev

wojtekmach commented 6 years ago

ok, I got access to a windows 7 box and I'm able to reproduce this on elixir 1.6, otp 20.2, FAT partition. On NTFS it works fine.

Minimal repro:

iex> :erl_tar.create('foo.tar', [{'a.txt', "aaa"}])
:ok
iex> :erl_tar.extract('foo.tar', [cwd: "out"])
:ok

iex> :hex_erl_tar.create('foo2.tar', [{'a.txt', "aaa"}])
:ok
iex> :hex_erl_tar.extract('foo2.tar', [cwd: "out2"])
{:error, :einval}
# foo.tar
<<97, 46, 116, 120, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 48, 48, 54, 52, 52, 0, 48, 48, 48, 48, 48, 48, 48, 0, 48, 48, 48, 48, 48, 48, 48, 0, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 51, 0, 49, 51, 50, 50, 55, 55, 53, 52, 50, 51, 52, 0, 48, 48, 49, 48, 50, 51, 48, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 115, 116, 97, 114, 0, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48, 48, 0, 48, 48, 48, 48, 48, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>>

# foo2.tar
<<97, 46, 116, 120, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 48, 48, 54, 52, 52, 0, 48, 48, 48, 48, 48, 48, 48, 0, 48, 48, 48, 48, 48, 48, 48, 0, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 51, 0, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 0, 48, 48, 49, 48, 49, 54, 48, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 115, 116, 97, 114, 0, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48, 48, 0, 48, 48, 48, 48, 48, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>>

so it looks like it's a problem with our vendored hex_erl_tar. I'll try to get a fix in in a few days. Thanks everyone for helping with debugging this!

Lincxx commented 6 years ago

I also was developing on a thumb drive and it was not letting do mix deps.get with quantum I'm using Windows 10 Enterprise Ver 1709 OS Build 16299.125 I received this: mix deps.get Resolving Hex dependencies... Dependency resolution completed: bunt 0.1.6 credo 0.4.14 crontab 1.1.2 gen_stage 0.13.1 quantum 2.2.7

The credo and bunt packages installed find. So I just decided to remove it from the thumb drive and place it on the PC and it seems to work fine atm.

OnorioCatenacci commented 6 years ago

Are you attempting this under WSL by chance? Just want to make sure I'm clear when I try to reproduce this.

On Fri, Apr 6, 2018 at 8:38 AM, Jeremy Lincoln notifications@github.com wrote:

I also was developing on a thumb drive and it was not letting do mix deps.get with quantum I'm using Windows 10 Enterprise Ver 1709 OS Build 16299.125 I received this: mix deps.get Resolving Hex dependencies... Dependency resolution completed: bunt 0.1.6 credo 0.4.14 crontab 1.1.2 gen_stage 0.13.1 quantum 2.2.7

  • Updating quantum (Hex package) ** (Mix) Unpacking inner tarball failed: invalid argument

The credo and bunt packages installed find. So I just decided to remove it from the thumb drive and place it on the PC and it seems to work fine atm.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/hexpm/hex/issues/474#issuecomment-379240554, or mute the thread https://github.com/notifications/unsubscribe-auth/AAJXFTzWBUlIv86cn165Erw8crQp4wecks5tl2HVgaJpZM4RNGsd .

-- Onorio Catenacci

http://onor.io http://www.google.com/+OnorioCatenacci

Lincxx commented 6 years ago

@OnorioCatenacci no, but I was using cmdr. I should try powershell or cmd and see if I get the same error. I'll try it out this evening.

JCWardle commented 6 years ago

If you're experiencing this problem in windows WSL you might want to check your /etc/wsl.conf file and not change the root property. I had to do it for a docker configuration. I removed my wsl.conf file and rebooted all good now.

SchrodingerZhu commented 6 years ago

Problem still occurs on Windows 10 with elixir 1.7 and the package is er_doc 0.19-rc.

wojtekmach commented 6 years ago

@SchrodingerZhu what's your Hex version? Could you try these two things:

  1. Update to latest Hex
  2. Run the following on any mix project:
$ iex -S mix
iex> :mix_hex_erl_tar.create('foo2.tar', [{'a.txt', "aaa"}])
:ok
iex> :mix_hex_erl_tar.extract('foo2.tar', [cwd: "out2"])
:ok # let us know what's the return value here, if it's {:error, :einval} we still have problem with tar.
binobi commented 6 years ago

I had this problem in WSL. Thanks @JCWardle - problem resolved after removing options = "metadata" from /etc/wsl.conf. I didn't need to remove the root property though, which is great.

mroach commented 6 years ago

I also found that I needed to remove the options = "metadata" config and this did the trick. I left my root = / option in place so I can control Docker from inside WSL. All good now!

I'm thinking this must be caused by a permission issues on the tarballs.

ssboisen commented 6 years ago

Just want to chime in and say I also had the same problem and solution as @mroach and @JCWardle

FYI You don't need to reboot though, restarting the windows service LxssManager is enough :)

dmerand commented 6 years ago

Removing options = "metadata" from /etc/wsl.conf isn't a great solution here, because that'll remove the ability to use chmod-style permissions in the WSL. When metadata is disabled, Windows will just treat every file as having RWX permissions, which makes things variously act strange + look strange.

Are there other ways around this?

FWIW, I'm having the problem, and am running these tasks through the WSL.

OnorioCatenacci commented 6 years ago

The fact that removing 'options="metadata"' from the /etc/wsl.conf causes WSL to treat all files as having RWX permissions seems to argue for the issue being permissions. What happens if you try this command under sudo?

On Tue, Sep 4, 2018 at 11:12 AM Donald Merand notifications@github.com wrote:

Removing options = "metadata" from /etc/wsl.conf isn't a great solution here, because that'll remove the ability to use chmod-style permissions in the WSL. When metadata is disabled, Windows will just treat every file as having RWX permissions, which makes things variously act strange + look strange.

Are there other ways around this?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/hexpm/hex/issues/474#issuecomment-418405429, or mute the thread https://github.com/notifications/unsubscribe-auth/AAJXFX_n7A-zo5fRu2xGiqlshsOAbDVHks5uXphVgaJpZM4RNGsd .

-- Onorio Catenacci

http://onor.io http://www.google.com/+OnorioCatenacci

dmerand commented 6 years ago

@OnorioCatenacci it's funny, because it looks like a permissions issue, but sudo gives the same results (in my case I'm just running sudo mix test in an app):

** (File.Error) could not touch "/mnt/c/Users/path_to_my_app/explo-comm/_build/test/lib/idna/.mix/compile.fetch": invalid argument

It's saying that it cannot touch a file. I can verify that turning off the metadata option in /etc/wsl.conf will allow it to mix compile and mix test etc., but each file created that way (eg mix.lock) is flagged as executable, which I definitely not want.

palmo25 commented 6 years ago

I've got the same issue after setting options = "metadata" on /etc/wsl.conf to allow Docker to mount volumes on my local machine. I'm using WSL on windows 10. Any news about this issue?

nicbet commented 6 years ago

How is this issue closed? The problem still exists, the workaround described in the comments (removing "options=metadata" from /etc/wsl.conf") is not acceptable in many cases where users require proper permissions flags on files and directories. Could we please revisit?

ericmj commented 6 years ago

The issue is closed because the originally issue has been fixed. If you want to track a separate issue then please open up a new issue.

Since this issue has only been reported on WSL, it suggests an issue with WSL directly. I don't have a Windows machine where I can debug this so it's hard for me to work on this issue.

Also, no one followed up on @wojtekmach's suggestion on how to debug this. If you don't run the tests we ask you to run then we can't move forward.

@nicbet If you wish to work on this issue and contribute a fix I would be happy to help as much as I can.

nicbet commented 6 years ago

@ericmj I'd respectfully ask to consider re-opening because I do not think the original issue is fixed. The exact same error still occurs on Windows, failing with the exact error message. There is a workaround described but the workaround removes support for permission metadata which is not desirable in many cases and as evidenced in the comments.

In following up with @wojtekmach request, here is the output on my machine (latest Windows 10, Ubuntu 18.04 subsystem, Elixir 1.7.3, OTP 21.1, Hex 0.18.1)

 mix new test                                                                                                                                                                       
* creating README.md
* creating .formatter.exs
* creating .gitignore
* creating mix.exs
* creating config
* creating config/config.exs
* creating lib
* creating lib/test.ex
* creating test
* creating test/test_helper.exs
* creating test/test_test.exs

Your Mix project was created successfully.
You can use "mix" to compile it, test it, and more:

    cd test
    mix test

Run "mix help" for more commands.

 nicbet@NBX1C  /mnt/d/P/Elixir  cd test                                                                                                                                                                             

nicbet@NBX1C  /mnt/d/P/E/test  iex -S mix                                                                                                                                                                          
Erlang/OTP 21 [erts-10.1] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [hipe]

Compiling 1 file (.ex)
** (File.Error) could not touch "/mnt/d/Projects/Elixir/test/_build/dev/lib/test/ebin/Elixir.Test.beam": invalid argument
    (elixir) lib/file.ex:528: File.touch!/2
    (mix) lib/mix/compilers/elixir.ex:561: anonymous fn/4 in Mix.Compilers.Elixir.write_manifest/5
    (elixir) lib/enum.ex:1925: Enum."-reduce/3-lists^foldl/2-0-"/3
    (mix) lib/mix/compilers/elixir.ex:555: Mix.Compilers.Elixir.write_manifest/5
    (mix) lib/mix/compilers/elixir.ex:198: Mix.Compilers.Elixir.compile_manifest/9
    (mix) lib/mix/task.ex:316: Mix.Task.run_task/3
    (mix) lib/mix/tasks/compile.all.ex:68: Mix.Tasks.Compile.All.run_compiler/2
    (mix) lib/mix/tasks/compile.all.ex:52: Mix.Tasks.Compile.All.do_compile/4

 nicbet@NBX1C  /mnt/d/P/E/test  la                                                                                                                                                                                
total 0
-rw-r--r-- 1 nicbet nicbet   97 Nov  1 11:13 .formatter.exs
-rw-r--r-- 1 nicbet nicbet  574 Nov  1 11:13 .gitignore
-rw-r--r-- 1 nicbet nicbet  482 Nov  1 11:13 README.md
drwxr-xr-x 1 nicbet nicbet 4.0K Nov  1 11:13 _build
drwxr-xr-x 1 nicbet nicbet 4.0K Nov  1 11:13 config
drwxr-xr-x 1 nicbet nicbet 4.0K Nov  1 11:13 lib
-rw-r--r-- 1 nicbet nicbet  566 Nov  1 11:13 mix.exs
drwxr-xr-x 1 nicbet nicbet 4.0K Nov  1 11:13 test

mix --version                                                                                                                                                                       
Erlang/OTP 21 [erts-10.1] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [hipe]

Mix 1.7.3 (compiled with Erlang/OTP 20)

mix hex.info                                                                                                                                                                       
Hex:    0.18.1
Elixir: 1.7.3
OTP:    21.1

Built with: Elixir 1.6.6 and OTP 19.3
nicbet commented 6 years ago

Even though mix abort with a File.Error, the file (/mnt/d/Projects/Elixir/test/_build/dev/lib/test/ebin/Elixir.Test.beam) does indeed get created contrary to the error message and has binary content.

OvermindDL1 commented 6 years ago

@nicbet I'm curious, what's the output of running :elixir_utils.change_universal_time("/mnt/d/Projects/Elixir/test/_build/dev/lib/test/ebin/Elixir.Test.beam", :calendar.universal_time())?

OvermindDL1 commented 6 years ago

For note, that call just calls file:write_file_info(Name, #file_info{mtime=Time}, [{time, universal}]) in erlang, it is about as basic of a system call that you can do, so if it doesn't work then I'm not really sure what Elixir could do...

ericmj commented 6 years ago

@nicbet Please open a new issue. The original issue was that we were setting the mtime to 1970, which is not supported on FAT32 file systems. Unless you are using FAT32 this is a separate issue.

ericmj commented 6 years ago

If you can't run iex -S mix in your own project you can try cloning this project and run the same commands @wojtekmach suggested and see if you get any further.

nicbet commented 6 years ago

@OvermindDL1


 nicbet@NBX1C  /mnt/d/P/E/test  iex                                                                                                                                                                                  ✔  729  11:42:57
Erlang/OTP 21 [erts-10.1] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [hipe]

Interactive Elixir (1.7.3) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> File.write("test.txt", "", [:append])
:ok

iex(2)> :elixir_utils.change_universal_time("test.txt", :calendar.universal_time())
{:error, :einval}

it appears that in elixir_utils the call file:write_file_info(Name, #file_info{mtime=Time}, [{time, universal}]) fails.

@ericmj I'll open a new issue. I any case, where I encountered the issue initially was when I cloned an existing phoenix project on a new Windows dev machine that was assigned to me (usually develop on Mac), and ran mix deps.get.

nicbet commented 6 years ago

Opened #624

webnoob commented 5 years ago

Worth noting I just ran into this same issue running hex on a Veracrypt drive. Moving to a local drive resolved (worked around) the issue.

extsalt commented 5 years ago

If you getting this problem in Windows 10, there is a slight possibility that Lxss Manager is disabled or not activated.