I guess I figured it out.

On 12 September 2014 01:12, Bill Hart <[email protected]> wrote:

> Yes.
>
> I notice that after building Nemo it is in a directory called nemo, not
> Nemo.
>
> At the moment Nemo.jl simply builds Nemo by including deps/build.jl, since
> this is what Cairo does.
>
> The code the user will be interested in is in Rings.jl and Fields.jl. How
> do they load those?
>
> Bill.
>
> On 12 September 2014 01:08, Leah Hanson <[email protected]> wrote:
>
>> Does your Nemo.jl contain
>>
>> ~~~
>> module Nemo
>> <code goes here...>
>> end
>> ~~~
>>
>> ?
>>
>> On Thu, Sep 11, 2014 at 5:56 PM, Bill Hart <[email protected]>
>> wrote:
>>
>>> OK, I can build Nemo. But how do I load modules from Nemo now that it is
>>> installed and built.
>>>
>>> For example "using Nemo", "using Rings", "using Fields" all fail,
>>> complaining that it can't find the modules.
>>>
>>> I must be missing a step somewhere.
>>>
>>> Bill.
>>>
>>> On 12 September 2014 00:47, Bill Hart <[email protected]>
>>> wrote:
>>>
>>>> It's ok, I got it. Pkg.build()
>>>>
>>>> Bill.
>>>>
>>>> On 12 September 2014 00:38, Bill Hart <[email protected]>
>>>> wrote:
>>>>
>>>>> I had a go at making a preliminary package which should vaguely build
>>>>> on Linux when "using Nemo" is run from within the src/ directory.
>>>>>
>>>>> I checked this works on my machine at least.
>>>>>
>>>>> I also checked that Pkg.clone("https://github.com/wbhart/nemo.git";)
>>>>> clones the Nemo repository from within Julia. But this seems to only clone
>>>>> the repository and doesn't appear to issue "using Nemo" as I had expected.
>>>>>
>>>>> Also typing "using Nemo" manually says that it can't find Nemo. What
>>>>> command to users have to issue to get "using Nemo" to actually do 
>>>>> something?
>>>>>
>>>>> Bill.
>>>>>
>>>>>
>>>>>
>>>>> On 10 September 2014 16:26, Isaiah Norton <[email protected]>
>>>>> wrote:
>>>>>
>>>>>>
>>>>>> This was what I thought of trying first. But I couldn't figure out
>>>>>>> how it worked out what GitHub repository to associate this with, or 
>>>>>>> whether
>>>>>>> it would try to create one, possibly scrubbing my existing nemo 
>>>>>>> repository
>>>>>>> on GitHub. Obviously I don't want to lose my commit history.
>>>>>>
>>>>>>
>>>>>> For Pkg manager purposes, the association will be created later (when
>>>>>> you register the package).
>>>>>>
>>>>>> It also isn't clear where Julia creates the empty git repository. In
>>>>>>> the current directory? Or in some subdirectory of the Julia source tree?
>>>>>>
>>>>>>
>>>>>> Under `$HOME/.julia/v0.3` (or v0.4 if you are on git master)
>>>>>>
>>>>>> For the most part I can just run configure, make, make install for
>>>>>>> now and set some library paths (if I can figure out what kind of system 
>>>>>>> I
>>>>>>> am on).
>>>>>>
>>>>>>
>>>>>> There are some macros to help with this: @osx, @linux, @unix (both),
>>>>>> and @windows. There is also a variable called OS_NAME with a
>>>>>> platform-specific value (:Windows, :Linux, etc.) See:
>>>>>>
>>>>>> http://docs.julialang.org/en/release-0.3/manual/calling-c-and-fortran-code/#handling-platform-variations
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Wed, Sep 10, 2014 at 10:18 AM, Bill Hart <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Wednesday, 10 September 2014 15:57:56 UTC+2, Isaiah wrote:
>>>>>>>>
>>>>>>>> Is there documentation somewhere explaining how to do the latter?
>>>>>>>>> Or can someone help me with doing the latter?
>>>>>>>>
>>>>>>>>
>>>>>>>> You could run `Pkg.generate("Nemo")` and then copy and commit (some
>>>>>>>> of) the resulting files in your own Nemo git tree; there aren't very 
>>>>>>>> many.
>>>>>>>>
>>>>>>>
>>>>>>> This was what I thought of trying first. But I couldn't figure out
>>>>>>> how it worked out what GitHub repository to associate this with, or 
>>>>>>> whether
>>>>>>> it would try to create one, possibly scrubbing my existing nemo 
>>>>>>> repository
>>>>>>> on GitHub. Obviously I don't want to lose my commit history.
>>>>>>>
>>>>>>> It also isn't clear where Julia creates the empty git repository. In
>>>>>>> the current directory? Or in some subdirectory of the Julia source tree?
>>>>>>>
>>>>>>>
>>>>>>>> I can't find any documentation explaining where to put the commands
>>>>>>>>> in a Pkg to actually git clone flint, build it, install it and set up 
>>>>>>>>> paths
>>>>>>>>> for Nemo. Given the complexities of installing flint for the user, 
>>>>>>>>> I'd like
>>>>>>>>> to have the Julia package manager do this automatically if at all 
>>>>>>>>> possible.
>>>>>>>>> And I see it does seem to be possible. I just can't figure out how.
>>>>>>>>>
>>>>>>>>
>>>>>>>> The Pkg manager will look for a file called `MYPKG/deps/build.jl`
>>>>>>>> and run that if it exists. That's just a Julia file, so you can do 
>>>>>>>> whatever
>>>>>>>> you want there (shell out, etc.).
>>>>>>>>
>>>>>>>
>>>>>>> Perfect. For the most part I can just run configure, make, make
>>>>>>> install for now and set some library paths (if I can figure out what 
>>>>>>> kind
>>>>>>> of system I am on).
>>>>>>>
>>>>>>> Finding the Julia installation on the system in order to link
>>>>>>> against the gmp/mpfr might be slightly more difficult.
>>>>>>>
>>>>>>>
>>>>>>>> One option is to use the BinDeps package which provides primitives
>>>>>>>> for interacting with various package managers and build systems:
>>>>>>>>
>>>>>>>> https://github.com/JuliaLang/BinDeps.jl
>>>>>>>>
>>>>>>>> A very advanced and fully-developed usage example can be found in
>>>>>>>> the Cairo package, which has Autotools, Apt, Yum, and several other 
>>>>>>>> targets:
>>>>>>>>
>>>>>>>> https://github.com/JuliaLang/Cairo.jl/blob/master/deps/build.jl
>>>>>>>>
>>>>>>>> There are a number of other examples to draw from. Hopefully the
>>>>>>>> above links will give you a sense of where to start. I can help out on
>>>>>>>> Linux and Windows (@ihnorton on github).
>>>>>>>>
>>>>>>>
>>>>>>> Thanks.
>>>>>>>
>>>>>>> Bill.
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Sep 10, 2014 at 9:31 AM, Bill Hart <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> I have been writing a new Julia package, which I have called Nemo
>>>>>>>>> (it's essentially a limited computer algebra system).
>>>>>>>>>
>>>>>>>>> I have two specific problems:
>>>>>>>>>
>>>>>>>>> 1) The git and GitHub repository for Nemo already exists, but I
>>>>>>>>> haven't created a Julia Pkg yet.
>>>>>>>>>
>>>>>>>>> https://github.com/wbhart/nemo
>>>>>>>>>
>>>>>>>>> The documentation on creating a Julia Pkg seems to assume you are
>>>>>>>>> going to start with the Pkg then commit code to the git repository 
>>>>>>>>> that it
>>>>>>>>> creates, not create a git/github project and then add the necessary 
>>>>>>>>> stuff
>>>>>>>>> to turn it into a Julia package.
>>>>>>>>>
>>>>>>>>> Is there documentation somewhere explaining how to do the latter?
>>>>>>>>> Or can someone help me with doing the latter?
>>>>>>>>>
>>>>>>>>> (I have a couple of small build issues to fix in order for flint
>>>>>>>>> to work on Windows 64 before it will work there. But I will be 
>>>>>>>>> working on
>>>>>>>>> those right away. I have managed to get it to work with Julia there, 
>>>>>>>>> just
>>>>>>>>> not hacked the fixes into the flint build system yet. Other than this 
>>>>>>>>> minor
>>>>>>>>> thing, I am quite ready to publish Nemo as a package right away (well,
>>>>>>>>> apart from a horrible 3x slowdown and excessive memory usage caused 
>>>>>>>>> by gc,
>>>>>>>>> but I think I've given up on solving that problem for now).)
>>>>>>>>>
>>>>>>>>> 2) Nemo relies on mpir (or GMP), mpfr and flint, which are large
>>>>>>>>> external C/assembly libraries which need to get built or be available 
>>>>>>>>> to
>>>>>>>>> run Nemo. I understand Julia has its own GMP and MPFR which I can 
>>>>>>>>> probably
>>>>>>>>> link to if they are recent enough.
>>>>>>>>>
>>>>>>>>> Flint needs to be built when the package is installed. It takes a
>>>>>>>>> long time to build, e.g. 40 minutes or so on Windows, maybe a third 
>>>>>>>>> of that
>>>>>>>>> on Linux.
>>>>>>>>>
>>>>>>>>> I can't find any documentation explaining where to put the
>>>>>>>>> commands in a Pkg to actually git clone flint, build it, install it 
>>>>>>>>> and set
>>>>>>>>> up paths for Nemo. Given the complexities of installing flint for the 
>>>>>>>>> user,
>>>>>>>>> I'd like to have the Julia package manager do this automatically if 
>>>>>>>>> at all
>>>>>>>>> possible. And I see it does seem to be possible. I just can't figure 
>>>>>>>>> out
>>>>>>>>> how.
>>>>>>>>>
>>>>>>>>> Flint is here:
>>>>>>>>>
>>>>>>>>> https://github.com/wbhart/flint2
>>>>>>>>>
>>>>>>>>> Can anyone help, or point me in the right direction?
>>>>>>>>>
>>>>>>>>> Bill.
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Reply via email to