Thread overview
Got Mango? ( installation / compiling instructions)
Feb 22, 2005
jicman
Feb 22, 2005
Kris
Feb 22, 2005
jicman
Feb 22, 2005
Derek
Feb 22, 2005
Kris
Feb 23, 2005
Derek Parnell
Feb 23, 2005
John Reimer
Feb 23, 2005
Derek Parnell
Feb 23, 2005
Kris
Feb 23, 2005
Derek Parnell
February 22, 2005
Folks,

I have looked for more than 1/2 hour how to compile a simple sample mango program, but there are no instructions anywhere.  Well, not that I can find. None of the documentation download (mango_release_1-1_doc.zip) contain any d sample compile commands. Does any one have any website where it would show some d compile samples?    When I try

dmd source.d

I get a bunch of errors of libraries not found.  How do I pass the mango libraries to dmd?  I looked over mango and it's something that I want to do for the http stuff that I am doing, but I can't get it to work.

thanks,

josé


February 22, 2005
In article <cvfld4$fba$1@digitaldaemon.com>, jicman says...
>
>Folks,
>
>I have looked for more than 1/2 hour how to compile a simple sample mango program, but there are no instructions anywhere.  Well, not that I can find. None of the documentation download (mango_release_1-1_doc.zip) contain any d sample compile commands. Does any one have any website where it would show some d compile samples?    When I try
>
>dmd source.d
>
>I get a bunch of errors of libraries not found.  How do I pass the mango libraries to dmd?  I looked over mango and it's something that I want to do for the http stuff that I am doing, but I can't get it to work.
>
>thanks,
>
>josé

You need to include mango.lib as one of the files supplied to dmd.exe, which will then pass it along to the linker; e.g. on windows:

dmd myfile.d myotherfile.d mango.lib

All libraries are handled this way with dmd ~ you would typically have to add phobos.lib also, but the compiler assumes you want that anyway.

Hope that helps

- Kris


February 22, 2005
On Tue, 22 Feb 2005 16:08:04 +0000 (UTC), jicman wrote:

> Folks,
> 
> I have looked for more than 1/2 hour how to compile a simple sample mango program, but there are no instructions anywhere.  Well, not that I can find. None of the documentation download (mango_release_1-1_doc.zip) contain any d sample compile commands. Does any one have any website where it would show some d compile samples?    When I try
> 
> dmd source.d
> 
> I get a bunch of errors of libraries not found.  How do I pass the mango libraries to dmd?  I looked over mango and it's something that I want to do for the http stuff that I am doing, but I can't get it to work.
> 
> thanks,
> 
> josé

I haven't tried Mango yet, but I'll test it with my Build utility today. Hopefully then all one would have to do is type in "build source" on the command line.

-- 
Derek
Melbourne, Australia
February 22, 2005
In article <1kj7oykh4lu8z$.17s4c3tmmsdpe.dlg@40tude.net>, Derek says...
>
>On Tue, 22 Feb 2005 16:08:04 +0000 (UTC), jicman wrote:
>
>> Folks,
>> 
>> I have looked for more than 1/2 hour how to compile a simple sample mango program, but there are no instructions anywhere.  Well, not that I can find. None of the documentation download (mango_release_1-1_doc.zip) contain any d sample compile commands. Does any one have any website where it would show some d compile samples?    When I try
>> 
>> dmd source.d
>> 
>> I get a bunch of errors of libraries not found.  How do I pass the mango libraries to dmd?  I looked over mango and it's something that I want to do for the http stuff that I am doing, but I can't get it to work.
>> 
>> thanks,
>> 
>> josé
>
>I haven't tried Mango yet, but I'll test it with my Build utility today. Hopefully then all one would have to do is type in "build source" on the command line.

Excellent; let us know how it works out?


February 22, 2005
In article <cvg37n$15sk$1@digitaldaemon.com>, Kris says...

>You need to include mango.lib as one of the files supplied to dmd.exe, which will then pass it along to the linker; e.g. on windows:
>
>dmd myfile.d myotherfile.d mango.lib
>
>All libraries are handled this way with dmd ~ you would typically have to add phobos.lib also, but the compiler assumes you want that anyway.
>
>Hope that helps
>
>- Kris

Kris,

