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. >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>> >>>>> >>>> >>> >> >
