You also might want to check out http://julia.readthedocs.org/en/latest/manual/packages/#package-development
Cheers, Kevin On Wednesday, September 10, 2014, Bill Hart <[email protected]> wrote: > Thanks very much for the information. I might have additional specific > questions along the way, but this definitely helps massively for now. > > On Wednesday, 10 September 2014 16:26:10 UTC+2, Isaiah 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. >>>>> >>>> >>>> >>