that help a lot.  Thanks.


February 23, 2005
On Tue, 22 Feb 2005 20:20:56 +0000 (UTC), Kris wrote:

> In article <1kj7oykh4lu8z$.17s4c3tmmsdpe.dlg@40tude.net>, Derek says...
>>
>>On Tue, 22 Feb 2005 16:08:04 +0000 (UTC), jicman wrote:
>>
>>> Folks,
>>> 
>>> I have looked for more than 1/2 hour how to compile a simple sample mango program, but there are no instructions anywhere.  Well, not that I can find. None of the documentation download (mango_release_1-1_doc.zip) contain any d sample compile commands. Does any one have any website where it would show some d compile samples?    When I try
>>> 
>>> dmd source.d
>>> 
>>> I get a bunch of errors of libraries not found.  How do I pass the mango libraries to dmd?  I looked over mango and it's something that I want to do for the http stuff that I am doing, but I can't get it to work.
>>> 
>>> thanks,
>>> 
>>> josé
>>
>>I haven't tried Mango yet, but I'll test it with my Build utility today. Hopefully then all one would have to do is type in "build source" on the command line.
> 
> Excellent; let us know how it works out?

It works okay, not fine but just okay. With the current v1.2 of Build ( www.dsource.org ) you have to specify the directory in which the 'mango' tree is installed.

For example, if I've installed mango into the directory C:\dlibs\ then the following command line works ...

  build msource -C:\dlibs

BTW, the test source code I used is ...
<code>

 module msource;
 private import mango.io.Buffer;
 private import std.stdio;

 void main()
 {
    Buffer B = new Buffer(4000);
    writefln("The buffer has readable:%d writeable:%d bytes.",
                B.readable, B.writable);
 }

</code>


For my first attempt to use build for mango apps, I edited the sc.ini file
to include the mango lib path ...

old: DFLAGS=-I%@P%\..\src\phobos
new: DFLAGS=-I%@P%\..\src\phobos;c:\dlibs

but this highlighted a bug in build; it didn't recognize semi-colon delimited flags. So I fixed that, but even though now 'build' could find the mango imports, 'dmd' still couldn't. So keeping the sc.ini file with the mango lib path in it, I tried invoking dmd with an explict -Ic:\dlibs on it and it worked! So my conclusion is that DMD does not use the sc.ini file correctly for DFLAG options.

I have now updated build to explicitly add an DFLAG options in to the dmd command line it invokes, and now it works just fine. In other words, after updating your sc.ini file to include the mango path, all you will have to do to compile an app that uses mango is ...

   build msource

Works a treat! :D

I'll upload BUILD v1.3 later today, as I'll play with this workaround a bit more first.

