digitalmars.D - An open question to Rebuild users
- Gregor Richards (34/34) Apr 16 2007 Judging by the amount of feedback I receive on rebuild, vs the amount of...
- =?ISO-8859-1?Q?Anders_F_Bj=F6rklund?= (11/22) Apr 16 2007 I'm using Rebuild as a Bud/Build alternative, mostly since it was
- Howard Berkey (4/10) Apr 16 2007 In my experience, very slight. I found it pretty ridiculously easy to g...
- =?ISO-8859-1?Q?Anders_F_Bj=F6rklund?= (5/8) Apr 16 2007 I'm missing a --dry-run flag, that would print out everything it
- Carlos Santander (6/18) Apr 16 2007 From the usage instructions:
- =?ISO-8859-1?Q?Anders_F_Bj=F6rklund?= (5/11) Apr 16 2007 Yes, that flag - but it only seems to be for "rebuild" - not DSSS ?
- Carlos Santander (4/19) Apr 17 2007 Oops, sorry. I completely missed you were talking about DSSS.
- Howard Berkey (3/46) Apr 16 2007 I use rebuild only through dsss, for what it is worth. And I use dsss e...
- =?ISO-8859-1?Q?Jari-Matti_M=E4kel=E4?= (17/50) Apr 16 2007 I've found more bugs in Rebuild. For me that's to only reason. I use
- Gregor Richards (7/10) Apr 16 2007 Actually, it's not at all surprising that that would break it, since
- =?ISO-8859-1?Q?Jari-Matti_M=E4kel=E4?= (8/21) Apr 17 2007 You previously said you will not add support for Tango (dsss net install
-
Derek Parnell
(7/8)
Apr 16 2007
Actually, there is (at least) one person that uses neither
- torhu (2/8) Apr 17 2007 Make that two. Any bud development going on?
- Derek Parnell (13/22) Apr 17 2007 Yes, there is quite a bit done since the last release.
- Jesse Phillips (12/33) Apr 17 2007 is rebuild and bud really competing? I just thought rebuild was just
- Derek Parnell (10/13) Apr 17 2007 My understanding, and this could be totally wrong of course, is that
- Gregor Richards (32/38) Apr 18 2007 Well, here's the honest truth behind why rebuild exists. Some may find
- Frank Benoit (keinfarbton) (2/2) Apr 18 2007 Why not help DSSS instead of compete?
- Alexander Panek (2/4) Apr 18 2007 I second that request.
- Derek Parnell (31/33) Apr 18 2007 I have no opinion about DSSS yet. I was talking specifically about Rebui...
- Frank Benoit (keinfarbton) (6/10) Apr 18 2007 Sure, i can understand that.
- Derek Parnell (8/10) Apr 18 2007 Yes, that makes a lot of sense.
- Gregor Richards (7/21) Apr 18 2007 Absolutely. I don't think it's good that DSSS depends absolutely on
- Gregor Richards (3/35) Apr 18 2007 Hear, hear!
- dickl (7/13) Apr 18 2007 Add another person to the Bud/Build list.
- Johan Granberg (11/12) Apr 16 2007 As others have said documentation is a bit lacking so I don't know what ...
- kenny (3/46) Apr 16 2007 I'll be honest. Your message suggested to me that I try dsss/rebuild aga...
- Frank Benoit (keinfarbton) (14/14) Apr 16 2007 Today, after your posting i tried again to understand what is dsss. And
- Gregor Richards (18/35) Apr 16 2007 Noted. Admittedly, the documentation is lacking of anything that I'd
- Frank Benoit (keinfarbton) (3/7) Apr 17 2007 If I have a directory "gen" which contains generated source, and a
- Jason House (4/58) Apr 17 2007 I'd suggest starting up an FAQ page based off of these questions and
- Tomas Lindquist Olsen (4/4) Apr 16 2007 I'm using Rebuild as I needed a Bud replacement as the latter is borked ...
- Gregor Richards (4/8) Apr 16 2007 The DSSS fix for x86_64 was fairly recent ... if you have problems,
- Dan (2/2) Apr 16 2007 - not a user
- Gregor Richards (14/14) Apr 16 2007 Wowsa! I wasn't expecting such exuberant reponse!
- Olli Aalto (3/3) Apr 17 2007 I use DSSS primarily and only fallback to Rebuild if there's a problem
- David Ferenczi (8/8) Apr 17 2007 I started to use rebuild as a bud replacement, and I didn't even conside...
- Dan (3/5) Apr 17 2007 Indeed; my philosophy with software is that, given choice of several pac...
- Jason House (5/5) Apr 17 2007 I use neither successfully yet.
- David Ferenczi (3/9) Apr 17 2007 Something like this might help:
- Gregor Richards (6/12) Apr 18 2007 It checks your dmd.conf or gdc configuration as appropriate. If it's not...
- Hasan Aljudy (7/7) Apr 17 2007 For me, I use neither.
- Jesse Phillips (9/20) Apr 18 2007 I'd say that DSSS is trying to be a software distribution manager.
- Gregor Richards (7/7) Apr 19 2007 Since many of the responses to this thread suggested that people don't
- Anders Bergh (7/14) Apr 19 2007 Thanks, I've been looking for something like that. I didn't quite
- Johan Granberg (30/39) Apr 19 2007 Thanks this documentation cleared up a lot of things.
- Gregor Richards (43/91) Apr 19 2007 Answers posted inline. I will use some of these questions for a FAQ when...
- Johan Granberg (4/19) Apr 19 2007 I'm still not clear on how does this work with external c libraries?
- Daniel Keep (39/48) Apr 19 2007 OK, I think I've got a clearer idea of what DSSS is for now, although I
- Gregor Richards (34/84) Apr 19 2007 Answers posted inline. I will use some of these questions for a FAQ when...
Judging by the amount of feedback I receive on rebuild, vs the amount of feedback I receive on DSSS, I'd say that 95% of rebuild users are not DSSS users. That is, there are more users who use rebuild alone than in tandem with DSSS. I could be wrong - maybe DSSS just has no bugs :). Rebuild was designed primarily to complement DSSS, and DSSS was designed to be the ideal replacement for 'make' and pals for D, so I find it a bit disconcerting that a tool I designed primarily to be a background tool is being used as a primary development tool by so many. So, the obvious question is: Why? Why use rebuild and not DSSS? I imagine there must be some misconceptions about DSSS, what it is, what it's for, et cetera. I imagine some common misconceptions are: * DSSS is intended solely to be D's answer to CPAN - that is, a network installation tool. This just isn't true, the net portion is only a small chunk of what DSSS can do. * DSSS provides no advantages over using just a build tool. Also not true - even if DSSS provided /only/ a convenient build configuration file format (dsss.conf), that would be a sizable advantage of rebuild. DSSS provides much more, however, including easy generation of libraries with associated .di files, installation, documentation, etc, etc. If you really want your rebuild profile for an application or library be portable, you would need to either have several Makefiles or response files wrapped around rebuild (nasty), or use DSSS (nice). * DSSS is not portable to Windows. I think most people know that I'm not a Windows user, and Windows is mostly a foreign environment to me. However, this is not true. I've done my best, and am very responsive to bug reports, and DSSS does indeed work on Windows just as well as it does on Posix systems. * `dsss` is hard to type. Well, I've typed it more than a dozen times in this post, and my left ring finger is in no particular pain :) If your concern or concept isn't noted here, please tell me / ask me! If DSSS /isn't/ everything you need it to be, help me /make/ it what you need it to be :). - Gregor Richards
Apr 16 2007
Gregor Richards wrote:So, the obvious question is: Why? Why use rebuild and not DSSS? I imagine there must be some misconceptions about DSSS, what it is, what it's for, et cetera.* DSSS provides no advantages over using just a build tool. Also not true - even if DSSS provided /only/ a convenient build configuration file format (dsss.conf), that would be a sizable advantage of rebuild. DSSS provides much more, however, including easy generation of libraries with associated .di files, installation, documentation, etc, etc. If you really want your rebuild profile for an application or library be portable, you would need to either have several Makefiles or response files wrapped around rebuild (nasty), or use DSSS (nice).I'm using Rebuild as a Bud/Build alternative, mostly since it was easier to compile but also since it seems to be a lot faster too. Eventually I might look into trying to replace several Makefiles with dsss.conf, but there is a slight learning threshold involved ? So while I'm sure it's nice, I just haven't gotten around to it... Thus the process still uses: gnumake --> rebuild --> gdmd --> gdc Is there a problem if one finds rebuild useful without using DSSS ? "Good ol' make. Nuthin' beats that!" - "Make!" - "DSSS!" - "D'oh!" :-) --anders PS. A migration guide might help ?
Apr 16 2007
I'm using Rebuild as a Bud/Build alternative, mostly since it was easier to compile but also since it seems to be a lot faster too.That's why I initially grabbed it and dsss too, but I haven't looked back since just using dsss for everything.Eventually I might look into trying to replace several Makefiles with dsss.conf, but there is a slight learning threshold involved ?In my experience, very slight. I found it pretty ridiculously easy to get started with. Granted the largest thing I have built with it are some projects using derelict and others using gtkD; I haven't used it to replace makefiles in a large system yet. Howard
Apr 16 2007
Gregor Richards wrote:If your concern or concept isn't noted here, please tell me / ask me! If DSSS /isn't/ everything you need it to be, help me /make/ it what you need it to be :).I'm missing a --dry-run flag, that would print out everything it would have done *if* you had executed it. Often used with install ? And a man page, but I put one here: http://gdcgnu.sf.net/dsss.1 --anders
Apr 16 2007
Anders F Björklund escribió:Gregor Richards wrote:From the usage instructions: -n just list the commands to be run, don't run them That? -- Carlos Santander BernalIf your concern or concept isn't noted here, please tell me / ask me! If DSSS /isn't/ everything you need it to be, help me /make/ it what you need it to be :).I'm missing a --dry-run flag, that would print out everything it would have done *if* you had executed it. Often used with install ? And a man page, but I put one here: http://gdcgnu.sf.net/dsss.1 --anders
Apr 16 2007
Carlos Santander wrote:Yes, that flag - but it only seems to be for "rebuild" - not DSSS ? i.e. dsss still executes commands, and then passes -n on to rebuild I'll flag it as an enhancement Ticket... --andersI'm missing a --dry-run flag, that would print out everything it would have done *if* you had executed it. Often used with install ?From the usage instructions: -n just list the commands to be run, don't run them
Apr 16 2007
Anders F Björklund escribió:Carlos Santander wrote:Oops, sorry. I completely missed you were talking about DSSS. -- Carlos Santander BernalYes, that flag - but it only seems to be for "rebuild" - not DSSS ? i.e. dsss still executes commands, and then passes -n on to rebuild I'll flag it as an enhancement Ticket... --andersI'm missing a --dry-run flag, that would print out everything it would have done *if* you had executed it. Often used with install ?From the usage instructions: -n just list the commands to be run, don't run them
Apr 17 2007
I use rebuild only through dsss, for what it is worth. And I use dsss every day I do anything with D, more or less. Howard Gregor Richards Wrote:Judging by the amount of feedback I receive on rebuild, vs the amount of feedback I receive on DSSS, I'd say that 95% of rebuild users are not DSSS users. That is, there are more users who use rebuild alone than in tandem with DSSS. I could be wrong - maybe DSSS just has no bugs :). Rebuild was designed primarily to complement DSSS, and DSSS was designed to be the ideal replacement for 'make' and pals for D, so I find it a bit disconcerting that a tool I designed primarily to be a background tool is being used as a primary development tool by so many. So, the obvious question is: Why? Why use rebuild and not DSSS? I imagine there must be some misconceptions about DSSS, what it is, what it's for, et cetera. I imagine some common misconceptions are: * DSSS is intended solely to be D's answer to CPAN - that is, a network installation tool. This just isn't true, the net portion is only a small chunk of what DSSS can do. * DSSS provides no advantages over using just a build tool. Also not true - even if DSSS provided /only/ a convenient build configuration file format (dsss.conf), that would be a sizable advantage of rebuild. DSSS provides much more, however, including easy generation of libraries with associated .di files, installation, documentation, etc, etc. If you really want your rebuild profile for an application or library be portable, you would need to either have several Makefiles or response files wrapped around rebuild (nasty), or use DSSS (nice). * DSSS is not portable to Windows. I think most people know that I'm not a Windows user, and Windows is mostly a foreign environment to me. However, this is not true. I've done my best, and am very responsive to bug reports, and DSSS does indeed work on Windows just as well as it does on Posix systems. * `dsss` is hard to type. Well, I've typed it more than a dozen times in this post, and my left ring finger is in no particular pain :) If your concern or concept isn't noted here, please tell me / ask me! If DSSS /isn't/ everything you need it to be, help me /make/ it what you need it to be :). - Gregor Richards
Apr 16 2007
Gregor Richards wrote:Judging by the amount of feedback I receive on rebuild, vs the amount of feedback I receive on DSSS, I'd say that 95% of rebuild users are not DSSS users. That is, there are more users who use rebuild alone than in tandem with DSSS. I could be wrong - maybe DSSS just has no bugs :).I've found more bugs in Rebuild. For me that's to only reason. I use both of them. I think being able to install Tango with DSSS would increase its popularity. I've probably set up my system wrong since 'dsss net install dmd' breaks my manually installed Tango.Rebuild was designed primarily to complement DSSS, and DSSS was designed to be the ideal replacement for 'make' and pals for D, so I find it a bit disconcerting that a tool I designed primarily to be a background tool is being used as a primary development tool by so many. So, the obvious question is: Why? Why use rebuild and not DSSS? I imagine there must be some misconceptions about DSSS, what it is, what it's for, et cetera. I imagine some common misconceptions are: * DSSS is intended solely to be D's answer to CPAN - that is, a network installation tool. This just isn't true, the net portion is only a small chunk of what DSSS can do.Most probably this.* DSSS provides no advantages over using just a build tool. Also not true - even if DSSS provided /only/ a convenient build configuration file format (dsss.conf), that would be a sizable advantage of rebuild. DSSS provides much more, however, including easy generation of libraries with associated .di files, installation, documentation, etc, etc. If you really want your rebuild profile for an application or library be portable, you would need to either have several Makefiles or response files wrapped around rebuild (nasty), or use DSSS (nice).I think the misconception here is that people really don't know how to do all this. I hope you take this constructively: the documentation sucks. In fact, I haven't found one anywhere. :-P The 'dsss --help' does not count. I would like to see a real manual with some simple examples. 'dsss net install foobar' does not save any easily readable configuration files to any well documented location. In fact, I was considering makefiles + rebuild for my next project since I don't know how to use DSSS. Maybe that will change now. ;)* DSSS is not portable to Windows. I think most people know that I'm not a Windows user, and Windows is mostly a foreign environment to me. However, this is not true. I've done my best, and am very responsive to bug reports, and DSSS does indeed work on Windows just as well as it does on Posix systems.No.* `dsss` is hard to type. Well, I've typed it more than a dozen times in this post, and my left ring finger is in no particular pain :)Certainly not. :)
Apr 16 2007
Jari-Matti Mäkelä wrote: ...I think being able to install Tango with DSSS would increase its popularity. I've probably set up my system wrong since 'dsss net install dmd' breaks my manually installed Tango.Actually, it's not at all surprising that that would break it, since `dsss net install dmd` installs the entirety of the DMD distribution, including Phobos. Sort of a problem ... I should probably add a check for that. - Gregor Richards
Apr 16 2007
Gregor Richards wrote:Jari-Matti Mäkelä wrote: ...You previously said you will not add support for Tango (dsss net install tango) because it breaks phobos. Wouldn't it be easier (for us users) to have both. So that you can update them via 'dsss net install' and then change to the correct library with something like 'dsss profile set phobos/tango/tango-svn'. Or maybe 'dsss net install dmd' should only update the binaries and 'dsss net install phobos' the rest of the distribution. Then, a profile system for dmd/gdc would be cool too.I think being able to install Tango with DSSS would increase its popularity. I've probably set up my system wrong since 'dsss net install dmd' breaks my manually installed Tango.Actually, it's not at all surprising that that would break it, since `dsss net install dmd` installs the entirety of the DMD distribution, including Phobos. Sort of a problem ... I should probably add a check for that.- Gregor Richards
Apr 17 2007
On Mon, 16 Apr 2007 12:51:24 -0700, Gregor Richards wrote:Why use rebuild and not DSSS?Actually, there is (at least) one person that uses neither <G> -- Derek Parnell Melbourne, Australia "Justice for David Hicks!" skype: derek.j.parnell
Apr 16 2007
Derek Parnell wrote:On Mon, 16 Apr 2007 12:51:24 -0700, Gregor Richards wrote:Make that two. Any bud development going on?Why use rebuild and not DSSS?Actually, there is (at least) one person that uses neither <G>
Apr 17 2007
On Tue, 17 Apr 2007 21:31:24 +0200, torhu wrote:Derek Parnell wrote:Yes, there is quite a bit done since the last release. I have been waiting to deliberately allow Rebuild some time to gain momentum and maturity before continuing to offer an alternative. I feel it might have been unfair to 'compete' while it was still formative. Though I admit I haven't even downloaded or looked at Rebuild to know what it can or can't do. As for DSSS, I don't know what the problem is it is trying to solve so I don't know if I need to use it or not. -- Derek Parnell Melbourne, Australia "Justice for David Hicks!" skype: derek.j.parnellOn Mon, 16 Apr 2007 12:51:24 -0700, Gregor Richards wrote:Make that two. Any bud development going on?Why use rebuild and not DSSS?Actually, there is (at least) one person that uses neither <G>
Apr 17 2007
On Wed, 18 Apr 2007 07:20:31 +1000, Derek Parnell wrote:On Tue, 17 Apr 2007 21:31:24 +0200, torhu wrote:is rebuild and bud really competing? I just thought rebuild was just trying to but the il back in bud. No seriously, I thought it just a modified bud to work more closely with dsss. I suppose I should ask what is the benefits to rebuild to bud? Was it Gregor's intent to fork bud as a competitor? And maybe what prevents bud from having that which is added to rebuild? As for DSSS I love the concept that it provides. I'm not doing any major projects, everything I have done fits nicely in one file. However I have done multiple file stuff and still find dmd easy enough to use. But if I were to create and distribute D software, I would definitely go with distributing it in a dsss compatible format.Derek Parnell wrote:Yes, there is quite a bit done since the last release. I have been waiting to deliberately allow Rebuild some time to gain momentum and maturity before continuing to offer an alternative. I feel it might have been unfair to 'compete' while it was still formative. Though I admit I haven't even downloaded or looked at Rebuild to know what it can or can't do. As for DSSS, I don't know what the problem is it is trying to solve so I don't know if I need to use it or not.On Mon, 16 Apr 2007 12:51:24 -0700, Gregor Richards wrote:Make that two. Any bud development going on?Why use rebuild and not DSSS?Actually, there is (at least) one person that uses neither <G>
Apr 17 2007
On Tue, 17 Apr 2007 22:35:14 +0000 (UTC), Jesse Phillips wrote:I thought it (Rebuild) just a modified bud to work more closely with dsss. ... Was it Gregor's intent to fork bud ...My understanding, and this could be totally wrong of course, is that Rebuild is a C++ program based on the DMD front-end code. I don't think it is using any code from the Bud application. -- Derek (skype: derek.j.parnell) Melbourne, Australia "Justice for David Hicks!" 18/04/2007 9:43:15 AM
Apr 17 2007
Jesse Phillips wrote:is rebuild and bud really competing? I just thought rebuild was just trying to but the il back in bud. No seriously, I thought it just a modified bud to work more closely with dsss. I suppose I should ask what is the benefits to rebuild to bud? Was it Gregor's intent to fork bud as a competitor? And maybe what prevents bud from having that which is added to rebuild?Well, here's the honest truth behind why rebuild exists. Some may find it offensive, but I assure you it's just brutally honest :) I originally wrote DSSS to work with bu[il]d. The reason was simple: Why rock the boat? However, even the first revision of DSSS ended up needing a branch of bu[il]d, because it was broken on GDC. OK, so I posted fixes, and the next version worked on GDC (sort of), but it was broken (as I recall) on DMD+GNU/Linux. *sigh*, OK, fine. I kept my branch up to date while also having it changed enough to actually work everywhere. However, I also needed new features, like shared library support and cross-compilation support. Two threads on bu[il]d's forum, both went nowhere fast. At this point, I was spending far more time working /around/ bu[il]d than I was working /with/ bu[il]d. However, I persisted because I figured everybody used bu[il]d for a reason. But then I started talking about it on IRC, and what did I discover? Nearly everyone I talked to who was either using GDC or trying to do anything more complex than .d file -> binary was unhappy with bu[il]d. So, tired of munging with my branch, I abandoned it and wrote rebuild. I based rebuild on DMD's frontend because there was no D parser in D that worked well and was portable. Rebuild supports shared object files, it supports cross-compilation. Also, it has the -oq option, which gives object files fully-qualified names. That's quite helpful for Posix ar-style libraries. Most of these features I added to meld it with DSSS, but they're certainly not useless in isolation. In short: If you use bu[il]d and have never had any problem with it, there is no reason for you to switch to rebuild. Are they in competition? Yes, of course, that's the nature of similar software. But they serve the same function, and even do so in a similar way. Again, with apologies to anyone this offends, - Gregor Richards
Apr 18 2007
Why not help DSSS instead of compete? I really see no advantage in competition in a little community like this.
Apr 18 2007
Frank Benoit (keinfarbton) wrote:Why not help DSSS instead of compete? I really see no advantage in competition in a little community like this.I second that request.
Apr 18 2007
On Wed, 18 Apr 2007 21:06:09 +0200, Frank Benoit (keinfarbton) wrote:Why not help DSSS instead of compete? I really see no advantage in competition in a little community like this.I have no opinion about DSSS yet. I was talking specifically about Rebuild only. But why compete, well why have GDC then? And in any case, Bud existed prior to Rebuild so I guess it would be unusual for me to say "Somebody has created another application that does the same task as mine so I better stop working on mine now." As Gregor has said, he started Rebuild because he, and others, were unhappy that I couldn't meet their needs in the timeframe that was acceptable. I believe this is reasonble justification for starting up a competitive application. A little healthly competition can, and probably will, provide the D community with two or more excellent choices, each with a particular feature set more suitable to one situation over another situation. Bud is fairly mature and stable and Rebuild is getting that way quickly. The D community will benefit from this. At the moment, Bud supports DMD better than GDC and Rebuild is the other way round (I think). Bud is written in D and Rebuild in C++, and that might be a relevent point of differentiation for some users. Bud does not yet support Tango and Rebuild does. etc ... Should I stop working on Bud and begin helping Gregor improve Rebuild? I don't think so. Not yet anyway. As for DSSS, I'm still not sure of its purpose or capabilities. I guess it is a tool to create installation packages, and that has to be a good thing. As I come from a Windows background, I find it really weird that so many Linux applications need to be be recompiled after installation. -- Derek Parnell Melbourne, Australia "Justice for David Hicks!" skype: derek.j.parnell
Apr 18 2007
Derek Parnell schrieb:But why compete, well why have GDC then? And in any case, Bud existed prior to Rebuild so I guess it would be unusual for me to say "Somebody has created another application that does the same task as mine so I better stop working on mine now."Sure, i can understand that. I think it can be helpful if bud would integrate into DSSS, and the user can choose via a DSSS configuration. It would be really great (and REAL man like) if you both can cooperate in this point. :)
Apr 18 2007
On Thu, 19 Apr 2007 00:47:48 +0200, Frank Benoit (keinfarbton) wrote:I think it can be helpful if bud would integrate into DSSS, and the user can choose via a DSSS configuration.Yes, that makes a lot of sense. -- Derek (skype: derek.j.parnell) Melbourne, Australia "Justice for David Hicks!" 19/04/2007 9:38:05 AM
Apr 18 2007
Frank Benoit (keinfarbton) wrote:Derek Parnell schrieb:Absolutely. I don't think it's good that DSSS depends absolutely on rebuild, with no alternative. But making it a bit more alternative-friendly hasn't been high on my priority list ^^ - Gregor Richards PS: Are you mocking my common misuse of the phrase "REAL men do <something real men don't do>"? :-PBut why compete, well why have GDC then? And in any case, Bud existed prior to Rebuild so I guess it would be unusual for me to say "Somebody has created another application that does the same task as mine so I better stop working on mine now."Sure, i can understand that. I think it can be helpful if bud would integrate into DSSS, and the user can choose via a DSSS configuration. It would be really great (and REAL man like) if you both can cooperate in this point. :)
Apr 18 2007
Derek Parnell wrote:On Wed, 18 Apr 2007 21:06:09 +0200, Frank Benoit (keinfarbton) wrote:Hear, hear! - Gregor RichardsWhy not help DSSS instead of compete? I really see no advantage in competition in a little community like this.I have no opinion about DSSS yet. I was talking specifically about Rebuild only. But why compete, well why have GDC then? And in any case, Bud existed prior to Rebuild so I guess it would be unusual for me to say "Somebody has created another application that does the same task as mine so I better stop working on mine now." As Gregor has said, he started Rebuild because he, and others, were unhappy that I couldn't meet their needs in the timeframe that was acceptable. I believe this is reasonble justification for starting up a competitive application. A little healthly competition can, and probably will, provide the D community with two or more excellent choices, each with a particular feature set more suitable to one situation over another situation. Bud is fairly mature and stable and Rebuild is getting that way quickly. The D community will benefit from this. At the moment, Bud supports DMD better than GDC and Rebuild is the other way round (I think). Bud is written in D and Rebuild in C++, and that might be a relevent point of differentiation for some users. Bud does not yet support Tango and Rebuild does. etc ... Should I stop working on Bud and begin helping Gregor improve Rebuild? I don't think so. Not yet anyway.
Apr 18 2007
Derek Parnell wrote:On Mon, 16 Apr 2007 12:51:24 -0700, Gregor Richards wrote:Add another person to the Bud/Build list. I don't need anything more than a replacement for make. Bud plays nicely with the IDE's so I'm happy. I look at the DSSS/Rebuild site now and again but I don't see anything that makes me what to change. I'm glad to see Bud isn't dead.Why use rebuild and not DSSS?Actually, there is (at least) one person that uses neither <G>
Apr 18 2007
Gregor Richards wrote: ...- Gregor RichardsAs others have said documentation is a bit lacking so I don't know what dsss is capable of. Secondly (maybe as a result of the previous) I don't know the advantages of dsss over make, particularly I'm not sure how to know what dsss actually does when building and how to run custom shell code. (If there is documentation I have not found pleas give a link) ps. if my above concerns can be addressed I think the net install feature can be a real boon in avoiding dependency hell. (ohh and does it suport amd64?)
Apr 16 2007
Gregor Richards wrote:Judging by the amount of feedback I receive on rebuild, vs the amount of feedback I receive on DSSS, I'd say that 95% of rebuild users are not DSSS users. That is, there are more users who use rebuild alone than in tandem with DSSS. I could be wrong - maybe DSSS just has no bugs :). Rebuild was designed primarily to complement DSSS, and DSSS was designed to be the ideal replacement for 'make' and pals for D, so I find it a bit disconcerting that a tool I designed primarily to be a background tool is being used as a primary development tool by so many. So, the obvious question is: Why? Why use rebuild and not DSSS? I imagine there must be some misconceptions about DSSS, what it is, what it's for, et cetera. I imagine some common misconceptions are: * DSSS is intended solely to be D's answer to CPAN - that is, a network installation tool. This just isn't true, the net portion is only a small chunk of what DSSS can do. * DSSS provides no advantages over using just a build tool. Also not true - even if DSSS provided /only/ a convenient build configuration file format (dsss.conf), that would be a sizable advantage of rebuild. DSSS provides much more, however, including easy generation of libraries with associated .di files, installation, documentation, etc, etc. If you really want your rebuild profile for an application or library be portable, you would need to either have several Makefiles or response files wrapped around rebuild (nasty), or use DSSS (nice). * DSSS is not portable to Windows. I think most people know that I'm not a Windows user, and Windows is mostly a foreign environment to me. However, this is not true. I've done my best, and am very responsive to bug reports, and DSSS does indeed work on Windows just as well as it does on Posix systems. * `dsss` is hard to type. Well, I've typed it more than a dozen times in this post, and my left ring finger is in no particular pain :) If your concern or concept isn't noted here, please tell me / ask me! If DSSS /isn't/ everything you need it to be, help me /make/ it what you need it to be :). - Gregor RichardsI'll be honest. Your message suggested to me that I try dsss/rebuild again cause it's never worked for me. I have been using a very old version of build for a long time (like 6-9 months old). Today was the first day that dsss/rebuild actually compiled for me. So, really I couldn't try it. I will try it now though. If it can replace my seriously aging version of build, I'm probably converted :) Kenny
Apr 16 2007
Today, after your posting i tried again to understand what is dsss. And wow, it's cool. :) But... please make more docu. Some thoughts * more Examples * How platform independent is a dsss.conf (slash handling?) * How can a package be combined from two source folders? * Are there internal tools for platform independent cp/mv/find/..? * Examples for extending the functionality with d progs using the dsss api. * a tango version, that net installs only tango progs * how to handle package deps and versions? * is it possible to build file rules for non D files? Is the focus of dsss really to be also a competitor to general build tools like gnu-make or rake?
Apr 16 2007
Frank Benoit (keinfarbton) wrote:Today, after your posting i tried again to understand what is dsss. And wow, it's cool. :) But... please make more docu. Some thoughts * more ExamplesNoted. Admittedly, the documentation is lacking of anything that I'd call an "example."* How platform independent is a dsss.conf (slash handling?)I believe this is covered in README.software_engineers. dsss.conf includes the capability to use version statements.* How can a package be combined from two source folders?Also in README.software_engineers, 'type = subdir'* Are there internal tools for platform independent cp/mv/find/..?(Also in README.software_engineers) Just 'install', nothing equiv. of find. I'm not sure how that would help for compilation, but Idonno ...* Examples for extending the functionality with d progs using the dsss api.Noted. Definitely lacking here.* a tango version, that net installs only tango progsWell, this is on the docket ... it's a bit more difficult than I anticipated.* how to handle package deps and versions?I suppose this isn't documented very well. For reference here, the central repository keeps track of what packages are assigned to what tools, so all you need to do is import.* is it possible to build file rules for non D files?Also in README.software_engineers (sort of). This is accomplished by {pre,post}{build,install} commands calling make or equivalent.Is the focus of dsss really to be also a competitor to general build tools like gnu-make or rake?No, DSSS is D-specific. - Gregor Richards
Apr 16 2007
If I have a directory "gen" which contains generated source, and a package "src" with manually written sources. Both contain the package a.b, how can I use dsss to build the lib for "a.b" ?* How can a package be combined from two source folders?Also in README.software_engineers, 'type = subdir'
Apr 17 2007
Gregor Richards wrote:Frank Benoit (keinfarbton) wrote:I'd suggest starting up an FAQ page based off of these questions and others that you get in response. PS: I second the request for enhanced documentation/examples.Today, after your posting i tried again to understand what is dsss. And wow, it's cool. :) But... please make more docu. Some thoughts * more ExamplesNoted. Admittedly, the documentation is lacking of anything that I'd call an "example."* How platform independent is a dsss.conf (slash handling?)I believe this is covered in README.software_engineers. dsss.conf includes the capability to use version statements.* How can a package be combined from two source folders?Also in README.software_engineers, 'type = subdir'* Are there internal tools for platform independent cp/mv/find/..?(Also in README.software_engineers) Just 'install', nothing equiv. of find. I'm not sure how that would help for compilation, but Idonno ...* Examples for extending the functionality with d progs using the dsss api.Noted. Definitely lacking here.* a tango version, that net installs only tango progsWell, this is on the docket ... it's a bit more difficult than I anticipated.* how to handle package deps and versions?I suppose this isn't documented very well. For reference here, the central repository keeps track of what packages are assigned to what tools, so all you need to do is import.* is it possible to build file rules for non D files?Also in README.software_engineers (sort of). This is accomplished by {pre,post}{build,install} commands calling make or equivalent.Is the focus of dsss really to be also a competitor to general build tools like gnu-make or rake?No, DSSS is D-specific. - Gregor Richards
Apr 17 2007
I'm using Rebuild as I needed a Bud replacement as the latter is borked on amd64. I've failed to compile dsss last time I tried and not really knowing what I could actually use it for, I haven't spent any time getting it to work.
Apr 16 2007
Tomas Lindquist Olsen wrote:I'm using Rebuild as I needed a Bud replacement as the latter is borked on amd64. I've failed to compile dsss last time I tried and not really knowing what I could actually use it for, I haven't spent any time getting it to work.The DSSS fix for x86_64 was fairly recent ... if you have problems, please post bug reports :) - Gregor Richards
Apr 16 2007
- not a user I thought using a makefile was excessive until I started writing programs over 8,000 lines of code.
Apr 16 2007
Wowsa! I wasn't expecting such exuberant reponse! The primary complaint of everyone is lack of documentation. DSSS' documentation is admittedly sparse, but far from non-existent. I realize now that the documentation is not in the installation binaries, which was a bit of a mistake on my part, so for reference: What documentation I've written is at http://www.dsource.org/projects/dsss/browser/trunk/docs . I will try to get that linked in more visibly. Since most of the complaints about documentation were that it was completely non-existent, I can't really expand on the documentation there is very much. If you tell me specific weak points, overly-sparse areas or just plain confusing wording, I can improve upon it. I will further reply in individual subthreads. - Gregor Richards
Apr 16 2007
I use DSSS primarily and only fallback to Rebuild if there's a problem with DSSS. O.
Apr 17 2007
I started to use rebuild as a bud replacement, and I didn't even considered using dsss, since rebuild fully satisfied my needs. It's just a lightweight tool for playing around with D, and combining it with GNU make gave me quick results for compiling different configurations. But maybe it's high-time to give dsss a try. :-) Many thanks for the great tools! Regards, David
Apr 17 2007
David Ferenczi Wrote:It's just a lightweight tool for playing around with D, and combining it with GNU make gave me quick results for compiling different configurations.Indeed; my philosophy with software is that, given choice of several packages that perform much the same function, the simplest package is my first pick. I would much rather simply perform a dmd -release -O [files] than anything else, unless I *need* a build/make file; and then I want the simplest of them.
Apr 17 2007
I use neither successfully yet. Where does rebuild look for files? I'm getting errors to the effect of "can't find std/XXXX.d". I tried copying dmd/src/phobos to /include/d, but that didn't work. I've tried looking at the config files and didn't find an obvious place to change.
Apr 17 2007
Jason House wrote:I use neither successfully yet. Where does rebuild look for files? I'm getting errors to the effect of "can't find std/XXXX.d". I tried copying dmd/src/phobos to /include/d, but that didn't work. I've tried looking at the config files and didn't find an obvious place to change.Something like this might help: -I/opt/dmd/1.005/src/phobos
Apr 17 2007
Jason House wrote:I use neither successfully yet. Where does rebuild look for files? I'm getting errors to the effect of "can't find std/XXXX.d". I tried copying dmd/src/phobos to /include/d, but that didn't work. I've tried looking at the config files and didn't find an obvious place to change.It checks your dmd.conf or gdc configuration as appropriate. If it's not getting the proper values, it's either not finding dmd/gdc or not finding the right one. If none of the above applies, there's always a ticket system :) - Gregor Richards
Apr 18 2007
For me, I use neither. Mainly because I don't understand what's the purpose of DSSS. I read the feature list .. and it still doesn't answer my question. What problem is it trying to solve? In other words: why do I need to use it? The original build satisfied my needs pretty well, honestly all I ever do with my small programs is "build main.d -full -clean" Plus, I haven't been using D very much lately ...
Apr 17 2007
On Tue, 17 Apr 2007 23:26:15 -0600, Hasan Aljudy wrote:For me, I use neither. Mainly because I don't understand what's the purpose of DSSS. I read the feature list .. and it still doesn't answer my question. What problem is it trying to solve? In other words: why do I need to use it? The original build satisfied my needs pretty well, honestly all I ever do with my small programs is "build main.d -full -clean" Plus, I haven't been using D very much lately ...I'd say that DSSS is trying to be a software distribution manager. Allowing developers to set up installation of programs written for D to be compiled and installed using a simple call to DSSS. I will admit that it is still not as straight forward as most desktop user are use to, but for those used to the Linux way of things, its simple. I do have yet to have a flawless net install though. Once I have a better idea what is causing the problem I'll look into reporting it, but my guess it that it's not on DSSS's end.
Apr 18 2007
Since many of the responses to this thread suggested that people don't understand why DSSS is useful above just a build tool like bud or rebuild. I've created a basic DSSS-by-example page, to describe why DSSS is useful, and what advantages it gives the user. It needs more work, but is a good start. http://www.dsource.org/projects/dsss/wiki/DSSSByExample - Gregor Richards
Apr 19 2007
Thanks, I've been looking for something like that. I didn't quite 'get' DSSS, but I do use rebuild as a bud replacement. I should probably use DSSS for my new Lua bindings, so they are net installable. On 4/19/07, Gregor Richards <Richards codu.org> wrote:Since many of the responses to this thread suggested that people don't understand why DSSS is useful above just a build tool like bud or rebuild. I've created a basic DSSS-by-example page, to describe why DSSS is useful, and what advantages it gives the user. It needs more work, but is a good start. http://www.dsource.org/projects/dsss/wiki/DSSSByExample - Gregor Richards-- Anders
Apr 19 2007
Gregor Richards wrote:Since many of the responses to this thread suggested that people don't understand why DSSS is useful above just a build tool like bud or rebuild. I've created a basic DSSS-by-example page, to describe why DSSS is useful, and what advantages it gives the user. It needs more work, but is a good start. http://www.dsource.org/projects/dsss/wiki/DSSSByExample - Gregor RichardsThanks this documentation cleared up a lot of things. I have a few questions thou, either this was not documented or I could not find it. Overall dsss was much more compleat than I thought. 1. how is libs with subdirs handled? //example directory structure mylib/ lib.d file.d subdir/ somefile.d someother.d anotherdir/ anotherfile.d If building a .a library will the files in the subdirs be compiled, and if so when are they included? (if I don't import them with a version flag?) 2. Where does dsss net deps install the deps, current dir or globally, (configurable)? 3. The pre/post instal/uninstal/clean are they target specific or common to the entire file. 4. Is it possible to build a specific target from a file instead of all of them (as if specifying make targetname). 5. How is library dependencies specified in the dsss file. Thanks in advance.
Apr 19 2007
Answers posted inline. I will use some of these questions for a FAQ when I make one. Johan Granberg wrote:Gregor Richards wrote:I've improved README.software_engineers to answer this question: Sections creating libraries from directories will normally include all the .d files in that directory or any subdirectory of it. You may also specify subdirectories explicitly in dsss.conf, which will cause some .d files to be reassigned. For example, if you have these files: dzip/algorithm.d, foo/compression/zip.d and a section: [dzip] then the produced library will include algorithm.d and zip.d. If you have two sections: [dzip] [dzip/compression] then two libraries will be produced: The library from 'dzip' will contain algorithm.d, and the library from [dzip/compression] will contain zip.d.Since many of the responses to this thread suggested that people don't understand why DSSS is useful above just a build tool like bud or rebuild. I've created a basic DSSS-by-example page, to describe why DSSS is useful, and what advantages it gives the user. It needs more work, but is a good start. http://www.dsource.org/projects/dsss/wiki/DSSSByExample - Gregor RichardsThanks this documentation cleared up a lot of things. I have a few questions thou, either this was not documented or I could not find it. Overall dsss was much more compleat than I thought. 1. how is libs with subdirs handled? //example directory structure mylib/ lib.d file.d subdir/ somefile.d someother.d anotherdir/ anotherfile.d If building a .a library will the files in the subdirs be compiled, and if so when are they included? (if I don't import them with a version flag?)2. Where does dsss net deps install the deps, current dir or globally, (configurable)?From README.use: Some software can be used directly after building, but most software, libraries in particular, expect to be installed somewhere. DSSS can install software to any directory you choose, but will default to its own directory.3. The pre/post instal/uninstal/clean are they target specific or common to the entire file.I've made this a bit more explicit in README.software_engineers (I hope :) ): * prebuild, preinstall, preclean, postbuild, postinstall, postclean * Commands to be run before/after building/installing/cleaning the current section.4. Is it possible to build a specific target from a file instead of all of them (as if specifying make targetname).I had neglected to mention this in README.use. It is now present: You can build only a specified target by simply adding it to the command line: $ dsss build dzipper5. How is library dependencies specified in the dsss file.In general, they're not. Every package installable via DSSS-net has its list of modules well-defined, so `dsss net deps` merely needs to trace dependencies. I've made this explicit in README.software_engineers: There is also a global setting, "requires", which may be used to explicitly list dependencies: requires = bintod In general, it is NOT necessary to use this setting, as DSSS will detect dependencies based on what is imported from the D source. - Gregor Richards
Apr 19 2007
Gregor Richards wrote:I'm still not clear on how does this work with external c libraries? Otherwise your answers made it a lot clearer. If it continues like this dsss will have great documentation in no time :)5. How is library dependencies specified in the dsss file.In general, they're not. Every package installable via DSSS-net has its list of modules well-defined, so `dsss net deps` merely needs to trace dependencies. I've made this explicit in README.software_engineers: There is also a global setting, "requires", which may be used to explicitly list dependencies: requires = bintod In general, it is NOT necessary to use this setting, as DSSS will detect dependencies based on what is imported from the D source. - Gregor Richards
Apr 19 2007
Gregor Richards wrote:Since many of the responses to this thread suggested that people don't understand why DSSS is useful above just a build tool like bud or rebuild. I've created a basic DSSS-by-example page, to describe why DSSS is useful, and what advantages it gives the user. It needs more work, but is a good start. http://www.dsource.org/projects/dsss/wiki/DSSSByExample - Gregor RichardsOK, I think I've got a clearer idea of what DSSS is for now, although I have a few questions: 1. What exactly does 'dsss install' do on Windows? I mean, I realise that linux has standard directories for libraries and binaries, but where does it stick these things for Windows? 2. In addition, does 'dsss build' build everything all at once? If so, is there any way to specify that you only want a particular target built? 3. I use an awful lot of version statements to control tracing code, experimental code, etc. Can I pass version flags to the compiler from the command line (I know about buildflags in the dsss.conf file, but I don't want to have to edit that just to add some tracing code for a quick run). 4. I also noticed the bit on special build steps prefixed by a '+': do you trigger these from the command line like so: 'dsss build +foo'? 5. Related to the above, is there any way to add one of these special build steps from another one (ie: chain them together)? 6. I realise this isn't in DSSS' job description, but do you have any plans to add support for transforming files? The major part of my work at the moment deals with source files that need to be pre-processed before being fed to the D compiler. Having a build tool able to call the processor on-demand only when it's needed would be a *massive* help--about 80-90% of the current build time is just my crummy shell script checking to make sure no source files need to be processed... 7. Can we Windows users get a list of what command-line programs DSSS depends on? I don't think I ever finished tracking down all the utilities DSSS kept trying to call last time I tried to use it... DSSS is actually looking pretty close to what I'm rigging up with bud at the moment. Plus, the whole net install thing is cool :P -- Daniel -- int getRandomNumber() { return 4; // chosen by fair dice roll. // guaranteed to be random. } http://xkcd.com/ v2sw5+8Yhw5ln4+5pr6OFPma8u6+7Lw4Tm6+7l6+7D i28a2Xs3MSr2e4/6+7t4TNSMb6HTOp5en5g6RAHCP http://hackerkey.com/
Apr 19 2007
Answers posted inline. I will use some of these questions for a FAQ when I make one. These questions are bizarrely similar to Johan's ... :) Daniel Keep wrote:Gregor Richards wrote:From README.use: Some software can be used directly after building, but most software, libraries in particular, expect to be installed somewhere. DSSS can install software to any directory you choose, but will default to its own directory.Since many of the responses to this thread suggested that people don't understand why DSSS is useful above just a build tool like bud or rebuild. I've created a basic DSSS-by-example page, to describe why DSSS is useful, and what advantages it gives the user. It needs more work, but is a good start. http://www.dsource.org/projects/dsss/wiki/DSSSByExample - Gregor RichardsOK, I think I've got a clearer idea of what DSSS is for now, although I have a few questions: 1. What exactly does 'dsss install' do on Windows? I mean, I realise that linux has standard directories for libraries and binaries, but where does it stick these things for Windows?2. In addition, does 'dsss build' build everything all at once? If so, is there any way to specify that you only want a particular target built?Added to README.use: You can build only a specified target by simply adding it to the command line: $ dsss build dzipper3. I use an awful lot of version statements to control tracing code, experimental code, etc. Can I pass version flags to the compiler from the command line (I know about buildflags in the dsss.conf file, but I don't want to have to edit that just to add some tracing code for a quick run).From `dsss --help` (admittedly not the best place for it :) ): All other options are passed through to rebuild and ultimately the compiler. So just adding -version=Foo is sufficient.4. I also noticed the bit on special build steps prefixed by a '+': do you trigger these from the command line like so: 'dsss build +foo'?Yes.5. Related to the above, is there any way to add one of these special build steps from another one (ie: chain them together)?There is not at present any way of specifying such a dependency, no. Perhaps I should add that...6. I realise this isn't in DSSS' job description, but do you have any plans to add support for transforming files? The major part of my work at the moment deals with source files that need to be pre-processed before being fed to the D compiler. Having a build tool able to call the processor on-demand only when it's needed would be a *massive* help--about 80-90% of the current build time is just my crummy shell script checking to make sure no source files need to be processed...I'm a bit loathe to add anything like this ... I'd recommend setting it up something like this: A non-preprocessed source directory, which creates a preprocessed source directory. The preprocessed source directory will have an appropriate dsss.conf added to it. In the base dsss.conf: [+preprocess] prebuild = preprocess.d [preprocessed] type = subdir7. Can we Windows users get a list of what command-line programs DSSS depends on? I don't think I ever finished tracking down all the utilities DSSS kept trying to call last time I tried to use it...All the software DSSS depends on come in the DSSS binary tarball (I missed this in one release, but it should be in all the current ones), and are retrievable by running getwinbins.d (which is run automatically if you build dsss with itself).DSSS is actually looking pretty close to what I'm rigging up with bud at the moment. Plus, the whole net install thing is cool :P -- Daniel- Gregor Richards
Apr 19 2007