diff --git a/README.windows.md b/README.windows.md index 9a7adf0a91647..05a31ee1f3104 100644 --- a/README.windows.md +++ b/README.windows.md @@ -24,7 +24,7 @@ Instructions for adding fonts to the terminal are available at Additionally, rather than sticking with the default command prompt, you may want to use a different terminal emulator program, such as [Conemu](https://code.google.com/p/conemu-maximus5/) or [Mintty]( -https://code.google.com/p/mintty/) (note that running Julia on Mintty needs a +https://github.com/mintty/mintty) (note that running Julia on Mintty needs a copy of `stty.exe` in your `%PATH%` to work properly). Alternatively, you may prefer the features of a more full-function IDE, such as [Juno](http://junolab.org), [Sublime-IJulia](https://github.com/quinnj/Sublime-IJulia), or @@ -36,8 +36,8 @@ prefer the features of a more full-function IDE, such as [Juno](http://junolab.o Julia uses binary-mode files exclusively. Unlike many other Windows programs, if you write `\n` to a file, you get a `\n` in the file, not some other bit pattern. This matches the behavior exhibited by other operating systems. If -you have installed msysGit, it is suggested, but not required, that you -configure your system msysGit to use the same convention: +you have installed Git for Windows, it is suggested, but not required, that you +configure your system Git to use the same convention: ```sh git config --global core.eol lf git config --global core.autocrlf input @@ -71,113 +71,14 @@ The 64-bit (x86_64) binary will only run on 64-bit Windows and will otherwise re ### Supported build platforms - Windows 10: supported (32 and 64 bits) - - **note: cross-compiling from WSL (Windows Subsystem for Linux) is currently discouraged due to WSL time stamp problems. See discussion and links in [#22074](https://github.com/JuliaLang/julia/pull/22074).** - Windows 8: supported (32 and 64 bits) - Windows 7: supported (32 and 64 bits) -### Compiling with MinGW/MSYS2 - -*MSYS2 provides a robust MSYS experience.* - - 1. Install [Python 2.x](http://www.python.org/downloads/). - Do **not** install Python 3. - - 2. Install [CMake](http://www.cmake.org/download/). - - 3. Install and configure [MSYS2](https://msys2.github.io), a minimal POSIX-like - environment for Windows. - - 1. Download and run the latest installer for the [32-bit]( - http://sourceforge.net/projects/msys2/files/Base/i686/) or [64-bit]( - http://sourceforge.net/projects/msys2/files/Base/x86_64/) distribution. - The installer will have a name like `msys2-i686-yyyymmdd.exe` or - `msys2-x86_64-yyyymmdd.exe`. - - 2. Double-click `msys2_shell.bat` in the installed msys directory. - Initialize the MSYS2 base system using the `pacman` package manager - included in MSYS2: - ```sh - update-core - # or, if update-core is not available - pacman --needed -Sy bash pacman pacman-mirrors msys2-runtime - # update package database and full system upgrade - pacman -Syyuu - ``` - - 3. Exit and restart MSYS2, then install packages required to build julia: - ```sh - pacman -S diffutils git m4 make patch tar p7zip msys/openssh ca-certificates - ``` - - 4. Configure your MSYS2 shell so Python is visible on the path: - ```sh - echo "export PATH=/usr/local/bin:/usr/bin:/opt/bin:/C/Python27" >> ~/.bashrc - ``` - - Note, the `export` clobbers whatever `$PATH` is already defined. This is - suggested to avoid path-masking. If you use MSYS2 for purposes other than - building Julia, you may prefer to append rather than clobber. - - Note, all of the path separators are unix-style. In MSYS2, `/C/` means - the root of your `C:\` drive. Replace `/C/Python27` with the location - where you installed Python. - - 5. Configuration of MSYS2 is complete. Now `exit` the MSYS2 shell. - - 4. Build Julia and its dependencies from source. - - 1. Open a new MSYS2 shell and clone the Julia sources - ```sh - git clone https://github.com/JuliaLang/julia.git - cd julia - ``` - - 2. Run the following script to download the correct versions of the MinGW-w64 compilers - ```sh - contrib/windows/get_toolchain.sh 32 # for 32 bit Julia - # or - contrib/windows/get_toolchain.sh 64 # for 64 bit Julia - ``` - - Then follow the printed instructions by running either - ```sh - export PATH=$PWD/usr/i686-w64-mingw32/sys-root/mingw/bin:$PATH # for 32 bit Julia - # or - export PATH=$PWD/usr/x86_64-w64-mingw32/sys-root/mingw/bin:$PATH # for 64 bit Julia - ``` - to add the downloaded MinGW-w64 compilers to your path (temporarily, only - needed during the shell session when you build Julia). - - 3. Specify the location where you installed CMake - ```sh - echo 'override CMAKE=/C/path/to/CMake/bin/cmake.exe' > Make.user - ``` - - 4. Start the build - ```sh - make -j 4 # Adjust the number of cores (4) to match your build environment. - ``` - - 5. Setup Package Development Environment - - 1. The `Pkg` module in Base provides many convenient tools for [developing - and publishing packages](https://docs.julialang.org/en/latest/manual/packages/). - One of the packages added through pacman above was `openssh`, which will - allow secure access to GitHub APIs. Follow GitHub's [guide]( - https://help.github.com/articles/generating-ssh-keys) to setting up SSH - keys to ensure your local machine can communicate with GitHub effectively. - - 2. In case of the issues with building packages (i.e. ICU fails to build - with the following error message `error compiling xp_parse: error - compiling xp_make_parser: could not load module libexpat-1: %`) run - `make win-extras` and then copy everything from the `dist-extras` folder - into `usr/bin`. - - ### Cygwin-to-MinGW cross-compiling -Julia can be also compiled from source in [Cygwin](http://www.cygwin.com), using -versions of the MinGW-w64 compilers available through Cygwin's package manager. +The recommended way of compiling Julia from source on Windows is by cross +compiling from [Cygwin](http://www.cygwin.com), using versions of the +MinGW-w64 compilers available through Cygwin's package manager. 1. Download and run Cygwin setup for [32 bit](http://cygwin.com/setup-x86.exe) or [64 bit](http://cygwin.com/setup-x86_64.exe). Note, that you can compile @@ -253,14 +154,26 @@ versions of the MinGW-w64 compilers available through Cygwin's package manager. usr/bin/julia-debug.exe ``` +### Compiling with MinGW/MSYS2 + +Compiling Julia from source using [MSYS2](https://msys2.github.io) has worked +in the past but is not actively supported. Pull requests to restore support +would be welcome. See a [past version of this file]( +https://github.com/JuliaLang/julia/blob/v0.6.0/README.windows.md) +for the former instructions for compiling using MSYS2. + ### Cross-compiling from Unix -If you prefer to cross-compile, the following steps should get you started. +You can also use MinGW-w64 cross compilers to build a Windows version of Julia from +Linux, Mac, or the Windows Subsystem for Linux (WSL). Note that when compiling in +WSL, you should use the Linux file system environment, not the `/mnt/` emulated Windows +paths, since time stamps in `/mnt/` do not work properly as required by configure +scripts and makefiles (see https://github.com/Microsoft/BashOnWindows/issues/1939). For maximum compatibility with packages that use [WinRPM.jl]( https://github.com/JuliaLang/WinRPM.jl) for binary dependencies on Windows, it -is recommended that you use OpenSUSE 13.2 for cross-compiling a Windows build +is recommended that you use OpenSUSE 42.2 for cross-compiling a Windows build of Julia. If you use a different Linux distribution or OS X, install [Vagrant](http://www.vagrantup.com/downloads) and use the following `Vagrantfile`: @@ -272,7 +185,7 @@ $script = <