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

Reply via email to