Skip to content

Conversation

@papamarkou
Copy link
Contributor

No description provided.

@tkelman
Copy link
Contributor

tkelman commented Jul 10, 2014

I think we've fixed this one - I believe the underlying cause was PCRE test failures (which are just skipped on Windows now as of #6642) and parallel make resulting in OpenBLAS finishing and looking like the cause of the failure much later.

@papamarkou
Copy link
Contributor Author

Well, fingers crossed it seems to be working so far (I am compiling Julia using MSYS2 on a laptop at work), I will know once compilation completes. This PR was only meant to fix a typo on the Windows README file (I previewed the README after the change I made and it looks ok). There was one spelling mistake and a spacing issue, which affected the display of the enumeration list among else.

tkelman added a commit that referenced this pull request Jul 10, 2014
Fix typo and enumeration list in README.windows.md
@tkelman tkelman merged commit 330423b into JuliaLang:master Jul 10, 2014
@papamarkou
Copy link
Contributor Author

@tkelman, fyi, it compiled without problems, spotless.

@tkelman
Copy link
Contributor

tkelman commented Jul 10, 2014

great! good to have the windows build running much cleaner these days. how do the tests look?

@papamarkou
Copy link
Contributor Author

Julia seems to be working well, and the test/runtests.jl returns SUCCESS. On the other hand, usr/bin/test-julia.bat fails, but this surely has to do with you the batch script which sets the environment on Windows.

Another thing is that julia works well when spawned from the msys2 shell. However, when I use the Julia batch script, the package manager doesn't work because git doesn't work (since the environment is not set well here too). The obvious way to circumvent this issue is to install git outside the msys2 shell using a Windows git installer, but this is not entirely ideal. In any case, I am very happy that I can compile Julia on Windows without any serious problems.

@tkelman
Copy link
Contributor

tkelman commented Jul 10, 2014

julia test/runtests.jl doesn't actually run anything (that should maybe be fixed, it's not obvious). You want to do ../usr/bin/julia runtests.jl all. test-julia.bat should eventually not fail, once we solve the last couple of existing Windows issues.

If you compile from source, it doesn't include the bundled git that you get after doing make win-extras && make dist then extracting the generated installer exe. These differences should get smoothed over once the libgit switch is all done.

@papamarkou
Copy link
Contributor Author

Your feedback has been very helpful @tkelman. I am now able to use the package manager too. It may be useful to add the following clarifications to the Windows README:

  • I had to mount the directory where I had 7zip installed and add it to the PATH, in a way similar to the instructions for mounting and adding python to the PATH.
  • The tip for running make win-extras && make dist could be emphasized as a final step for installing Julia using msys2.

Thank you for your tips and help!

P.S. I am still unclear how I would go about running the tests on Windows.

@tkelman
Copy link
Contributor

tkelman commented Jul 10, 2014

There was #6516, which is related. At what point did you need 7zip? make win-extras should download it correctly, but if you want to run the package manager out of a non-installed source build then you will have to manually copy things from the dist-extras folder into usr/bin.

There are several ways to run the tests. test-julia.bat is the simplest. You can also run make testall from inside MSYS2, but since Julia run in that environment will have access to MSYS2 coreutils, more tests will pass inside of MSYS2 than outside of MSYS2 (I'm about to fix that by merging #7446). Another option is either in MSYS2 or from the Windows command prompt, you can go to the test folder and do ../usr/bin/julia runtests.jl all (replacing forward slashes with backslashes when using the Windows command prompt).

@papamarkou
Copy link
Contributor Author

Thanaks @tkelman. I needed to manually mount 7z at the very end, after compiling when I ran the maake win-extras && make dist command.

@papamarkou
Copy link
Contributor Author

As for the tests, they all failed, which is odd because I can use Julia without any issues.

@tkelman
Copy link
Contributor

tkelman commented Jul 11, 2014

Can you please post the failure messages? The linear algebra tests are the first ones to run, and occasionally those can identify bugs in OpenBLAS. What kind of processor do you have? (output from versioninfo() will suffice)

@papamarkou
Copy link
Contributor Author

I was thinking about it and in fact I am not sure whether the tests fail or not. The reason for this is that I don't know what the output should be in case of success or failure, and the output seems to me cryptic and short instead of being self-explanatory. For example, I would anticipate each test to return sth minimal along the lines "ok" or "failed", but all I get is just the name of each test that was run (the name appears in red, a colour we all tend to interpret as a failure for psychological reasons if it is not followed be a more verbose message). In any case, since you certainly know more about what the output should look, here is what I get:

$ julia runtests.jl all
        From worker 4:       * linalg3
        From worker 8:       * numbers
        From worker 5:       * linalg4
        From worker 6:       * core
        From worker 7:       * keywordargs
        From worker 3:       * linalg2
        From worker 2:       * linalg1
        From worker 9:       * strings
        From worker 7:       * collections
        From worker 6:       * hashing
        From worker 9:       * remote
        From worker 9:       * iobuffer
        From worker 9:       * arrayops
        From worker 7:       * reduce
        From worker 7:       * reducedim
        From worker 7:       * simdloop
        From worker 7:       * blas
        From worker 7:       * fft
        From worker 8:       * dsp
        From worker 7:       * sparse
        From worker 8:       * bitarray
        From worker 9:       * random
        From worker 9:       * math
        From worker 4:       * functional
        From worker 4:       * bigint
        From worker 4:       * sorting
        From worker 5:       * statistics
        From worker 4:       * spawn
        From worker 9:       * backtrace
        From worker 9:       * priorityqueue
        From worker 9:       * arpack
        From worker 7:       * file
WARNING: Note: on Windows, creating file symlinks requires Administrator privileges.
exception on 7: ERROR: symlink: operation not permitted (EPERM)
 in symlink at fs.jl:162
while loading file.jl, in expression starting on line 17
        From worker 4:         [stdio passthrough ok]

Here is the output of versioninfo():

julia> versioninfo()
Julia Version 0.3.0-prerelease+4114
Commit 118c071 (2014-07-10 07:28 UTC)
Platform Info:
  System: Windows (x86_64-w64-mingw32)
  CPU: Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell)
  LAPACK: libopenblas
  LIBM: libopenlibm

