Ok, I pushed an update to the branch:

https://github.com/jlapeyre/PrimeSieve.jl/tree/master

In this dir, "configure && make && make install" do what I want:

https://github.com/jlapeyre/PrimeSieve.jl/tree/addprimecount/deps/src/cprimecount

After building by hand, this handwritten deps.jl works:

https://github.com/jlapeyre/PrimeSieve.jl/blob/addprimecount/deps/deps.jl.save

This is the build.jl that fails. If I remove all of the cprimecount stuff,
it does download, build, and install the two external libraries:

https://github.com/jlapeyre/PrimeSieve.jl/blob/addprimecount/deps/build.jl

--John


On 12/24/2014 08:32 PM, Elliot Saba wrote:
Do you have your code posted  anywhere so I can try it locally?
> -E
>
> On Wed, Dec 24, 2014 at 11:29 AM, John Lapeyre <lapeyre.math1...@gmail.com> wrote:
>
>     I think the BuildProcess step will not be a problem. I am almost
>     certain I can just say its plain vanilla Autotools. If not, there
>     are many examples in packages of complicated BuildProcess arguments.
>
>     In all of the examples I have seen (maybe I missed something), the
>     source is downloaded. My source is not downloaded, its already there.
> BinDeps never gets to the BuildProcess part in my case because it does
>     not know how to find the source, and I don't know how to tell it that
>     the source is already there. It fails before it ever tries to build
>     anything.
>
>     That's also why I didnt put BinDeps in the subject line. This is
>     not really an external dependency. But it seems natural to include it
> with the external library dependencies, since it is just a small piece
>     of wrapper code around them.
>
>     --John
>
>
>     On 12/24/2014 08:17 PM, Elliot Saba wrote:
> > Autotools without a ./configure script can be done by using the MakeTargets buildstep generator.
>     >
> > Here's an example for Cairo.jl, where the zlib dependency is built by downloading the sources for Zlib, then running make on the win32/Makefile.gcc makefile. If you have a generic Makefile file, you should be able to omit any arguments to the MakeTargets generator.
>     > -E
>     >
> > On Wed, Dec 24, 2014 at 11:08 AM, John Lapeyre <lapeyre.math1...@gmail.com> wrote:
>     >
>     >     Thanks. Seeing a list of packages that use BinDeps helps. In
> > retrospect, I could have put BinDeps in the subject line so this
>     >     thread could be found more easily.
>     >
> > The two downloaded packages use Autotools. BinDeps works great once I got the incantation right. > > So, I have been trying to follow the BinDeps test code in faking that the wrapper code (one file) uses Autotools by supplying a > > configure script, so that ./configure, make , make install works. I was hoping to essentially copy the two or three lines per
>     >     dep that are in my current build.jl.
>     >
> > Anyway, this is probably enough help to get me quite a bit further.
>     >
>     >     --John
>     >
>     >
>     >
>     >     On 12/24/2014 07:22 PM, Elliot Saba wrote:
> > > BinDeps is pretty flexible. I'm guessing you have seen a BinDeps invocation that is based off of the Autotools step? (Here's an example for Nettle.jl) That does a lot of things for you, and doesn't really show off the flexibility that well.
>     >     >
> > > You can do things in a much more fine-grained manner, here's an example for NLopt, where zip files are downloaded, extracted, and .dll's are copied. I would suggest putting your C code and a Makefile in a PACKAGE_ROOT/deps/src folder, then you can write up a set of simple build steps to cd into that directory, (Notice BinDeps.srcdir(dep) will give you paths like you were asking above) you can run `make`, and then install the binary anywhere you want.
>     >     >
> > > I agree that BinDeps isn't very well documented. Any effort you can spare in that direction would be very appreciated, as you learn more about it and can help explain to others how to use it.
>     >     > -E
>     >     >
> > > On Wed, Dec 24, 2014 at 1:49 AM, John Lapeyre <lapeyre.math1...@gmail.com> wrote:
>     >     >
>     >     >     Hi Elliot,
>     >     >
>     >     >     Thanks for the offer.
>     >     >
> > > > B) You want to write a wrapper that sits between Julia and the C++,
>     >     >        written in C but used by Julia
>     >     >
> > > Yes. Writing the wrapper is not the problem. Really what I'd like to > > > know is how to organize, compile and link C code. How do I find the > > > toplevel of the package directory ? How does BinDeps find the > > > information to write into deps.jl ? Ideally, I would have BinDeps do > > > all of it, as it does for the downloaded code, because, then I don't > > > have to know any details. But the C code is stored locally, in the > > > package. It doesn't need to be downloaded. I could easily solve the > > > problem by putting the .c file in another git repo so that it needs to > > > be downloaded. But, thats not the correct solution. Since BinDeps is > > > not really documented, I have been searching packages at random,
>     >     >     looking for examples for c code and uses of BinDeps.
>     >     >
>     >     >     --John
>     >     >
>     >     >     On 12/24/2014 06:37 AM, Elliot Saba wrote:
>     >     >     > Hey John,
>     >     >     >
> > > > If you can explain a bit as to what you want to do with your libraries, that would help. What I understand from you so far is that:
>     >     >     >
> > > > A) You have to C++ libraries that you are able to download and compile
>     >     >     >
>     >     >
>     >     >     >
>     >     >     > Is that correct?
>     >     >     > -E
>     >     >     >
> > > > On Tue, Dec 23, 2014 at 5:43 PM, <lapeyre.math1...@gmail.com> wrote:
>     >     >     >
> > > > Can someone point me to examples of C code in Julia packages ? I am using BinDeps to download two C++ libraries. After a lot of blind trial and error I have a build.jl that does what I need. But, I need to write a c wrapper for the C++ libraries. One idea is to have BinDeps handle the build, if I can fool it into thinking it is an external library. But, I don't know how to do that. BinDeps seems to want to download something. I find it rather opaque. Otherwise I need to find a way to write most of what BinDeps does by hand for my C code: find paths to top level of the package and various sub dirs; do change dirs, making, copying, linking at run time, etc. I spent quite a bit of time searching julia-user, and -dev, grepping and finding in package trees, reading docs and source code, etc. no luck. Thanks.
>     >     >     >
>     >     >     >     --John
>     >     >     >
>     >     >     >
>     >     >
>     >     >
>     >     >
>     >
>     >
>     >
>
>
>


Reply via email to