-- 
Derek
Melbourne, Australia
23/02/2005 12:12:06 PM
February 23, 2005
Derek Parnell wrote:
> On Tue, 22 Feb 2005 20:20:56 +0000 (UTC), Kris wrote:
> 
> 
>>In article <1kj7oykh4lu8z$.17s4c3tmmsdpe.dlg@40tude.net>, Derek says...
>>
>>>On Tue, 22 Feb 2005 16:08:04 +0000 (UTC), jicman wrote:
>>>
>>>
>>>>Folks, 
>>>>
>>>>I have looked for more than 1/2 hour how to compile a simple sample mango
>>>>program, but there are no instructions anywhere.  Well, not that I can find.
>>>>None of the documentation download (mango_release_1-1_doc.zip) contain any d
>>>>sample compile commands. Does any one have any website where it would show some
>>>>d compile samples?    When I try 
>>>>
>>>>dmd source.d
>>>>
>>>>I get a bunch of errors of libraries not found.  How do I pass the mango
>>>>libraries to dmd?  I looked over mango and it's something that I want to do for
>>>>the http stuff that I am doing, but I can't get it to work.
>>>>
>>>>thanks, 
>>>>
>>>>josé
>>>
>>>I haven't tried Mango yet, but I'll test it with my Build utility today.
>>>Hopefully then all one would have to do is type in "build source" on the
>>>command line.
>>
>>Excellent; let us know how it works out?
> 
> 
> It works okay, not fine but just okay. With the current v1.2 of Build (
> www.dsource.org ) you have to specify the directory in which the 'mango'
> tree is installed. 
> 
> For example, if I've installed mango into the directory C:\dlibs\ then the
> following command line works ...
> 
>   build msource -C:\dlibs
> 
> BTW, the test source code I used is ...
> <code>
> 
>  module msource;
>  private import mango.io.Buffer;
>  private import std.stdio;
> 
>  void main()
>  {
>     Buffer B = new Buffer(4000);
>     writefln("The buffer has readable:%d writeable:%d bytes.",                 B.readable, B.writable);
>  }
> 
> </code>
> 
> 
> For my first attempt to use build for mango apps, I edited the sc.ini file
> to include the mango lib path ...
>  old: DFLAGS=-I%@P%\..\src\phobos
> new: DFLAGS=-I%@P%\..\src\phobos;c:\dlibs
> 
> but this highlighted a bug in build; it didn't recognize semi-colon
> delimited flags. So I fixed that, but even though now 'build' could find
> the mango imports, 'dmd' still couldn't. So keeping the sc.ini file with
> the mango lib path in it, I tried invoking dmd with an explict -Ic:\dlibs
> on it and it worked! So my conclusion is that DMD does not use the sc.ini
> file correctly for DFLAG options. 
> 
> I have now updated build to explicitly add an DFLAG options in to the dmd
> command line it invokes, and now it works just fine. In other words, after
> updating your sc.ini file to include the mango path, all you will have to
> do to compile an app that uses mango is ...
> 
>    build msource
> 
> Works a treat! :D
> 
> I'll upload BUILD v1.3 later today, as I'll play with this workaround a bit
> more first.
> 

Great work, Derek!  Building Mango is an excellent stress test for build.  If you've succeeded there, that's good news.

A question:

Mango typically uses some commandline "-version" switches like -version=Mango and -version=Posix (for linux).  I guess these statements will be needed to include some appropriate code in the build.  How does build handle this? I assume we pass-thru to the compiler somehow?


- John R.
February 23, 2005
On Tue, 22 Feb 2005 17:51:38 -0800, John Reimer wrote:

> Derek Parnell wrote:
>> On Tue, 22 Feb 2005 20:20:56 +0000 (UTC), Kris wrote:
>> 
>>>In article <1kj7oykh4lu8z$.17s4c3tmmsdpe.dlg@40tude.net>, Derek says...
>>>
>>>>On Tue, 22 Feb 2005 16:08:04 +0000 (UTC), jicman wrote:
>>>>
>>>>
>>>>>Folks,
>>>>>
>>>>>I have looked for more than 1/2 hour how to compile a simple sample mango program, but there are no instructions anywhere.  Well, not that I can find. None of the documentation download (mango_release_1-1_doc.zip) contain any d sample compile commands. Does any one have any website where it would show some d compile samples?    When I try
>>>>>
>>>>>dmd source.d
>>>>>
>>>>>I get a bunch of errors of libraries not found.  How do I pass the mango libraries to dmd?  I looked over mango and it's something that I want to do for the http stuff that I am doing, but I can't get it to work.
>>>>>
>>>>>thanks,
>>>>>
>>>>>josé
>>>>
>>>>I haven't tried Mango yet, but I'll test it with my Build utility today. Hopefully then all one would have to do is type in "build source" on the command line.
>>>
>>>Excellent; let us know how it works out?
>> 
>> It works okay, not fine but just okay. With the current v1.2 of Build ( www.dsource.org ) you have to specify the directory in which the 'mango' tree is installed.
>> 
>> For example, if I've installed mango into the directory C:\dlibs\ then the following command line works ...
>> 
>>   build msource -C:\dlibs
>> 
>> BTW, the test source code I used is ...
>> <code>
>> 
>>  module msource;
>>  private import mango.io.Buffer;
>>  private import std.stdio;
>> 
>>  void main()
>>  {
>>     Buffer B = new Buffer(4000);
>>     writefln("The buffer has readable:%d writeable:%d bytes.",
>>                 B.readable, B.writable);
>>  }
>> 
>> </code>
>> 
>> For my first attempt to use build for mango apps, I edited the sc.ini file
>> to include the mango lib path ...
>> 
>> old: DFLAGS=-I%@P%\..\src\phobos
>> new: DFLAGS=-I%@P%\..\src\phobos;c:\dlibs
>> 
>> but this highlighted a bug in build; it didn't recognize semi-colon delimited flags. So I fixed that, but even though now 'build' could find the mango imports, 'dmd' still couldn't. So keeping the sc.ini file with the mango lib path in it, I tried invoking dmd with an explict -Ic:\dlibs on it and it worked! So my conclusion is that DMD does not use the sc.ini file correctly for DFLAG options.
>> 
>> I have now updated build to explicitly add an DFLAG options in to the dmd command line it invokes, and now it works just fine. In other words, after updating your sc.ini file to include the mango path, all you will have to do to compile an app that uses mango is ...
>> 
>>    build msource
>> 
>> Works a treat! :D
>> 
>> I'll upload BUILD v1.3 later today, as I'll play with this workaround a bit more first.
>> 
> 
> Great work, Derek!  Building Mango is an excellent stress test for build.  If you've succeeded there, that's good news.
> 
> A question:
> 
> Mango typically uses some commandline "-version" switches like -version=Mango and -version=Posix (for linux).  I guess these statements will be needed to include some appropriate code in the build.  How does build handle this? I assume we pass-thru to the compiler somehow?
> 
> - John R.

