Looking at the original example of the Cpp.jl package, it appears to only 
be needing to call `make` at Pkg.build time in order to compile a demo test 
library. It should be pretty easy to modify it so it would fail gracefully 
with a warning rather than an error.


On Wednesday, October 21, 2015 at 10:12:09 AM UTC-7, Tony Kelman wrote:
>
> The answer is a not-particularly-helpful "it depends." Which library are 
> you interested in as a starting point? Not everything will be easy to build 
> on Windows, there are often posix/unix assumptions in the code or build 
> system. Usually the easiest way to get started is by installing MSYS2 
> https://msys2.github.io/ and trying to follow the normal ./configure; 
> make build instructions for a library, but coming up with an end result 
> that will be usable with Julia can be more subtle than that. The steps and 
> challenges are a little bit different each time you try to add Windows 
> compatibility to a new package, but after a few times it gets easier to 
> estimate ahead of time how difficult a particular library will be.
>
>
> On Wednesday, October 21, 2015 at 9:12:56 AM UTC-7, Joel wrote:
>>
>> Thank you Tony for your answer. I have just recently got into Python 
>> and building/compiling with MinGW-w32 and CMake (a lot of the terminology 
>> still goes over my head).
>>
>> Great talk! One main question from it; using Windows, is it possible to 
>> download a package from GitHub (which currently does not support Windows) 
>> and compile it using MinGW (creating a windows .dll file)? If not, could 
>> you point me in the right direction as to where I can read more about how 
>> to go ahead?
>>
>> 2015-10-20 14:15 GMT+01:00 Tony Kelman <to...@kelman.net>:
>>
>>> I don't know the Java ecosystem all that well, so I couldn't tell you 
>>> how many developers and contributors to, say, popular Apache projects do 
>>> most of their development on Windows. If you need things like 
>>> high-performance linear algebra you often need to go through JNI and deal 
>>> with interfacing native and JVM code.
>>>
>>> Conda.jl should be quite useful for Python dependencies via PyCall, and 
>>> maybe even R packages now too. But many of the C libraries provided there 
>>> for Windows are built to work with Python, meaning using the same compiler 
>>> that CPython was built with on Windows - Visual Studio. Visual Studio has 
>>> lots of problems with scientific software, we have very experimental hacky 
>>> support for compiling the core parts of Julia (LLVM, libuv, libjulia, etc) 
>>> using MSVC but it's not exactly native and far from passing tests or a 
>>> first-class solution.
>>>
>>> I also haven't seen many success stories of people from outside of the 
>>> Python community using Conda as a build platform for scientific libraries 
>>> in a way that would be usable and compatible with Julia. I personally 
>>> prefer WinRPM since it has a comparable selection of existing libraries 
>>> available at https://build.opensuse.org/project/show/windows:mingw:win64, 
>>> and I've found it entirely doable to add new libraries there. You have an 
>>> added complication of cross-compiling, but an advantage there is package 
>>> developers never have to use Windows themselves if they don't want to. 
>>> Having a fully automated system to build and distribute binaries is a great 
>>> advantage, and as far as I'm aware anaconda.org does not provide 
>>> automated Windows buildbots on their open source plan.
>>>
>>>
>>> On Tuesday, October 20, 2015 at 6:01:03 AM UTC-7, Páll Haraldsson wrote:
>>>>
>>>> On Saturday, October 17, 2015 at 3:29:32 AM UTC, Tony Kelman wrote:
>>>>>
>>>>> Why many packages don't support Windows? It's par for the course in 
>>>>> open-source development, unfortunately. I gave a talk on this at JuliaCon 
>>>>> in June where I discussed some of the challenges in making things work on 
>>>>> Windows and how to go about fixing them, see 
>>>>> https://www.youtube.com/watch?v=mbG-rqDCNqs - if you find packages 
>>>>> you use that aren't currently testing on Windows but could be, I 
>>>>> encourage 
>>>>> you to submit pull requests adding appveyor.yml files and suggesting the 
>>>>> authors enable Windows CI testing.
>>>>>
>>>>> Julia makes it easy to wrap C and Fortran libraries so people do 
>>>>> exactly that quite often,
>>>>>
>>>>
>>>> You mean e.g. with Python.
>>>>
>>>> I can think of one exception (or not?): Java.
>>>>
>>>> At least in the beginning, that was one of it's point: 
>>>> "write-once-run-anywhere" WORA (that assumed JVMs in web browsers..). 
>>>> Strictly speaking, you can go out of the JVM, with JNI and have all the 
>>>> cross-platform issues..
>>>>
>>>> I understand WORA didn't quite work as intended, but aren't most Java 
>>>> projects self-contained, only using Java code (or languages that compile 
>>>> to) and Java's frameworks?
>>>>
>>>> Is it possible to replicate their (relative) success? If you use only 
>>>> Julia code, you are portable already and codes just work..
>>>>
>>>>  
>>>>
>>>>> but building most of those C and Fortran libraries on Windows is 
>>>>> nontrivial. Witness Anaconda, which exists to make binary installation of 
>>>>> libraries in the Python ecosystem possible so you don't need a compiler 
>>>>> on 
>>>>> the user's machine at install time. In Julia we tend to focus on 
>>>>> individual 
>>>>> platform-specific tools, like WinRPM.jl for a large number of packages on 
>>>>> Windows and Homebrew.jl on Mac.
>>>>>
>>>>
>>>> For non-Julia code, is Conda.jl the solution?
>>>>  
>>>>
>>>>>
>>>>>
>>>>> On Friday, October 16, 2015 at 3:56:44 PM UTC-7, Joel wrote:
>>>>>>
>>>>>> Thanks for the information; food for thought.
>>>>>>
>>>>>> Out of curiosity, do you know why this is the case, by the way? 
>>>>>>
>>>>>> Den fredag 16 oktober 2015 kl. 21:00:12 UTC+1 skrev Tony Kelman:
>>>>>>>
>>>>>>> Quite a few Julia packages are written in a way that assumes you're 
>>>>>>> on Linux or Mac with build tools installed. Not all, and we're 
>>>>>>> gradually 
>>>>>>> fixing cases where packages can be made more portable. Best thing to do 
>>>>>>> for 
>>>>>>> now would be to submit a pull request adding a note to the readme that 
>>>>>>> the 
>>>>>>> package does not currently work on Windows, to save future users a bit 
>>>>>>> of 
>>>>>>> confusion.
>>>>>>
>>>>>>
>>

Reply via email to