> Of course you can pass an explicit directory to flint's configure to tell 
it where to put this text file. Perhaps there is some canonical place.

Julia has settled on some good default choices for where to put packages by 
now, the problem is users are free to override the default locations and 
can have good reasons for wanting to do so.

> The Free Software Foundation explicitly says that "bindings" from a 
programming language interpreter, not just linking, constitute a derived 
work and therefore the combination becomes GPL'd. They are very explicit 
about this on their website.
> 
> I also had someone write to me the other day and refuse to access the 
source code via Github because they "refused to indemnify Github against 
all damages". It's not clear if I am required under the GPL to send them 
the source code some other way...

Oh dear. Well what I've been doing when building binaries is including the 
Readme and the License files as part of the packaging, so those will always 
get installed along with the dll's.

> We also need to either include the full source code of flint with the 
binary, or a written offer to supply it upon request. Here the FSF claims a 
link to a website is not really good enough because the URL might change. 
As a result of this, I am personally very reluctant to not just supply the 
source code for flint. I also want people to have the git repository 
automatically so they can contribute to it if they want.

Okay. It's not the end of the world to checkout the source code even when 
downloading a binary. Though keep in mind that for Julia 0.4, the plan is 
to transition Julia's package manager from relying on shelling out to 
command-line git to using ccall bindings to libgit2, so it won't 
necessarily be a safe assumption to make that you can always shell out to 
git. That's still a ways out though, and you can always put a try-catch 
around the checkout since it's not an absolute requirement.

> We're also not yet fully in compliance with the GPL. Because it is an 
interpreted environment GPL v2 (which flint uses) requires a notice to be 
printed when Nemo starts up saying that the program comes with no warranty. 
I'll have to add that, if I can figure out how.

That should be pretty easy with a println in your Nemo.jl module file, 
should come up any time anyone calls "using Nemo". You can also write a 
function called __init__() that gets called on package startup. Not sure 
if/where in the docs that's listed.

> Unfortunately it doesn't even work on my machine. It seems ok for some 
calls into the dll, but as soon as I try to say print something using a 
function in the MPIR dll it segfaults. I suppose it must be linked against 
subtly different Microsoft dll's than Julia and some kind of conflict 
results.

Or maybe different GCC dll's. Exactly which version of MinGW-w64 are you 
using? Might not be compatible with what was used to build Julia. Or there 
could be some issue due to having gmp and mpir both loaded within the same 
process? We've seen sort-of-similar issues with blas and lapack and various 
packages, though not so much on Windows.

> The problem must be what libtool is doing on mingw64. Make install 
doesn't even copy the generated dll across to the install directory, so you 
have to do this manually. 

Hm, yeah, libtool can be very picky, especially when it comes to dll's. I 
think I've used the "subtle and quick to anger" quote on this list before 
when talking about libtool... I've found configuring 
with lt_cv_deplibs_check_method=pass_all can sometimes help.

> I also can't build flint against the Julia mpir and mpfr since Julia 
doesn't seem to distribute the gmp.h and mpfr.h files, and flint requires 
these when building.

Oh, right, damn. Sorry I forgot about that! That is an issue, maybe we 
should open a separate discussion on that general topic. It has come up 
before that various packages would like to link against the same libraries 
as Julia (in the Blas and Lapack cases we're building with an incompatible 
ABI which makes this actually not a good idea in most cases, but for GMP 
and MPFR I think we're configuring them in the default way), so installing 
the corresponding headers would actually be necessary.

Even though I'm not entirely sure what Nemo or Flint do or whether I would 
personally have a use for them, I have some strange desire to see more 
Julia packages be painless to install cross-platform and want to help here. 
Let me know how the runtime configuration of the text file location goes, 
then I can mock up what BinDeps would look like. It should simplify your 
deps/build.jl script by automating the standard download, extract, 
configure, make steps. There are also some Julia idioms like 
joinpath("a","b") that would be cleaner than what you're doing now with if 
statements to switch between forward slashes and backslashes, and things 
like

cd(newdir) do
    ...
end

that work in a nicer way including returning to the old directory even on 
failure.


Reply via email to