@tkelman
Copy link
Contributor

tkelman commented Jul 11, 2014

That is very interesting, thank you. I never thought about it before, but you're right maybe red isn't the best color for displaying the test name... generally If there's no error message and the test finishes, it succeeded.

Is this Windows 7, Windows 8, or something older? Can you run the following and share the output?

dir = mktempdir()
subdir = joinpath(dir, "adir")
mkdir(subdir)
isdir(subdir)
dirlink = joinpath(dir, "dirlink")
symlink(subdir, dirlink)
rm(dirlink)
rm(subdir)
rm(dir)

We shouldn't be getting an error about symlink permissions, since the tests that make symbolic links to files are under @unix_only blocks, on windows only making symlinks to directories is tested. For symlinks to directories, it should be making NTFS junctions which don't require admin privileges, see https://github.com/JuliaLang/julia/blob/master/base/fs.jl#L154

@papamarkou
Copy link
Contributor Author

Thanks @tkelman, it is my pleasure to get involved as I learn more about running Julia on Windows via our discussion. I must say, Julia seems to run very well nowadays on Windows. So, when I run the commands you sent me on msys2, I get the following:

julia> dir = mktempdir()
"C:\\mingw-builds\\msys64\\tmp\\julC22D.tmp"

julia> subdir = joinpath(dir, "adir")
"C:\\mingw-builds\\msys64\\tmp\\julC22D.tmp\\adir"

julia> mkdir(subdir)

julia> isdir(subdir)
true

julia> dirlink = joinpath(dir, "dirlink")
"C:\\mingw-builds\\msys64\\tmp\\julC22D.tmp\\dirlink"

julia> symlink(subdir, dirlink)
WARNING: Note: on Windows, creating file symlinks requires Administrator privileges.
ERROR: symlink: operation not permitted (EPERM)
 in symlink at fs.jl:162

julia> rm(dirlink)
ERROR: unlink: no such file or directory (ENOENT)
 in unlink at fs.jl:96

julia> rm(subdir)

julia> rm(dir)

On the other hand, when I start the julia executable that was installed via the installer we created by using make dist, everything works ok:

julia> dir = mktempdir()
"C:\\Users\\theodore\\AppData\\Local\\Temp\\julAEB6.tmp"

julia> subdir = joinpath(dir, "adir")
"C:\\Users\\theodore\\AppData\\Local\\Temp\\julAEB6.tmp\\adir"

julia> mkdir(subdir)

julia> isdir(subdir)
true

julia> dirlink = joinpath(dir, "dirlink")
"C:\\Users\\theodore\\AppData\\Local\\Temp\\julAEB6.tmp\\dirlink"

julia> symlink(subdir, dirlink)

julia> rm(dirlink)

julia> rm(subdir)

julia> rm(dir)

@papamarkou
Copy link
Contributor Author

I forgot to mention, I use Windows 7 Professional.

@tkelman
Copy link
Contributor

tkelman commented Jul 11, 2014

Wacky - so the first time through with the error was running Julia inside the MSYS2 terminal, and the second time was opening the installed version outside of it?

If so, something's different between the two environments. For one the tempdir is in a different place, but I would not expect that to make a major difference. How about abspath(subdir)? Or maybe in MSYS2 the temp directory is somehow getting created without write privileges?

@papamarkou
Copy link
Contributor Author

Yes, this is what I meant in relation to your first question. In relation to you second question-suggestion I will check the permissions of the temporary directory created in msys2 and will let you know tomorrow if this causes the error.

@papamarkou
Copy link
Contributor Author

I checked it, I have rwx access to subdir, while abspath(subdir) returns "C:\\mingw-builds\\msys64\\tmp\\jul54B8.tmp\\adir" so no idea what happened and that one test had failed in msys2, I don't think there is much to worry here, all the tests pass outside of the msys2 terminal.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants