digitalmars.D.learn - Q: DSSS: Library name being prefixed with S
- Myron Alexander (15/34) Jun 12 2007 Hello.
- Myron Alexander (8/53) Jun 12 2007 Ok, I went through DSSS sources and found that the prefixed "S" is
- Kirk McDonald (17/80) Jun 12 2007 Gregor might be able to answer this more completely, but it is so that
- Myron Alexander (6/20) Jun 12 2007 It makes sense in that context but it is not what I want. I tried
- Kirk McDonald (13/35) Jun 12 2007 That's just a warning, and you can usually just ignore it. Getting rid
- Myron Alexander (10/18) Jun 13 2007 Thanks.
- Daniel Keep (9/16) Jun 13 2007 One reason why I've started moving over to rebuild is -oqPATH. This
- Chris Nicholson-Sauls (7/27) Jun 13 2007 Actually (as I recall) you can avoid the clashes by passing bud both of
- Kirk McDonald (11/43) Jun 13 2007 This breaks as soon as you specify any source files as their absolute
- Derek Parnell (8/47) Jun 13 2007 What are these problems? I've not had them myself.
- Kirk McDonald (9/53) Jun 13 2007 Primarily, this causes issues if the source files are located in
- Derek Parnell (15/23) Jun 14 2007 A very good point indeed. It is because I don't work in such an environm...
- Derek Parnell (21/36) Jun 13 2007 A side effect of doing the -oqPATH is that is causes multiple runs of DM...
- Kirk McDonald (16/51) Jun 13 2007 This is not strictly true. If there aren't actually any name collisions,...
- Derek Parnell (8/11) Jun 14 2007 I use the "-clean" switch to immediately remove them.
- Myron Alexander (6/14) Jun 14 2007 Derek,
- Derek Parnell (13/27) Jun 14 2007 I am still developing it. I have a number of changes already coded into ...
- Myron Alexander (4/14) Jun 14 2007 That's good news.
Hello. I have just started using DSSS referencing their cookbook and I have a problem generating my library. dsss.confname = dbapi [dbapi] target = dbapi buildflags = -unittest -debug -gconsole output:Creating imports for dbapi dbapi => dbapi + C:\opt\dsss\dsss-0.65-dmd-win\bin\rebuild.exe -Idsss_imports\ -I. -S.\ -IC:\opt\dsss\dsss-0.65-dmd-win\include\d -SC:\opt\dsss\dsss-0.65-dmd-win\lib\ -IC:\opt\dsss\dsss-0.65-dmd-win\include\d -SC:\opt\dsss\dsss-0.65-dmd-win\lib -oqdsss_objs -unittest -debug -g -explicit -lib -full dbapi\base.d dbapi\c\sqlite3.d dbapi\helper.d dbapi\sqlite3.d -ofSdbapi.lib Digital Mars Librarian Version 8.02n Copyright (C) Digital Mars 2000-2007 All Rights Reserved http://www.digitalmars.com/ctg/lib.html Digital Mars Librarian complete. Sdbapi.libThe problem is that the final library file is called "Sdbapi.lib" instead of "dbapi.lib". I'm using version 0.65. Is there something I am doing wrong? or is there a known bug? Can anyone help me? Thanks ahead, Myron. dprogramming...myron...alexander...com replace the first ... with , remove the second, and replace the third with ".".
Jun 12 2007
Myron Alexander wrote:Hello. I have just started using DSSS referencing their cookbook and I have a problem generating my library. dsss.confOk, I went through DSSS sources and found that the prefixed "S" is hardcoded. It looks intentional. The question is: What problem is the "S" prefix trying to solve? I want to use DSSS but I also want control over the name of my library files. Regards, Myron.name = dbapi [dbapi] target = dbapi buildflags = -unittest -debug -gconsole output:Creating imports for dbapi dbapi => dbapi + C:\opt\dsss\dsss-0.65-dmd-win\bin\rebuild.exe -Idsss_imports\ -I. -S.\ -IC:\opt\dsss\dsss-0.65-dmd-win\include\d -SC:\opt\dsss\dsss-0.65-dmd-win\lib\ -IC:\opt\dsss\dsss-0.65-dmd-win\include\d -SC:\opt\dsss\dsss-0.65-dmd-win\lib -oqdsss_objs -unittest -debug -g -explicit -lib -full dbapi\base.d dbapi\c\sqlite3.d dbapi\helper.d dbapi\sqlite3.d -ofSdbapi.lib Digital Mars Librarian Version 8.02n Copyright (C) Digital Mars 2000-2007 All Rights Reserved http://www.digitalmars.com/ctg/lib.html Digital Mars Librarian complete. Sdbapi.libThe problem is that the final library file is called "Sdbapi.lib" instead of "dbapi.lib". I'm using version 0.65. Is there something I am doing wrong? or is there a known bug? Can anyone help me? Thanks ahead, Myron. dprogramming...myron...alexander...com replace the first ... with , remove the second, and replace the third with ".".
Jun 12 2007
Myron Alexander wrote:Myron Alexander wrote:Gregor might be able to answer this more completely, but it is so that you can have multiple different versions of the library installed side-by-side in DSSS. That's not the only prefix. I believe there are others for whether it was compiled with DMD or GDC; whether it's a static library or a dynamic one; and maybe whether it uses Phobos vs. Tango. (I don't recall what 'S' on its own means.) The idea is that, if you're compiling with DSSS, you'll also be compiling anything using your library with DSSS. DSSS knows what all those prefixes mean, and it should Just Work. If you want more complete control over the compilation process, you can try using Rebuild directly (althogh then you lose the extra power of DSSS.) -- Kirk McDonald http://kirkmcdonald.blogspot.com Pyd: Connecting D and Python http://pyd.dsource.orgHello. I have just started using DSSS referencing their cookbook and I have a problem generating my library. dsss.confOk, I went through DSSS sources and found that the prefixed "S" is hardcoded. It looks intentional. The question is: What problem is the "S" prefix trying to solve? I want to use DSSS but I also want control over the name of my library files. Regards, Myron.name = dbapi [dbapi] target = dbapi buildflags = -unittest -debug -gconsole output:Creating imports for dbapi dbapi => dbapi + C:\opt\dsss\dsss-0.65-dmd-win\bin\rebuild.exe -Idsss_imports\ -I. -S.\ -IC:\opt\dsss\dsss-0.65-dmd-win\include\d -SC:\opt\dsss\dsss-0.65-dmd-win\lib\ -IC:\opt\dsss\dsss-0.65-dmd-win\include\d -SC:\opt\dsss\dsss-0.65-dmd-win\lib -oqdsss_objs -unittest -debug -g -explicit -lib -full dbapi\base.d dbapi\c\sqlite3.d dbapi\helper.d dbapi\sqlite3.d -ofSdbapi.lib Digital Mars Librarian Version 8.02n Copyright (C) Digital Mars 2000-2007 All Rights Reserved http://www.digitalmars.com/ctg/lib.html Digital Mars Librarian complete. Sdbapi.libThe problem is that the final library file is called "Sdbapi.lib" instead of "dbapi.lib". I'm using version 0.65. Is there something I am doing wrong? or is there a known bug? Can anyone help me? Thanks ahead, Myron. dprogramming...myron...alexander...com replace the first ... with , remove the second, and replace the third with ".".
Jun 12 2007
Kirk McDonald wrote:Gregor might be able to answer this more completely, but it is so that you can have multiple different versions of the library installed side-by-side in DSSS. That's not the only prefix. I believe there are others for whether it was compiled with DMD or GDC; whether it's a static library or a dynamic one; and maybe whether it uses Phobos vs. Tango. (I don't recall what 'S' on its own means.) The idea is that, if you're compiling with DSSS, you'll also be compiling anything using your library with DSSS. DSSS knows what all those prefixes mean, and it should Just Work. If you want more complete control over the compilation process, you can try using Rebuild directly (althogh then you lose the extra power of DSSS.)It makes sense in that context but it is not what I want. I tried rebuild but it kept on complaining about not having a module declaration in my main file so I have gone back to Bud for now. Until D gets a better library mechanism, I will be using source libraries. My library is open-source anyway so it does not affect me, yet.
Jun 12 2007
Myron Alexander wrote:Kirk McDonald wrote:That's just a warning, and you can usually just ignore it. Getting rid of it is easy: If your main file is called "main.d", just add "module main;" to the top of it. It is related to how rebuild handles fully-qualified object files, and is only an issue if you somehow have another file called "main.d" which doesn't have a module declaration in your project. Always including a module declaration is good practice, so you should include one as a matter of course.Gregor might be able to answer this more completely, but it is so that you can have multiple different versions of the library installed side-by-side in DSSS. That's not the only prefix. I believe there are others for whether it was compiled with DMD or GDC; whether it's a static library or a dynamic one; and maybe whether it uses Phobos vs. Tango. (I don't recall what 'S' on its own means.) The idea is that, if you're compiling with DSSS, you'll also be compiling anything using your library with DSSS. DSSS knows what all those prefixes mean, and it should Just Work. If you want more complete control over the compilation process, you can try using Rebuild directly (althogh then you lose the extra power of DSSS.)It makes sense in that context but it is not what I want. I tried rebuild but it kept on complaining about not having a module declaration in my main file so I have gone back to Bud for now.Until D gets a better library mechanism, I will be using source libraries. My library is open-source anyway so it does not affect me, yet.-- Kirk McDonald http://kirkmcdonald.blogspot.com Pyd: Connecting D and Python http://pyd.dsource.org
Jun 12 2007
Kirk McDonald wrote:That's just a warning, and you can usually just ignore it. Getting rid of it is easy: If your main file is called "main.d", just add "module main;" to the top of it. It is related to how rebuild handles fully-qualified object files, and is only an issue if you somehow have another file called "main.d" which doesn't have a module declaration in your project. Always including a module declaration is good practice, so you should include one as a matter of course.Thanks. Just out of interest, do you have any pointers, on hand, as to why rebuild is better than bud? It does look like bud is not being developed but I have not had much experience with the tools yet. Thanks ahead, Myron. dprogramming...myron...alexander...com replace the first ... with , remove the second, and replace the third with ".".
Jun 13 2007
Just out of interest, do you have any pointers, on hand, as to why rebuild is better than bud? It does look like bud is not being developed but I have not had much experience with the tools yet. Thanks ahead, Myron.One reason why I've started moving over to rebuild is -oqPATH. This tells rebuild to put the intermediate object files into the PATH directory with fully qualified names (aka: Gregorian Notation). The problem with bud is that, if I remember correctly, you either put the object files with the source files (which sticks them all over the bloody place), or all in one directory where you can get name clashes. That said, bud is slightly easier to use directly from the command line because you can have +targets. -- Daniel
Jun 13 2007
Daniel Keep wrote:Actually (as I recall) you can avoid the clashes by passing bud both of -odPATH and --op (note double-dashes) which will recreate the packaging of modules as a directory tree rooted at PATH. Not neccessarily as good as "Gregorian Notation" (which I still wish the compiler would adopt), but usable. -- Chris Nicholson-SaulsJust out of interest, do you have any pointers, on hand, as to why rebuild is better than bud? It does look like bud is not being developed but I have not had much experience with the tools yet. Thanks ahead, Myron.One reason why I've started moving over to rebuild is -oqPATH. This tells rebuild to put the intermediate object files into the PATH directory with fully qualified names (aka: Gregorian Notation). The problem with bud is that, if I remember correctly, you either put the object files with the source files (which sticks them all over the bloody place), or all in one directory where you can get name clashes. That said, bud is slightly easier to use directly from the command line because you can have +targets. -- Daniel
Jun 13 2007
Chris Nicholson-Sauls wrote:Daniel Keep wrote:This breaks as soon as you specify any source files as their absolute path. (I forget all the details; it's been a while since I went and worked all this out.) If Bud is unable to determine a sensible relative path, it defaults to placing the object file alongside the source file. (Which causes the usual litany of problems.) -- Kirk McDonald http://kirkmcdonald.blogspot.com Pyd: Connecting D and Python http://pyd.dsource.orgActually (as I recall) you can avoid the clashes by passing bud both of -odPATH and --op (note double-dashes) which will recreate the packaging of modules as a directory tree rooted at PATH. Not neccessarily as good as "Gregorian Notation" (which I still wish the compiler would adopt), but usable. -- Chris Nicholson-SaulsJust out of interest, do you have any pointers, on hand, as to why rebuild is better than bud? It does look like bud is not being developed but I have not had much experience with the tools yet. Thanks ahead, Myron.One reason why I've started moving over to rebuild is -oqPATH. This tells rebuild to put the intermediate object files into the PATH directory with fully qualified names (aka: Gregorian Notation). The problem with bud is that, if I remember correctly, you either put the object files with the source files (which sticks them all over the bloody place), or all in one directory where you can get name clashes. That said, bud is slightly easier to use directly from the command line because you can have +targets. -- Daniel
Jun 13 2007
On Wed, 13 Jun 2007 16:04:47 -0700, Kirk McDonald wrote:Chris Nicholson-Sauls wrote:No it doesn't. DMD does that, not Bud.Daniel Keep wrote:This breaks as soon as you specify any source files as their absolute path. (I forget all the details; it's been a while since I went and worked all this out.) If Bud is unable to determine a sensible relative path, it defaults to placing the object file alongside the source file.Actually (as I recall) you can avoid the clashes by passing bud both of -odPATH and --op (note double-dashes) which will recreate the packaging of modules as a directory tree rooted at PATH. Not neccessarily as good as "Gregorian Notation" (which I still wish the compiler would adopt), but usable. -- Chris Nicholson-SaulsJust out of interest, do you have any pointers, on hand, as to why rebuild is better than bud? It does look like bud is not being developed but I have not had much experience with the tools yet. Thanks ahead, Myron.One reason why I've started moving over to rebuild is -oqPATH. This tells rebuild to put the intermediate object files into the PATH directory with fully qualified names (aka: Gregorian Notation). The problem with bud is that, if I remember correctly, you either put the object files with the source files (which sticks them all over the bloody place), or all in one directory where you can get name clashes. That said, bud is slightly easier to use directly from the command line because you can have +targets. -- Daniel(Which causes the usual litany of problems.)What are these problems? I've not had them myself. -- Derek Parnell Melbourne, Australia "Justice for David Hicks!" skype: derek.j.parnell
Jun 13 2007
Derek Parnell wrote:On Wed, 13 Jun 2007 16:04:47 -0700, Kirk McDonald wrote:Er, you're right, of course.Chris Nicholson-Sauls wrote:No it doesn't. DMD does that, not Bud.Daniel Keep wrote:This breaks as soon as you specify any source files as their absolute path. (I forget all the details; it's been a while since I went and worked all this out.) If Bud is unable to determine a sensible relative path, it defaults to placing the object file alongside the source file.Actually (as I recall) you can avoid the clashes by passing bud both of -odPATH and --op (note double-dashes) which will recreate the packaging of modules as a directory tree rooted at PATH. Not neccessarily as good as "Gregorian Notation" (which I still wish the compiler would adopt), but usable. -- Chris Nicholson-SaulsJust out of interest, do you have any pointers, on hand, as to why rebuild is better than bud? It does look like bud is not being developed but I have not had much experience with the tools yet. Thanks ahead, Myron.One reason why I've started moving over to rebuild is -oqPATH. This tells rebuild to put the intermediate object files into the PATH directory with fully qualified names (aka: Gregorian Notation). The problem with bud is that, if I remember correctly, you either put the object files with the source files (which sticks them all over the bloody place), or all in one directory where you can get name clashes. That said, bud is slightly easier to use directly from the command line because you can have +targets. -- DanielPrimarily, this causes issues if the source files are located in directories to which the user does not have write access. -- Kirk McDonald http://kirkmcdonald.blogspot.com Pyd: Connecting D and Python http://pyd.dsource.org(Which causes the usual litany of problems.)What are these problems? I've not had them myself.
Jun 13 2007
On Wed, 13 Jun 2007 21:55:53 -0700, Kirk McDonald wrote:Derek Parnell wrote:A very good point indeed. It is because I don't work in such an environment (with D) I haven't had these issues. Of course, it would be better if the compiler did this rather than 3rd party tools, so we should be lobbying the C++ lads that influence Walter to get DMD improved. <G> I'll start working on Bud to provide this capability. I don't have Rebuild so my implementation of the concept is likely to be different, but I hope still useful. -- Derek (skype: derek.j.parnell) Melbourne, Australia "Justice for David Hicks!" 14/06/2007 5:41:07 PMPrimarily, this causes issues if the source files are located in directories to which the user does not have write access.(Which causes the usual litany of problems.)What are these problems? I've not had them myself.
Jun 14 2007
On Thu, 14 Jun 2007 00:39:19 +1000, Daniel Keep wrote:A side effect of doing the -oqPATH is that is causes multiple runs of DMD, because DMD only knows how to write object files out to either the source file location or the location named on the -od switch. To have object files each placed in a separate location other than the source location means one has to run DMD separately for each source file (or at least for each unique source location). I have yet to workout why placement of object files is of such a critical issue. An object file is an intermediate file. It is used to either create an executable or a library, and then discarded. On rare occasions is can be retained to inspect the output machine code of the compiler, but why worry about where it lives. It will be discarded eventually. In Bud, I've chosen to reduce the number of calls to DMD instead of concerning myself about where to place temporary files. However, if this is really an issue I can have Bud call DMD multiple times for you to place temporary files in the folder of your choice. -- Derek Parnell Melbourne, Australia "Justice for David Hicks!" skype: derek.j.parnellJust out of interest, do you have any pointers, on hand, as to why rebuild is better than bud? It does look like bud is not being developed but I have not had much experience with the tools yet. Thanks ahead, Myron.One reason why I've started moving over to rebuild is -oqPATH. This tells rebuild to put the intermediate object files into the PATH directory with fully qualified names (aka: Gregorian Notation). The problem with bud is that, if I remember correctly, you either put the object files with the source files (which sticks them all over the bloody place), or all in one directory where you can get name clashes.
Jun 13 2007
Derek Parnell wrote:On Thu, 14 Jun 2007 00:39:19 +1000, Daniel Keep wrote:This is not strictly true. If there aren't actually any name collisions, you can just run DMD once and then rename/move the resulting object files to whatever scheme you want. If there is a name collision, then you can just compile all of the modules which don't collide first, rename them, and then compile the colliding ones. If I'm not mistaken, this is how rebuild works. Therefore, rebuild usually just calls DMD once, or sometimes twice.A side effect of doing the -oqPATH is that is causes multiple runs of DMD, because DMD only knows how to write object files out to either the source file location or the location named on the -od switch. To have object files each placed in a separate location other than the source location means one has to run DMD separately for each source file (or at least for each unique source location).Just out of interest, do you have any pointers, on hand, as to why rebuild is better than bud? It does look like bud is not being developed but I have not had much experience with the tools yet. Thanks ahead, Myron.One reason why I've started moving over to rebuild is -oqPATH. This tells rebuild to put the intermediate object files into the PATH directory with fully qualified names (aka: Gregorian Notation). The problem with bud is that, if I remember correctly, you either put the object files with the source files (which sticks them all over the bloody place), or all in one directory where you can get name clashes.I have yet to workout why placement of object files is of such a critical issue. An object file is an intermediate file. It is used to either create an executable or a library, and then discarded. On rare occasions is can be retained to inspect the output machine code of the compiler, but why worry about where it lives. It will be discarded eventually.It is highly desirable to be able to jam all of these temporary files into a specific, off-to-the-side place. I do not like cluttering my source tree with temporary files.In Bud, I've chosen to reduce the number of calls to DMD instead of concerning myself about where to place temporary files. However, if this is really an issue I can have Bud call DMD multiple times for you to place temporary files in the folder of your choice.-- Kirk McDonald http://kirkmcdonald.blogspot.com Pyd: Connecting D and Python http://pyd.dsource.org
Jun 13 2007
On Wed, 13 Jun 2007 22:10:09 -0700, Kirk McDonald wrote:It is highly desirable to be able to jam all of these temporary files into a specific, off-to-the-side place. I do not like cluttering my source tree with temporary files.I use the "-clean" switch to immediately remove them. -- Derek (skype: derek.j.parnell) Melbourne, Australia "Justice for David Hicks!" 14/06/2007 5:47:24 PM
Jun 14 2007
Derek Parnell wrote:On Wed, 13 Jun 2007 22:10:09 -0700, Kirk McDonald wrote:Derek, Are you still developing Bud or do you consider Bud complete? I only ask because it has been 8 months since the last change. Regards, Myron.It is highly desirable to be able to jam all of these temporary files into a specific, off-to-the-side place. I do not like cluttering my source tree with temporary files.I use the "-clean" switch to immediately remove them.
Jun 14 2007
On Thu, 14 Jun 2007 12:49:45 +0200, Myron Alexander wrote:Derek Parnell wrote:I am still developing it. I have a number of changes already coded into it but nothing revolutionary. I'll add the facility to name the alternative output file location(s) and then release the next version. I have been wondering about using some post V1.0 features but now I've decided not to do that yet. However, I've refactored a lot of the code to make the modules a lot more self-suffcient and reduce cohesion between them. -- Derek Parnell Melbourne, Australia "Justice for David Hicks!" skype: derek.j.parnellOn Wed, 13 Jun 2007 22:10:09 -0700, Kirk McDonald wrote:Derek, Are you still developing Bud or do you consider Bud complete? I only ask because it has been 8 months since the last change.It is highly desirable to be able to jam all of these temporary files into a specific, off-to-the-side place. I do not like cluttering my source tree with temporary files.I use the "-clean" switch to immediately remove them.
Jun 14 2007
Derek Parnell wrote:I am still developing it. I have a number of changes already coded into it but nothing revolutionary. I'll add the facility to name the alternative output file location(s) and then release the next version. I have been wondering about using some post V1.0 features but now I've decided not to do that yet. However, I've refactored a lot of the code to make the modules a lot more self-suffcient and reduce cohesion between them.That's good news. Thanks. Myron.
Jun 14 2007