Sure, just pass them on the build command line...

   build mysource -version=Mango -version=Posix

However, I've been thinking I might automatically set the Posix version if it runs on a linux system...dunno, I'll take some advice on that.

Also, I've been thinking enabling build to use a response file, so that you could do something like ...

   build @unix
 and it would get its command line options from a file called 'unix.brf'
and that would look like ...

  mysource
  -version=Mango
  -version=Posix

Anyhow, these are just ideas for now.

-- 
Derek
Melbourne, Australia
23/02/2005 1:11:40 PM
February 23, 2005
In article <bk9if392o44n$.m4hj3a7491bs.dlg@40tude.net>, Derek Parnell says...
> <snip>
>
>Sure, just pass them on the build command line...
>
>   build mysource -version=Mango -version=Posix

Awesome!


>However, I've been thinking I might automatically set the Posix version if it runs on a linux system...dunno, I'll take some advice on that.

Get's my vote. Just as Win32 should be the default on that platform?


>Also, I've been thinking enabling build to use a response file, so that you could do something like ...
>
>   build @unix
> and it would get its command line options from a file called 'unix.brf'
>and that would look like ...

Sounds good! Though the .brf is perhaps a bit chundery :~o


February 23, 2005
On Wed, 23 Feb 2005 13:17:15 +1100, Derek Parnell wrote:

>>> 
>>> Works a treat! :D
>>> 

I've just got 'build' to compile all of mango and create a mango.lib by typing in ...

   build mango.d -allobj

where mango.d just contains an import statement for each of the mango source files. I used all files so I didn't have to work out the minimum set based on internal dependencies. Anyhow, it worked! Compiled and created the lib in about 1 to 2 seconds.

<code for mango.d>
module mangolib;  // Stops dmd complaining about
                  //  mango.d and mango/ coexisting!

import mango.cluster.qos.socket.ClusterEvent;
import mango.cluster.qos.socket.ClusterServer;
import mango.cluster.qos.socket.ClusterThread;
import mango.cluster.qos.socket.RollCall;
import mango.cluster.qos.socket.ClusterCache;
import mango.cluster.qos.socket.ProtocolReader;
import mango.cluster.qos.socket.ProtocolWriter;
import mango.cluster.qos.socket.Cluster;
import mango.http.server.model.IProvider;
import mango.http.server.model.IProviderBridge;
import mango.http.server.HttpParams;
import mango.http.server.HttpProvider;
import mango.http.server.HttpResponse;
import mango.http.client.HttpClient;
import mango.cluster.model.IConsumer;
import mango.http.server.HttpRequest;
import mango.http.server.HttpMessage;
import mango.cluster.model.ICluster;
import mango.io.model.IConduit;
import mango.servlet.model.IServletRequest;
import mango.servlet.model.IServletResponse;
import mango.cluster.model.IEvent;
import mango.log.model.ILevel;
import mango.http.utils.Dictionary;
import mango.cluster.model.IMessage;
import mango.cache.model.IPayload;
import mango.io.model.IPickle;
import mango.http.server.HttpCookies;
import mango.http.server.HttpHeaders;
import mango.cluster.model.IChannel;
import mango.io.model.IResource;
import mango.utils.model.IServer;
import mango.http.server.HttpServer;
import mango.http.server.HttpThread;
import mango.io.model.IWriter;
import mango.http.server.HttpBridge;
import mango.io.model.IBitBucket;
import mango.http.utils.TokenStack;
import mango.http.server.HttpTokens;
import mango.cache.model.ICache;
import mango.io.model.IReader;
import mango.log.model.ILogger;
import mango.io.model.IBuffer;
import mango.io.Buffer;
import mango.log.ConsoleAppender;
import mango.io.FileSystem;
import mango.log.Appender;
import mango.io.ArrayAllocator;
import mango.base.ByteSwap;
import mango.cluster.CacheInvalidatee;
import mango.cache.HashMap;
import mango.log.Hierarchy;
import mango.http.HttpWriter;
import mango.io.AbstractReader;
import mango.http.HttpReader;
import mango.io.AbstractWriter;
import mango.log.Admin;
import mango.io.Conduit;
import mango.io.ConduitStyle;
import mango.log.Configurator;
import mango.icu.ICU;
import mango.io.DatagramSocket;
import mango.log.DateLayout;
import mango.utils.HeapSlice;
import mango.io.DisplayWriter;
import mango.io.EndianReader;
import mango.io.EndianWriter;
import mango.log.Event;
import mango.io.Exception;
import mango.io.ColumnWriter;
import mango.io.FileBucket;
import mango.io.FileConduit;
import mango.io.FilePath;
import mango.io.FileProxy;
import mango.io.FileStyle;
import mango.log.Layout;
import mango.log.Logger;
import mango.log.Manager;
import mango.cluster.Message;
import mango.io.MulticastSocket;
import mango.cluster.NetworkAlert;
import mango.utils.AbstractServer;
import mango.log.FileAppender;
import mango.cache.Payload;
import mango.io.PickleReader;
import mango.io.PickleRegistry;
import mango.io.PickleWriter;
import mango.cache.PlainCache;
import mango.io.Properties;
import mango.cluster.CacheInvalidator;
import mango.cluster.Client;
import mango.cache.QueuedCache;
import mango.utils.Random;
import mango.io.Reader;
import mango.io.Resource;
import mango.cluster.NetworkQueue;
import mango.log.RollingFileAppender;
import mango.io.ServerSocket;
import mango.utils.ServerThread;
import mango.servlet.Servlet;
import mango.servlet.ServletConfig;
import mango.servlet.ServletContext;
import mango.servlet.ServletProvider;
import mango.servlet.ServletRequest;
import mango.servlet.ServletResponse;
import mango.io.Socket;
import mango.log.SocketAppender;
import mango.io.SocketConduit;
import mango.io.SocketListener;
import mango.io.Stdio;
import mango.base.System;
import mango.cluster.TaskServer;
import mango.utils.Text;
import mango.io.TextFormat;
import mango.io.TextLayout;
import mango.io.TextReader;
import mango.io.TextWriter;
import mango.utils.Timer;
import mango.io.Token;
import mango.io.TokenEx;
import mango.io.Tokenizer;
import mango.cluster.NetworkCache;
import mango.icu.UBreakIterator;
import mango.icu.UCalendar;
import mango.icu.UChar;
import mango.icu.UCollator;
import mango.icu.UConverter;
import mango.icu.UDateFormat;
import mango.icu.UDomainName;
import mango.icu.UEnumeration;
import mango.icu.ULocale;
import mango.icu.UMango;
import mango.icu.UMessageFormat;
import mango.icu.UNormalize;
import mango.icu.UNumberFormat;
import mango.icu.UResourceBundle;
import mango.io.Uri;
import mango.icu.USearch;
import mango.icu.USet;
import mango.icu.UString;
import mango.icu.UStringPrep;
import mango.io.Utf8;
import mango.icu.UTimeZone;
import mango.icu.UTransform;
import mango.cache.VirtualCache;
import mango.io.Writer;
import mango.log.XmlLayout;
</code>

-- 
Derek
Melbourne, Australia
23/02/2005 3:08:48 PM